Python içinde WOFF Yazı Tipleriyle Nasıl Çalışılır
Bu kılavuz, Python için Aspose.Font FOSS kullanarak WOFF ve WOFF2 web yazı tiplerini nasıl yükleyeceğinizi, inceleyeceğinizi ve dönüştüreceğinizi gösterir. WOFF (Web Open Font Format), web üzerinde yazı tipleri sunmanın standardıdır. WOFF 1, zlib sıkıştırması kullanır ve WOFF 2, Brotli sıkıştırması kullanır; her ikisi de bir TrueType veya CFF yazı tipini sarar. Aspose.Font FOSS, her iki formatı da yükler ve iç yazı tipi verilerini temiz bir API aracılığıyla ortaya çıkar.
Adım Adım Kılavuz
Adım 1: Paketi Yükleyin
Aşağıdaki komutu kullanarak Aspose.Font FOSS paketini yükleyin:
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .Adım 2: Gerekli Sınıfları İçe Aktarın
WOFF yazı tiplerini yüklemek ve dönüştürmek için FontLoader, FontConverter ve FontType içe aktarın:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontTypeAdım 3: Bir WOFF Yazı Tipini Yükleyin ve İnceleyin
Bir WOFF dosyasını FontLoader.open() ile yükleyin ve ad, aile ve glif sayısı gibi temel özellikleri okuyun:
from aspose_font import FontLoader
woff_font = FontLoader.open("MyFont.woff")
print(f"Name: {woff_font.font_name}")
print(f"Family: {woff_font.font_family}")
print(f"Glyphs: {woff_font.num_glyphs}")
print(f"Type: {woff_font.font_type}")Adım 4: WOFF Üst Verisini Okuyun
WOFF dosyaları, lisanslama, kredi ve açıklama içeren bir XML üst veri bloğu içerebilir. Buna metadata_xml özelliği üzerinden erişin.
from aspose_font import FontLoader
font = FontLoader.open("MyFont.woff")
# WOFF fonts may include an XML metadata block
xml = getattr(font, "metadata_xml", None)
if xml:
print(xml)
else:
print("No metadata in this WOFF file")Adım 5: İç TTF Tablolarına Erişin
Hem WoffFont hem de Woff2Font, size temel TtfFont sağlayan bir inner_font özelliği sunar. Bunun aracılığıyla tüm standart OpenType tablolarına erişebilirsiniz.
from aspose_font import FontLoader
font = FontLoader.open("MyFont.woff")
# WOFF wraps a TrueType font; access its tables via inner_font
inner = getattr(font, "inner_font")
tables = inner.ttf_tables
print(f"Units/em: {tables.head.units_per_em}")
print(f"Family name: {tables.name.best_name(1)}")Adım 6: TTF’yi WOFF’a Dönüştürün
Bir TTF yazı tipini yükleyin ve FontType.WOFF öğesini FontConverter.convert() ile geçirerek WOFF formatına dönüştürün:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontType
ttf_font = FontLoader.open("MyFont.ttf")
woff_font = FontConverter.convert(ttf_font, FontType.WOFF)
woff_bytes = woff_font.to_bytes()
from pathlib import Path
Path("MyFont.woff").write_bytes(woff_bytes)Adım 7: TTF’yi WOFF2’ye dönüştürün
Bir TTF yazı tipini yükleyin ve FontType.WOFF2 öğesini FontConverter.convert() ile geçirerek WOFF2 formatına dönüştürün:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontType
ttf_font = FontLoader.open("MyFont.ttf")
woff2_font = FontConverter.convert(ttf_font, FontType.WOFF2)
woff2_bytes = woff2_font.to_bytes()
from pathlib import Path
Path("MyFont.woff2").write_bytes(woff2_bytes)Adım 8: WOFF ve WOFF2 arasında dönüştürün
Yüklenmiş bir WOFF dosyasını WOFF2’ye (veya tersine) dönüştürmek için hedef FontType öğesini FontConverter.convert() ile geçirin:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontType
# WOFF -> WOFF2
woff_font = FontLoader.open("MyFont.woff")
woff2_font = FontConverter.convert(woff_font, FontType.WOFF2)
# WOFF2 -> WOFF
woff2_font = FontLoader.open("MyFont.woff2")
woff_font = FontConverter.convert(woff2_font, FontType.WOFF)Yaygın Sorunlar ve Çözümler
FontParseException: Invalid WOFF signature — Dosya geçerli bir WOFF yazı tipi değil. Dosyanın bozulmadığını ve WOFF sihirli baytlarıyla başladığını doğrulayın.
FontParseException: WOFF table decompression failed — WOFF dosyasındaki sıkıştırılmış bir tablo bozulmuş. Yazı tipi dosyasını yeniden indirmeyi deneyin.
Büyük WOFF2 çıktısı — WOFF2, WOFF 1 (zlib)‘den daha küçük dosyalar üreten Brotli sıkıştırması kullanır. WOFF2 çıktınız beklenmedik şekilde büyükse, optimize edilmiş bir TTF kaynağından başladığınızdan emin olun.
Sıkça Sorulan Sorular
WOFF ve WOFF2 arasındaki fark nedir?
WOFF 1, zlib sıkıştırması kullanır ve WOFF 2, Brotli sıkıştırması kullanır. WOFF2 genellikle WOFF 1‘e göre %20-30 daha iyi sıkıştırma sağlar. İkisi de aynı temel TrueType veya CFF yazı tipi verisini kapsar.
Bir WOFF dosyasından yazı tipi tablolarına erişebilir miyim?
Evet. Temel TtfFont elde etmek için inner_font özelliğini kullanın, ardından tabloları inner_font.ttf_tables aracılığıyla erişin.
Kütüphane WOFF meta verilerini destekliyor mu?
Evet. Hem WoffFont hem de Woff2Font, isteğe bağlı XML meta veri bloğunu içeren bir metadata_xml özelliği sağlar.