Tracking — to równomierna zmiana odstępu między znakami w całym zaznaczonym fragmencie tekstu, w przeciwieństwie do kerningu, który koryguje odległość między konkretnymi parami liter. Tracking jest stosowany jednakowo do wszystkich znaków: dodatni tracking zwiększa odstęp, ujemny — zmniejsza. Według MDN Web Docs, w interfejsach webowych tracking jest realizowany przez właściwość CSS letter-spacing, która obsługuje dowolne jednostki długości i jest dziedziczona przez elementy potomne.
Najważniejsze
Tracking (treking, rozstrzelenie) — to zmiana odległości między znakami, równomiernie stosowana do wszystkich znaków bloku tekstu. W przeciwieństwie do kerningu, gdzie każda para znaków otrzymuje indywidualną korektę na podstawie tablicy kerningu czcionki, tracking jest ustawiany jedną wartością liczbową dla całego zakresu. Dodatni tracking zwiększa odstęp (rozstrzelenie), ujemny — zmniejsza (zagęszczenie).
Termin wywodzi się z metalowej typografii, gdzie odstęp między znakami był regulowany fizyczną odległością między czcionkami. W typografii cyfrowej tracking jest stosowany na wierzch tablicy kerningu: najpierw czcionka stosuje wbudowane pary kerningu, następnie system dodaje równomierny tracking do wszystkich znaków. Końcowy odstęp = kerning + tracking, co należy uwzględnić przy agresywnym zagęszczaniu tekstu.
Jednostki miary: tracking może być ustawiany w jednostkach bezwzględnych (punkty, piksele, milimetry) i względnych (em, procent rozmiaru czcionki). W programowaniu mobilnym przyjęto ustawiać tracking w punktach (iOS) lub sp (Android) jako wartości bezwzględne, w webie — w em jako względne. Jednostki względne są preferowane dla accessibility, ponieważ skalują się przy zmianie rozmiaru czcionki przez użytkownika.
Pomieszanie trackingu z kerningiem — to jeden z najczęstszych błędów początkujących projektantów i programistów. Kerning działa na mikropoziomie — koryguje odstęp między konkretnymi parami znaków (AV, Te, To) na podstawie ich geometrii. Tracking działa na makropoziomie — równomiernie przesuwa wszystkie znaki fragmentu, nie uwzględniając ich kształtu.
Efekt wizualny: przy kerningu odległości między różnymi parami znaków różnią się — między A i V jest mniejsza niż między A i I, ponieważ kształty liter kompensują się nawzajem. Przy trackingu wszystkie odległości są jednakowe — między A i V, A i I, T i o — wszędzie ten sam przesuw. To czyni tracking narzędziem globalnej regulacji, a kerning — narzędziem precyzyjnego dostrajania.
Użycie kombinowane: w typografii interfejsów tracking i kerning są stosowane razem. Czcionka zawiera tablicę kerningu do podstawowej optymalizacji, a programista dodaje tracking do stylizacji lub accessibility. Tablica kerningu jest stosowana najpierw, następnie na jej wierzch dodawany jest tracking. Przy ujemnym trackingu (zagęszczeniu) pary kerningu mogą tworzyć niepożądane nakładania — sprawdzaj problematyczne kombinacje.
| Charakterystyka | Kerning | Tracking |
|---|---|---|
| Obszar | Pary znaków | Cały tekst |
| Wartość | Indywidualna dla każdej pary | Jednolita dla wszystkich znaków |
| Cel | Wizualna równomierność | Regulacja gęstości |
| Widoczność | W nagłówkach od 24pt | We wszystkich rozmiarach |
| Atrybut iOS | .kern (nil lub 0) | .kern (wartość liczbowa) |
Dodatni tracking (rozstrzelenie) zwiększa odstęp między znakami. Stosowany do poprawy czytelności małego tekstu (10–13pt), gdzie znaki wizualnie zlewają się przy standardowym odstępie. Używany również w accessibility dla użytkowników z dysleksją — zwiększony odstęp między znakami ułatwia rozpoznawanie liter. Typowe wartości: 0.3–1pt dla iOS, 0.02–0.05em dla webu.
Ujemny tracking (zagęszczenie) zmniejsza odstęp między znakami. Stosowany w nagłówkach (od 24pt) i tekście akcentowym, gdzie gęsty zestaw wygląda spójnie i nowocześnie. Duże rozmiary dobrze znoszą zagęszczenie, ponieważ odległości między znakami są wizualnie duże. Typowe wartości: od -0.3 do -1pt. Ograniczenie: przy trackingu mniejszym niż -1pt znaki mogą nałożyć się na siebie, szczególnie w parach z wystającymi elementami (fi, fj, TT).
Zasada empiryczna: dla każdego rozmiaru czcionki istnieje zakres dopuszczalnego trackingu. Im większa czcionka, tym mniej trackingu potrzeba do optymalnej czytelności. Formuła: optymalny tracking ≈ font-weight * 0.01 – font-size * 0.001. Dla pogrubionej czcionki (weight 700) 16pt: 700 * 0.01 – 16 * 0.001 = 6.84, co z poprawką na krój daje około 0.5pt dodatniego trackingu.
Body text (14–18pt): tracking nie jest wymagany lub minimalny dodatni 0.1–0.3pt. Profesjonalne czcionki zawierają już optymalne odstępy dla tekstu głównego. Jakakolwiek ingerencja w tracking body text powinna być uzasadniona wymaganiami projektowymi lub accessibility. Nagłówki (20–36pt): dopuszczalny ujemny tracking od -0.3 do -0.8pt w zależności od króju i wagi. Wersaliki (ALL CAPS): zalecany dodatni tracking 0.5–2pt, ponieważ duże litery w wersalikach wizualnie zlewają się bez dodatkowego odstępu.
Specyfika krojów: czcionki o groteskowej geometrii (Helvetica, Inter, SF Pro) lepiej znoszą ujemny tracking niż antykwowe kroje z szeryfami (Times, Georgia, PT Serif). W przypadku antykwowych czcionek szeryfy tworzą dodatkowe wizualne połączenie między literami, a zagęszczenie czyni tekst nieczytelnym. Dla antykwowych krojów zaleca się tylko dodatni tracking.
W iOS tracking jest realizowany przez ten sam atrybut .kern w NSAttributedString co kerning, ale z jedną różnicą: dla trackingu podaje się wartość liczbową różną od nil. nil — kerning domyślny (z tablicy czcionki), 0 — wyłączenie kerningu, dowolna inna liczba — tracking na wierzch tablicy kerningu. Oznacza to, że przy ustawieniu .kern = 2, wszystkie znaki otrzymują +2pt odstępu między znakami na wierzch wbudowanych par kerningu.
let text = "Heading with tracking"
let attributedString = NSMutableAttributedString(string: text)
// Pozytywny tracking +0.8pt
attributedString.addAttribute(
.kern,
value: 0.8,
range: NSRange(
location: 0,
length: text.count
)
)
// UILabel z trackingiem
label.attributedText = attributedString
SwiftUI używa modyfikatora .tracking() dla Text, który przyjmuje CGFloat. W przeciwieństwie do UIKit, tracking w SwiftUI jest stosowany do całego tekstu wewnątrz modyfikatora i nie może być częściowy bez podziału na kilka bloków Text. SwiftUI automatycznie obsługuje kombinację kerningu i trackingu, stosując tracking na wierzch tablicy kerningu czcionki.
Android używa właściwości letterSpacing w TextView, która jest ustawiana w em (mnożnik względem rozmiaru czcionki). Wartość 0 — tracking domyślny, 0.05 — zwiększenie o 5% em, -0.02 — zmniejszenie. W Androidzie letterSpacing działa jak tracking (równomiernie dla wszystkich znaków), a tablica kerningu czcionki jest stosowana automatycznie na poziomie silnika renderującego Minikin.
// W układzie XML
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text with tracking"
android:letterSpacing="0.08"
android:textSize="12sp" />
// Programowo w Kotlin
val textView: TextView = findViewById(R.id.smallText)
textView.letterSpacing = 0.08f
Compose w Androidzie używa parametru letterSpacing w TextStyle, ustawianego w sp. Na przykład TextStyle(letterSpacing = 0.5.sp) daje tracking 0.5 sp. W przeciwieństwie do podejścia XML, Compose pozwala łączyć letterSpacing z innymi parametrami typograficznymi w jednym obiekcie TextStyle, co ułatwia tworzenie systemów projektowych.
W webie tracking jest realizowany przez właściwość CSS letter-spacing, która przyjmuje dowolne jednostki długości lub słowo kluczowe normal. Wartość normal odpowiada 0 (bez dodatkowego odstępu między znakami). Właściwość jest dziedziczona, obsługuje wartości ujemne i jest animowana. Według CSS Specification, letter-spacing jest stosowany po tablicy kerningu czcionki.
/* 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 w em skaluje się przy zmianie font-size i jest preferowany dla accessibility. px nie skaluje się i może prowadzić do niezgodności przy zwiększaniu tekstu przez przeglądarkę (Zoom). Zalecenie: zawsze używaj em dla letter-spacing. Wyjątek — przypadki, gdy tracking powinien pozostać stały niezależnie od rozmiaru czcionki, na przykład w logo.
Animacja letter-spacing: właściwość obsługuje CSS transitions i animations, co pozwala tworzyć płynne efekty pojawiania się tekstu. Animacja od letter-spacing: -0.05em do letter-spacing: 0.01em przy ładowaniu nagłówka — popularna technika w nowoczesnych interfejsach. Wydajność: animacja letter-spacing powoduje reflow (przeliczenie layoutu), ponieważ zmienia szerokość tekstu. Używaj transform i opacity do wysokowydajnych animacji, gdzie to możliwe.
Tracking bezpośrednio wpływa na czytelność tekstu dla użytkowników z ograniczeniami wzroku i dysleksją. WCAG 2.2 Guideline 1.4.12 (Text Spacing) wymaga, aby tekst nie tracił treści przy zwiększeniu odstępów między znakami, między wierszami i między akapitami do określonych wartości. letter-spacing powinien wytrzymywać zwiększenie do 0.12em bez obcinania treści i nakładania elementów.
Dysleksja: badania British Dyslexia Association pokazują, że zwiększenie letter-spacing do 0.12em poprawia szybkość czytania u użytkowników z dysleksją o 10–15%. Jest to jednak indywidualne — niektórzy użytkownicy preferują standardowy odstęp. iOS i Android udostępniają systemowe ustawienia accessibility do zwiększania odstępu między znakami, które aplikacja powinna respektować.
Zasady dla programisty: nie używaj stałych szerokości/wysokości, które mogą się złamać przy zwiększeniu letter-spacing. Unikaj overflow: hidden na kontenerach z tekstem bez sprawdzenia accessibility. Testuj interfejs ze zwiększonym do 0.12em letter-spacing na wszystkich ekranach. Jeśli design się łamie — przemyśl na nowo układ, a nie ignoruj accessibility.
Wsparcie platformowe: iOS automatycznie zwiększa letter-spacing przy włączeniu funkcji Większy tekst w ustawieniach dostępności, jeśli używany jest UIFont.preferredFont. Android udostępnia podobną opcję przez FontScale. Programista nie powinien wyłączać tych ustawień. Scenariusz testowy: włącz maksymalny rozmiar tekstu w ustawieniach urządzenia i sprawdź, czy tracking nie łamie layoutu interfejsu.
Często zadawane pytania
W iOS .kern = nil — kerning domyślny z tablicy czcionki. .kern = 0 — wyłączenie kerningu. .kern = dowolna liczba — tracking, który jest dodawany na wierzch tablicy kerningu. W Androidzie letterSpacing — to zawsze tracking.
Dla tekstu wersalikami (ALL CAPS) używaj dodatniego trackingu 0.05–0.15em. Duże litery nie mają elementów górnych i dolnych i wizualnie zlewają się. W iOS: .kern = 1–2pt dla wersalików 14–18pt.
Tak. Właściwość CSS letter-spacing obsługuje wartości ujemne. Minimalna wartość jest ograniczona przez przeglądarkę — zazwyczaj -0.1em, po czym znaki zaczynają się nakładać. Używaj ujemnego trackingu tylko dla nagłówków od 24pt.
Tracking nie wpływa bezpośrednio na FPS przy przewijaniu. Jednak zmiana letter-spacing w CSS powoduje reflow, ponieważ zmienia się szerokość bloku tekstu. Do animacji trackingu używaj transform zamiast bezpośredniej zmiany letter-spacing, gdzie to możliwe.
Zwiększ letter-spacing do 0.12em przez narzędzia przeglądarki lub ustawienia accessibility. Sprawdź, czy tekst nie jest obcinany, nie nakłada się na sąsiednie elementy i nie wypada z kontenera. Treść nie powinna znikać przy żadnych ustawieniach.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również