Jak pracovat s tabulkami písem v Python

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 TtfFont

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

Viz také:

 Čeština