Wie man mit WOFF-Schriften in Python arbeitet

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 FontType

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

Siehe auch

 Deutsch