Com treballar amb taules de fonts en Python
Aquesta guia mostra com llegir taules TTF anomenades, recuperar bytes de taula binària brut i escriure dades de la taula modificada utilitzant TtfFont en Aspose.Font FOSS per a Python. Les fonts TrueType emmagatzemen totes les dades en taules binàries identificades amb etiquetes de 4 caràcters. Aspose.Font Exposes FosS TtfTableSet per a l’accés de taula nomenada i TtfFont.get_table_bytes() / TtfFont.set_table_bytes() per a l’accés binari brut.
Guia de pas a pas
Pas 1: Instal·la el paquet
Instal·lar el paquet FOSS de PyPI utilitzant l’ordre pip a continuació:
pip install "aspose-font>=1.0.0"Pas 2: Import de les classes necessàries
Import FontLoader i de la TtfFont per carregar un fitxer de font i accedir al seu conjunt de taules:
from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFontPas 3: Accedir a les taules amb nom
Carregar un fitxer TTF amb: FontLoader.open() i accedir a les taules nomenades mitjançant el sistema de dades. ttf_tables propietat:
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)Pas 4: Llegir els bytes de taula en bruto
Llegeix les dades binàries brut per a una taula específica passant la seva etiqueta de 4 caràcters 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")Pas 5: Escriure bytes de taula modificats
Escriure dades binàries modificades en una taula nomenada utilitzant set_table_bytes() amb la etiqueta i càrrega útil de byte:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..." # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)Problemes comuns i fixos
AttributeError: Font has no attribute ttf_tables — ttf_tables està en… TtfFont, no la base. Font classe. Utilitzar ttf_font: TtfFont = FontLoader.open(...) per obtenir un referència mecanitzada.
get_table_bytes Retorna bits buits. La etiqueta ha de ser exactament 4 caràcters. (pad amb espais si és necessari, per exemple. "kern" no, no és així. "KRN").
Preguntes freqüents
Quines taules amb nom estan exposades en TtfTableSet?
cap, hhea, maxp, os2, nom, post, cmap, loca, hmtx i kern.
Puc afegir una taula nova a un font?
Passa qualsevol etiqueta de 4 octets i dades d’octet vàlides a TtfFont.set_table_bytes(tag, data).