Hoe te werken met lettertabellen in Python
Deze gids laat zien hoe je benoemde TTF-tabellen kunt lezen, ruwe binaire tabelbytes kunt ophalen, en gewijzigde tabelgegevens kunt schrijven met TtfFont in Aspose.Font FOSS voor Python. TrueType fonts slaan alle gegevens op in binaire tabellen die worden geïdentificeerd door 4-karakter tags. Aspose.Font FOSS biedt TtfTableSet voor toegang tot benoemde tabellen en TtfFont.get_table_bytes(tag) / TtfFont.set_table_bytes(tag, data) voor ruwe binaire toegang.
Stapsgewijze handleiding
Stap 1: Installeer het pakket
Installeer het Aspose.Font FOSS-pakket met behulp van het onderstaande commando:
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 en TtfFont om een lettertypebestand te laden en toegang te krijgen tot de tabelset:
from aspose_font import FontLoader
from aspose_font import TtfFontStap 3: Toegang tot benoemde tabellen
Laad een TTF-bestand met FontLoader.open() en krijg toegang tot benoemde tabellen via de ttf_tables-eigenschap:
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)Stap 4: Lees ruwe tabelbytes
Lees de ruwe binaire gegevens voor een specifieke tabel door de 4-karakter-tag aan get_table_bytes() door te geven:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")Stap 5: Schrijf gewijzigde tabelbytes
Schrijf gewijzigde binaire gegevens terug naar een benoemde tabel met set_table_bytes() met de tag en de byte-payload:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..." # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)Veelvoorkomende problemen en oplossingen
AttributeError: Font has no attribute ttf_tables — ttf_tables is aan TtfFont, niet de basis Font klasse. Gebruik ttf_font: TtfFont = FontLoader.open(...) om een getypeerde referentie te krijgen.
get_table_bytes geeft lege bytes terug — De tag moet exact 4 tekens zijn (vul aan met spaties indien nodig, bv. "kern" not "KRN").
Veelgestelde vragen
Welke benoemde tabellen worden blootgesteld op TtfTableSet?
head, hhea, maxp, os2, name, post, cmap, loca, hmtx en kern.
Kan ik een nieuwe tabel aan een font toevoegen?
Ja. Geef een geldige 4-byte tag en byte-gegevens door aan TtfFont.set_table_bytes(tag, data).