Einführung
TrueType-Schriften (.ttf) und ihr OpenType Superset (.otf) sind die dominierenden Schriftformate auf modernen Betriebssystemen. Beide Formate teilen dieselbe binäre Tabellstruktur, die in der OpenType-Spezifikation verankert ist. Aspose.Font FOSS für Python stellt diese Struktur über TtfFont bereit und ermöglicht direkten Zugriff auf einzelne OpenType-Tabellen, Kernpaar-Daten, variable Schriftachsen und Glyphenkonturen.
Die TtfFont-Klasse erweitert die Font-Basisklasse um TTF-spezifische Methoden, darunter get_blob, get_table_bytes, set_table_bytes und instantiate für das Sperren von Achsen variabler Schriften. Die TtfTableSet-Eigenschaft (ttf_tables) bietet typisierten Zugriff auf die gebräuchlichsten OpenType-Tabellen: head, hhea, maxp, os2, name, post.
Die Bibliothek wird auf PyPI als aspose-font veröffentlicht und steht unter der MIT-Lizenz. Sie hat keine verpflichtenden kommerziellen Abhängigkeiten.
Hauptfunktionen
Laden von TTF- und OTF-Schriften
Verwenden Sie FontLoader.open, um jede TrueType- oder OpenType-Schriftdatei zu laden:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)
FontLoader.open erkennt das Schriftformat aus dem Dateikopf. Sowohl .ttf (TrueType) als auch .otf (OpenType CFF)-Dateien werden unterstützt und beide geben eine TtfFont-Instanz zurück.
Zugriff auf OpenType-Tabellen über TtfTableSet
Die ttf_tables-Eigenschaft gibt ein TtfTableSet mit typisierten Zugriffsfunktionen für gängige OpenType-Tabellen zurück. Jede Eigenschaft liefert das Tabellenobjekt oder None, falls nicht vorhanden:
Die ttf_tables-Eigenschaft von TtfFont gibt eine TtfTableSet-Instanz zurück. Verfügbare Tabellenzugriffe:
head—HeadTable | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—PostTable | None
Jede Eigenschaft gibt das Tabellenobjekt oder None zurück, wenn diese Tabelle nicht in der Font-Datei vorhanden ist. Greifen Sie auf TtfTableSet Eigenschaften zu, um bestimmte Tabellen zu prüfen, bevor Sie sie lesen. Für Tabellen, die nicht von benannten Zugriffen abgedeckt werden, verwenden Sie TtfTableSet.get_raw(tag), um Rohbytes über das vierbuchstabige OpenType-Tag abzurufen.
Rohtabellenbytes lesen
get_table_bytes(tag) gibt die Rohbytes für jede OpenType-Tabelle zurück. Verwenden Sie get_blob(tag) für eine None-sichere Variante, die None zurückgibt, wenn die Tabelle fehlt:
TtfFont bietet zwei Methoden für den Rohtabellenzugriff:
get_table_bytes(tag) -> bytes— gibt die Rohbytes für eine benannte Tabelle zurück (wirft einen Fehler, wenn sie fehlt)get_blob(tag) -> bytes | None— gibtNonezurück, wenn die Tabelle fehlt (sichere Variante)
Beide Methoden akzeptieren ein vierzeichenlanges OpenType-Tabellen-Tag wie "cmap", "GDEF" oder "GPOS". Verwenden Sie get_blob, wenn eine Tabelle optional ist, sodass Sie vor der Verarbeitung nach None prüfen können.
Kernpaare
get_kern_pairs() gibt alle im Font kodierten Kernpaare zurück. Jeder KernPair hat left (GlyphId), right (GlyphId) und value (int in Font-Einheiten):
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")
for pair in pairs[:5]:
print(f" Left: {pair.left} Right: {pair.right} Value: {pair.value}")
Font-Metriken
Standardmetriken sind über die metrics-Eigenschaft zugänglich:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
metrics = loaded.metrics
print(f"Units per em : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
print(f"Descender : {metrics.descender}")
print(f"Line gap : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")
Variable Font-Unterstützung
Für variable Fonts stellt TtfFont is_variable, variable_axes und named_instances bereit. Verwenden Sie get_axis(tag), um eine bestimmte Achse anhand ihres vierbuchstabigen Tags abzurufen:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/RobotoFlex.ttf")
print(f"Is variable: {loaded.is_variable}")
print(f"Axes : {len(loaded.variable_axes)}")
Die get_axis(tag)-Methode von TtfFont ruft ein VariableAxis anhand seines vierbuchstabigen Tags ab (z.B. "wght" für Gewicht, "wdth" für Breite). Sie gibt None zurück, wenn die Achse nicht in der fvar-Tabelle des Fonts vorhanden ist.
Schriftarten konvertieren
to_bytes(font_type) konvertiert die Schrift in ein anderes Format. Verwenden Sie das FontType-Enum, um das Ziel anzugeben:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
fh.write(ttf_bytes)
print(f"Serialized: {len(ttf_bytes)} bytes")
Schnellstart
Bibliothek installieren:
.venv/bin/pip install aspose-font
Laden Sie eine TTF-Schrift und untersuchen Sie sie:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("Roboto-Regular.ttf")
print(f"Font name : {loaded.font_name}")
print(f"Family : {loaded.font_family}")
print(f"Glyphs : {loaded.num_glyphs}")
print(f"Variable : {loaded.is_variable}")
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")
Unterstützte Formate
| Format | Erweiterung | Lesen | Schreiben |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
Alle Formate werden über FontLoader.open geladen. TTF/OTF-Schriften geben eine TtfFont-Instanz zurück.
Open Source & Lizenzierung
Aspose.Font FOSS für Python wird unter der MIT-Lizenz veröffentlicht. Sie können es in privaten, kommerziellen und Open-Source-Projekten kostenlos nutzen. Der Quellcode ist auf GitHub verfügbar und das Paket wird über PyPI als aspose-font verteilt.