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 | None
  • hhea — HheaTable | None
  • maxp — MaxpTable | None
  • os2 — Os2Table | None
  • name — NameTable | None
  • post — 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 yoksa None dö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çimUzantıOkumaYazma
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.


Başlarken

İlgili Kaynaklar