Come lavorare con le tabelle dei font in Python
Questa guida mostra come leggere le tabelle TTF nominate, recuperare i byte binari grezzi della tabella e scrivere dati di tabella modificati usando TtfFont in Aspose.Font FOSS per Python. I font TrueType memorizzano tutti i dati in tabelle binarie identificate da tag a 4 caratteri. Aspose.Font FOSS espone TtfTableSet per l’accesso alle tabelle nominate e TtfFont.get_table_bytes(tag) / TtfFont.set_table_bytes(tag, data) per l’accesso binario grezzo.
Guida passo-passo
Passo 1: Installa il pacchetto
Installa il pacchetto FOSS Aspose.Font usando il comando qui sotto:
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .Passo 2: Importa le classi richieste
Importa FontLoader e TtfFont per caricare un file di font e accedere al suo set di tabelle:
from aspose_font import FontLoader
from aspose_font import TtfFontPasso 3: Accedi alle tabelle nominate
Carica un file TTF con FontLoader.open() e accedi alle tabelle nominate tramite la proprietà 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)Passo 4: Leggi i byte grezzi della tabella
Leggi i dati binari grezzi di una tabella specifica passando il suo tag a 4 caratteri a 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")Passo 5: Scrivi i byte della tabella modificati
Scrivi i dati binari modificati nuovamente in una tabella nominata usando set_table_bytes() con il tag e il payload dei byte:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..." # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)Problemi comuni e soluzioni
AttributeError: Font has no attribute ttf_tables — ttf_tables è attivo TtfFont, non la base Font classe. Usa ttf_font: TtfFont = FontLoader.open(...) per ottenere un riferimento tipizzato.
get_table_bytes restituisce byte vuoti — Il tag deve essere esattamente di 4 caratteri (riempire con spazi se necessario, ad es. "kern" not "KRN").
Domande frequenti
Quali tabelle nominate sono esposte su TtfTableSet?
head, hhea, maxp, os2, name, post, cmap, loca, hmtx, e kern.
Posso aggiungere una nuova tabella a un font?
Sì. Passa qualsiasi tag valido di 4 byte e dati byte a TtfFont.set_table_bytes(tag, data).