Comment travailler avec des tables de font dans Python

Comment travailler avec des tables de font dans Python

Ce guide montre comment lire les tables TTF nommées, récupérer des bits de table binaires crus et écrire les données de la table modifiée en utilisant TtfFont dans Aspose.Font FOSS pour Python. fonts TrueType stockent tous les données dans des tables binaires identifiées par les tags de 4 caractères. Aspose.Font TtfTableSet pour un accès à table nommée et TtfFont.get_table_bytes() / TtfFont.set_table_bytes() Pour un accès binaire.

Guide étape par étapes

Étape 1 : Installer le package

Installez le package Aspose.Font FOSS de PyPI en utilisant la commande pip ci-dessous :

pip install "aspose-font>=1.0.0"

Étape 2 : Importation des classes requises

Importation FontLoader et TtfFont Pour charger un fichier de caractère et accéder à son ensemble de table :

from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFont

Étape 3 : Accès aux tables nommées

Télécharger un fichier TTF avec FontLoader.open() et l’accès aux tables nommées par le biais de la ttf_tables Propriété :

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)

Étape 4 : Lire les tableaux de base

Lisez les données binaires crus pour une table spécifique en passant son étiquette de 4 caractères à 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")

Étape 5 : écrire des bits de table modifiés

Écrire les données binaires modifiées à la fois dans une table nommée en utilisant set_table_bytes() Avec le tag et le byte payload :

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..."  # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)

Problèmes communs et fixations

AttributeError: Font has no attribute ttf_tablesttf_tables est sur TtfFont, Pas la base Font Classes : Utilisation ttf_font: TtfFont = FontLoader.open(...) Pour obtenir un Une référence typique.

get_table_bytes Retour des bytes vides - Le tag doit être exactement 4 caractères (Pour les espaces, si nécessaire). "kern" pas non "KRN").

Questions fréquemment posées

Quels sont les tables nommés exposées sur TtfTableSet?

tête, hhea, maxp, os2, nom, post, cmap, loca, Hmtx et kern.

Puis-je ajouter une nouvelle table à un chiffre ?

Oui. Passez toutes les données de 4 bits et d’étiquettes valides à TtfFont.set_table_bytes(tag, data).

Voir aussi

 Français