Font adalah komponen desktop yang paling sering kita tatap dan paling jarang kita kelola — sampai satu hari dokumen tampil dengan huruf yang salah atau tampilan terasa melelahkan mata. Linux menyerahkan urusan font kepada satu sistem terpusat bernama fontconfig: aplikasi tidak memilih berkas font sendiri, melainkan bertanya kepada fontconfig huruf apa yang paling cocok untuk permintaan tertentu. Pada Chapter ini kita pelajari direktori penyimpanan font, cara memasang font tanpa password root, lalu mengarahkan pilihan fontconfig lewat berkas fonts.conf.
Direktori Font dan Format #
Semua font tersimpan di dua wilayah. Font dari package manager hidup di /usr/share/fonts — di dalamnya tiap paket mendapat subfolder sendiri seperti truetype/dejavu — sedangkan font milik kita berada di ~/.local/share/fonts (folder ~/.fonts yang lama masih dihormati). Perbedaan wilayah ini menentukan siapa yang boleh mengubahnya:
| Lokasi | Pemilik | Cara mengisi |
|---|---|---|
/usr/share/fonts | root, via package manager | apt install fonts-dejavu |
~/.local/share/fonts | user kita sendiri | salin berkas font langsung |
Format berkasnya dua besar: TTF (TrueType) dan OTF (OpenType); keduanya bisa hidup berdampingan dalam satu folder. Perintah file mengonfirmasi format sebuah berkas secara jujur:
file /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttfOutput yang Dihasilkan:
/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf: TrueType Font data, 18 tables, 1st "FFTM", 22 names, MacintoshRingkasan tersebut menegaskan berkas ini adalah data TrueType dengan 18 tabel internal — di antaranya tabel glyph, metrik, dan penamaan yang dibaca fontconfig. Memasang font karena itu sepele: salin berkas TTF atau OTF ke ~/.local/share/fonts, tidak ada proses instalasi lain.
fc-list: Membaca Daftar Font #
Fontconfig mengenal dua nama untuk tiap font: family (DejaVu Sans Mono) dan style (Book, Bold). Perintah fc-list mencetak seluruh font yang dikenal sistem, dan argumen tambahannya menyaring hasilnya — pola "DejaVu Sans Mono" di bawah meminta hanya family tersebut, lalu elemen family style memilih kolom yang dicetak:
fc-list "DejaVu Sans Mono" family style | sortOutput yang Dihasilkan:
DejaVu Sans Mono:style=Bold
DejaVu Sans Mono:style=Bold Oblique
DejaVu Sans Mono:style=Book
DejaVu Sans Mono:style=ObliqueEmpat baris tersebut berarti empat berkas font berbeda — satu family dengan empat style terpasang. Tanpa penyaring, fc-list mencetak ratusan baris seisi sistem, sehingga pola family adalah cara kerja sehari-hari: fc-list "Nama Font" menjawab “apakah font ini ada?”. Filter lain yang berguna adalah fc-list :lang=id family yang membatasi pada font dengan cakupan huruf untuk bahasa tertentu. Pipeline | sort menjaga urutan hasil tetap konsisten karena fontconfig mencetak sesuai urutan temuan internalnya.
Memasang Font dan fc-cache #
Alur pemasangan font per user lengkapnya berikut: buat folder, salin berkas, lalu minta fontconfig memindai ulang. Latihan berikut menyalin satu font dari direktori sistem seolah-olah berkas itu hasil unduhan — hasil akhirnya identik:
mkdir -p ~/.local/share/fonts/ujicoba
cp /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf ~/.local/share/fonts/ujicoba/
fc-cache -fv ~/.local/share/fonts/ujicoba
fc-list | grep ujicobaOutput yang Dihasilkan:
Font directories:
/home/budi/.local/share/fonts/ujicoba
/home/budi/.local/share/fonts/ujicoba: caching, new cache contents: 1 fonts, 0 dirs
/var/cache/fontconfig: not cleaning unwritable cache directory
/home/budi/.cache/fontconfig: cleaning cache directory
/home/budi/.fontconfig: not cleaning non-existent cache directory
fc-cache: succeeded
/home/budi/.local/share/fonts/ujicoba/DejaVuSansMono.ttf: DejaVu Sans Mono:style=BookMari kita bedah empat perintah tersebut:
- Baris
mkdir -p: membuat folder target; fontconfig memindai folder ini otomatis pada sesi berikutnya. - Baris
cp: menyalin berkas font — pada kasus nyata, sumbernya adalah berkas hasil unduhan dari proyek font seperti Google Fonts. - Baris
fc-cache -fv: memaksa fontconfig membangun ulang cache untuk folder tersebut; laporan1 fontsadalah konfirmasi bahwa berkas kita terbaca, dan-vmembuat laporan itu tampil. - Baris
fc-list | grep ujicoba: membuktikan font kini terdaftar dengan path di bawah home directory kita.
fc-match dan fonts.conf #
Saat aplikasi meminta “font sans-serif”, fontconfig menimbang seluruh font terpasang dan mengembalikan satu pilihan terbaik. Perintah fc-match memperlihatkan keputusan itu — dan keputusan tersebut bisa kita arahkan lewat berkas ~/.config/fontconfig/fonts.conf. Blok berikut memotret pilihan sebelum, mengubah preferensi, lalu memotret lagi:
fc-match sans-serif
mkdir -p ~/.config/fontconfig
cat > ~/.config/fontconfig/fonts.conf <<'EOF'
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias binding="strong">
<family>sans-serif</family>
<prefer>
<family>Carlito</family>
</prefer>
</alias>
<match target="font">
<edit name="hintstyle" mode="assign">
<const>hintslight</const>
</edit>
</match>
</fontconfig>
EOF
cat ~/.config/fontconfig/fonts.conf
fc-match sans-serifOutput yang Dihasilkan:
DejaVuSans.ttf: "DejaVu Sans" "Book"
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias binding="strong">
<family>sans-serif</family>
<prefer>
<family>Carlito</family>
</prefer>
</alias>
<match target="font">
<edit name="hintstyle" mode="assign">
<const>hintslight</const>
</edit>
</match>
</fontconfig>
Carlito-Regular.ttf: "Carlito" "Regular"Perubahan hasilnya nyata: sebelumnya sans-serif dijawab font bawaan, kini dijawab Carlito. Struktur berkas tersebut bekerja begini:
- Elemen
<alias>: mendefinisikan ulang family generiksans-serif; atributbinding="strong"membuat ikatan ini menang atas aturan distro. - Elemen
<prefer>: daftar prioritas — font yang lebih disukai diletakkan sebelum font bawaan, bukan menghapusnya. - Elemen
<match target="font">: aturan per-font yang berlaku saat font dipakai, bukan saat dipilih; edithintstyledi sini mengatur kualitas penggambaran. - Konvensi berkas: fontconfig menggabungkan berkas user ini dengan aturan distro di
/etc/fonts/conf.d, jadi kita tidak pernah menimpa sistem secara keseluruhan.
Opsi -s menambahkan konteks: fc-match -s sans-serif mencetak seluruh rantai fallback dari kandidat terbaik sampai terakhir — rantai inilah yang membuat aksara Latin, CJK, dan Arab bisa campur dalam satu dokumen. Panduan lengkap preferensi dan alias dirangkum di halaman konfigurasi font ArchWiki
.
Hinting dan Antialias #
Dua nilai di akhir berkas tadi menentukan kualitas tepi huruf. Hinting adalah instruksi di dalam font yang menggeser bentuk huruf agar jatuh rapi di kisi piksel; nilai hintslight adalah kompromi modern, hintfull lebih tajam pada layar DPI rendah, dan none membiarkan bentuk asli pada layar berkepadatan piksel tinggi. Antialias menghaluskan tepi dengan warna perantara, dan nilai rgba mengaktifkan smoothing subpixel yang memanfaatkan susunan fisik piksel layar. Tidak ada kombinasi yang benar untuk semua orang — nilainya layak dicoba bergantian beberapa hari, karena kenyamanan membaca adalah urusan mata, bukan angka. Kerangka besar pengelolaan font per distro dirangkum di halaman fonts ArchWiki
.
Huruf yang pas menutup rangkaian penataan desktop kita dari konfigurasi sampai piksel. Elemen berikutnya yang sama personal adalah suara: mengatur perangkat audio default, volume, dan microfon lewat PipeWire — materi Chapter Audio Configuration.