Bevezetés
A beágyazott OpenType (EOT) egy kompakt betűtípus-formátum, amelyet eredetileg TrueType betűtípusok weboldalakba ágyazására fejlesztettek ki. Egy EOT fájl egy TTF vagy OTF betűtípust csomagol be egy fix méretű fejlécbe, amely metaadatmezőket tartalmaz a betűtípus méreteiről, verziójáról, karakterkészletéről és az ágyazási engedélyekről. Bár a modern webfejlesztés nagy része már a WOFF/WOFF2 felé fordult, az EOT fájlok továbbra is előfordulnak örökölt dokumentumokban és vállalati alkalmazásokban.
Aspose.Font FOSS a Python számára közvetlen hozzáférést biztosít az EOT betűtípus belső részeihez a EotFont osztályon és annak kísérőjén, a EotHeader segítségével. Betölthetsz egy EOT fájlt a FontLoader.open használatával, olvashatsz fejlécmezőket, bejárhatod a belső TtfFont-t, és sorosíthatod az eredményt vissza bájtokként vagy egy fájlba a Font.save használatával. A könyvtár a PyPI oldalon érhető el aspose-font néven, és az MIT License alatt licencelt. Nincs kötelező kereskedelmi függősége, és a standard Python 3 futtatókörnyezettel működik.
Főbb jellemzők
EOT betűtípusok betöltése
Használja a FontLoader.open-t egy EOT fájl betöltéséhez útvonalról vagy bájtobjektumból. A metódus egy EotFont példányt ad vissza, ha felismeri az EOT aláírást:
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 a fájlkiterjesztést és a fejléc mágikus számát olvassa, hogy automatikusan felismerje a formátumot. Általános betűtípusfájlokhoz nincs szükség font_type argumentumra.
EotHeader metaadatainak olvasása
EotFont a fejlécmezőket közvetlenül a osztály tulajdonságaként teszi elérhetővé. Ezek megfelelnek az EOT bináris specifikációjában definiált mezőknek:
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)
A EotFont osztály a következő fejlécmetaadatokat teszi elérhetővé tulajdonságként:
eot_version(int) — EOT formátumverzió (pl.0x00020002)flags(int) — beágyazási engedélyező zászlókcharset(int) — karakterkészlet-azonosító (0 = ANSI, 1 = DEFAULT)italic(int) — dőlt jelző (0 vagy 1)weight(int) — betűvastagság (pl. 400 a normálhoz, 700 a félkövérhez)fs_type(int) — OS/2 fsType beágyazási bitek
Használd a flags és a fs_type értékeket annak meghatározására, hogy a betűtípus engedélyezi-e a részhalmazképzést vagy a beágyazást, ami a betűtípusok újraelosztási csővezetékek feldolgozása során releváns.
A belső TtfFont elérése
Minden EotFont egy szabványos TrueType betűtípust csomagol. A inner_font tulajdonság visszaadja a TtfFont példányt, így hozzáférhetsz a teljes TrueType táblakészlethez:
from aspose_font import FontLoader
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)
A inner_font tulajdonság a EotFont esetén visszaadja a becsomagolt TtfFont példányt, hozzáférést biztosítva a teljes TrueType táblakészlethez, a kerning párokhoz és a kódolási táblákhoz.
EOT sorosítása bájtokba
EotSerializer.serialize bármely Font objektumot nyers EOT bájtsorozattá alakítja:
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")
TTF konvertálása EOT formátumba
EotSerializer.serialize bármely Font példányt elfogad, így betölthetsz egy TTF-et és közvetlenül sorosíthatod EOT bájtokká:
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)
Betűmetrikák és kerning párok
A EotFont örökli a teljes Font interfészt, így a metrikák és a kódolás közvetlenül elérhetők anélkül, hogy a inner_font-t használnánk:
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}")
Gyors kezdés
Telepítsd a könyvtárat:
.venv/bin/pip install aspose-font
Tölts be és vizsgáld meg egy EOT betűtípust:
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")
Támogatott formátumok
| Formátum | Kiterjesztés | Olvas | Ír |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
A fent felsorolt összes formátum támogatott a FontLoader.open segítségével történő betöltéshez. Egy adott formátumba írás a Font.save vagy a EotSerializer.serialize használatával történik EOT esetén.
Nyílt forráskód & licencelés
Aspose.Font FOSS a Python számára MIT licenc alatt kerül kiadásra. Személyes, kereskedelmi és nyílt forráskódú projektekben ingyenesen használható. A forráskód elérhető a GitHub oldalon, a csomag pedig a PyPI útján kerül terjesztésre, mint aspose-font.