Kako raditi s font tablicama u Pythonu
Ovaj vodič pokazuje kako čitati imenovane TTF tabele, preuzeti sirove bajtove binarne tablice i pisati modificirane podatke o tablici koristeći TtfFont u Aspose.Font FOSS za Python. TrueType fontovi pohranjuju sve podatke u binarnim tablicama koje identificiraju oznake od 4 znakova. Aspose.Font TtfTableSet za pristup imenovanom tablici i TtfFont.get_table_bytes() / TtfFont.set_table_bytes() za sirov binarni pristup.
Korak po korak vodič
Korak 1: Instaliraj paket
Instalirajte paket Aspose.Email FOSS iz PyPI pomoću naredbe pip:
pip install "aspose-font>=1.0.0"Korak 2: Uvoz zahtjevnih klasa
Uvoz FontLoader i u članku 1. TtfFont za učitavanje datoteke fontova i pristup njihovom skupu tabela:
from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFontKorak 3: Pristup imenovanim tablicama
Uplatiti TTF datoteku s: FontLoader.open() i pristup imenovanim tablicama putem ttf_tables imovina:
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)Korak 4: Čitanje sirovih tabličnih bajta
Pročitajte sirove binarne podatke za određenu tablicu prenošenjem njene oznake od 4 znaka na: 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")Korak 5: Napisati izmijenjene tabele bajtova
Napišite modificirane binarne podatke natrag u imenovanu tablicu koristeći: set_table_bytes() s oznakama i bajtom korisnog opterećenja:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..." # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)Česta pitanja i rješenja
AttributeError: Font has no attribute ttf_tables — ttf_tables je uključen. TtfFont, ne podnožje Font Klasična. ttf_font: TtfFont = FontLoader.open(...) da dobije… upisivanje na tipku.
get_table_bytes vraća prazne bajtove Oznaka mora biti točno 4 znakova. (podložka s raspadima ako je potrebno, npr. "kern" Ne, ne mogu. "KRN").
Česta pitanja
Koje su imenovane tabele prikazane na TtfTableSet?
Glavni, hhea, maxp, os2, ime, post, cmap, loca, hmtx i kern.
Mogu li dodati novu tablicu na font?
Da, proslijedi sve važeće 4 bajtne oznake i podatke za bajta. TtfFont.set_table_bytes(tag, data).