Küçük ekranlar için 5x5 piksel font
(maurycyz.com)- Tüm karakterleri 5 piksellik bir kare içine sığdıran ve 6x6 ızgara üzerinde güvenle çizilebilecek şekilde ayarlanmış, küçük ekranlar ve sınırlı bellek ortamları için tasarlanmış ultra küçük sabit genişlikli bir fonttur
- 5x5 boyutu, 4x4'te yetersiz kalan
E,M,Wgösterim sorununu çözer; ayrıca çoğu küçük harfi büyük harflerden 1 piksel daha küçük çizerek görsel ayırt edilebilirlik de sağlar - Tüm font yalnızca 350 bayt olduğundan AVR128DA28 gibi 8 bit mikrodenetleyicilere çok uygundur ve 160x128 ya da 128x64 OLED gibi küçük ekranlarda piksel verimliliği sağlar
- Benzer boyutta render edilen vektör fontlarla karşılaştırıldığında bile, anti-aliasing ve çok daha büyük kod/font verisi kullanılmasına rağmen sonuç 350 baytlık el yapımı fonttan daha kötü kalır
- Daha küçük 3x5, 3x4, 3x3, 2x3, 3x2, 2x2 boyutları da denenmiştir; 3x5 oldukça okunabilir, 3x2 ise 2x3'ten daha iyidir, ancak 2x2 neredeyse bir gizli kod düzeyine kadar bozulur
5x5 piksel font
- Tüm karakterlerin 5 piksellik kare içine sığması ve 6x6 ızgara üzerinde güvenle çizilebilmesi için tasarlanmıştır
- Temeli lcamtuf'un 5x6
font-inline.hdosyasıdır; bu font da ZX Spectrum'un 8x8 fontundan esinlenmiştir - 5x5, okunabilirliği bozmayan en küçük boyut olarak belirlenmiştir
- Temeli lcamtuf'un 5x6
- 2x2 mümkün değildir ve 3x3 teknik olarak mümkün olsa da okumak zordur; 4x4 ise
E,M,Wharflerini düzgün çizmek için yetersiz kalır- 5x5'te bu sorun çözülür
- 5x5, çoğu küçük harfi büyük harflerden 1 piksel daha küçük çizebildiği için görsel olarak ayırt edilebilirlik sağlar
- Daha dar 4x5 ve 3x5 de mümkündür, ancak bunun karşılığında
M, noktalı0veU/V/Yayrımı feda edilir - Tüm karakterleri sabit genişlikte tutmak programlamayı kolaylaştırır
- Ekranda bir dizenin uzunluğu her zaman karakter sayısının 6 katı olarak hesaplanır
"8978"ifadesinin"1111"ifadesinden daha uzun olup düzeni taşırması konusunda endişelenmeniz gerekmez
- Fontun toplam boyutu yalnızca 350 bayt olduğundan AVR128DA28 gibi 8 bit mikrodenetleyiciler için çok uygundur
- Metinde AVR128DA28'in 16kB RAM'e sahip olduğu belirtiliyor
- Bu tür çipler ucuz, düşük güç tüketimli ve dayanıklıdır, ancak grafik işleme açısından fazla pay bırakmaz
- 384x288 ekran bile yaklaşık 110 bin piksel içerdiğinden AVR belleğine sığdırmak için fazlasıyla büyüktür
- Bunun yerine 160x128 ya da 128x64 OLED gibi daha küçük ekranlar daha pratiktir ve daha ucuzdur
- Bu tür ekranlarda elle çizilmiş, piksel açısından verimli fontlar avantaj sağlar
- Benzer boyutta render edilmiş vektör fontlar da karşılaştırılmıştır
- İlgili vektör font aslında 6 piksel yüksekliğindedir, ancak karakterler daha dardır
- Anti-aliasing, birkaç megabayt kod ve 1MB font verisi kullanmasına rağmen sonuç 350 baytlık el yapımı fonttan daha kötü kalır
Gerçek ekran ve daha küçük boyut deneyleri
- Gerçek pikseller kusursuz kareler olmadığından ekrandaki görünüm üstteki render ile tam olarak aynı değildir
- Alt piksellerin oluşturduğu sahte gölge efekti olumlu değerlendirilmiştir
- Siyah beyaz ekranlarda bu etki olmasa da yine de beklenenden daha yumuşak görünür
- Pikseller arasındaki boşluk,
evegharflerinin daha inandırıcı görünmesini sağlar- Aynı etkiden yola çıkılarak daha küçük font olasılıkları da ayrıca incelenmiştir
- 3x5, tavizsiz en düşük çözünürlük olmasa da oldukça iyi okunur
- Bu boyutta 32.768 glif vardır ve bunların 27.904'ü birbirinden ayırt edilebilir
M,W,Qzarar görür, ancakOile0hâlâ ayırt edilebilir- Ekrana %50 daha fazla sütun sığdırmanız gerektiğinde bir seçenek olabilir
- 3x4 boyutunda hâlâ okunabilir, ancak kısıtlar artar
- 4.096 glif vardır ve bunların 3.392'si birbirinden ayırt edilebilir
- Bu boyutta büyük ve küçük harf ayrımı yapılamaz; sınırlı alanda en iyi uyan tek bir stil seçilir
- Sayıların ifade gücü de zayıflar, ancak yine de kullanılabilir durumdadır
- 3x3 boyutunda kayıp en çok rakamlarda görülür
- 512 glif vardır ve bunların 400'ü birbirinden ayırt edilebilir
- Harfler çakışmadan bir ölçüde tanınabilir
- Gerçek donanımda gösterildiğinde bu font ciddi biçimde iyileşir
- 2x3 neredeyse aşırı bir seviyeye yaklaşır
- 64 glif vardır ve bunların 44'ü birbirinden ayırt edilebilir
- Çoğu harfi tanımak zordur ve çakışma da fazladır
- En alttaki satır
"Hello World"ifadesidir
- En boy oranı ters çevrilmiş 3x2, 2x3'ten çok daha iyi sonuç verir
- Bu boyutta da 64 glif vardır ve bunların 44'ü birbirinden ayırt edilebilir
M,W,N,Q,G,Pgibi yatay detay gerektiren harfler,E,Fgibi dikey detay gerektirenlerden daha fazla olduğundan daha avantajlıdır- En alttaki satır
"you can probably read this"ifadesidir; gözlerinizi kısarak ya da küçültülmüş hâline bakarak okunabilir
- 2x2, yalnızca tamamlayıcılık için karşılaştırma konusu olarak kalır
- Olası 2x2 görseller teorik olarak 16 adettir, ancak biri boşluktur ve beşi diğer gliflerin kaydırılıp kopyalanmış hâlidir; bu yüzden gerçekte yalnızca 10 tane kalır
- Tüm rakamları gösterecek kadar yeterlidir, ancak özgün biçimlerine benzemediğinden bir fonttan çok gizli koda yakındır
3 yorum
İyi bilgi için teşekkürler. Bir anda çok istedim.
Buraya Koreceyi nasıl sığdıracağız TT öf
Hacker News yorumları
Subpixel rendering kullanılırsa 1x5 bile gayet mümkün olabilir https://www.msarnoff.org/millitext/
[2x5-HP-Z24n-G2] https://i.imgur.com/yLyrpfg.jpeg
[1x5-HP-Z24n-G2] https://i.imgur.com/Z7kH005.jpeg
[2x5-Innolux-N156HCA-GA3] https://i.imgur.com/F4Ypxwj.jpeg
[1x5-Innolux-N156HCA-GA3] https://i.imgur.com/etkot5o.jpeg
[1] https://jp.ext.hp.com/monitors/business/z_z24n_g2/
[2] https://www.panelook.com/N156HCA-GA3__15.6__overview_33518.html
Ayrıca ekranımın ne kadar kirli olduğunu da bu vesileyle fark ettim
5x5 epey iyi ve 3x5 de fena değil, ama ikisi de tam ASCII kümesinin tamamını içermiyor
Gerçek boyut konusunda da hafif bir göz yanılması var; harf aralığını da ekleyince aslında pratikte 6x6 ya da 4x6 grid gerekiyor
Bu yüzden https://github.com/fcambus/spleen içindeki Spleen'i oldukça seviyorum
Burada tam ASCII desteği veren 5x8 bir font var ve çoğu glif aslında yatay aralık dahil edilmiş 4x8 gibi davranıyor
Kendi projemde bunu değiştirip tüm glifleri 4x8'e sabitledim; böylece 5x9 grid üzerinde her karakter arasında yatay ve dikey 1 piksel boşluğu her zaman korurken yine de hoş görünen bir render elde ettim
Donanımla çözmek isterseniz 80 column card alıp gerçek 80 sütunlu metin kullanabiliyordunuz, tabii monitörünüzün bunu desteklemesi şarttı
Çoğu ultra küçük font, 1:1 ölçekte hızlıca okumaya çalışınca gerçekten berbat oluyor
Eskiden bir oyun modu yaparken çok küçük ve sıkı bir fonta ihtiyacım olmuştu; 3x3, 3x5, hatta 2x5 dahil pek çok şeyi denedim ama hepsini okumak çok zordu
Sonunda zephram'ın yaptığı Gremlin-3x6'yı buldum; yüksekliği 1 piksel fazla olsa da yatayda hâlâ çok kompakt kalıyordu
En önemlisi, standart Latin harfleri birbirinden iyi ayırt ediliyordu ve çok büyütmeden de okunabiliyordu
Ne yazık ki zephram FontStruct hesabını silince fontlar da tamamen kayboldu, ama ben kendi mod deposunda bir kopyasını ve CC0 lisansını tuttum; gerçek render'ı da ekran görüntüsünde görebilirsiniz
[0] - https://fontstruct.com/fontstructions/show/1488093
[1] - https://codeberg.org/janAkali/isaac-extended-icons-mod/src/branch/master/assets/fonts
[2] - https://codeberg.org/janAkali/isaac-extended-icons-mod/media/branch/master/assets/screenshots/screenshot.png
CJK karakterleri tarafında da benzer bir tartışma vardı
https://chinese.stackexchange.com/questions/16669/lowest-pixel-resolution-needed-to-support-chinese
Yazar bunu görürse, küçük harf t için yatay çizginin üstüne bir piksel daha eklemek iyi olabilir
Şu anki şekli büyük T ile fazla benziyor
Yine de genel olarak çok iyi iş çıkarmış, paylaştığın için teşekkürler
x
xxx
x
xx
xx
x
x
x
xx
4x4'ün E, M, W'yi düzgün çizmek için yetersiz olduğu söylenmişti ama aslında 5x5 de e'yi düzgün çizmek için yetersiz
Küçük harfleri büyük harflerden daha alçak yapmak istiyorsanız en az 6 dikey piksel gerekiyor; descender'ları da düzgün vermek isterseniz bunun en az 7 olması lazım
Teknik olarak, g ve y'nin baseline'a oturup aynı zamanda yatay descender'ı ayırt edebilmesi için 8 daha iyi olurdu ama burada biraz taviz verilebilir gibi görünüyor
Ayrıca pratikte, harflerin altında ve yanında görünür boşluk bırakmak istiyorsanız karakter başına en az 8x6 piksel gerekiyor
Bana göre üstteki boşluğu bir miktar doldurarak okunabilir hale geliyor ve uzun cümlelerde bağlam sayesinde rahatça anlaşılır
Tabii kusursuz değil; üstteki büyütülmüş temiz piksel örneğinde tuhaflığı daha belirgin görünüyor
Pikselleri sadece açık/kapalı iki durumla sınırlamayıp çok seviyeli grayscale kullanırsanız daha küçük boyutlarda da okunabilir metin üretmek mümkün olabilir
Ama burada önemli nokta letters değil text olması
Tek tek harfler fazla bulanık olsa bile insan bağlamdan ne yazdığını çıkarabiliyor
Hatta bu yöntem için özel olarak tasarlanmış bir font da şart değil
Örnek: https://imgur.com/a/text-80-characters-per-line-240-pixels-wide-AlYrnSS
Burada harfler arası boşluk dahil ortalama karakter genişliği yalnızca yaklaşık 3 piksel
LINC mini bilgisayarının LAP6 işletim sisteminde 4x5 font vardı ama küçük harf yoktu
Eskiden C64 üzerinde yazılımla 80 sütun elde etmeye çalışma işlerini hatırlatıyor
3x7 piksel grid kullanılıyor ama bir satır ile bir sütun boşluk için ayrılıyordu; bazı ticari ürünlerde gerçekten kullanılmıştı
https://www.pagetable.com/?p=901
4×8 karakter setini hem okunaklı hem hoş göstermek kolay değil ve karakterler arasında 1 piksel boşluk gerektiği için pratikte karakter genişliği sadece 3 piksele düşüyor
Bu yüzden özellikle M ve N gibi harfler zorlayıcı oluyor
M'den, noktalı sıfırdan vazgeçilir ve U/V/Y ayrımı da zayıflatılırsa 4x5 ya da 3x5 mümkün denmişti; ama bence 3x5 gayet kullanışlı
https://robey.lag.net/2010/01/23/tiny-monospace-font.html