Introduction

Les écrans de la vérité (.ttfet leur propre défaut (.otfLe font dominant est Les deux formats partagent la même structure de table binaire. enracinée dans la spécification OpenType. Aspose.Font FOSS pour Python expose cette structure par le TtfFont, fournissant un accès direct aux tables OpenType individuelles, à des données de paires cernales, Les axes de caractère variables et les outlines glyphées.

Le TtfFont La classe étend la Font La classe de base avec des méthodes spécifiques à la TTF, y compris get_blob, get_table_bytes, set_table_bytes,et instantiate Pour le font variable L’axe de la clôture. le TtfTableSet La propriété (ttf_tablesIl fournit un accès typique à la Les tables OpenType les plus courantes : head, hhea, maxp, os2, name, post.

La bibliothèque est publiée sur Pypi comme aspose-font Il est licencié sous la licence MIT. Il n’a pas de dépendance commerciale obligatoire.


Fonctionnalités clés

Télécharger les phontres TTF et OTF

Utiliser FontLoader.open Pour télécharger un fichier de texte TrueType ou OpenTYpe :

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)

FontLoader.open détecter le format de la phonette du titre de fichier. .ttf (Le vrai type) et .otf (OpenType CFF) les fichiers sont supportés et tous deux retournent à un TtfFont et instance.


Accès à OpenType Tables via TtfTableSet

Le ttf_tables La propriété est de retour à TtfTableSet avec des accessoires pour les communs Tableau de type Open. Chaque propriété retourne l’objet de table ou None Si vous absentez :

Le ttf_tables Propriété sur TtfFont Retour à A TtfTableSet Exemple : Disponible Table des accessoires :

  • headHeadTable | None
  • hheaHheaTable | None
  • maxpMaxpTable | None
  • os2Os2Table | None
  • nameNameTable | None
  • postPostTable | None

Chaque propriété retourne l’objet de table ou None Si cette table n’est pas présente dans le Fiche de fichier.Access TtfTableSet Propriétés à vérifier pour des tables spécifiques avant de lire Pour les tables non couvertes par des accessoires nommés, utilisez TtfTableSet.get_raw(tag) à Récupérer les bits crus par le tag OpenType de quatre caractères.


Lire la suite de Raw Table Bytes

get_table_bytes(tag) retourner les bits de base pour n’importe quelle table OpenType. get_blob(tag) Pour une variante non sûre qui revient None Lorsque la table est absente :

TtfFont Il fournit deux méthodes pour l’accès à la table crue:

  • get_table_bytes(tag) -> bytes - retourner les bytes de base pour une table nommée (augmenter si l’absence)
  • get_blob(tag) -> bytes | None - Retourner None Si la table est absente (variante sécurisée)

Les deux méthodes acceptent une étiquette de table OpenType à quatre caractères, telle que : "cmap", "GDEF",ou "GPOS".Utiliser get_blob Lorsque une table est facultative, vous pouvez vérifier la None Avant Traitement .


Les paires de noyau

get_kern_pairs() retourner tous les paires de noyau codés dans le font. KernPair Il a left (le Glyphid est le cas), right (Glyphid) et value (en unités de font) :

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")

for pair in pairs[:5]:
    print(f"  Left: {pair.left}  Right: {pair.right}  Value: {pair.value}")

Métrique Font

Les métrices standard sont accessibles à travers le metrics Propriété :

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

metrics = loaded.metrics
print(f"Units per em  : {metrics.units_per_em}")
print(f"Ascender      : {metrics.ascender}")
print(f"Descender     : {metrics.descender}")
print(f"Line gap      : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")

Support variable

Pour les variables, TtfFont Expositions is_variable, variable_axes,et named_instances.Utiliser get_axis(tag) Pour obtenir un axe spécifique par ses quatre lettres et tag :

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/RobotoFlex.ttf")

print(f"Is variable: {loaded.is_variable}")
print(f"Axes       : {len(loaded.variable_axes)}")

Le get_axis(tag) méthode sur TtfFont Récupérer A VariableAxis par ses quatre lettres Le thème (e.g. "wght" pour le poids, "wdth" Il est retourné (Return) None Si l’axe est Pas présent dans le font fvar table de table.


Conversion de fonts

to_bytes(font_type) convertit le fichier dans un format différent. Utilisez la FontType Enum Pour définir l’objectif :

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
    fh.write(ttf_bytes)

print(f"Serialized: {len(ttf_bytes)} bytes")

Démarrage rapide

Installation de la bibliothèque :

.venv/bin/pip install aspose-font

Téléchargez un fichier TTF et vérifiez :

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("Roboto-Regular.ttf")

print(f"Font name : {loaded.font_name}")
print(f"Family    : {loaded.font_family}")
print(f"Glyphs    : {loaded.num_glyphs}")
print(f"Variable  : {loaded.is_variable}")

metrics = loaded.metrics
print(f"UPM       : {metrics.units_per_em}")

ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")

Formats soutenus

FormatsExtensionLireÉcrire
TTF.TFD
OTF.OTP
EOT.EOT
CFF.CFF
TYPE1.pfb / pfa
WOFF.Voff
WOFF2.Le Wooff2

Tous les formats sont chargés par FontLoader.open.TTF/OTF font retour a TtfFont et instance.


Source ouverte et licence

Aspose.Font FOSS for Python is released under the MIT License. You can use it in des projets personnels, commerciaux et open source sans coût. le code source est disponible sur GitHub et le package est distribué via PyPI comme aspose-font.


Pour commencer

Ressources associées