Nasıl Aspose.Font Python içinde WOFF2 için Brotli Sıkıştırmasını Kullanır

Nasıl Aspose.Font Python içinde WOFF2 için Brotli Sıkıştırmasını Kullanır

WOFF2 (Web Open Font Format 2), glyph verilerini Google tarafından geliştirilen genel amaçlı kayıpsız sıkıştırma algoritması Brotli kullanarak sıkıştırır. Aspose.Font Python için FOSS, tüm Brotli işlemlerini dahili olarak yönetir — harici bir sıkıştırma kütüphanesi kurmanıza gerek yoktur. Paketlenmiş BrotliEncoder ve BrotliDecoder sınıfları, standart WOFF2 dönüşüm yolunun dışında rastgele verileri sıkıştırmanız veya açmanız gerektiğinde düşük seviyeli kullanım için mevcuttur.

Adım Adım Kılavuz

Adım 1: Paketi 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

Standart WOFF2 işlemleri için:

from aspose_font import FontLoader
from aspose_font.converter import FontConverter  # internal API — may change between releases
from aspose_font import FontType

Düşük seviyeli Brotli işlemleri için (dahili API — sürümler arasında değişebilir):

from aspose_font._brotli import BrotliEncoder, BrotliDecoder  # internal API

Adım 3: WOFF2 Yazı Tipi Oluştur (Brotli Sıkıştırmalı)

Standart yol: herhangi bir yazı tipini WOFF2’ye dönüştürün. Brotli sıkıştırması otomatik olarak uygulanır.

from aspose_font import FontLoader
from aspose_font.converter import FontConverter  # internal API — may change between releases
from aspose_font import FontType
from pathlib import Path

# Load a TTF or WOFF source
source = FontLoader.open("MyFont.ttf")

# Convert to WOFF2 — Brotli compression is applied internally
woff2 = FontConverter.convert(source, FontType.WOFF2)
output_bytes = woff2.to_bytes(FontType.WOFF2)

Path("MyFont.woff2").write_bytes(output_bytes)
print(f"WOFF2 size: {len(output_bytes)} bytes")

Sıkıştırma için ek bir adım gerekli değildir. Kütüphane, WOFF2 çıktısı üretirken dahili olarak BrotliEncoder‘ı çağırır.

Adım 4: WOFF2 Yazı Tipini Yükle ve Doğrula

Bir .woff2 dosyası yüklenirken, kütüphane font özelliklerini ortaya çıkarmadan önce Brotli sıkıştırmalı glif verilerini otomatik olarak açar:

from aspose_font import FontLoader

woff2 = FontLoader.open("MyFont.woff2")
print(f"Name   : {woff2.font_name}")
print(f"Family : {woff2.font_family}")
print(f"Glyphs : {woff2.num_glyphs}")
print(f"Type   : {woff2.font_type}")

FontLoader.open, WOFF2 sihirli baytlarını algılar ve Woff2Font örneğini oluştururken glif akışını açmak için BrotliDecoder‘i çağırır.

Adım 5: Düşük Seviyeli Brotli Kodlaması

Dahili API: BrotliEncoder and BrotliDecoder içsel yardımcı programlardır ve sürümler arasında değişebilir. WOFF2 yazı tipi sıkıştırması için, yukarıdaki 3-4. adımlarda gösterilen genel API’yi tercih edin.

Brotli ile keyfi ikili veriyi sıkıştırmanız gerektiğinde BrotliEncoder doğrudan kullanın. quality parametresi (0–11) sıkıştırma düzeyini kontrol eder:

from aspose_font._brotli import BrotliEncoder  # internal API

data = b"Hello, Brotli!" * 100  # Sample data to compress

encoder = BrotliEncoder(quality=11)  # quality 11 = maximum compression
compressed = encoder.encode(data)

print(f"Original : {len(data)} bytes")
print(f"Compressed: {len(compressed)} bytes")
print(f"Ratio    : {len(compressed)/len(data):.2%}")

Kalite 11, kodlama hızının karşılığında en iyi sıkıştırma oranını sağlar. Kalite 0 en hızlıdır. WOFF2 çıktısındaki yazı tipi verileri için kütüphane varsayılan kalite seviyesini kullanır.

Adım 6: Düşük Seviyeli Brotli Çözümleme

Brotli ile sıkıştırılmış veriyi çözmek için BrotliDecoder.decode kullanın:

from aspose_font._brotli import BrotliEncoder, BrotliDecoder  # internal API

original = b"Hello, Brotli!" * 100

# Compress
encoder = BrotliEncoder(quality=6)
compressed = encoder.encode(original)

# Decompress
decoded = BrotliDecoder.decode(compressed)

assert decoded == original
print(f"Decoded {len(decoded)} bytes — matches original: {decoded == original}")

BrotliDecoder.decode, sıkıştırılmış baytları alıp çözümlenmiş baytları döndüren bir sınıf yöntemidir. Akış API yoktur — tam sıkıştırılmış yük bir çağrıda sağlanmalıdır.

Düşük Seviyeli Brotli API’lerini Ne Zaman Kullanmalısınız

BrotliEncoder ve BrotliDecoder sınıfları şu durumlarda faydalıdır:

  • Yazı tipi işleme bağımsız olarak rastgele ikili yükleri sıkıştırmanız veya açmanız gerekir (örneğin, yazı tipi meta verilerini veya özel veri bloklarını sıkıştırmak).
  • Brotli ile sıkıştırılmış bir yükün, WOFF2 ayrıştırıcısına gönderilmeden önce düzgün biçimlendirilmiş olduğunu önceden doğrulamanız gerekir.
  • Bilinen sıkıştırma oranına sahip veri gerektiren bir test fixture oluşturuyorsunuz.

Tüm standart yazı tipi işlemleri (yükleme, dönüştürme, WOFF2 kaydetme) için düşük seviyeli API’a ihtiyacınız yoktur — FontLoader.open ve FontConverter.convert, Brotli’yi şeffaf bir şekilde yönetir.

Sıkça Sorulan Sorular

Kütüphane harici bir brotli paketine ihtiyaç duyuyor mu?

Hayır. Aspose.Font Python için FOSS, kendi Brotli uygulamasını içerir. brotli, brotlicffi veya benzeri bir paket gerekli değildir.

Kütüphane WOFF2 için hangi sıkıştırma kalitesini kullanıyor?

Kütüphane, WOFF2 çıktısı için varsayılan kalite seviyesini kullanır. Özel sıkıştırma görevleri için kalite seviyesini kontrol etmek üzere BrotliEncoder(quality=N) kullanın; N 0 (en hızlı) ile 11 (en iyi sıkıştırma) arasında bir değerdir.

WOFF2 glif akışını doğrudan açabilir miyim?

WOFF2 glif verileri, Brotli açma ve yazı tipine özgü bir dönüşüm (“dönüştürülmüş” tablo formatı) kombinasyonunu kullanır. Yalnızca ham Brotli akışını açmak, kullanılabilir bir yazı tipini geri elde etmek için yeterli değildir — FontLoader.open aracılığıyla WOFF2 dosyasını yüklemelisiniz; bu, hem Brotli açmayı hem de ters tablo dönüşümünü uygular.

Ayrıca Bakınız

 Türkçe