Cum să lucrați cu tabele de font în Python
Acest ghid arată cum să citiți tabele TTF numite, să recuperați baiti de tabel binar brut și să scrieți date din tablă modificate folosind TtfFont în Aspose.Font FOSS pentru Python. Fonturile TrueType stochează toate datele în tabele binare identificate prin tag-uri de 4 caractere. Aspose.Font Expune Foss TtfTableSet pentru accesul la tabel cu nume și TtfFont.get_table_bytes() / TtfFont.set_table_bytes() pentru acces binar brut.
Ghid pas cu pas
Pasul 1: Instalați pachetul
Instalați pachetul Aspose.Font FOSS din PyPI folosind comanda pip de mai jos:
pip install "aspose-font>=1.0.0"Pasul 2: Importarea clasei necesare
Importul FontLoader și de: TtfFont pentru a încărca un fișier de font și să accesezi setul său de tabele:
from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFontPasul 3: Acces la tabele cu nume
Încărcați un fișier TTF cu: FontLoader.open() și acces numit tabele prin intermediul ttf_tables proprietate:
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)Pasul 4: Citirea bațelor de tabel brute
Citeste datele binare brute pentru o tablă specifică, trecând eticheta de 4 caracte la 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")Pasul 5: Scrie baiti de tabel modificati
Scrie date binare modificate înapoi într-o tablă numită folosind set_table_bytes() cu tag-ul și byte-urile de încărcare:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..." # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)Probleme comune şi soluţii
AttributeError: Font has no attribute ttf_tables — ttf_tables este pe TtfFont, nu baza. Font clasa. folosiţi ttf_font: TtfFont = FontLoader.open(...) să obţină o referință tipărită.
get_table_bytes returnă bați goli Eticheta trebuie să fie exact de 4 caractere. (pad cu spații, dacă este necesar, de exemplu:. "kern" nu, în mod normal. "KRN").
Întrebări frecvente
Ce tabele cu nume sunt expuse pe TtfTableSet?
Head, Hhea, MaxP, OS2, Numele, Postul, CMAP, localizare, hmtx şi kern.
Pot să adaug o nouă tablă la un font?
Da, transmite orice etichetă de 4 byte valabil și date de octet la TtfFont.set_table_bytes(tag, data).