Dieses Repository definiert eine Methode zum Erstellen und Bereitstellen von Schriftarten für die Verwendung mit Micropython Display -Treibern. Ein PC -Dienstprogramm macht Branchenstandarddateien als Bitmap in Form von Python Sourcecode. Mit einem Mikropython -Modul können solche Dateien auf Geräten mit geeigneten Geräte -Treibern angezeigt werden. Dazu gehören OLED -Anzeigen mit dem SSD1306 -Chip und dem offiziellen Gerätetreiber. Kompatible Treiber für eine Vielzahl von Displaytechnologien sind im Rahmen des Nano-Gui-Repositorys erhältlich.
Micropython -Plattformen haben im Allgemeinen nur begrenzte RAM, aber einreicherer Speicher in Form von Flash -Speicher. Schriftdateien sind in der Regel relativ groß. Die herkömmliche Technik, Strings auf ein Gerät zu rendern, beinhaltet das Laden der gesamten Schrift in RAM. Dies ist schnell, aber RAM -intensiv. Die Alternative, die Schriftart als Zufallszugriffsdatei zu speichern und einzelne Glyphen in den RAM zu laden, ist zu langsam, um auf den meisten Anzeigegeräten angemessene Leistung zu erhalten.
Diese Alternative implementiert eine Schriftart als Python -Quelldatei, wobei die Daten als bytes -Objekte deklariert werden. Eine solche Datei kann als Bytecode eingefroren werden: Dies beinhaltet das Erstellen der Firmware aus der Quelle mit der Python -Datei in einem bestimmten Verzeichnis. Bei Import wird nur sehr wenig RAM verwendet, auf die Daten können jedoch schnell zugegriffen werden. Beachten Sie, dass die Verwendung von gefrorenem Bytecode vollständig optional ist: Schriftartdateien können auf normale Weise importiert werden, wenn die RAM -Verwendung kein Problem darstellt.
Die resultierende Datei ist mit zwei Sorten von Display -Geräte -Treibern verwendet:
framebuffer -Klasse unterklebt wird.Dies umfasst vier Komponenten, Links zu DOCs unten:
Writer -Klassen. Dieser Befehlszeilen -Dienstprogramm ist in Python 3 geschrieben und läuft auf einem PC. Um eine skalierbare Schriftart in Python umzuwandeln, nimmt das Dienstprogramm eine Schriftart in ttf oder otf -Form zusammen mit einer Höhe in Pixeln ein und gibt eine Python -Quelldatei, die die Schriftart als Bitmap enthält, aus. Es werden feste und variable Pitch -Rendering unterstützt. Das Design hat die folgenden Ziele:
Der erste wird erreicht, indem dem Dienstprogramm hardwarespezifische Argumente bereitgestellt werden. Diese definieren horizontale oder vertikale Zuordnung und die Bitreihenfolge für Schriftarten.
Die zweite wird durch die Verwendung von Freetype und den Freetype -Python -Bindungen erreicht. Die Verwendung ist hier dokumentiert. Dies beschreibt auch die Messungen der RAM -Verwendung beim Importieren von Schriftarten als gefrorener Bytecode.
Das Konvertieren skalierbarer ttf oder otf -Dateien programmatisch funktioniert am besten für größere Schriftarten. Für kleine Schriftarten ist es am besten, handgestaltete Bitmapt-Schriftartdateien zu verwenden. Diese werden jetzt unterstützt: bdf oder pcf -Schriftdateien können im selben Format in Python Source konvertiert werden wie Dateien, die aus skalierbaren Schriftarten stammen. Siehe auch Mikropyezfonts, die kompatible kleine Schriftarten (in examples/fonts ) enthält.
Kerning wird nicht unterstützt. Schriftarten sind ein Bit pro Pixel. Farbdisplays werden von der CWriter -Klasse unterstützt, die Farbinformationen in der Rendering -Phase hinzufügt. Dies setzt voraus, dass alle Pixel eines Charakters identisch gefärbt sind.
Standardmäßig erzeugt das Dienstprogramm font_to_py.py das von chr(32) zu chr(126) festgelegte ASCII -Zeichen. Befehlszeilenoptionen ermöglichen es, den Zeichensatz so zu modifizieren, dass beliebige Unicode -Zeichen einbezogen werden. Alternative Sets können angegeben werden, wie beispielsweise für nicht englische Sprachen. Für spärliche Zeichensätze wird nun effiziente Unterstützung bereitgestellt.
Eine Schriftart wird auf die übliche Weise importiert, z. B. import font14 . Python -Schriftdateien enthalten die folgenden Funktionen. Diese Rückgabewerte, die durch die Argumente definiert wurden, die an font_to_py.py bereitgestellt wurden:
height gibt die Höhe in Pixeln zurück.
max_width gibt in Pixel die maximale Breite eines Glyphs zurück.
baseline von der Oberseite der Glyphen bis zur Grundlinie.
hmap kehrt True zurück, wenn eine Schriftart horizontal zugeordnet ist.
reverse Return True wenn die Bitumkehr angegeben wurde.
monospaced Returns True , wenn das monospaced -Rendering festgelegt wurde.
min_ch gibt den Ordnungswert des niedrigsten Zeichens in der Datei zurück.
max_ch gibt den Ordnungswert des höchsten Zeichens in der Datei zurück.
Glyphen werden mit der Funktion get_ch zurückgegeben. Sein Argument ist ein Unicode -Zeichen und gibt die folgenden Werte zurück:
memoryview -Objekt, das die Glyph -Bytes enthält. Mit dem Dienstprogramm font_to_py.py kann ein Standardglyphe angegeben werden (typischerweise ? ). Wenn dieser Glyphe mit einem undefinierten Charakter gerufen wird, wird sie zurückgegeben.
Die Funktionen von min_ch und max_ch sind hauptsächlich für zusammenhängende Zeichensätze relevant.
Der gesamte Code wird unter der MIT -Lizenz veröffentlicht.