Introduction

Aspose.Font FOSS for Python is a new open-source library that gives Python developers un kit d’outils complet pour travailler avec les fichiers de caractère programmés. un TTF pour l’inspection du glyph, convertir un OTF à WOFF2 pour la livraison web, sous-sets une phonture sur le réduire la taille de charge, ou générer des prévisions animées d’axes font variables, la bibliothèque exposer une API unifiée, sans dépendance pour toutes ces tâches.

La bibliothèque est publiée sur Pypi comme aspose-font sous licence de l’IA. il est nécessaire Python 3.10 ou plus tard et n’a pas de dépendance sur les bibliothèques de rendu des phontres au niveau OS, telles que: FreeType ou HarfBuzz. Cela le rend parfaitement adapté aux environnements de serveur sans tête, Les pipelines CI et les chargeurs de travail conteneurs où l’installation des fonctions système est impractique.

Aspose.Font FOSS v1.0.0 supports loading fonts in TTF, OTF, CFF, Type 1, WOFF, WOFF2, et des formats EOT, avec la capacité d’exportation au même ensemble de formates par le biais du FontConverter.


Ce qui est inclus

La charge des fontres et l’accès aux métadonnées

Le FontLoader classe est le point d’entrée unique pour les phontres de chargement. appeler FontLoader.open() avec un fil ou des bytes crus et la bibliothèque détectera le format automatiquement et retourner l’objet de la lettre appropriée. une fois chargé, le Font La classe de base vous donne accès à font_name, font_family, font_style, num_glyphs,et le code de la carte.

from aspose_font.loader import FontLoader

font = FontLoader.open("Roboto-Regular.ttf")
print(font.font_name)    # "Roboto"
print(font.font_family)  # "Roboto"
print(font.num_glyphs)   # number of glyphs in the font

Inspection Glyph et accès à la route

Le GlyphAccessor La classe vous permet de regarder les glyphs par l’ID glyf ou le point code Unicode via get_glyph_by_id() et get_glyph_by_unicode().Pour résoudre tous les glyphes pour une chaîne de Le texte en même temps, utilisez get_glyphs_for_text().Chaque Glyph L’objet expose son chemin de départ comme une séquence de commandes de route typiques - MoveTo, LineTo, QuadraticTo, CurveTo,et ClosePath - vous donner accès aux données de Bézier sans moteur de rendu.

from aspose_font.loader import FontLoader

font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(0x41)  # Unicode code point for 'A'
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
for cmd in glyph.path.commands:
    print(type(cmd).__name__, cmd)

Fonctionnement sous-section

FontSubsetter Il existe plusieurs stratégies de sous-setting.Utiliser subset_by_text() à ne conserver que les glyphes nécessaires pour une chaîne spécifique, subset_by_gids() Pour définir le glyphosate les identifiants, ou subset_for_web() Pour appliquer un prédécesseur web optimisé qui tombe rarement Les glifes et les tables. le analyze_coverage() La méthode vous permet de vérifier quel pourcentage d’une sous-sette de la phonture originale couvre avant de s’y engager.

from aspose_font.loader import FontLoader
from aspose_font.subsetter import FontSubsetter

font = FontLoader.open("NotoSans-Regular.ttf")
# Subset to the characters needed for a Latin-script page
result = FontSubsetter.subset_by_text(font, "Hello, World!")

Optimization de la page Web

FontCleaner.clean_for_web() Réservez DSIG, FFTM et les tables métas et supprimez Mac les enregistrements de nom de plateforme à partir du tableau de noms de la lettre. le résultat est un plus petit binaire qui charge plus vite comme un fichier Web sans changer les outlines de glyph ou les métrics.

from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner

font = FontLoader.open("Roboto-Regular.ttf")
cleaned = FontCleaner.clean_for_web(font)
# stripped of legacy tables; ready for WOFF2 packaging

Variable Animation Prédictions

Pour les variables, AnimationPreviewBuilder peut générer un APNG animé qui se déchire un axe d’un valeur de départ à une valeur finale. build_axis_sweep() La méthode accepte Le signe de l’axe (par exemple,., "wdth" ou "wght"Un compte de cadre, un compte par seconde et une flamme de bounce optionnelle qui reverse le serpent pour créer une animation en loop. est un AnimationAsset Qui write_to() Le système permet de sauvegarder l’APNG sur le disque.

from aspose_font.loader import FontLoader
from aspose_font.animation import AnimationPreviewBuilder

font = FontLoader.open("Roboto-VariableFont_wdth,wght.ttf")

asset = AnimationPreviewBuilder.build_axis_sweep(
    font,
    axis_tag="wdth",
    start_val=75.0,
    end_val=100.0,
    frames=3,
    fps=10,
    text="A",
    size=10.0,
    bounce=True,
)

asset.write_to("roboto-sweep-wdth.png")

Démarrage rapide

Installation de la bibliothèque à partir de PyPI :

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .

Ensuite, charger un chiffre et inspecter ses métadonnées dans quelques lignes:

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.ttf")
print(f"Family: {font.font_family}")
print(f"Style:  {font.font_style}")
print(f"Glyphs: {font.num_glyphs}")

# Look up a glyph by Unicode code point
glyph_id = font.encoding.unicode_to_gid(ord("A"))
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
print(f"Path commands for 'A': {len(glyph.path.commands)}")

Formats soutenus

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

Source ouverte et licence

Aspose.Font FOSS for Python is published under the MIT license. You can use it in Projets commerciaux, modifier et distribuer librement. le code source est disponible sur GitHub à Avis sur le site : Font-FOSS-for-Python Le package est disponible sur PyP comme aspose-font.


Pour commencer

Ressources associées