Tekst i typografia w programowaniu mobilnym: co to jest, jakie narzędzia i jak to działa

Autor: IT Sectr Opublikowano: 2026-08-04 Czas czytania: 10 min

Praca z tekstem to kluczowe zadanie podczas tworzenia interfejsów nowoczesnych aplikacji mobilnych. Od wyboru czcionki po ustawienie odstępów między znakami — każdy aspekt wpływa na postrzeganie produktu. Według dokumentacji Apple NSAttributedString, prawidłowe formatowanie tekstu jest bezpośrednio związane z czytelnością i dostępnością interfejsu.

Najważniejsze punkty

  • NSAttributedString — klasa iOS do tworzenia sformatowanego tekstu z atrybutami czcionki, koloru i odstępów.
  • SpannableString — odpowiednik na Androidzie używający obiektów Span do stylizowania pojedynczych fragmentów tekstu.
  • UIFont i Typeface — główne klasy czcionek na iOS i Androidzie; niestandardowe czcionki dodaje się przez Info.plist i res/font.
  • Kerning i ligatury — parametry typograficzne kontrolujące odstępy między znakami i ich łączenie w jeden glif.
  • Czcionki zmienne — jeden plik czcionki zawiera wiele stylów, co zmniejsza rozmiar aplikacji.

Tekst w aplikacjach mobilnych: NSAttributedString na iOS

NSAttributedString to podstawowa klasa iOS do pracy z sformatowanym tekstem. Pozwala na stosowanie atrybutów do pojedynczych znaków lub zakresów: czcionki przez UIFont, koloru przez UIColor, odstępu między znakami przez kern i odstępu między wierszami przez NSMutableParagraphStyle. W aplikacjach mobilnych NSAttributedString jest używany wszędzie — od UILabel po złożone UITextView z obsługą edycji.

UIFont i konfiguracja czcionki

UIFont to główna klasa do pracy z czcionkami na iOS. Obsługuje czcionki systemowe, niestandardowe i Dynamic Type. UIFont(name:size:) ładuje czcionkę po nazwie, UIFont.systemFont(ofSize:weight:) ładuje czcionkę systemową. UIFontDescriptor umożliwia modyfikację istniejącej czcionki: zmianę rozmiaru, wagi lub dodanie macierzy transformacji. Dla niestandardowych czcionek plik .ttf jest dodawany do projektu i rejestrowany w Info.plist pod kluczem 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 i formatowanie akapitów

NSMutableParagraphStyle to modyfikowalna wersja ParagraphStyle do konfigurowania wyświetlania akapitów. Kontroluje wyrównanie (alignment), odstęp między wierszami (lineSpacing), wcięcia (headIndent, tailIndent) i tryb przycinania (lineBreakMode). ParagraphStyle jest kluczowy dla czytelności długich tekstów na urządzeniach mobilnych: odpowiedni lineSpacing zapobiega łączeniu się wierszy, a lineBreakMode zapobiega przycinaniu słów. Ustawienie paragraphSpacing definiuje odstęp między akapitami.

Tekst w aplikacjach mobilnych: SpannableString na Androidzie

SpannableString to główne narzędzie do formatowania tekstu na Androidzie. Działa poprzez mechanizm obiektów Span, z których każdy odpowiada za jeden aspekt: StyleSpan dla pogrubienia lub kursywy, ForegroundColorSpan dla koloru, URLSpan dla linków, UnderlineSpan dla podkreślenia. SpannableStringBuilder jest odpowiednikiem NSMutableAttributedString, umożliwiając budowanie tekstu z wielu fragmentów. Zrozumienie SpannableString jest niezbędne do tworzenia elastycznych interfejsów z sformatowanym tekstem w aplikacjach mobilnych.

Typeface i niestandardowe czcionki na Androidzie

Typeface to klasa do pracy z czcionkami na Androidzie. Obsługuje systemowe kroje Roboto i Noto, a także niestandardowe czcionki. Typeface.createFromResource() ładuje czcionkę z res/font/, Typeface.createFromAsset() z folderu assets. Android 8.0+ obsługuje rodziny czcionek w XML, łącząc wiele plików czcionek w jeden zasób. Niestandardową czcionkę dla tekstu w aplikacjach mobilnych na Androidzie ustawia się za pomocą atrybutu android:fontFamily lub programowo przez setTypeface().

TextMeasurer i pomiar tekstu

TextMeasurer (API 29+) to nowoczesne narzędzie do pomiaru tekstu bez wiązania z widokiem. Oblicza szerokość, wysokość i pozycje znaków przed renderowaniem. W starszych API używa się Paint.measureText() dla tekstu jednowierszowego lub StaticLayout dla wielowierszowego. TextMeasurer jest szczególnie przydatny w niestandardowych widokach, gdzie tekst jest rysowany przez Canvas.drawText(). Prawidłowy pomiar zapobiega przycinaniu znaków w interfejsie.

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

Typografia w programowaniu mobilnym: kerning, ligatury i tracking

Typografia w aplikacjach mobilnych to kompleksowa konfiguracja czcionek, odstępów między znakami i wierszami. Prawidłowa typografia w programowaniu mobilnym bezpośrednio wpływa na czytelność tekstu i wizualne postrzeganie interfejsu. Przyjrzyjmy się kluczowym parametrom dostępnym na obu platformach.

Kerning i Tracking

Kerning to regulacja odstępu między określonymi parami znaków (AV, To, Wa). Tracking to równomierny odstęp między znakami dla całego tekstu lub jego fragmentu. Na iOS kerning ustawia się przez NSKernAttributeName, na Androidzie — przez właściwość letterSpacing w TextView. Ujemne wartości zbliżają znaki, dodatnie je oddalają. Typografia w programowaniu mobilnym wymaga starannego dostrojenia tych parametrów: dla dużych nagłówków odstęp między znakami jest zwykle zwiększany, dla tekstu głównego pozostaje standardowy.

ParametriOSAndroid
Stylizowany ciągNSAttributedStringSpannableString
CzcionkaUIFont / CTFontTypeface
Odstęp między znakamiNSKernAttributeNameletterSpacing
Odstęp między wierszamilineSpacinglineSpacingExtra
LigaturyNSLigatureAttributeNameFunkcje OpenType
ElipsalineBreakMode .byTruncatingTailandroid:ellipsize

Ligatury

Ligatury to specjalne glify zastępujące kombinacje dwóch lub więcej znaków: fi, fl, ffi. Na iOS ligatury są kontrolowane przez NSLigatureAttributeName: 0 — wyłączone, 1 — standardowe, 2 — wszystkie dostępne. Na Androidzie ligatury są kontrolowane na poziomie czcionki przez funkcje OpenType. Włączenie ligatur poprawia wygląd tekstu, szczególnie w krojach szeryfowych. Typografia w programowaniu mobilnym używa ligatur głównie dla nagłówków i logo.

Niestandardowe czcionki w aplikacjach mobilnych: ładowanie i konfiguracja

Niestandardowe czcionki to jedno z głównych narzędzi do tworzenia unikalnego stylu wizualnego aplikacji. Pomagają wyróżnić markę i poprawić doświadczenie użytkownika. W aplikacjach mobilnych niestandardowe czcionki są używane do nagłówków, logo, elementów akcentujących i identyfikacji wizualnej.

Czcionki zmienne

Czcionki zmienne to nowoczesna technologia czcionek, w której jeden plik zawiera wiele stylów: od cienkiego do bardzo grubego, od wąskiego do szerokiego. Zmniejsza to rozmiar aplikacji, zastępując kilka plików czcionek jednym. Na iOS czcionki zmienne są obsługiwane przez UIFont z parametrem weight. Na Androidzie — przez Typeface.Builder z określeniem osi zmienności wght, wdth, slnt. Użycie czcionek zmiennych upraszcza typografię w aplikacjach mobilnych: programista nie musi ładować oddzielnych plików dla każdego stylu.

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

NSTextAttachment i ImageSpan

NSTextAttachment na iOS umożliwia osadzenie UIImage wewnątrz NSAttributedString — obraz wyrównuje się do linii bazowej i przesuwa wraz z tekstem. Na Androidzie odpowiednikiem jest ImageSpan wewnątrz SpannableString. Oba podejścia są przydatne do czatów z emoji, kanałów informacyjnych z ikonami i formularzy z niestandardowymi polami wyboru. Ważne jest odpowiednie skalowanie obrazu do wysokości czcionki, aby tekst i grafika wyglądały harmonijnie.

Efekty tekstu, wyrównanie i elipsa

Oprócz podstawowego formatowania, tekst w aplikacjach mobilnych obsługuje dodatkowe efekty wizualne: cienie, obrysy, przekreślenie i podkreślenie. Narzędzia te poszerzają możliwości typografii, ale wymagają ostrożnego stosowania, aby zachować czytelność.

Cień i obrys tekstu

Cień tekstu na iOS ustawia się przez NSShadow z offset, blurRadius i color. Obrys — przez NSStrokeWidthAttributeName: ujemne wartości tworzą wypełnienie z obrysem, dodatnie tylko kontur. Przekreślenie — NSUnderlineStyle (.single, .thick, .double). Na Androidzie cień TextView konfiguruje się przez android:shadowRadius, android:shadowDx, android:shadowDy. SpannableString obsługuje StrikethroughSpan i UnderlineSpan. Obrys tekstu na Androidzie jest implementowany przez OutlineSpan lub niestandardową czcionkę.

Elipsa i Marquee

Elipsa to przycinanie tekstu z wielokropkiem, gdy kontener jest przepełniony. Na iOS konfiguruje się przez lineBreakMode .byTruncatingTail i numberOfLines. Na Androidzie — przez android:ellipsize="end" i android:maxLines. Marquee to animacja przewijania tekstu dostępna na Androidzie przez android:ellipsize="marquee". Na iOS nie ma wbudowanego odpowiednika — używana jest biblioteka MarqueeLabel. Elipsa jest obowiązkowa dla wszystkich jednowierszowych tekstów w aplikacjach mobilnych, aby uniknąć przycinania treści.

Dynamic Type na iOS

Dynamic Type to adaptacyjny system tekstu na iOS, który dostosowuje rozmiar czcionki do ustawień dostępności użytkownika. Użyj UIFontMetrics do skalowania niestandardowych czcionek. Dynamic Type jest obowiązkowy dla aplikacji zgodnych z dostępnością. Na Androidzie odpowiednikiem są jednostki sp i scaledPixels, które skalują się zgodnie z systemowymi ustawieniami rozmiaru tekstu.

Często zadawane pytania

Co to jest NSAttributedString?

NSAttributedString to klasa iOS do tworzenia sformatowanego tekstu z atrybutami czcionki, koloru i stylu na poziomie znaków i zakresów.

Co to jest SpannableString na Androidzie?

SpannableString to klasa Android do znakowania tekstu przez obiekty Span: ForegroundColorSpan, StyleSpan, URLSpan, UnderlineSpan.

Jak dodać niestandardową czcionkę w iOS?

Dodaj plik .ttf do projektu, określ go w Info.plist pod kluczem Fonts provided by application, następnie użyj UIFont(name:).

Jak załadować niestandardową czcionkę na Androidzie?

Umieść plik .ttf w res/font/, utwórz rodzinę czcionek XML i określ android:fontFamily lub użyj Typeface.createFromAsset().

Czym są kerning i ligatury?

Kerning to odstęp między parami znaków. Ligatury to specjalne glify dla kombinacji liter. Są kontrolowane przez NSKernAttributeName i NSLigatureAttributeName.

Podsumowanie

  • NSAttributedString — główne narzędzie formatowania tekstu na iOS, obsługujące czcionki, kolory, odstępy między znakami i style akapitów.
  • SpannableString — odpowiednik na Androidzie używający obiektów Span: StyleSpan dla wagi, ForegroundColorSpan dla koloru, URLSpan dla linków.
  • UIFont i Typeface — klasy czcionek na iOS i Androidzie; niestandardowe czcionki dodaje się przez Info.plist i res/font odpowiednio.
  • Kerning i Tracking — kontrolują odstępy między znakami; kerning dla pojedynczych par, tracking równomiernie dla całego tekstu.
  • Ligatury — zastępują kombinacje znaków pojedynczymi glifami; kontrolowane przez NSLigatureAttributeName na iOS i OpenType na Androidzie.
  • Czcionki zmienne i Dynamic Type — nowoczesne technologie: jeden plik dla wielu stylów i automatyczna adaptacja do ustawień użytkownika.
  • Typografia w programowaniu mobilnym obejmuje czcionki, odstępy między wierszami, ligatury, cienie i elipsę, aby zapewnić czytelność.

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