Giriş
Gömülü OpenType (EOT), web sayfalarına TrueType yazı tiplerini yerleştirmek için orijinal olarak geliştirilen kompakt bir yazı tipi formatıdır. Bir EOT dosyası, yazı tipi boyutları, sürüm, karakter kümesi ve yerleştirme izinlerini tanımlayan meta veri alanlarını içeren sabit boyutlu bir başlıkla bir TTF veya OTF yazı tipini sarar. Modern web geliştirme büyük ölçüde WOFF/WOFF2’ye geçse de, EOT dosyaları eski belgelerde ve kurumsal uygulamalarda hâlâ dolaşımda kalmaktadır.
Aspose.Font FOSS, Python için EOT font iç yapısına EotFont sınıfı ve onun eşlik eden EotHeader aracılığıyla doğrudan erişim sağlar. FontLoader.open ile bir EOT dosyası yükleyebilir, başlık alanlarını okuyabilir, iç TtfFont‘yi gezinebilir ve sonucu Font.save kullanarak baytlara ya da bir dosyaya serileştirebilirsiniz. Kütüphane PyPI üzerinde aspose-font adıyla yayımlanmış ve MIT Lisansı altında lisanslanmıştır. Zorunlu ticari bağımlılıkları yoktur ve standart Python 3 çalışma zamanı ile çalışır.
Temel Özellikler
EOT Yazı Tiplerini Yükleme
FontLoader.open‘ı kullanarak bir EOT dosyasını bir yol ya da bayt nesnesinden yükleyin. Yöntem, EOT imzasını algıladığında bir EotFont örneği döndürür:
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, dosya uzantısını ve başlık sihrini okuyarak formatı otomatik olarak algılar. Yaygın yazı tipi dosyaları için font_type argümanı gerekmez.
Okuma EotHeader Meta Verileri
EotFont sınıfının başlık alanlarını doğrudan özellikler olarak açığa çıkar. Bunlar, EOT ikili spesifikasyonunda tanımlanan alanlara karşılık gelir:
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)
EotFont sınıfı aşağıdaki başlık meta verilerini özellikler olarak sunar:
eot_version(int) — EOT format sürümü (ör.0x00020002)flags(int) — gömme izin bayraklarıcharset(int) — karakter kümesi tanımlayıcısı (0 = ANSI, 1 = DEFAULT)italic(int) — italik bayrağı (0 veya 1)weight(int) — font weight (ör. 400 for Regular, 700 for Bold)fs_type(int) — OS/2 fsType gömme bitleri
flags ve fs_type kullanarak fontun alt kümeleme veya gömme izin verip vermediğini belirleyin; bu, fontları yeniden dağıtım boru hatları için işlerken önemlidir.
İç TtfFont’a Erişmek
Her EotFont, standart bir TrueType fontunu sarar. inner_font özelliği TtfFont örneğini döndürür ve tam TrueType tablo kümesine erişim sağlar:
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)
EotFont üzerindeki inner_font özelliği, sarmalanmış TtfFont örneğini döndürür ve tam TrueType tablo kümesi, kern çiftleri ve kodlama tablolarına erişim sağlar.
EOT’yi Baytlara Serileştirme
EotSerializer.serialize, herhangi bir Font nesnesini ham bir EOT bayt dizesine dönüştürür:
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’yi EOT’ye Dönüştürme
EotSerializer.serialize, herhangi bir Font örneğini kabul eder, böylece bir TTF yükleyebilir ve doğrudan EOT baytlarına serileştirebilirsiniz:
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)
Font Metrics ve Kern Pairs
EotFont, tam Font arayüzünü devralır, bu sayede metrikler ve kodlama, inner_font üzerinden geçmeden doğrudan kullanılabilir:
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}")
Hızlı Başlangıç
Kütüphaneyi kurun:
.venv/bin/pip install aspose-font
Bir EOT yazı tipini yükleyin ve inceleyin:
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")
Desteklenen Biçimler
| Biçim | Uzantı | Okuma | Yazma |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
Yukarıda listelenen tüm biçimler FontLoader.open aracılığıyla yüklemeyi destekler. Belirli bir biçime yazma, EOT için Font.save veya EotSerializer.serialize kullanır.
Açık Kaynak & Lisanslama
Aspose.Font FOSS for Python MIT Lisansı altında yayınlanmıştır. Kişisel, ticari ve açık kaynak projelerinde ücretsiz olarak kullanabilirsiniz. Kaynak kodu GitHub üzerinde mevcuttur ve paket PyPI aracılığıyla aspose-font olarak dağıtılmaktadır.