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 boyutuAile 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
| Harf | Anlamı | Ne zaman |
|---|---|---|
t | Saydam | Varsayılan seçim. Yalnızca dolu pikseller çizilir, arka plan bozulmaz. |
m | 8 piksel hizalı | Arka planı da yazar. Eski değeri silmeden üzerine yazmak istediğinizde. |
h | Ortak yükseklik | Tüm karakterler aynı yükseklikte; satır hizalaması kritikse. |
Karakter kümesi harfleri
| Harf | Kapsam | Yaklaşık karakter |
|---|---|---|
r | Kısıtlı, ASCII 32-127 | 96 |
f | Tam, ASCII 32-255 | 224 |
n | Rakamlar ve birkaç işaret (42-57) | 16 |
_t_cyrillic | Kiril | değişken |
_t_greek | Yunan | değişken |
_t_symbols | Sembol ve ikonlar | değ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?
| Font | Hücre | Satır | Satır başına karakter |
|---|---|---|---|
u8g2_font_4x6_tr | 4x6 | 10 | 32 |
u8g2_font_5x8_tr | 5x8 | 8 | 25 |
u8g2_font_6x10_tr | 6x10 | 6 | 21 |
u8g2_font_6x13_tr | 6x13 | 4 | 21 |
u8g2_font_7x14_tr | 7x14 | 4 | 18 |
u8g2_font_9x18_tr | 9x18 | 3 | 14 |
u8g2_font_10x20_tr | 10x20 | 3 | 12 |
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.