Cum să lucrați cu tabele de font în Python

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 TtfFont

Pasul 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_tablesttf_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).

Vezi și:

 Română