Introduction
OpenType (EOT) est un format de caractère compact initialement développé pour intégrer les fonctions TrueTYPE dans des pages Web. Un fichier EOT enveloppe une TTF ou OTF avec un titre fixe contenant des champs métadonnées qui décrivent la dimension de la phonture, la version, le charset et les permissions d’intégration. Bien que le développement web moderne a largement déménagé à WOFF/WOF F2, les fichiers EO restent en circulation dans les documents héritiers et applications d’entreprise.
Aspose.Font FOSS for Python provides direct access to EOT font internals through the EotFont classe et son compagnon EotHeader.Vous pouvez télécharger un fichier EOT avec FontLoader.open, lire les champs de titre, traverser l’intérieur TtfFont,et sérialiser la Retour à des bytes ou à un fichier utilisé Font.save.
La bibliothèque est publiée sur Pypi comme aspose-font Il est licencié sous la licence MIT. Il n’a pas de dépendances commerciales obligatoires et fonctionne avec le temps d’exécution Python 3 standard.
Fonctionnalités clés
La mise en place de fonts
Utiliser FontLoader.open pour charger un fichier EOT d’un objet de route ou d’un byte. Retourner un EotFont l’exemple lorsqu’il détecte la signature EOT :
from aspose_font import FontLoader, EotFont
font = FontLoader.open("fonts/sample.eot")
assert isinstance(font, EotFont)
print(font.font_name) # e.g. "Roboto"
print(font.font_family) # e.g. "Roboto"
print(font.num_glyphs) # number of glyphs in the inner font
FontLoader.open Lire l’extension de fichier et la magie du titre pour détecter le format automatique, pas font_type L’argument est nécessaire pour les fichiers de font communs.
Lire les métadonnées de l’eotheader
EotFont exposer les champs de titre directement comme propriétés sur la classe. correspond aux champs défini dans la spécification binaire EOT :
from aspose_font import FontLoader, EotFont, EotSerializer
# Load EOT — FontLoader returns an EotFont instance for .eot files
loaded = FontLoader.open("fonts/sample.eot")
# Serialize back to bytes to confirm the font loaded correctly
eot_bytes = EotSerializer.serialize(loaded)
print(f"EOT data loaded: {len(eot_bytes)} bytes")
# Base Font properties work on any loaded font
print("Font name:", loaded.font_name)
print("Glyphs :", loaded.num_glyphs)
Le EotFont La classe expose les métadonnées de titre suivantes en tant que propriétés :
eot_version(intversion de format EOT (par exemple,.0x00020002)flags(int- Les drapeaux de permischarset(int- Identificateur de caractère (0 = ANSI, 1 = DEFAULT)italic(int- Drapeau italien (0 ou 1)weight(intPoids de la lettre (p. ex. 400 pour le régulier, 700 pour Bold)fs_type(int- OS/2 fsType bits de mise en place
Utiliser flags et fs_type pour déterminer si le font permet la sous-position ou intégration, qui est pertinente lors de la transformation des fonctions pour les pipelines de redistribution.
Accès au TtfFont intérieur
Chaque EotFont Il est utilisé pour un type de texte standard TrueType.The inner_font Remboursement de propriété Le TtfFont Par exemple, vous donnez accès au set de table TrueType complet :
from aspose_font import FontLoader, EotFont
loaded = FontLoader.open("fonts/sample.eot")
# Metrics are accessible directly from the loaded font
metrics = loaded.metrics
print("Units per em :", metrics.units_per_em)
print("Ascender :", metrics.ascender)
print("Descender :", metrics.descender)
print("Line gap :", metrics.line_gap)
Le inner_font Propriété sur EotFont Retourner le coffreur TtfFont La Commission, fournissant Accès au ensemble de tableau TrueType complet, paires de cœurs et tables d’encodage.
Sérialisation EOT à Bytes
EotSerializer.serialize Convertir tout Font Objet à une courbe de byte EOT crude :
from aspose_font import FontLoader, EotFont, EotSerializer
font = FontLoader.open("fonts/sample.eot")
assert isinstance(font, EotFont)
eot_bytes = EotSerializer.serialize(font)
with open("output/sample_copy.eot", "wb") as fh:
fh.write(eot_bytes)
print(f"Serialized {len(eot_bytes)} bytes")
Convertir le TTF en EOT
EotSerializer.serialize accepter n’importe quel Font Vous pouvez donc utiliser un TTF et Il est envoyé directement aux bytes EOT :
from aspose_font import FontLoader, EotFont, EotSerializer
ttf = FontLoader.open("fonts/Roboto-Regular.ttf")
eot_bytes = EotSerializer.serialize(ttf)
with open("output/Roboto-Regular.eot", "wb") as fh:
fh.write(eot_bytes)
reloaded = FontLoader.open("output/Roboto-Regular.eot")
assert isinstance(reloaded, EotFont)
print("Converted and verified:", reloaded.font_name)
Métries de font et paires de noyau
Le EotFont hérite le plein Font interface, donc les métrics et le codage sont Disponible sans passer par inner_font:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/sample.eot")
metrics = loaded.metrics
print(f"Ascender : {metrics.ascender}")
print(f"Descender: {metrics.descender}")
print(f"Line gap : {metrics.line_gap}")
print(f"Underline: {metrics.underline_position}")
for pair in loaded.get_kern_pairs():
print(f" Kern: {pair}")
Démarrage rapide
Installation de la bibliothèque :
.venv/bin/pip install aspose-font
Téléchargez et vérifiez un fichier EOT :
from aspose_font import FontLoader, EotFont, EotSerializer
loaded = FontLoader.open("sample.eot")
# Base font info
print(f"Font name : {loaded.font_name}")
print(f"Glyphs : {loaded.num_glyphs}")
# Metrics
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
# Serialize the loaded font back to EOT bytes
eot_bytes = EotSerializer.serialize(loaded)
print(f"Serialized: {len(eot_bytes)} bytes")
Formats soutenus
| Formats | Extension | Lire | Écrire |
|---|---|---|---|
| TTF | .TFD | ✓ | — |
| OTF | .OTP | ✓ | — |
| EOT | .EOT | ✓ | — |
| CFF | .CFF | ✓ | — |
| TYPE1 | .pfb / pfa | ✓ | — |
| WOFF | .Voff | ✓ | — |
| WOFF2 | .Le Wooff2 | ✓ | — |
Tous les formats énumérés ci-dessus sont supportés pour le chargement via FontLoader.open.Écrire Pour un format spécifique, utilisez Font.save ou EotSerializer.serialize pour EOT.
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.