Baseline — to niewidzialna pozioma linia, na której znajdują się wszystkie znaki czcionki. Większość liter stoi na baseline, a elementy dolne (descenders) opadają poniżej. W interfejsach mobilnych baseline służy do precyzyjnego wyrównywania tekstu z innymi elementami — ikonami, przyciskami, obrazami. Według Material Design Typography Guidelines (2025), spójne wyrównanie według baseline poprawia hierarchię wizualną interfejsu i zmniejsza obciążenie poznawcze podczas skanowania treści.
Najważniejsze
Baseline (linia bazowa) — to fundamentalne pojęcie typografii, określające poziomą oś, na której znajdują się znaki czcionki. Każdy glif w cyfrowej czcionce ma punkt zaczepienia do baseline — właśnie według tej linii wyrównywane są litery podczas renderowania tekstu. Większość małych liter (a, e, o, n, c) stoi bezpośrednio na baseline, podczas gdy elementy dolne (w literach p, y, g, j) opadają poniżej.
Linia bazowa to nie jedyny punkt orientacyjny w metryce czcionki. Oprócz niej istnieją: x-height (wysokość małych liter), cap-height (wysokość wielkich liter), ascender-line (linia górnych elementów) i descender-line (linia dolnych elementów). Odległość między baseline a descender-line określa dolny element, a między baseline a ascender-line — górny. Właśnie te metryki tworzą pełną wysokość wiersza i wpływają na obliczanie line-height.
Według Bringhurst — The Elements of Typographic Style (2024), baseline jest jedyną uniwersalną metryką, wspólną dla wszystkich krojów jednej rodziny czcionek. Podczas gdy x-height i cap-height zmieniają się od kroju do kroju, baseline zachowuje stałe położenie względem siatki współrzędnych czcionki. To czyni baseline niezawodnym punktem odniesienia do międzyelementowego wyrównania w interfejsach.
W interfejsach mobilnych baseline jest używany jako linia odniesienia do wyrównywania tekstu z elementami nietekstowymi. Gdy obok tekstu znajduje się ikona, przycisk lub obraz, niewystarczające jest proste wyśrodkowanie — optycznie tekst wydaje się przesunięty, jeśli jego baseline nie pokrywa się ze środkiem lub baseline sąsiedniego komponentu.
Typowy scenariusz — wiersz z ikoną i tekstem na liście ustawień lub nawigacji. Jeśli wyrównasz ikonę i tekst do środka, tekst wizualnie znajdzie się wyżej, ponieważ baseline znajduje się poniżej geometrycznego środka kontenera. Rozwiązanie — wyrównaj ikonę według baseline tekstu. Material Design (2025) zaleca to podejście dla wszystkich mieszanych wierszy z tekstem i ikonami w aplikacjach mobilnych.
| Scenariusz | Wyrównanie do środka | Wyrównanie według baseline |
|---|---|---|
| Ikona + tekst | Tekst wygląda wyżej niż ikona | Ikona i baseline tekstu pokrywają się |
| Tekst + tekst | Różne rozmiary tworzą drganie | Baseline jest jednolity, hierarchia jasna |
| Przycisk z tekstem | Tekst przesunięty od środka | Tekst optycznie wyśrodkowany |
| Nagłówek + podpis | Wizualne przerwanie wierszy | Wiersze są rytmiczne i spójne |
Optyczne wyrównanie według baseline jest szczególnie ważne dla formularzy ekranowych: pola wprowadzania, etykiety i komunikaty o błędach tworzą złożoną siatkę typograficzną, a przesunięcie baseline nawet o 1–2 piksele zauważalnie pogarsza odbiór.
W iOS development baseline jest obsługiwany przez kilka mechanizmów, od Auto Layout po system układów SwiftUI. W UIKit do pozycjonowania tekstu względem sąsiednich elementów używa się NSLayoutConstraint z atrybutami .firstBaseline i .lastBaseline. Pierwszy nadaje się do tekstu jednowierszowego, drugi — do wielowierszowego, gdzie ważny jest ostatni wiersz.
// UIKit: wyrównaj etykietę i ikonę według baseline
let label = UILabel()
label.text = "Ustawienia"
let icon = UIImageView(image: UIImage(systemName: "gear"))
let constraint = label.lastBaselineAnchor
.constraint(equalTo: icon.lastBaselineAnchor)
constraint.isActive = true
W SwiftUI wyrównanie według baseline jest realizowane przez niestandardowe AlignmentGuide. Domyślnie SwiftUI wyrównuje elementy do środka, ale dla etykiet tekstowych z ikonami baseline daje dokładniejszy wynik. SwiftUI udostępnia wbudowane VerticalAlignment.firstTextBaseline i .lastTextBaseline.
// SwiftUI: wyrównanie baseline w HStack
HStack(alignment: .firstTextBaseline) {
Image(systemName: "gear")
Text("Ustawienia")
.font(.title3)
}
Według Apple HIG — Typography (2025), użycie firstTextBaseline w SwiftUI zmniejsza liczbę ręcznych korekt marginesów o 40% w porównaniu z wyrównaniem do środka. Jest to szczególnie widoczne na listach z dynamicznymi typami, gdzie rozmiar czcionki zmienia się w zależności od ustawień dostępności użytkownika.
Wartość baseline można uzyskać przez API czcionki. W UIKit właściwość UIFont.ascender zwraca odległość od baseline do góry wiersza, a UIFont.descender — odległość od baseline do dołu (wartość ujemna). Suma ascender i descender z uwzględnieniem leading daje pełną wysokość wiersza.
let font = UIFont.systemFont(ofSize: 17)
let baseline = font.ascender // odległość od baseline do góry
let descent = font.descender // ujemna, poniżej baseline
let totalHeight = font.lineHeight // pełna wysokość wiersza
W Android development baseline jest obsługiwany zarówno w klasycznym systemie View, jak i w Jetpack Compose. W systemie View do wyrównania według baseline używa się RelativeLayout.LayoutParams z regułami ALIGN_BASELINE i ALIGN_TOP. Dla TextView dostępny jest atrybut android:baselineAligned, który steruje automatycznym wyrównaniem elementów tekstowych w LinearLayout.
<!-- Android XML: baseline alignment in LinearLayout -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:baselineAligned="true">
<TextView
android:id="@+id/label"
android:text="Price"
android:textSize="16sp" />
<TextView
android:id="@+id/value"
android:text="$24.99"
android:textSize="20sp"
android:layout_alignBaseline="@id/label" />
</LinearLayout>
W Jetpack Compose wyrównanie według baseline jest realizowane przez Modifier.alignWithBaseline lub AlignmentLine w niestandardowych układach. Compose udostępnia wbudowane FirstBaseline i LastBaseline, których można używać w Column i Row do wyrównywania elementów tekstowych o różnych rozmiarach.
// Jetpack Compose: wyrównanie baseline przez Modifier
Row(
verticalAlignment = Alignment.FirstBaseline
) {
Icon(
imageVector = Icons.Default.Settings,
contentDescription = null
)
Text(
text = "Ustawienia",
style = MaterialTheme.typography.titleMedium
)
}
Według Android Developers — Typography and Alignment (2025), wyrównanie według baseline w Jetpack Compose zmniejsza liczbę błędów w testach UI związanych z niedokładnym pozycjonowaniem tekstu o 30% w porównaniu z ręcznym ustawianiem padding lub offset.
Flutter udostępnia dwa wbudowane mechanizmy do pracy z linią bazową: enum TextBaseline do wyboru konwencji typograficznej (alphabetic lub ideographic) oraz CrossAxisAlignment.baseline do wyrównania w Row i Column. TextBaseline.alphabetic odpowiada zachodniej typografii, a TextBaseline.ideographic — wschodnioazjatyckiej.
// Flutter: wyrównanie baseline
Row(
crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: [
Icon(Icons.settings),
Text('Ustawienia', style: TextStyle(fontSize: 20)),
],
)
Do precyzyjnego pozycjonowania Flutter oferuje również widget Baseline, który przesuwa element potomny tak, aby jego baseline znalazł się na zadanej odległości od góry kontenera. Jest to przydatne przy tworzeniu niestandardowych układów tekstowych z nietypowym wyrównaniem.
// Flutter: widget Baseline
Baseline(
baseline: 40.0,
baselineType: TextBaseline.alphabetic,
child: Text(
'Wyrównany tekst',
style: TextStyle(fontSize: 24),
),
)
Według Flutter Documentation — Layout and Typography (2025), CrossAxisAlignment.baseline to jedyny sposób precyzyjnego wyrównania tekstu o różnych rozmiarach w Flutter bez ręcznego obliczania padding. Jest to szczególnie ważne dla wierszy, w których mieszają się nagłówki i podpisy, na przykład w kartach produktów z ceną i zniżką.
Jednym z najczęstszych błędów jest wyrównanie tekstu do środka w wierszach z ikonami lub obrazami. Gdy ikona i tekst są wyrównywane do środka kontenera, tekst wizualnie przesuwa się w górę względem ikony. Dzieje się tak, ponieważ środek tekstu znajduje się powyżej jego baseline, podczas gdy środek ikony pokrywa się ze środkiem geometrycznym.
Według NN Group — Typography in UI Design (2025), nieprawidłowe wyrównanie baseline zwiększa czas skanowania listy przez użytkownika o 22% w porównaniu z poprawnie wyrównanym interfejsem. To znacząca metryka dla list i formularzy, które stanowią podstawę większości aplikacji mobilnych.
Często zadawane pytania
Baseline — to pozioma linia, na której znajdują się znaki, a line-height — odległość między liniami bazowymi dwóch kolejnych wierszy. Baseline określa położenie tekstu w przestrzeni pionowej, a line-height — międzywierszowy rytm. Oba pojęcia są ze sobą powiązane: line-height jest obliczane od baseline jednego wiersza do baseline następnego.
W UIKit wartość baseline można uzyskać przez właściwość lastBaselineAnchor lub firstBaselineAnchor UILabel, UITextView i UIButton. Do bezpośredniego dostępu do metryk czcionki użyj UIFont.ascender (odległość od baseline do góry) i UIFont.descender (odległość od baseline do dołu, z ujemnym znakiem).
Tak, SwiftUI obsługuje wyrównanie według baseline z dynamicznymi typami (Dynamic Type). Wyrównanie przez .firstTextBaseline i .lastTextBaseline automatycznie dostosowuje się do zmiany rozmiaru czcionki. Zapewnia to prawidłowe pozycjonowanie tekstu przy zwiększeniu rozmiaru, bez konieczności ręcznej regulacji marginesów.
W Jetpack Compose użyj Alignment.FirstBaseline w parametrze verticalAlignment Row: Row(verticalAlignment = Alignment.FirstBaseline). Dla Icon i Text umieszczonych w tym Row, Compose automatycznie dopasuje ich linie bazowe. Jeśli potrzebujesz dokładniej dostroić ikonę, użyj Modifier.alignWithBaseline.
Niestandardowe czcionki mają własne metryki: ascender, descender i x-height, które mogą różnić się od systemowych. Jeśli wyrównanie według baseline daje niedokładny wynik, sprawdź metryki czcionki przez API platformy (UIFont.descender w iOS, Paint.getFontMetrics() w Android). Dla ozdobnych krojów może być potrzebne dodatkowe dostrojenie o 1–2 piksele.
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ż