Jak pracovat s fonty WOFF v Python

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 FontType

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

Viz také:

 Čeština