Hoe te werken met WOFF-lettertypen in Python

Hoe te werken met WOFF-lettertypen in Python

Deze gids laat zien hoe je WOFF- en WOFF2-webfonts laadt, inspecteert en converteert met Aspose.Font FOSS voor Python. WOFF (Web Open Font Format) is de standaard voor het leveren van fonts op het web. WOFF 1 gebruikt zlib-compressie en WOFF 2 gebruikt Brotli-compressie, beide omhullend een onderliggend TrueType of CFF-font. Aspose.Font FOSS laadt beide formaten en maakt de interne fontgegevens beschikbaar via een nette API.

Stap-voor-stapgids

Stap 1: Installeer het pakket

Installeer het Aspose.Font FOSS-pakket met behulp van de onderstaande opdracht:

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .

Stap 2: Importeer vereiste klassen

Importeer FontLoader, FontConverter en FontType om WOFF-lettertypen te laden en te converteren:

from aspose_font import FontLoader
from aspose_font.converter import FontConverter  # internal API — may change between releases
from aspose_font import FontType

Stap 3: Laad en inspecteer een WOFF-lettertype

Laad een WOFF-bestand met FontLoader.open() en lees basis eigenschappen zoals naam, familie en aantal glyfen:

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}")

Stap 4: Lees WOFF-metadata

WOFF-bestanden kunnen een XML metadata-blok bevatten met licenties, credits en beschrijving. Toegang tot dit blok krijg je via de metadata_xml eigenschap.

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")

Stap 5: Toegang tot interne TTF-tabellen

Zowel WoffFont als Woff2Font bieden een inner_font eigenschap die je de onderliggende TtfFont geeft. Via deze kun je alle standaard OpenType tabellen benaderen.

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)}")

Stap 6: Converteer TTF naar WOFF

Laad een TTF-lettertype en converteer het naar WOFF-formaat door FontType.WOFF naar FontConverter.convert() te sturen:

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)

Stap 7: Converteer TTF naar WOFF2

Laad een TTF-lettertype en converteer het naar WOFF2-formaat door FontType.WOFF2 naar FontConverter.convert() te sturen:

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)

Stap 8: Converteer tussen WOFF en WOFF2

Converteer een geladen WOFF-bestand naar WOFF2 (of omgekeerd) door de doel-FontType naar FontConverter.convert() te sturen:

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)

Veelvoorkomende problemen en oplossingen

FontParseException: Invalid WOFF signature — Het bestand is geen geldig WOFF-lettertype. Controleer of het bestand niet beschadigd is en begint met de WOFF-magic bytes.

FontParseException: WOFF table decompression failed — Een gecomprimeerde tabel in het WOFF-bestand is beschadigd. Probeer het lettertypebestand opnieuw te downloaden.

Grote WOFF2-uitvoer — WOFF2 gebruikt Brotli-compressie die kleinere bestanden oplevert dan WOFF 1 (zlib). Als uw WOFF2-uitvoer onverwacht groot is, zorg er dan voor dat u begint met een geoptimaliseerde TTF-bron.

Veelgestelde vragen

Wat is het verschil tussen WOFF en WOFF2?

WOFF 1 gebruikt zlib-compressie en WOFF 2 gebruikt Brotli-compressie. WOFF2 behaalt doorgaans 20-30% betere compressie dan WOFF 1. Beide omsluiten dezelfde onderliggende TrueType of CFF-lettertypegegevens.

Kan ik lettertype-tabellen uit een WOFF-bestand benaderen?

Ja. Gebruik de inner_font-eigenschap om de onderliggende TtfFont te verkrijgen, en benader vervolgens de tabellen via inner_font.ttf_tables.

Ondersteunt de bibliotheek WOFF-metadata?

Ja. Zowel WoffFont als Woff2Font bieden een metadata_xml eigenschap die het optionele XML metadata-blok bevat.

Zie ook

 Nederlands