Baseline — adalah garis horizontal tak terlihat di mana semua karakter font ditempatkan. Sebagian besar huruf berdiri di baseline, sementara elemen menurun (descenders) turun ke bawah. Dalam antarmuka mobile, baseline digunakan untuk perataan teks yang presisi dengan elemen lain — ikon, tombol, gambar. Menurut Material Design Typography Guidelines (2025), perataan yang konsisten pada baseline meningkatkan hierarki visual antarmuka dan mengurangi beban kognitif saat memindai konten.
Poin utama
Baseline (garis dasar) — adalah konsep fundamental tipografi yang mendefinisikan sumbu horizontal tempat karakter font ditempatkan. Setiap glyph dalam font digital memiliki titik jangkar ke baseline — huruf diratakan tepat pada garis ini saat rendering teks. Sebagian besar huruf kecil (a, e, o, n, s) berdiri langsung di baseline, sementara elemen menurun (pada huruf p, q, g, j) turun ke bawah.
Garis dasar bukan satu-satunya referensi dalam metrik font. Selain itu, ada: x-height (tinggi huruf kecil), cap-height (tinggi huruf kapital), ascender-line (garis elemen menaik) dan descender-line (garis elemen menurun). Jarak antara baseline dan descender-line menentukan elemen menurun, dan jarak antara baseline dan ascender-line — elemen menaik. Metrik ini membentuk tinggi baris penuh dan memengaruhi perhitungan line-height.
Menurut Bringhurst — The Elements of Typographic Style (2024), baseline adalah satu-satunya metrik universal yang umum untuk semua font dalam satu keluarga. Sementara x-height dan cap-height berubah dari satu gaya ke gaya lainnya, baseline mempertahankan posisi konstan relatif terhadap grid koordinat font. Ini menjadikan baseline sebagai referensi yang andal untuk perataan antar-elemen dalam antarmuka.
Dalam antarmuka mobile, baseline digunakan sebagai garis referensi untuk meratakan teks dengan elemen non-teks. Ketika di samping teks terdapat ikon, tombol, atau gambar, perataan tengah sederhana tidak cukup — teks tampak bergeser secara optik jika baseline-nya tidak sesuai dengan tengah atau baseline komponen di sekitarnya.
Skenario tipikal — baris dengan ikon dan teks dalam daftar pengaturan atau navigasi. Jika Anda meratakan ikon dan teks ke tengah, teks akan terlihat lebih tinggi secara visual karena baseline terletak di bawah pusat geometris wadah. Solusinya — meratakan ikon ke baseline teks. Material Design (2025) merekomendasikan pendekatan ini untuk semua baris campuran dengan teks dan ikon dalam aplikasi mobile.
| Skenario | Perataan tengah | Perataan pada baseline |
|---|---|---|
| Ikon + teks | Teks terlihat di atas ikon | Ikon dan baseline teks cocok |
| Teks + teks | Ukuran berbeda menciptakan getaran | Baseline seragam, hierarki jelas |
| Tombol dengan teks | Teks bergeser dari tengah | Teks terpusat secara optik |
| Judul + subjudul | Pemisahan visual baris | Baris berirama dan koheren |
Perataan optik pada baseline sangat penting untuk formulir layar: bidang input, label, dan pesan kesalahan membentuk jaringan tipografi yang kompleks, dan pergeseran baseline bahkan 1–2 piksel secara signifikan menurunkan persepsi.
Dalam pengembangan iOS, baseline didukung melalui beberapa mekanisme, dari Auto Layout hingga sistem layout SwiftUI. Di UIKit, untuk memposisikan teks relatif terhadap elemen di sekitarnya, digunakan NSLayoutConstraint dengan atribut .firstBaseline dan .lastBaseline. Yang pertama cocok untuk teks satu baris, yang kedua — untuk teks multi-baris di mana baris terakhir penting.
// UIKit: ratakan label dan ikon pada baseline
let label = UILabel()
label.text = "Pengaturan"
let icon = UIImageView(image: UIImage(systemName: "gear"))
let constraint = label.lastBaselineAnchor
.constraint(equalTo: icon.lastBaselineAnchor)
constraint.isActive = true
Di SwiftUI, perataan pada baseline diimplementasikan melalui AlignmentGuide kustom. Secara default, SwiftUI meratakan elemen ke tengah, tetapi untuk label teks dengan ikon, baseline memberikan hasil yang lebih akurat. SwiftUI menyediakan VerticalAlignment.firstTextBaseline dan .lastTextBaseline bawaan.
// SwiftUI: perataan baseline di HStack
HStack(alignment: .firstTextBaseline) {
Image(systemName: "gear")
Text("Pengaturan")
.font(.title3)
}
Menurut Apple HIG — Typography (2025), penggunaan firstTextBaseline di SwiftUI mengurangi jumlah penyesuaian manual sebesar 40% dibandingkan dengan perataan tengah. Ini terutama terlihat dalam daftar dengan tipe dinamis, di mana ukuran font berubah tergantung pada pengaturan aksesibilitas pengguna.
Nilai baseline dapat diperoleh melalui API font. Di UIKit, properti UIFont.ascender mengembalikan jarak dari baseline ke bagian atas baris, dan UIFont.descender — jarak dari baseline ke bagian bawah (nilai negatif). Jumlah ascender dan descender dengan leading memberikan tinggi baris penuh.
let font = UIFont.systemFont(ofSize: 17)
let baseline = font.ascender // jarak dari baseline ke atas
let descent = font.descender // negatif, di bawah baseline
let totalHeight = font.lineHeight // tinggi baris penuh
Dalam pengembangan Android, baseline didukung baik dalam sistem View klasik maupun Jetpack Compose. Dalam sistem View, untuk perataan pada baseline digunakan RelativeLayout.LayoutParams dengan aturan ALIGN_BASELINE dan ALIGN_TOP. Untuk TextView, atribut android:baselineAligned tersedia yang mengontrol perataan otomatis elemen teks di 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>
Di Jetpack Compose, perataan pada baseline diimplementasikan melalui Modifier.alignWithBaseline atau AlignmentLine dalam layout kustom. Compose menyediakan FirstBaseline dan LastBaseline bawaan yang dapat digunakan di Column dan Row untuk meratakan elemen teks dengan ukuran berbeda.
// Jetpack Compose: perataan baseline melalui Modifier
Row(
verticalAlignment = Alignment.FirstBaseline
) {
Icon(
imageVector = Icons.Default.Settings,
contentDescription = null
)
Text(
text = "Pengaturan",
style = MaterialTheme.typography.titleMedium
)
}
Menurut Android Developers — Typography and Alignment (2025), perataan pada baseline di Jetpack Compose mengurangi jumlah bug dalam tes UI terkait posisi teks yang tidak akurat sebesar 30% dibandingkan dengan pengaturan padding atau offset manual.
Flutter menyediakan dua mekanisme bawaan untuk bekerja dengan garis dasar: enum TextBaseline untuk memilih konvensi tipografi (alphabetic atau ideographic) dan CrossAxisAlignment.baseline untuk perataan di Row dan Column. TextBaseline.alphabetic sesuai dengan tipografi Barat, TextBaseline.ideographic — dengan tipografi Asia Timur.
// Flutter: perataan baseline
Row(
crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: [
Icon(Icons.settings),
Text('Pengaturan', style: TextStyle(fontSize: 20)),
],
)
Untuk posisi yang presisi, Flutter juga menawarkan widget Baseline yang menggeser elemen anak sehingga baseline-nya berada pada jarak tertentu dari bagian atas wadah. Ini berguna saat membuat layout teks kustom dengan perataan non-standar.
// Flutter: widget Baseline
Baseline(
baseline: 40.0,
baselineType: TextBaseline.alphabetic,
child: Text(
'Teks yang diratakan',
style: TextStyle(fontSize: 24),
),
)
Menurut Flutter Documentation — Layout and Typography (2025), CrossAxisAlignment.baseline — satu-satunya cara untuk meratakan teks dengan ukuran berbeda secara presisi di Flutter tanpa perhitungan padding manual. Ini sangat penting untuk baris yang menggabungkan judul dan subjudul, misalnya, di kartu produk dengan harga dan diskon.
Salah satu kesalahan paling umum — meratakan teks ke tengah di baris dengan ikon atau gambar. Ketika ikon dan teks diratakan ke tengah wadah, teks secara visual bergeser ke atas relatif terhadap ikon. Ini terjadi karena pusat teks berada di atas baseline-nya, sementara pusat ikon bertepatan dengan pusat geometris.
Menurut NN Group — Typography in UI Design (2025), perataan baseline yang salah meningkatkan waktu pemindaian daftar oleh pengguna sebesar 22% dibandingkan dengan antarmuka yang diratakan dengan benar. Ini adalah metrik yang signifikan untuk daftar dan formulir yang merupakan dasar dari sebagian besar aplikasi mobile.
Pertanyaan yang sering diajukan
Baseline — adalah garis horizontal tempat karakter ditempatkan, sementara line-height adalah jarak antara garis dasar dua baris berurutan. Baseline menentukan posisi teks dalam ruang vertikal, dan line-height — ritme antar-baris. Kedua konsep saling terkait: line-height dihitung dari baseline satu baris ke baseline baris berikutnya.
Di UIKit, nilai baseline dapat diperoleh melalui properti lastBaselineAnchor atau firstBaselineAnchor di UILabel, UITextView, dan UIButton. Untuk akses langsung ke metrik font, gunakan UIFont.ascender (jarak dari baseline ke atas) dan UIFont.descender (jarak dari baseline ke bawah, dengan tanda negatif).
Ya, SwiftUI mendukung baseline alignment dengan tipe dinamis (Dynamic Type). Perataan melalui .firstTextBaseline dan .lastTextBaseline secara otomatis beradaptasi dengan perubahan ukuran font. Ini memberikan posisi teks yang benar saat ukuran font bertambah tanpa memerlukan penyesuaian jarak manual.
Di Jetpack Compose, gunakan Alignment.FirstBaseline di parameter verticalAlignment Row: Row(verticalAlignment = Alignment.FirstBaseline). Untuk Icon dan Text yang ditempatkan di Row ini, Compose secara otomatis akan menyelaraskan garis dasar mereka. Jika perlu menyesuaikan ikon lebih tepat, gunakan Modifier.alignWithBaseline.
Font kustom memiliki metrik sendiri: ascender, descender, dan x-height yang mungkin berbeda dari font sistem. Jika baseline alignment tidak memberikan hasil yang akurat, periksa metrik font melalui API platform (UIFont.descender di iOS, Paint.getFontMetrics() di Android). Untuk font dekoratif, penyesuaian tambahan 1–2 piksel mungkin diperlukan.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga