Wie man mit Font-Tabellen in Python arbeitet

Wie man mit Font-Tabellen in Python arbeitet

Dieser Leitfaden zeigt, wie man benannte TTF-Tabellen liest, rohe Binär-Tabellenbytes abruft und modifizierte Tabellendaten mit TtfFont in Aspose.Font FOSS für Python schreibt. TrueType-Schriften speichern alle Daten in binären Tabellen, die durch 4-Zeichen-Tags identifiziert werden. Aspose.Font FOSS stellt TtfTableSet für den Zugriff auf benannte Tabellen und TtfFont.get_table_bytes(tag) / TtfFont.set_table_bytes(tag, data) für den rohen Binärzugriff bereit.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

Installieren Sie das Aspose.Font FOSS-Paket mit dem Befehl unten:

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .

Schritt 2: Erforderliche Klassen importieren

Importieren Sie FontLoader und TtfFont, um eine Schriftdatei zu laden und auf ihr Tabellenset zuzugreifen:

from aspose_font import FontLoader
from aspose_font import TtfFont

Schritt 3: Zugriff auf benannte Tabellen

Laden Sie eine TTF-Datei mit FontLoader.open() und greifen Sie über die ttf_tables-Eigenschaft auf benannte Tabellen zu:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
tables = ttf_font.ttf_tables
print("kern present:", tables.kern is not None)
print("cmap present:", tables.cmap is not None)

Schritt 4: Roh-Tabellenbytes lesen

Lesen Sie die rohen Binärdaten einer bestimmten Tabelle, indem Sie ihr 4-Zeichen-Tag an get_table_bytes() übergeben:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")

Schritt 5: Modifizierte Tabellenbytes schreiben

Schreiben Sie modifizierte Binärdaten zurück in eine benannte Tabelle, indem Sie set_table_bytes() mit dem Tag und dem Byte-Payload verwenden:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..."  # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)

Häufige Probleme und Lösungen

AttributeError: Font has no attribute ttf_tables — ttf_tables ist eingeschaltet TtfFont, nicht die Basis Font Klasse. Verwenden ttf_font: TtfFont = FontLoader.open(...) um eine typisierte Referenz zu erhalten.

get_table_bytes gibt leere Bytes zurück — Das Tag muss genau 4 Zeichen lang sein (bei Bedarf mit Leerzeichen auffüllen, z.B. "kern" not "KRN").

Häufig gestellte Fragen

Welche benannten Tabellen werden auf TtfTableSet bereitgestellt?

head, hhea, maxp, os2, name, post, cmap, loca, hmtx und kern.

Kann ich einer Schriftart eine neue Tabelle hinzufügen?

Ja. Übergeben Sie ein beliebiges gültiges 4-Byte-Tag und Byte-Daten an TtfFont.set_table_bytes(tag, data).

Siehe auch

 Deutsch