Wie man mit TTF-Schriften in Python arbeitet
Dieser Leitfaden zeigt, wie man TTF-Schriften lädt, TtfFont-Eigenschaften inspiziert, Tabellen ausliest, variable Schriften instanziiert und mit Aspose.Font FOSS für Python in andere Formate konvertiert. TrueType-Schriften (.ttf) sind das gebräuchlichste Schriftformat. Aspose.Font FOSS lädt sie als TtfFont-Instanzen, wodurch Zugriff auf Tabellen, Achsen variabler Schriften, Glyphendaten und Konvertierungswerkzeuge gewährt wird.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
Installieren Sie das Aspose.Font FOSS-Paket mit dem untenstehenden Befehl:
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 TTF-Schrift zu laden und auf ihre typisierten Eigenschaften zuzugreifen:
from aspose_font import FontLoader
from aspose_font import TtfFontSchritt 3: TTF-Schrift laden und inspizieren
Lade eine TTF-Datei mit FontLoader.open() und lese grundlegende Eigenschaften wie Name, Familie und Glyphenanzahl:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
print(ttf_font.font_name)
print(ttf_font.font_family)
print(ttf_font.num_glyphs)Schritt 4: Die kern-Tabelle lesen
Greife auf die ttf_tables-Eigenschaft zu und prüfe, ob die kern-Tabelle anhand ihres Namens vorhanden ist:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
kern = ttf_font.ttf_tables.kern
print("kern present:", kern is not None)Schritt 5: Variable Font instanziieren
Lade eine Variable-Font-Datei, prüfe is_variable und rufe instantiate() mit einem Achsen-Dictionary auf, um eine statische Instanz zu erzeugen:
from aspose_font import FontLoader
from aspose_font import TtfFont
ttf_font: TtfFont = FontLoader.open("Roboto-VariableFont_wdth,wght.ttf")
if ttf_font.is_variable:
static = ttf_font.instantiate({"wght": 700.0})
print("Instantiated:", static.font_name)Schritt 6: In WOFF2 konvertieren
Konvertiere eine geladene TTF-Schrift in das WOFF2-Format, indem du FontType.WOFF2 an FontConverter.convert() übergibst:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontType
font = FontLoader.open("Roboto-Regular.ttf")
woff2 = FontConverter.convert(font, FontType.WOFF2)Häufige Probleme und Lösungen
AttributeError: Font has no attribute ttf_tables — Verwenden ttf_font: TtfFont = FontLoader.open(...). Der ttf_tables Eigenschaft ist auf TtfFont, nicht die Basis Font.
is_variable ist False bei einer variablen Schriftart — Einige variable Schriften verwenden ein nicht-standard fvar Tabellenformat. Prüfen ttf_font.fvar is not None als Alternative.
instantiate() raises KeyError — Das Achsen-Tag muss ein registriertes 4-Zeichen-Tag sein (z.B. "wght", "wdth"). Prüfen ttf_font.axes für verfügbare Tags.
Häufig gestellte Fragen
Was ist der Unterschied zwischen TTF und OTF?
OTF und TTF verwenden denselben binären Container (SFNT). OTF-Schriften verwenden typischerweise CFF-Umrisse, während TTF-Schriften TrueType quadratische Kurven benutzen. Beide werden von FontLoader.open() geladen.
Kann ich Kerning-Paare aus einer TTF-Schrift erhalten?
Ja. Verwende TtfFont.get_kern_pairs(), um eine Liste von KernPair-Objekten zu erhalten.
Unterstützt die Bibliothek Schriftensammlungen (.ttc)?
Ja. Verwende FontLoader.open(source, collection_index=N), um eine bestimmte Schrift aus einer TTC-Sammlungsdatei auszuwählen.