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 | None
  • hhea — HheaTable | None
  • maxp — MaxpTable | None
  • os2 — Os2Table | None
  • name — NameTable | None
  • post — 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 — gibt None zurü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

FormatErweiterungLesenSchreiben
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.


Erste Schritte

Verwandte Ressourcen