Tracking w programowaniu mobilnym — istota i regulacja odległości międzysymbolowej

Autor: IT Sectr Opublikowano: 2026-07-24 Czas czytania: 9 min

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 — równomierny odstęp międzysymbolowy stosowany do wszystkich znaków fragmentu tekstu
  • Różni się od kerningu: tracking jest jednolity dla wszystkich znaków, kerning — indywidualny dla par
  • Dodatni tracking poprawia czytelność małego tekstu i jest używany w accessibility
  • Ujemny tracking stosowany jest w nagłówkach do tworzenia gęstego, akcentowanego tekstu
  • W iOS realizowany jest przez .kern w NSAttributedString, w Androidzie — przez letterSpacing

Czym jest tracking w typografii

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.

Tracking a kerning: zasadnicze różnice

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.

CharakterystykaKerningTracking
ObszarPary znakówCały tekst
WartośćIndywidualna dla każdej paryJednolita dla wszystkich znaków
CelWizualna równomiernośćRegulacja gęstości
WidocznośćW nagłówkach od 24ptWe wszystkich rozmiarach
Atrybut iOS.kern (nil lub 0).kern (wartość liczbowa)

Dodatni i ujemny tracking: kiedy stosować

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.

Tracking dla różnych typów tekstu

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.

Implementacja trackingu w iOS i Android

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.

swift
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.

groovy
// 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.

Konfiguracja letter-spacing w tworzeniu stron internetowych

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.

css
/* 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.

Accessibility a tracking w interfejsach mobilnych

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

Jak odróżnić tracking od kerningu w kodzie?

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.

Jakiego trackingu używać dla wersalików?

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.

Czy tracking może być ujemny w webie?

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.

Jak tracking wpływa na wydajność?

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.

Jak sprawdzić accessibility trackingu?

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

  • Tracking — równomierny odstęp między znakami, jednolity dla wszystkich znaków bloku tekstu
  • Od kerningu różni się globalnością: tracking nie uwzględnia kształtu konkretnych par znaków
  • Dodatni tracking poprawia czytelność małego tekstu i wersalików, używany w accessibility
  • Ujemny tracking stosowany w nagłówkach od 24pt do gęstego, akcentowanego zestawu
  • W iOS realizowany przez .kern wartością liczbową, w Androidzie — letterSpacing
  • W webie używany jest letter-spacing w em do skalowania przy ustawieniach accessibility
  • WCAG 2.2 wymaga, aby treść nie znikała przy trackingu do 0.12em

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.

Omów projekt

Przeczytaj również