Baseline — egy láthatatlan vízszintes vonal, amelyen a betűtípus összes karaktere elhelyezkedik. A legtöbb betű a baseline-en áll, míg a lelógó elemek (descenders) aláereszkednek. Mobil felületeken a baseline-t a szöveg más elemekkel — ikonokkal, gombokkal, képekkel — való pontos igazítására használják. A Material Design Typography Guidelines (2025) szerint a konzisztens baseline-igazítás javítja a felület vizuális hierarchiáját és csökkenti a kognitív terhelést a tartalom vizsgálatakor.
Főbb pontok
Baseline (alapvonal) — a tipográfia alapfogalma, amely meghatározza azt a vízszintes tengelyt, amelyen a betűtípus karakterei elhelyezkednek. Minden glyph egy digitális betűtípusban rendelkezik egy baseline-hez rögzítési ponttal — a betűk pontosan ezen a vonalon igazodnak a szöveg megjelenítésekor. A legtöbb kisbetű (a, e, o, n, s) közvetlenül a baseline-en áll, míg a lelógó elemek (a p, q, g, j betűknél) aláereszkednek.
Az alapvonal nem az egyetlen referencia a betűmetrikában. Rajta kívül létezik: x-height (a kisbetűk magassága), cap-height (a nagybetűk magassága), ascender-line (a felfelé nyúló elemek vonala) és descender-line (a lefelé nyúló elemek vonala). A baseline és descender-line közötti távolság határozza meg a lelógó elemet, a baseline és ascender-line közötti távolság pedig a felfelé nyúló elemet. Ezek a metrikák alkotják a sor teljes magasságát és befolyásolják a line-height kiszámítását.
A Bringhurst — The Elements of Typographic Style (2024) szerint a baseline az egyetlen univerzális metrika, amely közös ugyanazon betűcsalád összes betűtípusában. Míg az x-height és cap-height változnak stílusról stílusra, a baseline megtartja állandó pozícióját a betűtípus koordináta-rendszeréhez képest. Ez teszi a baseline-t megbízható referenciává az elemek közötti igazításhoz a felületeken.
Mobil felületeken a baseline-t referenciaként használják a szöveg nem szöveges elemekkel való igazításához. Amikor a szöveg mellett ikon, gomb vagy kép található, az egyszerű középre igazítás nem elegendő — a szöveg optikailag eltolódottnak tűnik, ha a baseline-ja nem esik egybe a szomszédos komponens középpontjával vagy baseline-jával.
Tipikus forgatókönyv — egy sor ikonnal és szöveggel a beállítások vagy navigáció listájában. Ha az ikont és a szöveget középre igazítja, a szöveg vizuálisan magasabbnak tűnik, mert a baseline a konténer geometriai középpontja alatt helyezkedik el. Megoldás — az ikon igazítása a szöveg baseline-jához. A Material Design (2025) ezt a megközelítést ajánlja minden vegyes sorhoz szöveggel és ikonokkal a mobilalkalmazásokban.
| Forgatókönyv | Középre igazítás | Baseline-igazítás |
|---|---|---|
| Ikon + szöveg | Szöveg az ikon felett látszik | Ikon és szöveg baseline-ja egybeesik |
| Szöveg + szöveg | Különböző méretek remegést okoznak | Baseline egységes, hierarchia tiszta |
| Gomb szöveggel | Szöveg eltolódott a középponttól | Szöveg optikailag középre igazított |
| Címsor + alcím | Sorok vizuális megszakadása | Sorok ritmikusak és összefüggők |
Az optikai baseline-igazítás különösen fontos a képernyő-űrlapoknál: beviteli mezők, címkék és hibaüzenetek összetett tipográfiai rácsot alkotnak, és a baseline elmozdulása akár 1–2 pixellel is észrevehetően rontja az érzékelést.
Az iOS fejlesztésben a baseline több mechanizmuson keresztül támogatott, az Auto Layout-tól a SwiftUI layout rendszerig. A UIKit-ben a szöveg szomszédos elemekhez viszonyított pozicionálásához NSLayoutConstraint-et használnak .firstBaseline és .lastBaseline attribútumokkal. Az első egysoros szöveghez alkalmas, a második — többsoros szöveghez, ahol az utolsó sor fontos.
// UIKit: igazítsa a címkét és az ikont a baseline-ra
let label = UILabel()
label.text = "Beállítások"
let icon = UIImageView(image: UIImage(systemName: "gear"))
let constraint = label.lastBaselineAnchor
.constraint(equalTo: icon.lastBaselineAnchor)
constraint.isActive = true
A SwiftUI-ben a baseline-igazítás egyedi AlignmentGuide-on keresztül valósul meg. Alapértelmezés szerint a SwiftUI középre igazítja az elemeket, de ikonos szöveg címkéknél a baseline pontosabb eredményt ad. A SwiftUI beépített VerticalAlignment.firstTextBaseline és .lastTextBaseline funkciókat kínál.
// SwiftUI: baseline igazítás HStack-ben
HStack(alignment: .firstTextBaseline) {
Image(systemName: "gear")
Text("Beállítások")
.font(.title3)
}
Az Apple HIG — Typography (2025) szerint a firstTextBaseline használata a SwiftUI-ben 40%-kal csökkenti a kézi beállítások számát a középre igazításhoz képest. Ez különösen észrevehető a dinamikus típusú listákban, ahol a betűméret a felhasználó akadálymentesítési beállításaitól függően változik.
A baseline érték a betűtípus API-ján keresztül kérhető le. A UIKit-ben a UIFont.ascender tulajdonság a baseline-tól a sor tetejéig tartó távolságot adja vissza, a UIFont.descender pedig a baseline-tól a sor aljáig tartó távolságot (negatív érték). Az ascender és descender összege a leading-gal együtt adja a sor teljes magasságát.
let font = UIFont.systemFont(ofSize: 17)
let baseline = font.ascender // távolság a baseline-tól a tetejéig
let descent = font.descender // negatív, a baseline alatt
let totalHeight = font.lineHeight // teljes sormagasság
Az Android fejlesztésben a baseline támogatott mind a klasszikus View-rendszerben, mind a Jetpack Compose-ban. A View-rendszerben a baseline-igazításhoz RelativeLayout.LayoutParams-t használnak ALIGN_BASELINE és ALIGN_TOP szabályokkal. A TextView-hoz elérhető az android:baselineAligned attribútum, amely a szöveges elemek automatikus igazítását vezérli a LinearLayout-ban.
<!-- 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>
A Jetpack Compose-ban a baseline-igazítás Modifier.alignWithBaseline vagy AlignmentLine segítségével valósul meg egyedi layout-okban. A Compose beépített FirstBaseline és LastBaseline funkciókat kínál, amelyek Column és Row használhatók különböző méretű szöveges elemek igazítására.
// Jetpack Compose: baseline igazítás Modifier segítségével
Row(
verticalAlignment = Alignment.FirstBaseline
) {
Icon(
imageVector = Icons.Default.Settings,
contentDescription = null
)
Text(
text = "Beállítások",
style = MaterialTheme.typography.titleMedium
)
}
Az Android Developers — Typography and Alignment (2025) szerint a baseline-igazítás a Jetpack Compose-ban 30%-kal csökkenti a szöveg pontatlan pozicionálásával kapcsolatos UI-teszt hibákat a kézi padding vagy offset beállításhoz képest.
A Flutter két beépített mechanizmust kínál az alapvonallal való munkához: TextBaseline enum a tipográfiai konvenció kiválasztásához (alphabetic vagy ideographic) és CrossAxisAlignment.baseline az igazításhoz Row és Column esetén. A TextBaseline.alphabetic a nyugati tipográfiának, a TextBaseline.ideographic pedig a kelet-ázsiai tipográfiának felel meg.
// Flutter: baseline igazítás
Row(
crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: [
Icon(Icons.settings),
Text('Beállítások', style: TextStyle(fontSize: 20)),
],
)
A pontos pozicionáláshoz a Flutter egy Baseline widget-et is kínál, amely eltolja a gyermekelemet úgy, hogy a baseline-ja a konténer tetejétől meghatározott távolságra legyen. Ez hasznos egyedi szöveg layout-ok létrehozásakor nem szabványos igazítással.
// Flutter: Baseline widget
Baseline(
baseline: 40.0,
baselineType: TextBaseline.alphabetic,
child: Text(
'Igazított szöveg',
style: TextStyle(fontSize: 24),
),
)
A Flutter Documentation — Layout and Typography (2025) szerint a CrossAxisAlignment.baseline — az egyetlen mód a különböző méretű szövegek pontos igazítására a Flutter-ben kézi padding számítás nélkül. Ez különösen fontos olyan soroknál, ahol címsorok és alcímek keverednek, például termékkártyákon árcédulával és kedvezménnyel.
Az egyik leggyakoribb hiba — a szöveg középre igazítása az ikonokat vagy képeket tartalmazó sorokban. Amikor az ikon és a szöveg a konténer közepére van igazítva, a szöveg vizuálisan felfelé tolódik az ikonhoz képest. Ez azért történik, mert a szöveg közepe a baseline felett van, míg az ikon közepe egybeesik a geometriai középponttal.
A NN Group — Typography in UI Design (2025) szerint a helytelen baseline-igazítás 22%-kal növeli a lista felhasználó általi beolvasási idejét a helyesen igazított felülethez képest. Ez jelentős metrika a listák és űrlapok esetében, amelyek a legtöbb mobilalkalmazás alapját képezik.
Gyakran ismételt kérdések
Baseline — a vízszintes vonal, amelyen a karakterek elhelyezkednek, míg a line-height a két egymást követő sor alapvonala közötti távolság. A baseline meghatározza a szöveg helyzetét a függőleges térben, a line-height pedig a sorok közötti ritmust. Mindkét fogalom összefügg: a line-height az egyik sor baseline-jától a következő sor baseline-jáig számítódik.
A UIKit-ben a baseline érték a lastBaselineAnchor vagy firstBaselineAnchor tulajdonságon keresztül érhető el UILabel, UITextView és UIButton esetén. A betűmetrikák közvetlen eléréséhez használja a UIFont.ascender (távolság a baseline-tól a sor tetejéig) és UIFont.descender (távolság a baseline-tól a sor aljáig, negatív előjellel) tulajdonságokat.
Igen, a SwiftUI támogatja a baseline alignment-ot dinamikus típusokkal (Dynamic Type). A .firstTextBaseline és .lastTextBaseline segítségével történő igazítás automatikusan alkalmazkodik a betűméret változásához. Ez biztosítja a szöveg helyes pozicionálását a méret növekedésekor anélkül, hogy kézi távolságbeállításra lenne szükség.
A Jetpack Compose-ban használja az Alignment.FirstBaseline értéket a Row verticalAlignment paraméterében: Row(verticalAlignment = Alignment.FirstBaseline). Az ebben a Row-ban elhelyezett Icon és Text esetében a Compose automatikusan összehangolja azok alapvonalait. Ha az ikont pontosabban kell beállítani, használja a Modifier.alignWithBaseline-t.
Az egyedi betűtípusoknak saját metrikáik vannak: ascender, descender és x-height, amelyek eltérhetnek a rendszerbetűtípusokétól. Ha a baseline alignment nem ad pontos eredményt, ellenőrizze a betűtípus metrikáit a platform API-ján keresztül (UIFont.descender iOS-ben, Paint.getFontMetrics() Android-ban). Dekoratív betűtípusok esetén további 1–2 pixeles beállításra lehet szükség.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is