Introducere
Embedded OpenType (EOT) este un format de font compact dezvoltat inițial pentru încorporarea fonturilor TrueTyme pe pagini web. Un fișier EOT înfășoară o fontă TTF sau OTF cu un șifon cu dimensiuni fixe care conține câmpuri de metadate care descriu dimensiunile tipului, versiunea, setul de caractere și permisiunile de încadrare. Deși dezvoltarea modernă a web-ului s-a mutat în mare măsură la WOFF / WOff2, fișierele E OT rămân în circulație în documentele vechi și aplicațiile întreprinderii.
Aspose.Font FOSS for Python provides direct access to EOT font internals through the EotFont clasa şi tovarăşul ei, EotHeader.Poţi încărca un fişier EOT cu … FontLoader.open, citit câmpurile de intitul, traversează interiorul TtfFont, şi serializarea rezultatul înapoi la bați sau un fișier folosind Font.save.
Biblioteca este publicată pe PyPI ca: aspose-font şi licenţiat sub MIT License. Nu are dependențe comerciale obligatorii și funcționează cu runtime-ul standard Python 3.
Caracteristici cheie
Încărcarea fonturilor EOT
Utilizare: FontLoader.open pentru a încărca un fișier EOT de la o cale sau un obiect byte. Metoda returnează un EotFont În cazul în care este detectată semnătura 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 Citeşte extensia fişierului şi magia de cap pentru a detecta formatul - În mod automat. font_type argument este necesar pentru fișierele de font comune.
Citirea metadatei EotHeader
EotFont expuse direct câmpurile de intitulare ca proprietăți ale clasei. Acestea sunt corespund câmpurilor definite în specificația binară 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)
În ceea ce priveşte EotFont clasa expune următoarele metadate de intitulare ca proprietăți:
eot_version(int) versiunea în format EOT (de exemplu:.0x00020002)flags(int) încorporarea semnelor de autorizarecharset(int) identificator al setului de caractere (0 = ANSI, 1 = DEFAULT)italic(int) steagul în italici (0 sau 1)weight(int) greutatea fontului (de exemplu, 400 pentru Regular, 700 pentru Bold)fs_type(int) OS/2 fsType bits de încorporare
Utilizare: flags și de: fs_type pentru a determina dacă fontul permite subsetarea sau încorporarea, care este relevantă atunci când se prelucrează fonturile pentru conducte de redistribuire.
Accesarea la fontul intern
Fiecare EotFont Înfășoară un font standard TrueType. inner_font declarații de proprietate în cazul TtfFont Instanță, oferindu-vă acces la setul complet de tabele TrueType:
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)
În ceea ce priveşte inner_font proprietate pe EotFont Întoarce înfăşuratul. TtfFont în cazul de exemplu, oferind: accesul la setul complet de tabele TrueType, perechi de kern și tabeluri de codificare.
Serializarea EOT în byte
EotSerializer.serialize transformă orice Font Obiectul la o șir de biți EOT brută:
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")
Convertirea TTF în EOT
EotSerializer.serialize acceptă orice Font În cazul în care, astfel încât să puteți încărca un TTF și serializează-l direct în baţi 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)
Metrice de font și perechi de kern
În ceea ce priveşte EotFont moşteneste tot Font Interfaţa, deci metricile şi codificarea sunt disponibile direct fără a trece prin 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}")
Început rapid
Instalați biblioteca:
.venv/bin/pip install aspose-font
Încărcare şi inspecţie a fontului 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")
Formatele suportate
| Formatul | Extindere | Citeşte. | Scrie . |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .de la | ✓ | — |
| EOT | .Nu. | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .- Ce ? | ✓ | — |
| WOFF2 | .woff2 (în limba engleză) | ✓ | — |
Toate formatele enumerate mai sus sunt suportate pentru încărcare prin intermediul FontLoader.open.Scriere . la un format specific folosește Font.save sau de: EotSerializer.serialize pentru EOT.
Open Source & Licențiere
Aspose.Font FOSS for Python is released under the MIT License. You can use it in Proiectele personale, comerciale și open-source fără costuri. Codul sursă este disponibil pe GitHub și pachetul este distribuit prin PyPI ca aspose-font.