Jak pracovat s tabulkami písem v Python
Tento návod ukazuje, jak číst pojmenované TTF tabulky, získat surové binární bajty tabulky a zapisovat upravená data tabulky pomocí TtfFont v Aspose.Font FOSS pro Python. TrueType fonty ukládají všechna data v binárních tabulkách identifikovaných 4-znakovými tagy. Aspose.Font FOSS poskytuje TtfTableSet pro přístup k pojmenovaným tabulkám a TtfFont.get_table_bytes(tag) / TtfFont.set_table_bytes(tag, data) pro přístup k surovým binárním datům.
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 a TtfFont pro načtení souboru písma a přístup k jeho sadě tabulek:
from aspose_font import FontLoader
from aspose_font import TtfFontKrok 3: Přístup k pojmenovaným tabulkám
Načtěte soubor TTF pomocí FontLoader.open() a přistupujte k pojmenovaným tabulkám pomocí vlastnosti ttf_tables:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
tables = ttf_font.ttf_tables
print("kern present:", tables.kern is not None)
print("cmap present:", tables.cmap is not None)Krok 4: Čtení surových bajtů tabulky
Přečtěte surová binární data konkrétní tabulky předáním jejího 4-znakového tagu do get_table_bytes():
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")Krok 5: Zápis upravených bajtů tabulky
Zapište upravená binární data zpět do pojmenované tabulky pomocí set_table_bytes() s tagem a bajtovým obsahem:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..." # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)Časté problémy a opravy
AttributeError: Font has no attribute ttf_tables — ttf_tables je zapnutý TtfFont, ne základní Font třída. Použijte ttf_font: TtfFont = FontLoader.open(...) získat typovanou referenci.
get_table_bytes vrací prázdné bajty — Tag musí mít přesně 4 znaky (případně doplňte mezery, např. "kern" not "KRN").
Často kladené otázky
Které pojmenované tabulky jsou k dispozici na TtfTableSet?
head, hhea, maxp, os2, name, post, cmap, loca, hmtx a kern.
Mohu přidat novou tabulku do fontu?
Ano. Předávejte libovolný platný 4-bytový tag a bajtová data do TtfFont.set_table_bytes(tag, data).