Текст и типография в мобилната разработка: какво е това, какви инструменти и как работи

Автор: IT Sectr Публикувано: 2026-08-04 Време за четене: 10 мин

Работата с текст е ключова задача при създаването на интерфейси на съвременни мобилни приложения. От избора на шрифт до настройката на разстоянието между символите — всеки аспект влияе върху възприемането на продукта. Според документацията на Apple NSAttributedString, правилното форматиране на текст е пряко свързано с четливостта и достъпността на интерфейса.

Основни точки

  • NSAttributedString — iOS клас за създаване на форматиран текст с атрибути на шрифт, цвят и разстояние.
  • SpannableString — аналог на Android, който използва Span обекти за стилизиране на отделни текстови фрагменти.
  • UIFont и Typeface — основните класове за шрифтове на iOS и Android; персонализираните шрифтове се добавят чрез Info.plist и res/font.
  • Кернинг и лигатури — типографски параметри, които контролират разстоянието между символите и сливането им в един глиф.
  • Променливи шрифтове — един файл с шрифт съдържа множество стилове, което намалява размера на приложението.

Текст в мобилни приложения: NSAttributedString на iOS

NSAttributedString е основният iOS клас за работа с форматиран текст. Той позволява прилагането на атрибути към отделни символи или диапазони: шрифт чрез UIFont, цвят чрез UIColor, разстояние между символи чрез kern и междуредие чрез NSMutableParagraphStyle. В мобилните приложения NSAttributedString се използва навсякъде — от UILabel до сложни UITextView с поддръжка на редактиране.

UIFont и конфигурация на шрифта

UIFont е основният клас за работа с шрифтове на iOS. Той поддържа системни шрифтове, персонализирани шрифтове и Dynamic Type. UIFont(name:size:) зарежда шрифт по име, UIFont.systemFont(ofSize:weight:) зарежда системния шрифт. UIFontDescriptor позволява модифициране на съществуващ шрифт: промяна на размер, тегло или добавяне на трансформационна матрица. За персонализирани шрифтове файлът .ttf се добавя към проекта и се регистрира в Info.plist под ключа Fonts provided by application.

swift
let attributes: [NSAttributedString.Key: Any] = [
    .font: UIFont(name: "HelveticaNeue-Bold", size: 18) as Any,
    .foregroundColor: UIColor.darkGray as Any,
    .kern: 1.5 as Any
]
let attributedString = NSAttributedString(
    string: "Форматированный текст",
    attributes: attributes
)
label.attributedText = attributedString

NSMutableParagraphStyle и форматиране на абзаци

NSMutableParagraphStyle е променяема версия на ParagraphStyle за конфигуриране на показването на абзаци. Той контролира подравняването (alignment), междуредието (lineSpacing), отстъпите (headIndent, tailIndent) и режима на прекъсване (lineBreakMode). ParagraphStyle е критичен за четливостта на дълги текстове на мобилни устройства: правилното lineSpacing предотвратява сливането на редове, а lineBreakMode предотвратява отрязването на думи. Настройката paragraphSpacing определя разстоянието между абзаците.

Текст в мобилни приложения: SpannableString на Android

SpannableString е основният инструмент за форматиране на текст на Android. Той работи чрез механизъм от Span обекти, всеки от които отговаря за един аспект: StyleSpan за получер или курсив, ForegroundColorSpan за цвят, URLSpan за връзки, UnderlineSpan за подчертаване. SpannableStringBuilder е аналогът на NSMutableAttributedString, позволяващ изграждане на текст от множество фрагменти. Разбирането на SpannableString е необходимо за създаване на гъвкави интерфейси с форматиран текст в мобилни приложения.

Typeface и персонализирани шрифтове на Android

Typeface е класът за работа с шрифтове на Android. Той поддържа системните шрифтове Roboto и Noto, както и персонализирани шрифтове. Typeface.createFromResource() зарежда шрифт от res/font/, Typeface.createFromAsset() от папката assets. Android 8.0+ поддържа шрифтови семейства в XML, комбинирайки множество файлове с шрифтове в един ресурс. Персонализиран шрифт за текст в мобилни приложения на Android се задава чрез атрибута android:fontFamily или програмно чрез setTypeface().

TextMeasurer и измерване на текст

TextMeasurer (API 29+) е модерен инструмент за измерване на текст без обвързване с View. Той изчислява ширина, височина и позиции на символите преди рендиране. На по-стари API се използва Paint.measureText() за едноредов текст или StaticLayout за многоредов текст. TextMeasurer е особено полезен в персонализирани изгледи, където текстът се рисува чрез Canvas.drawText(). Правилното измерване предотвратява отрязването на символи в интерфейса.

kotlin
val spannable = SpannableString("Жирный текст с цветом")
spannable.setSpan(
    StyleSpan(Typeface.BOLD),
    0, 6,
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannable.setSpan(
    ForegroundColorSpan(Color.RED),
    14, 19,
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = spannable

Типография в мобилната разработка: кернинг, лигатури и тракинг

Типографията в мобилните приложения е цялостна конфигурация на шрифтове, разстояние между символи и междуредие. Правилната типография в мобилната разработка пряко влияе върху четливостта на текста и визуалното възприемане на интерфейса. Нека разгледаме ключовите параметри, достъпни на двете платформи.

Кернинг и Тракинг

Кернинг е регулиране на разстоянието между конкретни двойки символи (AV, To, Wa). Тракинг е равномерно разстояние между символите за целия текст или част от него. На iOS кернингът се задава чрез NSKernAttributeName, на Android — чрез свойството letterSpacing на TextView. Отрицателните стойности сближават символите, положителните ги раздалечават. Типографията в мобилната разработка изисква внимателно настройване на тези параметри: за големи заглавия разстоянието между символите обикновено се увеличава, за основния текст остава стандартно.

ПараметърiOSAndroid
Стилизиран низNSAttributedStringSpannableString
ШрифтUIFont / CTFontTypeface
Разстояние между символиNSKernAttributeNameletterSpacing
МеждуредиеlineSpacinglineSpacingExtra
ЛигатуриNSLigatureAttributeNameOpenType функции
ЕлипсисlineBreakMode .byTruncatingTailandroid:ellipsize

Лигатури

Лигатурите са специални глифове, които заместват комбинации от два или повече символа: fi, fl, ffi. На iOS лигатурите се управляват чрез NSLigatureAttributeName: 0 — изключени, 1 — стандартни, 2 — всички налични. На Android лигатурите се управляват на ниво шрифт чрез OpenType функции. Включването на лигатури подобрява външния вид на текста, особено при шрифтове със серифи. Типографията в мобилната разработка използва лигатури предимно за заглавия и лога.

Персонализирани шрифтове в мобилни приложения: зареждане и конфигурация

Персонализираните шрифтове са един от основните инструменти за създаване на уникален визуален стил на приложението. Те помагат да се подчертае марката и да се подобри потребителското изживяване. В мобилните приложения персонализираните шрифтове се използват за заглавия, лога, акцентни елементи и корпоративна идентичност.

Променливи шрифтове

Променливите шрифтове са съвременна шрифтова технология, при която един файл съдържа множество стилове: от тънък до екстра дебел, от тесен до широк. Това намалява размера на приложението, като заменя няколко шрифтови файла с един. На iOS променливите шрифтове се поддържат чрез UIFont с параметър weight. На Android — чрез Typeface.Builder с посочване на осите на променливост wght, wdth, slnt. Използването на променливи шрифтове опростява типографията в мобилните приложения: разработчикът не трябва да зарежда отделни файлове за всеки стил.

swift
let customFont = UIFont(name: "CustomFont-Regular", size: 16)
let scaledFont = UIFontMetrics.default
    .scaledFont(for: customFont)
label.font = scaledFont
label.adjustsFontForContentSizeCategory(true)

NSTextAttachment и ImageSpan

NSTextAttachment на iOS позволява вграждане на UIImage в NSAttributedString — изображението се подравнява спрямо базовата линия и се движи заедно с текста. На Android аналогът е ImageSpan в SpannableString. И двата подхода са полезни за чат с емоджи, новинарски емици с икони и формуляри с персонализирани квадратчета за отметка. Важно е правилно да мащабирате изображението спрямо височината на шрифта, така че текстът и графиката да изглеждат хармонично.

Текстови ефекти, подравняване и елипсис

Освен основното форматиране, текстът в мобилните приложения поддържа допълнителни визуални ефекти: сенки, контури, зачертаване и подчертаване. Тези инструменти разширяват възможностите на типографията, но изискват внимателно прилагане за запазване на четливостта.

Сянка и контур на текст

Сянка на текст на iOS се задава чрез NSShadow с offset, blurRadius и color. Контур — чрез NSStrokeWidthAttributeName: отрицателните стойности създават запълване с контур, положителните — само контур. Зачертаване — NSUnderlineStyle (.single, .thick, .double). На Android сянката на TextView се конфигурира чрез android:shadowRadius, android:shadowDx, android:shadowDy. SpannableString поддържа StrikethroughSpan и UnderlineSpan. Контурът на текст на Android се реализира чрез OutlineSpan или персонализиран шрифт.

Елипсис и Marquee

Елипсис е отрязване на текст с многоточие при препълване на контейнера. На iOS се конфигурира чрез lineBreakMode .byTruncatingTail и numberOfLines. На Android — чрез android:ellipsize="end" и android:maxLines. Marquee е анимация с превъртащ се текст, достъпна на Android чрез android:ellipsize="marquee". На iOS няма вграден аналог — използва се библиотеката MarqueeLabel. Елипсисът е задължителен за всички едноредови текстове в мобилни приложения, за да се избегне отрязване на съдържанието.

Dynamic Type на iOS

Dynamic Type е адаптивна текстова система на iOS, която регулира размера на шрифта според настройките за достъпност на потребителя. Използвайте UIFontMetrics за мащабиране на персонализирани шрифтове. Dynamic Type е задължителен за приложения, съвместими с достъпност. На Android аналогът са единиците sp и scaledPixels, които се мащабират според системните настройки за размер на текста.

Често задавани въпроси

Какво е NSAttributedString?

NSAttributedString е iOS клас за създаване на форматиран текст с атрибути на шрифт, цвят и стил на ниво символи и диапазони.

Какво е SpannableString на Android?

SpannableString е Android клас за маркиране на текст чрез Span обекти: ForegroundColorSpan, StyleSpan, URLSpan, UnderlineSpan.

Как да добавя персонализиран шрифт в iOS?

Добавете .ttf файла към проекта, посочете го в Info.plist под ключа Fonts provided by application, след което използвайте UIFont(name:).

Как да заредя персонализиран шрифт на Android?

Поставете .ttf файла в res/font/, създайте XML шрифтово семейство и посочете android:fontFamily или използвайте Typeface.createFromAsset().

Какво са кернинг и лигатури?

Кернинг е разстоянието между двойки символи. Лигатурите са специални глифове за комбинации от букви. Те се управляват чрез NSKernAttributeName и NSLigatureAttributeName.

Обобщение

  • NSAttributedString — основният инструмент за форматиране на текст на iOS, поддържащ шрифтове, цветове, разстояние между символи и стилове на абзаци.
  • SpannableString — аналогът на Android, използващ Span обекти: StyleSpan (тегло), ForegroundColorSpan (цвят), URLSpan (връзки).
  • UIFont и Typeface — класове за шрифтове на iOS и Android; персонализираните шрифтове се добавят съответно чрез Info.plist и res/font.
  • Кернинг и тракинг — контролират разстоянието между символите; кернинг за отделни двойки, тракинг равномерно за целия текст.
  • Лигатури — заместват комбинации от символи с единични глифове; управляват се чрез NSLigatureAttributeName на iOS и OpenType на Android.
  • Променливи шрифтове и Dynamic Type — съвременни технологии: един файл за множество стилове и автоматична адаптация към потребителските настройки.
  • Типографията в мобилната разработка обхваща шрифтове, междуредие, лигатури, сенки и елипсис за осигуряване на четливост.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта