Wie man mit WOFF-Schriften in Python arbeitet
Dieser Leitfaden zeigt, wie man WOFF- und WOFF2-Webfonts mit Aspose.Font FOSS für Python lädt, inspiziert und konvertiert. WOFF (Web Open Font Format) ist der Standard für die Bereitstellung von Schriftarten im Web. WOFF 1 verwendet zlib-Kompression und WOFF 2 verwendet Brotli-Kompression, beide umhüllen eine zugrunde liegende TrueType- oder CFF-Schrift. Aspose.Font FOSS lädt beide Formate und stellt die inneren Font-Daten über ein sauberes API bereit.
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
Importiere FontLoader, FontConverter und FontType, um WOFF-Schriften zu laden und zu konvertieren:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontTypeSchritt 3: WOFF-Schrift laden und untersuchen
Lade eine WOFF-Datei mit FontLoader.open() und lese grundlegende Eigenschaften wie Name, Familie und Glyphenanzahl:
from aspose_font import FontLoader
woff_font = FontLoader.open("MyFont.woff")
print(f"Name: {woff_font.font_name}")
print(f"Family: {woff_font.font_family}")
print(f"Glyphs: {woff_font.num_glyphs}")
print(f"Type: {woff_font.font_type}")Schritt 4: WOFF-Metadaten lesen
WOFF-Dateien können einen XML-Metadatenblock mit Lizenzinformationen, Credits und Beschreibung enthalten. Greife über die metadata_xml-Eigenschaft darauf zu.
from aspose_font import FontLoader
font = FontLoader.open("MyFont.woff")
# WOFF fonts may include an XML metadata block
xml = getattr(font, "metadata_xml", None)
if xml:
print(xml)
else:
print("No metadata in this WOFF file")Schritt 5: Auf innere TTF-Tabellen zugreifen
Sowohl WoffFont als auch Woff2Font stellen eine inner_font-Eigenschaft bereit, die Ihnen das zugrunde liegende TtfFont liefert. Über diese können Sie auf alle Standard-OpenType-Tabellen zugreifen.
from aspose_font import FontLoader
font = FontLoader.open("MyFont.woff")
# WOFF wraps a TrueType font; access its tables via inner_font
inner = getattr(font, "inner_font")
tables = inner.ttf_tables
print(f"Units/em: {tables.head.units_per_em}")
print(f"Family name: {tables.name.best_name(1)}")Schritt 6: TTF nach WOFF konvertieren
Laden Sie eine TTF-Schriftart und konvertieren Sie sie in das WOFF-Format, indem Sie FontType.WOFF an FontConverter.convert() übergeben:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontType
ttf_font = FontLoader.open("MyFont.ttf")
woff_font = FontConverter.convert(ttf_font, FontType.WOFF)
woff_bytes = woff_font.to_bytes()
from pathlib import Path
Path("MyFont.woff").write_bytes(woff_bytes)Schritt 7: TTF in WOFF2 konvertieren
Laden Sie eine TTF-Schriftart und konvertieren Sie sie in das WOFF2-Format, indem Sie FontType.WOFF2 an FontConverter.convert() übergeben:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontType
ttf_font = FontLoader.open("MyFont.ttf")
woff2_font = FontConverter.convert(ttf_font, FontType.WOFF2)
woff2_bytes = woff2_font.to_bytes()
from pathlib import Path
Path("MyFont.woff2").write_bytes(woff2_bytes)Schritt 8: Zwischen WOFF und WOFF2 konvertieren
Konvertieren Sie eine geladene WOFF-Datei in WOFF2 (oder umgekehrt), indem Sie das Ziel FontType an FontConverter.convert() übergeben:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontType
# WOFF -> WOFF2
woff_font = FontLoader.open("MyFont.woff")
woff2_font = FontConverter.convert(woff_font, FontType.WOFF2)
# WOFF2 -> WOFF
woff2_font = FontLoader.open("MyFont.woff2")
woff_font = FontConverter.convert(woff2_font, FontType.WOFF)Häufige Probleme und Lösungen
FontParseException: Invalid WOFF signature — Die Datei ist kein gültiges WOFF-Font. Überprüfen Sie, dass die Datei nicht beschädigt ist und mit den WOFF-Magic-Bytes beginnt.
FontParseException: WOFF table decompression failed — Eine komprimierte Tabelle innerhalb der WOFF-Datei ist beschädigt. Versuchen Sie, die Font-Datei erneut herunterzuladen.
Große WOFF2-Ausgabe — WOFF2 verwendet Brotli-Kompression, die kleinere Dateien erzeugt als WOFF 1 (zlib). Wenn Ihre WOFF2-Ausgabe unerwartet groß ist, stellen Sie sicher, dass Sie von einer optimierten TTF-Quelle ausgehen.
Häufig gestellte Fragen
Was ist der Unterschied zwischen WOFF und WOFF2?
WOFF 1 verwendet zlib-Kompression und WOFF 2 verwendet Brotli-Kompression. WOFF2 erreicht typischerweise 20–30% bessere Kompression als WOFF 1. Beide umschließen dieselben zugrunde liegenden TrueType- oder CFF-Schriftdaten.
Kann ich Schrifttabellen aus einer WOFF-Datei abrufen?
Ja. Verwenden Sie die inner_font-Eigenschaft, um das zugrunde liegende TtfFont zu erhalten, und greifen Sie dann über inner_font.ttf_tables auf die Tabellen zu.
Unterstützt die Bibliothek WOFF-Metadaten?
Ja. Sowohl WoffFont als auch Woff2Font stellen eine metadata_xml-Eigenschaft bereit, die den optionalen XML-Metadatenblock enthält.