Pendahuluan
Embedded OpenType (EOT) adalah format font kompak yang awalnya dikembangkan untuk menyematkan font TrueType di halaman web. Sebuah file EOT membungkus font TTF atau OTF dengan header berukuran tetap yang berisi bidang metadata yang menjelaskan dimensi font, versi, set karakter, dan izin penyematan. Meskipun pengembangan web modern sebagian besar telah beralih ke WOFF/WOFF2, file EOT masih beredar dalam dokumen legacy dan aplikasi perusahaan.
Aspose.Font FOSS untuk Python menyediakan akses langsung ke internal font EOT melalui kelas EotFont dan companion EotHeader. Anda dapat memuat file EOT dengan FontLoader.open, membaca bidang header, menelusuri TtfFont internal, dan menyerialisasi hasil kembali ke byte atau ke file menggunakan Font.save. Perpustakaan ini dipublikasikan di PyPI sebagai aspose-font dan dilisensikan di bawah MIT License. Tidak memiliki ketergantungan komersial yang wajib dan berfungsi dengan runtime standar Python 3.
Fitur Utama
Memuat Font EOT
Gunakan FontLoader.open untuk memuat file EOT dari jalur atau objek bytes. Metode ini mengembalikan instance EotFont ketika mendeteksi tanda tangan 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 membaca ekstensi file dan magic header untuk mendeteksi format secara otomatis. Tidak ada argumen font_type yang diperlukan untuk file font umum.
Membaca Metadata EotHeader
EotFont mengekspos bidang header secara langsung sebagai properti pada kelas. Ini sesuai dengan bidang yang didefinisikan dalam spesifikasi biner 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)
Kelas EotFont mengekspos metadata header berikut sebagai properti:
eot_version(int) — versi format EOT (misalnya0x00020002)flags(int) — bendera izin penyematancharset(int) — pengidentifikasi set karakter (0 = ANSI, 1 = DEFAULT)italic(int) — bendera italic (0 atau 1)weight(int) — bobot font (mis., 400 untuk Regular, 700 untuk Bold)fs_type(int) — OS/2 bit penyematan fsType
Gunakan flags dan fs_type untuk menentukan apakah font mengizinkan subsetting atau embedding, yang relevan saat memproses font untuk pipeline redistribusi.
Mengakses TtfFont Internal
Setiap EotFont membungkus font TrueType standar. Properti inner_font mengembalikan instance TtfFont, memberikan Anda akses ke set tabel TrueType lengkap:
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)
Properti inner_font pada EotFont mengembalikan instance TtfFont yang dibungkus, memberikan akses ke set tabel TrueType lengkap, pasangan kern, dan tabel enkoding.
Menyerialisasi EOT ke Byte
EotSerializer.serialize mengonversi objek Font apa pun menjadi string byte EOT mentah:
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")
Mengonversi TTF ke EOT
EotSerializer.serialize menerima instance Font apa pun, sehingga Anda dapat memuat TTF dan menyerialisasikannya langsung ke byte 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)
Metrik Font dan Pasangan Kern
EotFont mewarisi seluruh antarmuka Font, sehingga metrik dan enkoding tersedia secara langsung tanpa melalui 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}")
Mulai Cepat
Instal pustaka:
.venv/bin/pip install aspose-font
Muat dan inspeksi font 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")
Format yang Didukung
| Format | Ekstensi | Baca | Tulis |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
Semua format yang tercantum di atas didukung untuk dimuat melalui FontLoader.open. Menulis ke format tertentu menggunakan Font.save atau EotSerializer.serialize untuk EOT.
Sumber Terbuka & Lisensi
Aspose.Font FOSS untuk Python dirilis di bawah Lisensi MIT. Anda dapat menggunakannya dalam proyek pribadi, komersial, dan sumber terbuka tanpa biaya. Kode sumber tersedia di GitHub dan paket didistribusikan melalui PyPI sebagai aspose-font.