Как Aspose.Font използва Brotli Compression за WOFF2 в Python

Как Aspose.Font използва Brotli Compression за WOFF2 в Python

WOFF2 (Web Open Font Format 2) компресира данните си с помощта на Brotli, универсален формат за шрифтове. Алгоритм за компресия без загуби, разработен от Google. Aspose.Font FOSS за Python ръкавици всички операции на Brotli вътрешно не е необходимо да инсталирате външно компресия Библиотеката. BrotliEncoder и в) BrotliDecoder Класът е на разположение за: използване на ниско ниво, когато трябва да компресирате или декомпресирате произволни данни извън системата за управление. стандартен път на преобразуване WOFF2.

Постепенно ръководство

Стъпка 1: Инсталирайте пакета

pip install "aspose-font>=1.0.0"

Стъпка 2: Импортиране на необходимите класове

За стандартни операции по WOFF2:

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType

За ниско ниво на Brotli операции (вътрешни API може да се промени между издания):

from aspose_font._brotli import BrotliEncoder, BrotliDecoder  # internal API

Стъпка 3: Създайте WOFF2 шрифт (Бротили-компресиран)

Стандартният път: преобразуване на всеки шрифт във WOFF2. Сгъстяването Brotli се прилага автоматично.

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
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")

Няма нужда от допълнителни стъпки за компресия. BrotliEncoder вътрешно при производството на WOFF2.

Стъпка 4: Зареждане и проверка на WOFF2 шрифт

При зареждане на .woff2 Файл, библиотеката декомпресира с компресиран от Бротли глиф. данни автоматично преди излагане на свойствата на шрифта:

from aspose_font.loader 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 и призовава BrotliDecoder в) към Декомпресирайте потока на глифа преди да изградите Woff2Font Във всеки случай.

Стъпка 5: Бротили кодиране на ниско ниво

Вътрешни API: ВъзрастBrotliEncoder и в) BrotliDecoder са вътрешни комунални услуги. За компресия на WOFF2 шрифтовете, предпочитайте публичен API, показан в стъпки 3-4 по-горе.

Използване на: BrotliEncoder директно, когато трябва да компресира произволни двоични данни с Бротли. quality параметър (011) контролира нивото на компресия:

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%}")

Качеството 11 дава най-доброто съотношение на компресия за сметка на скоростта на кодиране. Качество 0 е най - бързо. За данните от шрифта в изхода WOFF2, библиотеката използва стандартното ниво на качество.

Стъпка 6: Декодиране на Brotli с ниско ниво

Използване на: BrotliDecoder.decode за разкомпресиране на Brotli-съсгъстените данни:

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 е клас метод, който взема компресираните байтове и Няма API за стрийминг пълната компресирана версия на файла. полезен товар трябва да бъде предоставен в рамките на един разговор.

Кога да използвате Low-Level Brotli API

Съветът на ЕС BrotliEncoder и в) BrotliDecoder класовете са полезни, когато:

  • Трябва да компресирате или декомпресирате произволни двоични полезни товарни материали независимо от обработката на шрифтовете (например, компресиране на метаданните за шрифта или персонализирани блокове данни).
  • Трябва да проверите предварително, че Brotli-компресиран полезен товар е добре формирана преди да го предадете на WOFF2 анализатор.
  • Вие изграждате тестова уредба, която изисква известни данни за съотношението на компресията.

За всички стандартни операции с шрифта (зареждане, конвертиране, запазване на WOFF2), не трябва да използвате: Нуждаете се от API на ниско ниво FontLoader.open и в) FontConverter.convert ръкавица Бротли, прозрачно.

Често задавани въпроси

Трябва ли в библиотеката външен пакет за братоли?

Не. Aspose.Font FOSS за Python събира собствената си реализация на Brotli. brotli, brotlicffi, или е необходим подобен пакет.

Какво качество на компресия използва библиотеката за WOFF2?

Библиотеката използва стандартното ниво на качество за WOFF2 изход. За да контролирате ниво на качество за задачи по поръчка, използване BrotliEncoder(quality=N) където: N е между 0 (най-бързо) и 11 (по-добро компресия).

Мога ли да декомпресира поток от WOFF2 глифи директно?

Данните на глифа WOFF2 използват комбинация от Brotli декомпресия и специфичен за шрифт преобразуване (формата на таблицата “преобразовано”). Декомпресиране на суровия поток от Бротли Самото не е достатъчно за възстановяване на използваем шрифт трябва да заредите файла WOFF2 през FontLoader.open, която прилага както Brotli декомпресия и на преобразуване на обратна таблица.

Вижте също:

 Български