Com treballar amb taules de fonts en Python

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 TtfFont

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

See Also

 Català