Jak pracovat s fonty WOFF v Python
Tento průvodce ukazuje, jak načíst, prozkoumat a převést webové fonty WOFF a WOFF2 pomocí Aspose.Font FOSS pro Python. WOFF (Web Open Font Format) je standard pro doručování fontů na webu. WOFF 1 používá kompresi zlib a WOFF 2 používá kompresi Brotli, oba obalují podkladový TrueType nebo CFF font. Aspose.Font FOSS načítá oba formáty a zpřístupňuje vnitřní data fontu prostřednictvím čistého API.
Průvodce krok za krokem
Krok 1: Nainstalujte balíček
Nainstalujte balíček Aspose.Font FOSS pomocí níže uvedeného příkazu:
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .Krok 2: Importujte požadované třídy
Importujte FontLoader, FontConverter a FontType pro načtení a konverzi fontů WOFF:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontTypeKrok 3: Načíst a prozkoumat font WOFF
Načtěte soubor WOFF pomocí FontLoader.open() a přečtěte základní vlastnosti, jako je název, rodina a počet glyfů:
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}")Krok 4: Přečíst metadata WOFF
Soubory WOFF mohou obsahovat blok metadata XML s licencí, uznáními a popisem. Přístup k němu získáte přes vlastnost metadata_xml.
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")Krok 5: Přístup k vnitřním tabulkám TTF
Jak WoffFont, tak Woff2Font vystavují vlastnost inner_font, která vám poskytuje podkladový TtfFont. Prostřednictvím ní můžete přistupovat ke všem standardním tabulkám OpenType.
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)}")Krok 6: Převést TTF na WOFF
Načtěte písmo TTF a převeďte jej do formátu WOFF předáním FontType.WOFF do FontConverter.convert():
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)Krok 7: Převod TTF na WOFF2
Načtěte písmo TTF a převeďte jej do formátu WOFF2 předáním FontType.WOFF2 do FontConverter.convert():
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)Krok 8: Převod mezi WOFF a WOFF2
Převeďte načtený soubor WOFF na WOFF2 (nebo naopak) předáním cílového FontType do FontConverter.convert():
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)Běžné problémy a opravy
FontParseException: Invalid WOFF signature — Soubor není platným fontem WOFF. Ověřte, že soubor není poškozený a začíná magickými bajty WOFF.
FontParseException: WOFF table decompression failed — Komprimovaná tabulka uvnitř souboru WOFF je poškozena. Zkuste soubor s fontem stáhnout znovu.
Velký výstup WOFF2 — WOFF2 používá kompresi Brotli, která vytváří menší soubory než WOFF 1 (zlib). Pokud je váš výstup WOFF2 neočekávaně velký, ujistěte se, že vycházíte z optimalizovaného zdroje TTF.
Často kladené otázky
Jaký je rozdíl mezi WOFF a WOFF2?
WOFF 1 používá kompresi zlib a WOFF 2 používá kompresi Brotli. WOFF2 obvykle dosahuje o 20-30% lepší komprese než WOFF 1. Oba obalují stejná podkladová data TrueType nebo CFF.
Mohu přistupovat k tabulkám písma ze souboru WOFF?
Ano. Použijte vlastnost inner_font k získání podkladového TtfFont, pak přistupujte k tabulkám pomocí inner_font.ttf_tables.
Podporuje knihovna metadata WOFF?
Ano. Jak WoffFont, tak Woff2Font vystavují vlastnost metadata_xml obsahující volitelný blok metadat XML.