Zum Inhalt springen

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:

FormatBeschreibungVerwendet von
BDFBitmap Distribution Format – ein Klartext-Standard für Bitmap-SchriftartenU8g2, CircuitPython
GFXAdafruit GFX – ein C-Header (.h) mit Bitmap-Array und GlyphentabelleTFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2
TTF / OTF / WOFFTrueType- und OpenType-VektorschriftenLVGL, 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:

  1. 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.
  2. Vorschau-Zoom – skaliere die Vorschau (1×–5×), um das Ergebnis zu prüfen. Das wirkt sich nicht auf die Ausgabe aus.
  3. 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 ​

PlattformGrößensteuerungFunktionsweise
U8g2Keine – wähle eine andere SchriftartJede BDF-Schriftart hat genau eine feste Größe
TFT_eSPI / AdafruitGFX / ArduinoGFX / GxEPD2Ganzzahliger Faktor (1×, 2×, …)Verdoppelt die Pixel der Bitmap
LVGLKeine – feste MontserratFrühe Phase; keine Größen- oder Schriftart-Auswahl
ESPHomeFreier Zahlenwert (px)Setzt das Feld size: im YAML
Flipper ZeroKeineFeste Systemschriften
MicroPython / CircuitPythonKeineEine 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:

cpp
#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:

c
u8g2.setFont(u8g2_font_helvB08_tr);

Kein Header und keine Variable.

Flipper Zero ​

Die Schriftart-Konstante wird direkt eingesetzt:

c
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 0x20 bis Tilde 0x7E, 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:

c
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:

PlattformMit der Bibliothek ausgelieferte SchriftartenAndere Schriftarten (hochgeladen oder nicht in der Bibliothek)
TFT_eSPIFreeMono/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, InkplateDie 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:

cpp
#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:

yaml
font:
    - file: gfonts://Roboto
      id: font_roboto
      size: 16

Die 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 LopakaFlipper-KonstanteTypische Verwendung
PrimaryFontPrimaryNormaler UI-Text
SecondaryFontSecondaryKleine Nebenbeschriftungen
KeyboardFontKeyboardBildschirmtastatur
Big NumbersFontBigNumbersGroß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.