Mengatur Tipografi Global dengan CSS @font-face dan Google Fonts

Tipografi adalah tulang punggung dari desain web yang efektif. Pemilihan dan pengaturan huruf yang tepat dapat meningkatkan keterbacaan (readability), membangun hierarki visual, dan memperkuat identitas merek sebuah situs web. Mengatur tipografi secara global memastikan konsistensi di seluruh halaman, yang sangat penting untuk pengalaman pengguna (UX) yang baik. Dalam artikel ini, kita akan menjelajahi dua metode paling populer dan efisien untuk mengatur font kustom: menggunakan aturan CSS @font-face untuk font yang di-host sendiri, dan memanfaatkan koleksi Google Fonts yang luas.
Dasar-Dasar Tipografi Global di CSS
Untuk mengatur font secara global, praktik terbaik adalah mendefinisikan properti font-family pada elemen <body> atau :root dalam CSS Anda. Elemen-elemen lain biasanya akan mewarisi pengaturan ini, memungkinkan Anda untuk mengatur font dasar seluruh situs dalam satu tempat.
body {
font-family: 'Nama Font Utama', 'Nama Font Alternatif', sans-serif;
font-size: 16px; /* Ukuran dasar */
line-height: 1.6; /* Jarak antar baris */
}
Daftar font-family harus selalu diakhiri dengan font generik (serif, sans-serif, monospace, dll.) sebagai mekanisme fallback untuk memastikan bahwa teks akan selalu ditampilkan, meskipun font kustom gagal dimuat.
Menggunakan Google Fonts untuk Font Web yang Mudah
Google Fonts adalah perpustakaan font web gratis dan open source yang paling populer dan paling mudah digunakan. Menggunakan Google Fonts menghemat kerumitan hosting dan mengoptimalkan file font sendiri.
Langkah 1: Memilih dan Mengimpor Font
Kunjungi situs web Google Fonts, pilih font yang Anda inginkan (misalnya, Roboto), dan pilih gaya atau weight yang diperlukan (misalnya, Regular 400 dan Bold 700). Hanya impor weight yang benar-benar Anda gunakan untuk menjaga performa.
Google Fonts menyediakan dua cara utama untuk mengimpor font ke proyek Anda:
- Menggunakan
<link>di HTML (Disarankan): Ini adalah metode yang paling disarankan karena memungkinkan browser untuk mulai mengunduh file CSS font sesegera mungkin (meningkatkan time to first paint). Anda menempatkan tag ini di bagian<head>dokumen HTML Anda:<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">Penambahan atribut
&display=swapsangat penting untuk performa, karena memberitahu browser untuk menampilkan teks segera menggunakan fallback font dan menggantinya dengan font kustom setelah selesai diunduh (Font Loading Strategy). - Menggunakan
@importdi CSS: Anda dapat menempatkan aturan@importdi bagian paling atas file CSS Anda. Meskipun lebih rapi, metode ini dapat memperlambat pemuatan karena browser harus memproses seluruh CSS sebelum mulai mengunduh font.@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
Langkah 2: Menerapkan Font dalam CSS
Setelah diimpor, gunakan nama font dalam aturan CSS global Anda:
body {
font-family: 'Roboto', sans-serif;
}
Anda kemudian dapat menentukan weight untuk elemen tertentu, seperti judul:
h1, h2, h3 {
font-weight: 700; /* Bold */
}
Mengatur Font Self-Hosted dengan CSS @font-face
Untuk kontrol penuh atas hosting font, performa, dan privasi, Anda dapat meng-host file font di server Anda sendiri. Ini dilakukan menggunakan aturan CSS @font-face.
Langkah 1: Memperoleh Format Font yang Tepat
Font web harus disediakan dalam beberapa format untuk kompatibilitas maksimum browser. Format yang paling umum dan dianjurkan adalah WOFF dan WOFF2. WOFF2 menawarkan kompresi superior dan didukung oleh browser modern, menjadikannya prioritas utama.
/fonts
├── myfont-regular.woff2
├── myfont-regular.woff
└── myfont-bold.woff2
Langkah 2: Mendefinisikan @font-face
Aturan @font-face digunakan untuk mendefinisikan nama font kustom, lokasi file, dan properti font (seperti weight dan style). Anda perlu membuat satu deklarasi @font-face untuk setiap weight dan style yang ingin Anda gunakan.
/* Definisi untuk MyFont Regular */
@font-face {
font-family: 'MyFont';
src: url('/fonts/myfont-regular.woff2') format('woff2'),
url('/fonts/myfont-regular.woff') format('woff');
font-weight: 400; /* Nilai numerik untuk regular */
font-style: normal;
font-display: swap; /* Strategi pemuatan yang disarankan */
}
/* Definisi untuk MyFont Bold */
@font-face {
font-family: 'MyFont';
src: url('/fonts/myfont-bold.woff2') format('woff2'),
url('/fonts/myfont-bold.woff') format('woff');
font-weight: 700; /* Nilai numerik untuk bold */
font-style: normal;
font-display: swap;
}
Properti penting dalam @font-face:
font-family: Nama kustom yang akan Anda gunakan di CSS.src: Daftar lokasi file font. Formatwoff2harus selalu didahulukan dalam daftar untuk diunduh oleh browser modern (The Bulletproof @font-face Syntax).font-weightdanfont-style: Menentukan weight dan style mana yang diwakili oleh file font ini. Ini memungkinkan Anda menggunakan sintaks CSS normal sepertifont-weight: bold;ataufont-style: italic;.font-display: swap: Mirip dengan Google Fonts, ini penting untuk performa. Ini memastikan teks ditampilkan segera (fallback font) saat font kustom sedang dimuat, menghindari layar kosong (Flash of Invisible Text – FOIT).
Langkah 3: Menerapkan Font
Sama seperti Google Fonts, setelah didefinisikan, Anda dapat menerapkan MyFont secara global:
body {
font-family: 'MyFont', Helvetica, Arial, sans-serif;
}
Kemudian, ketika Anda menggunakan font-weight: 700; di CSS Anda, browser akan secara otomatis memuat dan menggunakan file myfont-bold.woff2 yang telah Anda definisikan.
Praktik Terbaik untuk Performa dan Konsistensi
Memuat font adalah salah satu penyebab umum penurunan performa situs web. Berikut adalah beberapa praktik terbaik untuk tipografi global yang cepat dan konsisten:
1. Batasi Jumlah Font
Idealnya, gunakan maksimal dua keluarga font (satu untuk heading, satu untuk body text). Setiap font baru yang Anda impor adalah permintaan HTTP tambahan dan file yang harus diunduh, yang dapat memperlambat waktu muat halaman secara signifikan.
2. Muat Hanya Weight yang Dibutuhkan
Setiap weight (misalnya, Light 300, Regular 400, Bold 700) adalah file font terpisah. Jangan impor semua weight jika Anda hanya menggunakan dua. Hal ini berlaku baik untuk Google Fonts maupun font self-hosted.
3. Utamakan WOFF2
Baik saat self-hosting atau menggunakan Google Fonts, pastikan Anda menggunakan WOFF2 karena ukurannya yang lebih kecil dan pemuatan yang lebih cepat pada browser modern.
4. Selalu Gunakan font-display: swap
Pastikan properti ini selalu ada. Ini adalah fitur penting untuk Core Web Vitals dan UX, karena memprioritaskan konten tekstual daripada estetika font. Pengguna akan melihat teks dengan cepat, bahkan jika font kustom Anda memakan waktu lama untuk dimuat.
5. Definisi Hierarki (Tipe Skala)
Setelah mengatur font dasar pada <body>, tentukan hierarki tipografi yang jelas untuk heading (h1 hingga h6) dan elemen lain (seperti blockquote atau caption). Gunakan unit relatif seperti rem atau em untuk ukuran font, yang membantu dalam skalabilitas dan aksesibilitas.
/* Menggunakan REM untuk skalabilitas yang lebih baik */
h1 {
font-size: 3rem;
line-height: 1.1;
font-weight: 700;
}
p {
margin-bottom: 1em;
}
6. Pertimbangkan Subsetting
Untuk font self-hosted, jika Anda hanya menggunakan subset karakter (misalnya, hanya bahasa Latin dan bukan Sirilik atau Yunani), Anda dapat menggunakan alat untuk menghapus glyph yang tidak perlu. Ini akan mengurangi ukuran file font secara drastis dan meningkatkan kecepatan unduh.
Kesimpulan
Mengatur tipografi global adalah salah satu langkah fundamental dalam pengembangan web. Baik Anda memilih kenyamanan dan kecepatan Google Fonts atau kontrol penuh dari self-hosting dengan @font-face, kuncinya adalah menjaga konsistensi, hierarki, dan yang terpenting, performa. Dengan menerapkan praktik terbaik seperti membatasi jumlah weight font, menggunakan WOFF2, dan properti font-display: swap, Anda dapat memastikan bahwa situs Anda tidak hanya terlihat profesional, tetapi juga memuat dengan cepat dan dapat diakses oleh semua pengguna. Tipografi yang terstruktur dengan baik adalah jembatan antara desain yang indah dan konten yang mudah dikonsumsi.
Baca juga : Kreasi Efek Hover Interaktif dengan CSS Murni: Meningkatkan Pengalaman Pengguna Tanpa JavaScript
