- Font fixed-width ultra-kecil yang menempatkan semua karakter di dalam kotak 5 piksel dan menyesuaikannya agar bisa digambar dengan aman pada grid 6x6, dirancang untuk layar kecil dan lingkungan dengan memori terbatas
- Ukuran 5x5 menyelesaikan masalah representasi
E, M, dan W yang kurang memadai pada 4x4, dan juga memastikan pembedaan visual dengan menggambar sebagian besar huruf kecil 1 piksel lebih kecil daripada huruf besar
- Seluruh font hanya berukuran 350 byte, sehingga cocok untuk mikrokontroler 8-bit seperti AVR128DA28, dan memberi efisiensi piksel yang besar pada layar kecil seperti 160x128 atau OLED 128x64
- Bahkan dibandingkan dengan font vektor yang dirender pada ukuran serupa, hasilnya tetap kalah dari font buatan tangan 350 byte ini meski menggunakan anti-aliasing serta data kode dan font yang jauh lebih besar
- Juga dilakukan eksperimen hingga ukuran yang lebih kecil seperti 3x5, 3x4, 3x3, 2x3, 3x2, 2x2; 3x5 masih cukup mudah dibaca, 3x2 lebih baik daripada 2x3, tetapi 2x2 pada dasarnya runtuh hingga mendekati level kode rahasia
Font piksel 5x5
- Dirancang agar semua karakter muat di dalam kotak 5 piksel dan bisa digambar dengan aman pada grid 6x6
- Dasarnya adalah
font-inline.h 5x6 milik lcamtuf, dan font ini dipengaruhi oleh font 8x8 ZX Spectrum
- 5x5 dipilih sebagai ukuran minimum yang tidak merusak keterbacaan
- 2x2 tidak memungkinkan dan 3x3 secara teknis mungkin tetapi sulit dibaca, sementara 4x4 tidak cukup untuk menggambar
E, M, dan W dengan baik
- Pada 5x5, masalah ini terselesaikan
- Pada 5x5, sebagian besar huruf kecil bisa digambar 1 piksel lebih kecil daripada huruf besar sehingga dapat dibedakan secara visual
- Varian yang lebih sempit seperti 4x5 dan 3x5 juga memungkinkan, tetapi harus mengorbankan
M, 0 bertitik, serta keterbedaan U/V/Y
- Menyamakan semua karakter ke lebar tetap membuat pemrograman lebih mudah
- Di layar, panjang string selalu dihitung sebagai 6 kali jumlah karakter
- Tidak perlu khawatir
"8978" menjadi lebih panjang daripada "1111" hingga membuat tata letak meluap
- Ukuran total font hanya 350 byte, sehingga cocok untuk mikrokontroler 8-bit seperti AVR128DA28
- Dalam teks disebutkan bahwa AVR128DA28 memiliki RAM 16kB
- Chip seperti ini murah, hemat daya, dan tangguh, tetapi ruang untuk pemrosesan grafis sangat terbatas
- Bahkan layar 384x288 pun memiliki sekitar 110 ribu piksel, terlalu besar untuk dimuat ke memori AVR
- Sebagai gantinya, layar yang lebih kecil seperti 160x128 atau OLED 128x64 lebih praktis dan murah
- Pada layar seperti ini, font yang efisien secara piksel dan digambar tangan lebih unggul
- Font vektor yang dirender pada ukuran serupa juga dibandingkan
- Font vektor tersebut sebenarnya memiliki tinggi 6 piksel, tetapi hurufnya lebih sempit
- Bahkan dengan anti-aliasing, kode beberapa megabyte, dan data font 1MB, hasilnya tetap kalah dari font buatan tangan 350 byte
Eksperimen pada layar nyata dan ukuran yang lebih kecil
- Piksel nyata tidak benar-benar berbentuk persegi sempurna, jadi tampilannya di layar tidak persis sama dengan render di bagian atas
- Efek pseudo-drop-shadow yang dibuat oleh subpiksel dinilai positif
- Pada layar hitam-putih efek ini tidak ada, tetapi tetap terlihat lebih halus daripada perkiraan
- Jarak antar piksel membuat
e dan g tampak lebih meyakinkan
- Berdasarkan efek yang sama, kemungkinan font yang lebih kecil juga dieksplorasi lebih lanjut
- 3x5 bukan resolusi minimum tanpa kompromi, tetapi masih terbaca dengan cukup baik
- Pada ukuran ini ada 32.768 glif, dan 27.904 di antaranya dapat dibedakan satu sama lain
M, W, dan Q mengalami kerugian, tetapi O dan 0 masih bisa dibedakan
- Ini bisa menjadi pilihan saat perlu memuat 50% lebih banyak kolom di layar
- Pada 3x4, font masih bisa dibaca tetapi dengan batasan yang lebih besar
- Ada 4.096 glif, dan 3.392 di antaranya dapat dibedakan satu sama lain
- Pada ukuran ini huruf besar dan huruf kecil tidak bisa dibedakan, sehingga dipilih satu gaya yang paling cocok untuk ruang terbatas
- Daya ekspresi angka juga memburuk, tetapi masih bisa berfungsi
- Pada 3x3, kehilangan terbesar terjadi pada angka
- Ada 512 glif, dan 400 di antaranya dapat dibedakan satu sama lain
- Huruf masih bisa dikenali sampai tingkat tertentu tanpa duplikasi
- Saat ditampilkan pada perangkat keras nyata, font ini menjadi jauh lebih baik
- 2x3 sudah mendekati tingkat yang terlalu dipaksakan
- Ada 64 glif, dan 44 di antaranya dapat dibedakan satu sama lain
- Sebagian besar huruf sulit dikenali dan banyak yang tumpang tindih
- Baris paling bawah adalah
"Hello World"
- 3x2 dengan rasio aspek terbalik jauh lebih baik daripada 2x3
- Pada ukuran ini juga ada 64 glif, dan 44 di antaranya dapat dibedakan satu sama lain
- Huruf yang membutuhkan detail horizontal seperti
M, W, N, Q, G, P lebih banyak daripada yang membutuhkan detail vertikal seperti E, F, sehingga lebih menguntungkan
- Baris paling bawah adalah
"you can probably read this", dan masih bisa dibaca jika dilihat sambil menyipitkan mata atau diperkecil
- 2x2 hanya tersisa sebagai pembanding demi kelengkapan
- Secara teori ada 16 gambar 2x2 yang mungkin, tetapi satu adalah spasi kosong dan lima lainnya merupakan salinan dengan menggeser glif lain, sehingga pada praktiknya hanya tersisa 10
- Ini cukup untuk merepresentasikan seluruh angka, tetapi karena tidak mirip bentuk aslinya, hasilnya lebih mendekati kode rahasia daripada font
Materi terkait
mcufont.h berisi data font 5x5
test.c menyertakan program untuk pratinjau font
font-inline.h milik lcamtuf ditautkan sebagai font asli
- Lebih banyak contoh font ultra-kecil juga disediakan melalui tautan
moonbench.xyz
Belum ada komentar.