Leading и междуредие: какво е това и настройка в iOS и Android

Автор: IT Sectr Публикувано: 2026-07-24 Време за четене: 9 мин

Leading (leading) — е разстоянието между базовите линии на съседни редове текст, което пряко определя удобството за четене. Терминът произхожда от физическите типографски букви: между редовете се поставяли оловни ленти (lead strips) за увеличаване на интервала. В съвременното мобилно разработване leading се реализира чрез lineSpacing и lineHeightMultiple на iOS в NSAttributedString и чрез lineSpacing на Android в TextView. Според документацията на Apple NSMutableParagraphStyle, междуредието се задава в точки и може да се комбинира с множител на височината на реда.

Основни

  • Leading — разстояние между базовите линии на редовете, влияещо на четливостта на текста
  • На iOS се настройва чрез NSParagraphStyle: lineSpacing и lineHeightMultiple
  • На Android се управлява чрез lineSpacingExtra и lineSpacingMultiplier в TextView
  • Оптимален leading за мобилни интерфейси: 120-150% от размера на шрифта
  • Влияе на accessibility: недостатъчното междуредие намалява четливостта на текста

Какво е leading и междуредие

Leading (произнася се „лединг“) — е вертикалното разстояние между базовите линии на съседни редове в типографиката. Базовата линия — невидимата линия, на която са разположени символите на текста. Колкото по-голям е leading, толкова по-свободно са разположени редовете един спрямо друг. В цифровата типографика leading често се нарича междуредие или височина на реда.

Исторически терминът се появява в епохата на металната типографика: наборчиците поставяли тънки оловни ленти между редовете за увеличаване на разстоянието. В съвременните шрифтове leading се задава като отношение към размера на шрифта. Системната стойност по подразбиране е 1.2 (120% от размера на шрифта), но за дълги текстове и мобилни интерфейси се препоръчва по-висока стойност. Според указанията за типографика на Material Design, оптималната височина на реда за уеб и мобилни интерфейси е 1.4-1.5 за основния текст.

Разлика между leading и line spacing: leading — пълното разстояние от базова линия до базова линия, line spacing — разстоянието между долната граница на един ред и горната граница на следващия. В повечето мобилни API (iOS NSParagraphStyle, Android TextView) се използва именно line spacing като допълнително разстояние върху естествената височина на реда. Това е важно да се вземе предвид при изчисляване на общото междуредие.

Оптимални стойности на leading за мобилни интерфейси

Изборът на оптимален leading зависи от няколко фактора: размер на шрифта, дължина на реда, контекст на използване и аудитория. За мобилни интерфейси с типична дължина на реда 40-60 знака се препоръчва leading от 1.4 до 1.6 от размера на шрифта. Кратките редове (етикети, бутони) могат да използват по-малък leading — 1.0-1.2. Дългите текстове (статии, описания) — по-голям leading, до 1.8 за максимална четливост.

Експериментални данни: изследване на Wichita State University Software Usability Laboratory показа, че leading 1.5 увеличава скоростта на четене със 7.5% в сравнение с leading 1.0 при една и съща ширина на реда. За потребители с дислексия оптималният leading е още по-висок — до 1.8. Тези данни се потвърждават от препоръките на WCAG 2.2, които изискват възможност за увеличаване на междуредието до 1.5 без загуба на съдържание.

Влияние на шрифта: шрифтовете с висока x-height (относителна височина на малките букви) изискват по-голям leading от шрифтовете с ниска x-height. Например Helvetica (висока x-height) препоръчва leading 1.5 за основния текст, а Didot (ниска x-height) — 1.3. Това се дължи на факта, че при висока x-height редовете се сливат визуално по-бързо при еднакво междуредие.

КонтекстПрепоръчителен leadingПример iOS
Заглавия (24-36pt)1.0 — 1.2lineHeightMultiple: 1.1
Основен текст (14-18pt)1.4 — 1.6lineHeightMultiple: 1.5
Малък текст (10-13pt)1.3 — 1.5lineHeightMultiple: 1.4
Статии и дълго съдържание1.5 — 1.8lineHeightMultiple: 1.6
Accessibility (дислексия)1.6 — 2.0lineHeightMultiple: 1.8

Реализация на leading в iOS чрез NSParagraphStyle

На iOS междуредието се управлява чрез класа NSMutableParagraphStyle, който съдържа две ключови свойства: lineSpacing (допълнително разстояние между редовете в точки) и lineHeightMultiple (множител на височината на реда). Тези свойства работят заедно: общата височина на реда се изчислява като естествената височина на шрифта, умножена по lineHeightMultiple, плюс lineSpacing.

swift
let paragraphStyle = NSMutableParagraphStyle()

// Метод 1: множител на височината на реда
paragraphStyle.lineHeightMultiple = 1.5

// Метод 2: допълнително разстояние между редовете
paragraphStyle.lineSpacing = 4.0

// Приложете чрез NSAttributedString
let attributedText = NSAttributedString(
    string: "Text with custom line spacing",
    attributes: [
        .paragraphStyle: paragraphStyle
    ]
)

lineHeightMultiple — предпочитаният начин, тъй като автоматично се мащабира при промяна на размера на шрифта. lineSpacing се задава в абсолютни точки и не се мащабира, което може да доведе до несъответствия при използване на Dynamic Type. Според Apple Text Programming Guide, за интерфейси, съвместими с accessibility, използвайте lineHeightMultiple в комбинация с UIFontMetrics.

SwiftUI предоставя модификатора .lineSpacing() за Text и VStack. За разлика от UIKit, в SwiftUI междуредието се задава в точки и няма вграден множител. За реализация на множителя разработчикът трябва ръчно да изчисли междуредието на базата на размера на шрифта. Ограничение: SwiftUI не поддържа директно lineHeightMultiple — използвайте .lineSpacing(CGFloat) с изчислена стойност.

swift
struct LeadingTextView: View {
    let fontSize: CGFloat = 17

    var lineSpacing: CGFloat {
        fontSize * 0.5 // 50% от размера на шрифта
    }

    var body: some View {
        Text("Междуредие")
        Text("Множител 1.5")
            .lineSpacing(lineSpacing)
            .font(.system(size: fontSize))
    }
}

Настройка на междуредието на Android

На Android междуредието се задава чрез два атрибута на TextView: lineSpacingExtra (допълнително разстояние в px) и lineSpacingMultiplier (множител на височината на реда, по подразбиране 1.0). Подобно на iOS, множителят се мащабира при промяна на размера на шрифта, а extra е абсолютна стойност. За интерфейси, съвместими с accessibility, използването на множител е за предпочитане.

groovy
// В XML оформление
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Text with line spacing"
    android:lineSpacingExtra="4dp"
    android:lineSpacingMultiplier="1.5"
    android:textSize="16sp" />

// Програмно в Kotlin
val textView = findViewById<TextView>(R.id.contentText)
textView.setLineSpacing(
    TypedValue.applyDimension(
        TypedValue.COMPLEX_UNIT_DIP,
        4f,
        resources.displayMetrics
    ),
    1.5f
)

Compose — модерната Android UI рамка — използва параметъра lineHeight в модификатора TextStyle. За разлика от XML подхода, в Compose lineHeight се задава като пълна височина на реда в sp (по подразбиране = fontSize * 1.2). За задаване на множител разработчикът посочва lineHeight като процент от fontSize: Пример: TextStyle(fontSize = 16.sp, lineHeight = 24.sp) дава множител 1.5.

Ограничение: на Android преди API 28 lineSpacingExtra и lineSpacingMultiplier не работят правилно с някои шрифтове, особено с персонализирани (TTF/OTF). Препоръчва се тестване на реални устройства и отчитане, че systemTextView по подразбиране използва lineSpacingMultiplier 1.0 — без допълнително разстояние. За дълги текстове в ScrollView задължително задайте изрично междуредието.

Междуредие в уеб разработката чрез CSS line-height

В уеба междуредието се задава чрез CSS свойството line-height, което може да бъде число (множител), процентна стойност, единици за дължина (px, em) или ключова дума normal. Числовият множител — предпочитаният начин, тъй като се наследява и се мащабира спрямо размера на шрифта на дъщерните елементи. Стойността normal съответства приблизително на 1.2 за повечето шрифтове.

css
/* Numerical multiplier (recommended) */
body {
    font-size: 16px;
    line-height: 1.5;
}

/* Percentage value */
.article-content {
    line-height: 150%;
}

/* Fixed value (does not scale) */
.small-text {
    font-size: 12px;
    line-height: 18px;
}

Числов множител vs em: line-height: 1.5 и line-height: 1.5em са различни неща. Числовият множител се наследява като изчислена стойност и се преизчислява за всеки дъщерен елемент на базата на неговия font-size. Em се наследява като фиксирана изчислена стойност на базата на font-size на родителя. Това е критична разлика: при вложеност font-size: 20px във font-size: 16px, line-height: 1.5 дава 30px, а line-height: 1.5em — 24px (от родителя). Препоръка: винаги използвайте числов множител.

Сравнение на настройките на leading на iOS, Android и уеб

Въпреки различните API, принципът на настройка на междуредието е еднакъв на всички платформи. Множителят (multiplier) се мащабира при промяна на размера на шрифта и е приятелски настроен към accessibility. Абсолютната стойност (spacing) не се мащабира и може да доведе до проблеми при използване на Dynamic Type или настройки за голям текст.

Крос-платформена стратегия: задайте lineHeight в дизайн системата като множител от fontSize. Например в дизайн токени: line-height-body = 1.5, line-height-heading = 1.1. Всяка платформа реализира този множител със своето API: iOS — lineHeightMultiple, Android — lineSpacingMultiplier, Web — line-height: 1.5. Това гарантира еднакъв визуален резултат на всички платформи.

ПлатформаAPI за множителAPI за разстояние
iOS UIKitNSParagraphStyle.lineHeightMultipleNSParagraphStyle.lineSpacing
iOS SwiftUI.lineSpacing (ръчно изчисление).lineSpacing(CGFloat)
Android XMLandroid:lineSpacingMultiplierandroid:lineSpacingExtra
Android ComposeTextStyle.lineHeight (в sp)TextStyle.lineHeight
Web CSSline-height: {число}line-height: {px/em}

Важен нюанс: на iOS lineHeightMultiple се прилага към пълната височина на реда (включително ascender + descender на шрифта), а на Android lineSpacingMultiplier — към височината на реда, изчислена от рендер引擎 Minikin. На практика това води до малки разлики във визуалния leading при една и съща стойност на множителя. За pixel-perfect съответствие използвайте абсолютни стойности с корекция за платформата.

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

Каква е разликата между leading и line spacing?

Leading — пълното разстояние от базовата линия на един ред до базовата линия на следващия. Line spacing — допълнителното разстояние между редовете, което се добавя към естествената височина на реда. В iOS lineSpacing е именно допълнителното разстояние, а не пълната височина.

Какъв leading да използвам за accessibility?

За съответствие с WCAG 2.2 използвайте line-height 1.5 за основния текст. Потребителите с дислексия и зрителни нарушения четат по-добре текст с leading от 1.6 до 1.8. Уверете се, че потребителят може да увеличи междуредието без загуба на съдържание.

Защо leading в SwiftUI се различава от UIKit?

SwiftUI използва собствен рендер引擎, където lineSpacing е разстоянието между редовете в точки без вграден множител. В UIKit lineHeightMultiple се мащабира с размера на шрифта. За еднообразност в SwiftUI изчислете lineSpacing като fontSize * 0.5 за множител 1.5.

Влияе ли leading на производителността на скролване?

Няма пряко влияние върху FPS, но по-големият leading увеличава височината на съдържанието и съответно броя на клетките в UICollectionView/RecyclerView, което косвено влияе на производителността. За списъци с хиляди елементи оптимизирайте leading в дизайн системата.

Как да изчисля leading за нестандартен шрифт?

Използвайте формулата: line-height = font-size + (font-size * multiplier). За шрифт 16pt с множител 1.5: 16 + (16 * 0.5) = 24pt. Проверете визуално на реален текст — различните шрифтове изискват индивидуална настройка.

Обобщение

  • Leading — разстояние между базовите линии на редовете, определящо четливостта на текста
  • Оптимално междуредие за мобилни интерфейси: 1.4 — 1.6 от размера на шрифта
  • На iOS се настройва чрез lineHeightMultiple в NSMutableParagraphStyle
  • На Android се управлява чрез lineSpacingMultiplier в TextView или lineHeight в Compose
  • В уеба се използва line-height с числов множител (не em, не px)
  • Множителят — предпочитаният начин: мащабира се при Dynamic Type и accessibility настройки
  • За accessibility използвайте leading 1.5 и повече, дайте на потребителя възможност да увеличи разстоянието

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

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

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

Прочетете също