Giriş
TrueType yazı tipleri (.ttf) ve onların OpenType üst kümesi (.otf) modern işletim sistemlerinde hâkim yazı tipi biçimleridir. Her iki biçim de OpenType spesifikasyonuna dayanan aynı ikili tablo yapısını paylaşır. Python için Aspose.Font FOSS, bu yapıyı TtfFont aracılığıyla ortaya çıkararak, bireysel OpenType tablolarına, kern çift verilerine, değişken yazı tipi eksenlerine ve glif konturlarına doğrudan erişim sağlar.
TtfFont sınıfı, Font temel sınıfını TTF’ye özgü yöntemler olan get_blob, get_table_bytes, set_table_bytes ve değişken yazı tipi ekseni kilitleme için instantiate ile genişletir. TtfTableSet özelliği (ttf_tables), en yaygın OpenType tablolarına tiplenmiş erişim sağlar: head, hhea, maxp, os2, name, post.
Kütüphane, PyPI üzerinde aspose-font adıyla yayınlanmış ve MIT Lisansı altında lisanslanmıştır. Zorunlu ticari bağımlılıkları yoktur.
Temel Özellikler
TTF ve OTF Yazı Tiplerini Yükleme
Herhangi bir TrueType veya OpenType yazı tipi dosyasını yüklemek için FontLoader.open kullanın:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)
FontLoader.open dosya başlığından yazı tipi formatını algılar. Hem .ttf (TrueType) hem de .otf (OpenType CFF) dosyaları desteklenir ve her ikisi de bir TtfFont örneği döndürür.
TtfTableSet aracılığıyla OpenType Tablolarına erişim
ttf_tables özelliği, yaygın OpenType tabloları için tiplenmiş erişimcileri içeren bir TtfTableSet döndürür. Her özellik, tablo nesnesini veya mevcut değilse None döndürür:
TtfFont üzerindeki ttf_tables özelliği bir TtfTableSet örneği döndürür. Kullanılabilir tablo erişimcileri:
head—HeadTable | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—PostTable | None
Her özellik, tablo nesnesini ya da None değerini döndürür; bu tablo font dosyasında bulunmuyorsa. Belirli tabloları okumadan önce kontrol etmek için TtfTableSet özelliklerine erişin. Adlandırılmış erişiciler tarafından kapsanmayan tablolar için, dört karakterli OpenType etiketiyle ham baytları almak üzere TtfTableSet.get_raw(tag) kullanın.
Ham Tablo Baytlarını Okuma
get_table_bytes(tag), herhangi bir OpenType tablosu için ham baytları döndürür. Tablo bulunmadığında None döndüren None-güvenli bir varyant için get_blob(tag) kullanın:
TtfFont, ham tablo erişimi için iki yöntem sağlar:
get_table_bytes(tag) -> bytes— adlandırılmış bir tablo için ham baytları döndürür (yoksa hata verir)get_blob(tag) -> bytes | None— tablo yoksaNonedöndürür (güvenli varyant)
Her iki yöntem de OpenType tablo etiketi gibi dört karakterli bir etiketi kabul eder; örneğin "cmap", "GDEF" veya "GPOS". Tablo isteğe bağlı olduğunda get_blob kullanın, böylece işleme başlamadan önce None kontrol edebilirsiniz.
Kern Çiftleri
get_kern_pairs(), fontta kodlanmış tüm kern çiftlerini döndürür. Her KernPair, left (GlyphId), right (GlyphId) ve value (font birimlerinde int) içerir:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")
for pair in pairs[:5]:
print(f" Left: {pair.left} Right: {pair.right} Value: {pair.value}")
Yazı Tipi Ölçümleri
Standart metriklere metrics özelliği aracılığıyla erişilebilir:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
metrics = loaded.metrics
print(f"Units per em : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
print(f"Descender : {metrics.descender}")
print(f"Line gap : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")
Değişken Yazı Tipi Desteği
Değişken yazı tipleri için TtfFont, is_variable, variable_axes ve named_instances öğelerini ortaya çıkarır. Belirli bir ekseni dört harflik etiketiyle almak için get_axis(tag) kullanın:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/RobotoFlex.ttf")
print(f"Is variable: {loaded.is_variable}")
print(f"Axes : {len(loaded.variable_axes)}")
TtfFont üzerindeki get_axis(tag) yöntemi, dört harflik etiketiyle bir VariableAxis alır (ör. ağırlık için "wght", genişlik için "wdth"). Ekseni fontun fvar tablosunda bulunmuyorsa None döndürür.
Yazı Tiplerini Dönüştürme
to_bytes(font_type), yazı tipini farklı bir formata dönüştürür. Hedefi belirtmek için FontType enum’ını kullanın:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
fh.write(ttf_bytes)
print(f"Serialized: {len(ttf_bytes)} bytes")
Hızlı Başlangıç
Kütüphaneyi kurun:
.venv/bin/pip install aspose-font
Bir TTF yazı tipini yükleyin ve inceleyin:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("Roboto-Regular.ttf")
print(f"Font name : {loaded.font_name}")
print(f"Family : {loaded.font_family}")
print(f"Glyphs : {loaded.num_glyphs}")
print(f"Variable : {loaded.is_variable}")
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")
Desteklenen Formatlar
| Biçim | Uzantı | Okuma | Yazma |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
Tüm formatlar FontLoader.open üzerinden yüklenir. TTF/OTF yazı tipleri bir TtfFont örneği döndürü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 üzerinden aspose-font olarak dağıtılmaktadır.