Proje Defteri

U8g2 Font Listesi

U8g2 font sabitlerini arayın ve yüksekliğe göre filtreleyin, font adının her parçasının ne anlama geldiğini görün ve metninizin OLED ekranınıza kaç satır sığacağını hesaplayın.

Bu bir yerleşim simülasyonudur, piksel piksel karakter çizimi değildir. Eş aralıklı fontlarda genişlik kesin, orantılı fontlarda tahminidir.

U8g2 Font Adları Nasıl Okunur?

U8g2 kütüphanesindeki her font sabiti aynı şemayı izler:

u8g2_font_<aile>_<mod><karakter kümesi>

u8g2_font_6x10_tr
           |    ||
           |    |+-- r: kısıtlı ASCII 32-127
           |    +--- t: saydam çizim
           +-------- 6x10: aile adı ve hücre boyutu

Aile adı ya doğrudan hücre boyutunu verir (6x10, 10x20), ya bir tipografi ailesi ve punto belirtir (ncenB14 = New Century Schoolbook Bold 14 px), ya da fontun kendi adıdır (profont17, logisoso24).

Mod harfleri

HarfAnlamıNe zaman
tSaydamVarsayılan seçim. Yalnızca dolu pikseller çizilir, arka plan bozulmaz.
m8 piksel hizalıArka planı da yazar. Eski değeri silmeden üzerine yazmak istediğinizde.
hOrtak yükseklikTüm karakterler aynı yükseklikte; satır hizalaması kritikse.

Karakter kümesi harfleri

HarfKapsamYaklaşık karakter
rKısıtlı, ASCII 32-12796
fTam, ASCII 32-255224
nRakamlar ve birkaç işaret (42-57)16
_t_cyrillicKirildeğişken
_t_greekYunandeğişken
_t_symbolsSembol ve ikonlardeğişken

Kural basit: ihtiyacınız olan en küçük kümeyi seçin. Ekranda sadece sıcaklık gösteriyorsanız tf yerine tn kullanmak birkaç kilobayt flash kazandırır.

128x64 ekrana ne sığar?

FontHücreSatırSatır başına karakter
u8g2_font_4x6_tr4x61032
u8g2_font_5x8_tr5x8825
u8g2_font_6x10_tr6x10621
u8g2_font_6x13_tr6x13421
u8g2_font_7x14_tr7x14418
u8g2_font_9x18_tr9x18314
u8g2_font_10x20_tr10x20312

Kullanım

#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

void setup() {
  u8g2.begin();
}

void loop() {
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_6x10_tr);
  u8g2.drawStr(0, 10, "Sicaklik: 23.4 C");
  u8g2.setFont(u8g2_font_logisoso24_tn);
  u8g2.drawStr(0, 45, "23.4");
  u8g2.sendBuffer();
  delay(1000);
}

drawStr'nin y değeri karakterin taban çizgisidir, üst kenarı değil. İlk satırı yazarken y olarak en az font yüksekliğini vermezseniz yazı ekranın üstünden taşar.

Sıkça Sorulan Sorular

Önizleme piksel piksel doğru mu?

Hayır. Simülatör gerçek karakter bitmap'lerini çizmez; ekran boyutu, font yüksekliği ve karakter genişliğinden metnin kaç satıra sığacağını hesaplar. Eş aralıklı fontlarda genişlik kesin, orantılı fontlarda ortalama genişlik tahminidir ve öyle işaretlenir.

Yazı ekranda görünmüyor, neden?

En sık iki sebep: drawStr'ye verdiğiniz y değerinin taban çizgisi olduğunu unutup 0 vermek (yazı ekranın üstünde kalır), ve sendBuffer() çağırmayı atlamak. Tam tampon (F) modunda çizim yalnızca RAM'e yapılır, ekrana basmak için sendBuffer() gerekir.

Türkçe karakterler çıkmıyor

r kümesi yalnızca ASCII 32-127 içerir, ş/ğ/ı/ö/ç/ü yoktur. f kümesine (ör. u8g2_font_6x13_tf) geçmeniz gerekir; bu küme Latin-1'i kapsar. Kodunuzun da UTF-8 yerine uygun kodlamada string göndermesi gerekir, aksi halde iki bayt iki ayrı karakter olarak çizilir.

Kendi fontumu ekleyebilir miyim?

Evet. U8g2 deposundaki bdfconv aracı bir BDF fontunu C dizisine çevirir. Sık karşılaşılan alternatif, sadece bir logo veya ikon gerekiyorsa fontu hiç kullanmayıp image2cpp ile bir bitmap üretmektir; genelde daha az yer tutar.

Verilerim bir yere gönderiliyor mu?

Hayır. Arama, filtreleme ve hesaplama tamamen tarayıcınızda yapılır.