1. Produits
  2.   Aspose.Font
  3.   Aspose.Font FOSS for Python

Aspose.Font FOSS pour Python

Bibliothèque Python open-source pour charger, inspecter, convertir et sous‑ensembler les fichiers de polices TTF, OTF, CFF, WOFF, WOFF2 et EOT.

Travaillez avec les polices de façon programmatique dans Python

Aspose.Font FOSS pour Python est un ensemble d’outils pure-Python pour charger, inspecter, convertir, sous‑ensembler et prévisualiser les polices dans les formats TrueType, OpenType, CFF, Type 1, WOFF, WOFF2 et EOT. La bibliothèque fonctionne sur Python 3.10 ou version ultérieure et ne nécessite aucune bibliothèque de polices OS externe ni dépendance native.

La bibliothèque expose une API claire pour le chargement de polices via FontLoader, l’accès aux glyphes via GlyphAccessor, la conversion de formats via FontConverter, l’optimisation web via FontCleaner, le sous‑ensemble sensible au texte via FontSubsetter, et l’animation de polices variables via AnimationPreviewBuilder. Les métadonnées de police telles que le nom, la famille, le style, le nombre de glyphes, l’encodage et les métriques sont accessibles via la classe de base Font sans analyser manuellement les tables binaires.

Aspose.Font FOSS est sous licence MIT et installable depuis PyPI avec une seule commande pip install. Il convient aux outils de conception de polices, aux pipelines de polices web, aux moteurs de rendu de glyphes, et à toute application Python qui doit lire, transformer ou produire des fichiers de police. Pour la gamme de produits d’entreprise, voir Aspose.Font — Enterprise Product Family.

Chargement de polices et détection de format

  • Chargez les polices à partir de chemins de fichier ou d’octets bruts avec FontLoader.open() et FontLoader.load()
  • Détecter automatiquement le format : TTF, OTF, CFF, WOFF, WOFF2, EOT, Type 1
  • Accédez aux métadonnées de police via la classe de base Font: font_name, font_family, font_style, num_glyphs
  • Lire les cartes d’encodage des glyphes avec FontEncoding.unicode_to_gid() et get_all_codepoints()
  • Inspectez les métriques de police avec FontMetrics : ascent, descent, line gap, em-square

Cas d’utilisation typiques

  • Pipelines de validation des polices et d’extraction des métadonnées
  • Vérifications CI/CD qui vérifient le nom de la famille de polices et le nombre de glyphes
  • Services d’ingestion de polices Web qui acceptent plusieurs formats d’entrée
  • Outils de conception de polices qui affichent les métadonnées sans runtime de bureau

Accès aux glyphes et inspection des chemins

  • Récupérez les glyphes par ID ou Unicode avec GlyphAccessor.get_glyph_by_id() et get_glyph_by_unicode()
  • Résoudre tous les glyphes d’une chaîne avec GlyphAccessor.get_glyphs_for_text()
  • Inspecter les chemins de contour de glyphe en tant que commandes saisies: MoveTo, LineTo, QuadraticTo, CurveTo, ClosePath
  • Accédez à la boîte englobante du glyphe, à la largeur d’avance et aux bordures latérales à partir des propriétés Glyph.
  • Lire les paires de crénage depuis KernPair pour des calculs de mise en page précis

Cas d’utilisation typiques

  • Vérifications de la couverture des glyphes pour le rendu de texte multilingue
  • Extraction de contour pour le chemin SVG ou la génération de vecteur
  • Validation de la table de crénage dans les flux de travail QA des polices
  • Recherche sur le façonnage du texte et expérimentation de mise en page de bas niveau

Conversion de polices

  • Convertir entre TTF, OTF, CFF, WOFF, WOFF2, EOT et Type 1 avec FontConverter.convert()
  • Adapter les types de courbes Bezier avec CurveAdapter.quad_to_cubic() et cubic_to_quads()
  • Convertir les chemins de glyphes entre quadratique et cubique avec convert_path_quad_to_cubic() et convert_path_cubic_to_quad()

Cas d’utilisation typiques

  • Pipelines de polices Web qui convertissent les polices maîtresses TTF en WOFF2 pour la distribution
  • Outils de fonderie typographique qui exportent vers plusieurs cibles de format à partir d’une seule source
  • Conversion EOT héritée pour des piles de polices Web rétrocompatibles
  • Normalisation automatisée du format de police dans l’intégration continue

Sous‑ensemble de polices

  • Sous-ensemble de polices par texte Unicode avec FontSubsetter.subset_by_text()
  • Sous-ensemble par liste d’ID de glyphes avec FontSubsetter.subset_by_gids()
  • Produisez des sous‑ensembles optimisés pour le web avec FontSubsetter.subset_for_web()
  • Appliquer des profils de préréglages nommés avec FontSubsetter.subset_by_presets() et available_presets()
  • Analyser la couverture du sous‑ensemble avec FontSubsetter.analyze_coverage() et analyze_web_coverage()

Cas d’utilisation typiques

  • Réduction de la taille du payload WOFF2 pour les pages Web avec des jeux de caractères limités
  • Production de sous‑ensembles de polices spécifiques à chaque langue pour les déploiements i18n
  • Flux de travail de licence de polices qui distribuent des sous‑ensembles par jeu de pages
  • Optimisation des performances pour les applications web mobiles

Optimisation Web et aperçus de polices variables

  • Supprimez les tables héritées et les enregistrements de noms Mac avec FontCleaner.clean_for_web()
  • Vérifiez la compatibilité des axes de police variable avec CompatibilityChecker.compare_fonts() et compare_variable_instances()
  • Générez des balayages d’axes APNG animés avec AnimationPreviewBuilder.build_axis_sweep()
  • Créer des chemins d’animation à plusieurs étapes avec AnimationPreviewBuilder.build_path()

Cas d’utilisation typiques

  • Pages d’échantillons de polices et explorateurs d’axes interactifs pour les fonderies typographiques
  • Pipelines CI qui vérifient le comportement des polices variables avant la distribution
  • Pipelines de performance Web qui suppriment les tables binaires non essentielles
  • Miniatures d’aperçu de police pour les applications de gestion de polices

Charger un fichier de police

Ouvrez une police TrueType ou OpenType à partir d’un chemin de fichier et lisez ses métadonnées de base.

from aspose_font.loader import FontLoader
font = FontLoader.open("Roboto-Regular.ttf")
print(font.font_name)    # e.g. "Roboto"
print(font.font_family)  # e.g. "Roboto"
print(font.num_glyphs)   # e.g. 1294

Accéder aux glyphes d’une chaîne de texte

Résoudre tous les glyphes d’un point de code Unicode et inspecter leurs chemins de contour.

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

Générer une animation de balayage d’axe de police variable

Créez un APNG animé qui balaye un axe de police variable de la valeur de départ à la valeur finale.

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")

Nettoyer une police pour le déploiement Web

Supprimez les tables héritées et les enregistrements de noms Mac pour réduire la taille du binaire avant la diffusion Web.

from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
font = FontLoader.open("Roboto-Regular.ttf")
cleaned = FontCleaner.clean_for_web(font)
# DSIG, FFTM, meta tables removed; Mac platform name records stripped

Foire aux questions

Qu’est-ce que Aspose.Font FOSS pour Python ?

C’est une bibliothèque pure-Python gratuite, sous licence MIT, pour charger, inspecter, convertir et sous‑ensemblier des polices aux formats TTF, OTF, CFF, Type 1, WOFF, WOFF2 et EOT. Aucune dépendance native n’est requise.

Comment installer Aspose.Font FOSS pour Python ?

Exécutez pip install "aspose-font>=1.0.0". Aucune dépendance au niveau du système n’est nécessaire. La bibliothèque fonctionne sous Windows, macOS et Linux avec Python 3.10 ou version ultérieure.

Quels formats de police sont pris en charge ?

FontLoader.open() lit les formats TTF, OTF, CFF, Type 1, WOFF, WOFF2 et EOT. FontConverter.convert() écrit les formats TTF, CFF, WOFF et WOFF2. EOT est en lecture seule.

Font.to_bytes() est-il disponible ?

Non. Font.to_bytes() n’est pas implémenté dans la classe de base. Utilisez FontConverter.convert() pour produire un nouveau Font au format souhaité.

Puis-je sous‑ensemblier une police pour la diffusion sur le web ?

Oui. FontSubsetter.subset_by_text(font, text) renvoie un nouveau Font contenant uniquement les glyphes requis pour le texte fourni. FontSubsetter.subset(font, codepoints) et subset_by_gids(font, gids) offrent un contrôle plus fin.

  

Ressources de support et d'apprentissage

 Français