Трекинг (tracking) — это равномерное изменение межсимвольного интервала во всём выделенном фрагменте текста, в отличие от кернинга, который корректирует расстояние между конкретными парами букв. Трекинг применяется ко всем символам одинаково: положительный трекинг увеличивает расстояние, отрицательный — уменьшает. По данным MDN Web Docs, в веб-интерфейсах трекинг реализуется через CSS-свойство letter-spacing, которое поддерживает любые единицы длины и наследуется дочерними элементами.
Главное
Tracking (трекинг, разрядка) — это изменение межсимвольного расстояния, равномерно применяемое ко всем символам текстового блока. В отличие от кернинга, где каждая пара символов получает индивидуальную корректировку на основе кернинг-таблицы шрифта, трекинг задаётся единым числовым значением для всего диапазона. Положительный трекинг увеличивает интервал (разрядка), отрицательный — уменьшает (уплотнение).
Термин восходит к металлической типографике, где межсимвольный интервал регулировался физическим расстоянием между литерами. В цифровой типографике трекинг применяется поверх кернинг-таблицы: сначала шрифт применяет встроенные кернинг-пары, затем система добавляет равномерный трекинг ко всем символам. Результирующий интервал = кернинг + трекинг, что важно учитывать при агрессивном уплотнении текста.
Единицы измерения: трекинг может задаваться в абсолютных единицах (пункты, пиксели, миллиметры) и в относительных (em, процент от размера шрифта). В мобильной разработке принято задавать трекинг в пунктах (iOS) или sp (Android) как абсолютные значения, в вебе — в em как относительные. Относительные единицы предпочтительнее для accessibility, так как масштабируются при изменении размера шрифта пользователем.
Путаница между трекингом и кернингом — одна из самых распространённых ошибок начинающих дизайнеров и разработчиков. Кернинг работает на микроуровне — корректирует интервал между конкретными парами символов (AV, Te, To) на основе их геометрии. Трекинг работает на макроуровне — равномерно сдвигает все символы фрагмента, не учитывая их форму.
Визуальный эффект: при кернинге расстояния между разными парами символов различаются — между A и V меньше, чем между A и I, потому что формы букв компенсируют друг друга. При трекинге все расстояния одинаковы — между A и V, A и I, T и o — везде один и тот же сдвиг. Это делает трекинг инструментом глобальной регулировки, а кернинг — инструментом тонкой настройки.
Комбинированное использование: в интерфейсной типографике трекинг и кернинг применяются вместе. Шрифт содержит кернинг-таблицу для базовой оптимизации, а разработчик добавляет трекинг для стилизации или accessibility. Кернинг-таблица применяется первой, затем поверх неё добавляется трекинг. При отрицательном трекинге (уплотнении) кернинг-пары могут создавать нежелательные наложения — проверяйте проблемные сочетания.
| Характеристика | Кернинг | Трекинг |
|---|---|---|
| Область | Пары символов | Весь текст |
| Значение | Индивидуальное для каждой пары | Единое для всех символов |
| Цель | Визуальная равномерность | Регулировка плотности |
| Заметность | В заголовках от 24pt | Во всех кеглях |
| iOS атрибут | .kern (nil или 0) | .kern (числовое значение) |
Положительный трекинг (разрядка) увеличивает расстояние между символами. Применяется для улучшения читаемости мелкого текста (10-13pt), где символы визуально сливаются при стандартном интервале. Также используется в accessibility для пользователей с дислексией — увеличенный межсимвольный интервал облегчает распознавание букв. Типичные значения: 0.3-1pt для iOS, 0.02-0.05em для веба.
Отрицательный трекинг (уплотнение) уменьшает расстояние между символами. Применяется в заголовках (от 24pt) и акцентном тексте, где плотный набор выглядит цельным и современным. Крупные кегли хорошо переносят уплотнение, так как межсимвольные расстояния визуально велики. Типичные значения: от -0.3 до -1pt. Ограничение: при трекинге меньше -1pt символы могут накладываться друг на друга, особенно в парах с выступающими элементами (fi, fj, TT).
Эмпирическое правило: для каждого кегля существует диапазон допустимого трекинга. Чем крупнее шрифт, тем меньше трекинг требуется для оптимальной читаемости. Формула: оптимальный трекинг ≈ font-weight * 0.01 - font-size * 0.001. Для жирного шрифта (weight 700) 16pt: 700 * 0.01 - 16 * 0.001 = 6.84, что с поправкой на гарнитуру даёт примерно 0.5pt положительного трекинга.
Body text (14-18pt): трекинг не требуется или минимальный положительный 0.1-0.3pt. Профессиональные шрифты уже содержат оптимальные интервалы для основного текста. Любое вмешательство в трекинг body text должно обосновываться дизайном или accessibility-требованиями. Заголовки (20-36pt): допустим отрицательный трекинг от -0.3 до -0.8pt в зависимости от гарнитуры и веса. Капс (ALL CAPS): рекомендуется положительный трекинг 0.5-2pt, так как прописные буквы в капсе визуально сливаются без дополнительного интервала.
Специфика гарнитур: шрифты с гротескной геометрией (Helvetica, Inter, SF Pro) лучше переносят отрицательный трекинг, чем антиквенные гарнитуры с засечками (Times, Georgia, PT Serif). У антиквенных шрифтов засечки создают дополнительное визуальное соединение между буквами, и уплотнение делает текст нечитаемым. Для антиквенных гарнитур рекомендуется только положительный трекинг.
На iOS трекинг реализуется через тот же атрибут .kern в NSAttributedString, что и кернинг, но с одним отличием: для трекинга указывается числовое значение, отличное от nil. nil — кернинг по умолчанию (из таблицы шрифта), 0 — отключение кернинга, любое другое число — трекинг поверх кернинг-таблицы. Это означает, что при установке .kern = 2, все символы получат +2pt межсимвольного интервала поверх встроенных кернинг-пар.
let text = "Heading with tracking"
let attributedString = NSMutableAttributedString(string: text)
// Positive tracking +0.8pt
attributedString.addAttribute(
.kern,
value: 0.8,
range: NSRange(
location: 0,
length: text.count
)
)
// UILabel with tracking
label.attributedText = attributedString
SwiftUI использует модификатор .tracking() для Text, который принимает CGFloat. В отличие от UIKit, SwiftUI-трекинг применяется ко всему тексту внутри модификатора и не может быть частичным без разбиения на несколько Text-блоков. SwiftUI автоматически обрабатывает комбинацию кернинга и трекинга, применяя трекинг поверх кернинг-таблицы шрифта.
Android использует свойство letterSpacing в TextView, которое задаётся в em (множитель относительно размера шрифта). Значение 0 — трекинг по умолчанию, 0.05 — увеличение на 5% от em, -0.02 — уменьшение. В Android letterSpacing работает как трекинг (равномерно для всех символов), а кернинг-таблица шрифта применяется автоматически на уровне рендер-движка Minikin.
// In XML layout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text with tracking"
android:letterSpacing="0.08"
android:textSize="12sp" />
// Programmatically in Kotlin
val textView: TextView = findViewById(R.id.smallText)
textView.letterSpacing = 0.08f
Compose в Android использует параметр letterSpacing в TextStyle, задаваемый в sp. Например, TextStyle(letterSpacing = 0.5.sp) даёт трекинг в 0.5 sp. В отличие от XML-подхода, Compose позволяет комбинировать letterSpacing с другими типографическими параметрами в едином объекте TextStyle, что упрощает создание дизайн-систем.
В вебе трекинг реализуется через CSS-свойство letter-spacing, которое принимает любые единицы длины или ключевое слово normal. Значение normal соответствует 0 (без дополнительного межсимвольного интервала). Свойство наследуется, поддерживает отрицательные значения и анимируется. По данным CSS Specification, letter-spacing применяется после кернинг-таблицы шрифта.
/* Positive tracking for small text */
.caption {
font-size: 11px;
letter-spacing: 0.03em;
}
/* Negative tracking for headings */
h1 {
font-size: 32px;
font-weight: 700;
letter-spacing: -0.02em;
}
/* Tracking for uppercase */
.uppercase-label {
text-transform: uppercase;
letter-spacing: 0.08em;
}
em vs px: letter-spacing в em масштабируется при изменении font-size и предпочтителен для accessibility. px не масштабируется и может привести к несоответствию при увеличении текста браузером (Zoom). Рекомендация: всегда используйте em для letter-spacing. Исключение — случаи, когда трекинг должен оставаться фиксированным независимо от кегля, например, в логотипах.
Анимация letter-spacing: свойство поддерживает CSS transitions и animations, что позволяет создавать плавные эффекты появления текста. Анимация от letter-spacing: -0.05em до letter-spacing: 0.01em при загрузке заголовка — популярный приём в современных интерфейсах. Производительность: анимация letter-spacing вызывает reflow (перерасчёт layout), так как меняет ширину текста. Используйте transform и opacity для высокопроизводительных анимаций, где это возможно.
Трекинг напрямую влияет на читаемость текста для пользователей с ограничениями зрения и дислексией. WCAG 2.2 Guideline 1.4.12 (Text Spacing) требует, чтобы текст не терял контент при увеличении межсимвольного, межстрочного и межабзацного интервалов до определённых значений. letter-spacing должен выдерживать увеличение до 0.12em без обрезания контента и наложения элементов.
Дислексия: исследования British Dyslexia Association показывают, что увеличение letter-spacing до 0.12em улучшает скорость чтения у пользователей с дислексией на 10-15%. Однако это индивидуально — некоторые пользователи предпочитают стандартный интервал. iOS и Android предоставляют системные accessibility-настройки для увеличения межсимвольного интервала, которые приложение должно уважать.
Правила для разработчика: не используйте фиксированные widths/heights, которые могут сломаться при увеличении letter-spacing. Избегайте overflow: hidden на контейнерах с текстом без проверки accessibility. Тестируйте интерфейс с увеличенным до 0.12em letter-spacing на всех экранах. Если дизайн ломается — пересмотрите вёрстку, а не игнорируйте accessibility.
Платформенная поддержка: iOS автоматически увеличивает letter-spacing при включении функции Larger Text в настройках доступности, если используется UIFont.preferredFont. Android предоставляет аналогичную опцию через FontScale. Разработчик не должен отключать эти настройки. Тестовый сценарий: включите максимальный размер текста в настройках устройства и проверьте, что трекинг не ломает layout интерфейса.
Часто задаваемые вопросы
В iOS .kern = nil — кернинг по умолчанию из таблицы шрифта. .kern = 0 — отключение кернинга. .kern = любое число — трекинг, который прибавляется поверх кернинг-таблицы. В Android letterSpacing — всегда трекинг.
Для текста в верхнем регистре (ALL CAPS) используйте положительный трекинг 0.05-0.15em. Прописные буквы не имеют выносных элементов и визуально сливаются. На iOS: .kern = 1-2pt для капса 14-18pt.
Да. CSS-свойство letter-spacing поддерживает отрицательные значения. Минимальное значение ограничено браузером — typically -0.1em, после чего символы начинают накладываться. Используйте отрицательный трекинг только для заголовков от 24pt.
Трекинг не влияет напрямую на FPS при скролле. Однако изменение letter-spacing в CSS вызывает reflow, так как меняется ширина текстового блока. Для анимаций трекинга используйте transform вместо прямого изменения letter-spacing где возможно.
Увеличьте letter-spacing до 0.12em через браузерные инструменты или accessibility-настройки. Проверьте, что текст не обрезается, не накладывается на соседние элементы и не выпадает из контейнера. Контент не должен пропадать ни при каких настройках.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также