Schriftarten
Schriftarten sind in Lopaka plattformspezifisch. Jede Zielbibliothek hat ihr eigenes Schriftformat und ihren eigenen Satz integrierter Schriftarten – du kannst Schriftarten nicht beliebig zwischen Plattformen mischen. Diese Seite erklärt, welche Schriftformate jede Plattform verwendet, wie du Schriftarten im Editor auswählst und importierst und was bei der Code-Generierung mit deiner Schriftwahl passiert.
Schriftformate
Intern arbeitet Lopaka mit drei Schriftformaten:
| Format | Beschreibung | Verwendet von |
|---|---|---|
| BDF | Bitmap Distribution Format – ein Klartext-Standard für Bitmap-Schriftarten | U8g2, CircuitPython |
| GFX | Adafruit GFX – ein C-Header (.h) mit Bitmap-Array und Glyphentabelle | TFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2 |
| TTF / OTF / WOFF | TrueType- und OpenType-Vektorschriften | LVGL, ESPHome |
Einige Plattformen (Flipper Zero, MicroPython) verwenden keines dieser Formate – ihre Schriftarten sind fest vorgegeben und direkt in die Bibliothek kompiliert. Sie werden weiter unten in den Abschnitten zu den einzelnen Plattformen behandelt.
Wenn du eine eigene Schriftart hochlädst, wandelt Lopaka sie in das Format um, das die aktive Plattform braucht – um die Konvertierung musst du dich nie selbst kümmern (mit ein paar Ausnahmen, die unten beschrieben sind).
Eigene Schriftart importieren
Um eine Schriftart zu importieren, wähle eine Textebene aus, öffne im Inspektor das Schriftart-Dropdown und klicke auf Schriftart importieren …. Wähle eine Datei aus deinem Dateisystem. Was dann passiert, hängt vom Dateiformat und von der aktiven Plattform ab.
GFX-Header (.h)
Unterstützt auf: TFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2
Die Datei wird unverändert und ohne Konvertierung verwendet. Nach dem Hochladen steht die Schriftart in der Schriftartenliste zur Verfügung und ihre Bitmap-Daten werden in den generierten Code eingebettet.
BDF-Schriftart
Unterstützt auf: U8g2, TFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2
- Auf U8g2 – die Datei wird direkt hochgeladen. Nicht unterstützte Zeichen im Schriftartnamen werden ersetzt, wenn Lopaka das C-Symbol und den
.h-Dateinamen erzeugt. - Auf GFX-basierten Plattformen – die BDF-Datei wird vor dem Hochladen automatisch ins GFX-Format umgewandelt. Die Konvertierung deckt den druckbaren ASCII-Bereich (0x20–0x7E) ab. Das Ergebnis wird genauso behandelt wie eine native GFX-Schriftart.
TTF / OTF / WOFF
Unterstützt auf: U8g2, TFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2
Beim Hochladen einer Vektorschrift öffnet sich der Schriftart-Assistent:
- Schrifthöhe – lege die Zielhöhe in Pixeln fest. Sie bestimmt, wie die Glyphen gerastert werden. Kleinere Werte ergeben kompakte Bitmaps, größere Werte schärfere Glyphen auf Kosten von mehr Flash-Speicher.
- Vorschau-Zoom – skaliere die Vorschau (1×–5×), um das Ergebnis zu prüfen. Das wirkt sich nicht auf die Ausgabe aus.
- Klicke auf Importieren – die Schriftart wird gerastert und im Projekt gespeichert.
Der Assistent deckt nur druckbares ASCII ab (vom Leerzeichen bis zur Tilde, 95 Zeichen). Erweiterte Zeichen, Buchstaben mit Akzenten und CJK-Glyphen sind in der Ausgabe nicht enthalten.
Schriftgröße und Skalierung
| Plattform | Größensteuerung | Funktionsweise |
|---|---|---|
| U8g2 | Keine – wähle eine andere Schriftart | Jede BDF-Schriftart hat genau eine feste Größe |
| TFT_eSPI / AdafruitGFX / ArduinoGFX / GxEPD2 | Ganzzahliger Faktor (1×, 2×, …) | Verdoppelt die Pixel der Bitmap |
| LVGL | Keine – feste Montserrat | Frühe Phase; keine Größen- oder Schriftart-Auswahl |
| ESPHome | Freier Zahlenwert (px) | Setzt das Feld size: im YAML |
| Flipper Zero | Keine | Feste Systemschriften |
| MicroPython / CircuitPython | Keine | Eine einzige integrierte Schriftart |
Was im generierten Code landet
GFX-basierte Plattformen
Für jede GFX-Schriftart außer der integrierten 5×7-Adafruit-Schrift fügt der Generator Folgendes ein:
#include <Fonts/FontName.h>
const GFXfont *font_FontName = &FontName;Verwenden mehrere Ebenen dieselbe Schriftart, wird die Deklaration nur einmal ausgegeben.
U8g2
Nur der Bezeichner der Schriftart erscheint inline:
u8g2.setFont(u8g2_font_helvB08_tr);Kein Header und keine Variable.
Flipper Zero
Die Schriftart-Konstante wird direkt eingesetzt:
canvas_set_font(canvas, FontPrimary);ESPHome
Auf der obersten Ebene des YAML-Dokuments wird ein font:-Block ergänzt. Nutzen mehrere Textebenen dieselbe Schriftart in verschiedenen Größen, entstehen separate Einträge.
LVGL
Die integrierte Montserrat-Schrift wird direkt referenziert. Es wird weder eine Schriftart-Variable noch ein Include ausgegeben.
Praktische Tipps
- Mindestgröße für Lesbarkeit auf monochromen OLEDs. BDF-Schriftarten mit 4–6 px sind technisch gültig, auf echter Hardware aber kaum lesbar. 8 px (z. B.
helvB08) ist für die meisten Displays das praktische Minimum. - Speicherbudget für GFX-Schriftarten. Jede eingebundene GFX-Schriftart belegt Flash-Speicher auf dem Mikrocontroller. FreeMono12pt7b braucht etwa 1,7 KB, FreeMonoBold24pt7b etwa 4,5 KB. Prüfe die Flash-Grenzen deines Geräts, bevor du große Schriftarten hinzufügst.
- Zeichenabdeckung eigener Schriftarten. Lopakas Konverter für BDF→GFX und für Vektorschriften kodieren nur den druckbaren ASCII-Bereich (Leerzeichen
0x20bis Tilde0x7E, 95 Zeichen). Für eine erweiterte Abdeckung unter U8g2 importierst du ein BDF, das diese Glyphen enthält. Für GFX-Plattformen verwendest du eine fertige.h-Datei, die sie bereits enthält. - Eigene Schriftarten müssen zur Plattform des Projekts passen. Hochgeladene Schriftarten werden als Projekt-Assets gespeichert – eine GFX-
.h-Schriftart funktioniert nicht unter U8g2, und eine BDF-Schriftart funktioniert nicht unter TFT_eSPI.
Schriftarten nach Plattform
U8g2
U8g2 bringt eine große Sammlung aus BDF abgeleiteter Schriftarten mit, die direkt in die Bibliothek kompiliert sind. Lopaka stellt diese komplette Sammlung in der Schriftartauswahl bereit. Die Schriftartnamen im generierten Code folgen dem Namensschema der Bibliothek:
u8g2.setFont(u8g2_font_haxrcorp4089_tr);In deinen Sketch werden keine Schriftdaten geschrieben – der Name genügt, weil die Schriftart bereits in der U8g2-Bibliothek steckt. Integrierte U8g2-Schriftarten erscheinen deshalb auch nicht unter Code-Einstellungen → Schriftarten, denn es gibt keine zusätzliche Datei zum Herunterladen.
Die Schriftgröße ist fest. Jede BDF-Schriftart hat genau eine fest eingebaute Pixelhöhe. Für größeren Text musst du eine andere Schriftart wählen, statt die aktuelle zu skalieren.
Eigene Schriftarten hochladen: U8g2 akzeptiert .bdf-, .ttf-, .otf- und .woff-Dateien. BDF-Dateien werden direkt importiert. Vektorschriften öffnen den Schriftart-Assistenten, in dem du eine feste Pixelhöhe wählst, bevor Lopaka sie in BDF umwandelt. Lopaka speichert das resultierende BDF unverändert für Vorschau und Bearbeitung. Eigene Schriftarten erscheinen unter Code-Einstellungen → Schriftarten, wo du jede einzeln als U8g2-.h-Datei herunterladen kannst.
Standardmäßig enthält der heruntergeladene Header alle Glyphen des BDF. Aktiviere Nur verwendete Glyphen rendern, um nur die Unicode-Zeichen aufzunehmen, die von Text- und Textbereich-Ebenen mit dieser Schriftart verwendet werden. Nutzt eine dieser Ebenen zur Laufzeit variablen Text, exportiert Lopaka die vollständige Schriftart, damit keine unbekannten Laufzeitzeichen fehlen.
Mit aktiviertem Schriftarten einbinden bindet der generierte Screen-Code jeden heruntergeladenen Schriftart-Header ein.
TFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2
Alle diese Plattformen verwenden das Schriftformat von Adafruit GFX – eine C-Header-Datei, die die Bitmap-Daten direkt enthält. Der integrierte Satz umfasst die Adafruit-5×7-Schrift und Dutzende Schriftarten der Free-Familie in mehreren Größen (FreeMono, FreeSans, FreeSerif in Normal, Fett, Kursiv und Fett-Kursiv in 9, 12, 18 und 24 pt und weitere).
Die 5×7-Schrift ist der Standard der Bibliothek. Sie braucht keine Header-Deklaration. Bei den anderen Schriftarten hängt das, was der Generator voranstellt, davon ab, woher die Schriftdaten stammen:
| Plattform | Mit der Bibliothek ausgelieferte Schriftarten | Andere Schriftarten (hochgeladen oder nicht in der Bibliothek) |
|---|---|---|
| TFT_eSPI | FreeMono/FreeSans/FreeSerif in 9, 12, 18 und 24 pt: kein #include, TFT_eSPI kompiliert sie mit LOAD_GFXFF ein; nicht zum Herunterladen aufgeführt | #include "FontName.h" |
| AdafruitGFX, GxEPD2, Inkplate | Die Free-Familie, Org_01, Picopixel, Tiny3x3a2pt7b und TomThumb: #include <Fonts/FontName.h> aus der Adafruit-GFX-Bibliothek | #include "FontName.h" |
| ArduinoGFX | — | #include "FontName.h" für jede Schriftart |
Der Textaufruf referenziert dann direkt das Schriftart-Symbol:
#include <Fonts/FreeMono12pt7b.h>
// ...
display.setFont(&FreeMono12pt7b);Lade für jedes #include "FontName.h" den Header unter Code-Einstellungen → Schriftarten herunter und lege ihn neben deinen Sketch.
Die Schriftgröße ist skalierbar. GFX-Schriftarten unterstützen einen ganzzahligen Skalierungsfaktor. Mit 1 wird in der nativen Pixelgröße gezeichnet, mit 2 werden beide Abmessungen verdoppelt.
Anpassung der Y-Position. GFX-Schriftarten verwenden eine absteigende Grundlinie – die Y-Koordinate bezeichnet die Grundlinie, nicht die Oberkante der Glyphe. Lopaka gleicht das automatisch aus, wenn du Text auf der Zeichenfläche ziehst, und gibt im generierten Code die korrigierte Koordinate aus.
Eigene Schriftarten hochladen. Akzeptiert .h- (fertiger GFX-Header), .bdf-, .ttf-, .otf- und .woff-Dateien.
.h– unverändert verwendet, keine Konvertierung..bdf– wird vor dem Hochladen automatisch ins GFX-Format umgewandelt..ttf/.otf/.woff– öffnet den Schriftart-Assistenten (siehe oben).
LVGL
Die LVGL-Unterstützung in Lopaka befindet sich in einer frühen Phase. Derzeit steht nur eine Schriftart zur Verfügung – die integrierte Montserrat – in fester Größe. Schriftart- und Größenauswahl gibt es noch nicht. Das wird in einer künftigen Version erweitert.
ESPHome
ESPHome bezieht Schriftarten beim Build von Google Fonts. Das generierte YAML enthält einen font:-Block, der die Schriftart beim Flashen des Geräts anhand ihres Namens herunterlädt:
font:
- file: gfonts://Roboto
id: font_roboto
size: 16Die Schriftgröße ist einstellbar. Verfügbar sind die TTF-Schriftarten aus Lopakas integriertem Satz (Roboto, Montserrat, Ubuntu und weitere). Eigene Schriftarten lassen sich für ESPHome nicht hochladen.
Flipper Zero und Flipper One
Flipper bietet genau vier Systemschriften:
| Name in Lopaka | Flipper-Konstante | Typische Verwendung |
|---|---|---|
| Primary | FontPrimary | Normaler UI-Text |
| Secondary | FontSecondary | Kleine Nebenbeschriftungen |
| Keyboard | FontKeyboard | Bildschirmtastatur |
| Big Numbers | FontBigNumbers | Große Ziffernanzeige |
Es gibt keine Größensteuerung und keinen Upload eigener Schriftarten.
MicroPython
MicroPython verwendet eine einzige, fest integrierte Schriftart (Petme 8×8). Alle Textebenen nutzen sie automatisch.
CircuitPython
CircuitPython verwendet die BDF-Schriftart Terminus. Eigene Schriftarten lassen sich nicht hochladen.