Въведение
WOFF2 (Web Open Font Format 2) използва Brotli като алгоритъм за компресия. За разлика от WOff1, който използва zlib, WOF2 прилага Brodli към предварително трансформирана таблица с глифи и обикновено постига 20-30% по-добро компресиране от WWF1. Това прави WOWF2-та предпочитан формат за доставка на уеб типография.
Aspose.Font FOSS for Python handles all Brotli operations internally through its с общ размер BrotliEncoder и в) BrotliDecoder Без външни brotli, brotlicffi, или подобен пакет е необходим. Стандартният API за конвертиране на шрифтове прилага Brotli компресия прозрачно при получаване на WOFF2 изход.
Библиотеката е публикувана на PyPI като: aspose-font под лиценз на MIT.
Ключови характеристики
Преобразуване на шрифтове във WOFF2
Основното използване на Brotli в Aspose.Font е автоматично компресия WOFF2. FontConverter.convert с: FontType.WOFF2 за получаване на Brotli-компресиран уеб шрифт:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path
# Load any supported format
font = FontLoader.open("MyFont.ttf") # TTF, OTF, WOFF, EOT, CFF, TYPE1
# Convert to WOFF2 — Brotli applied internally
woff2 = FontConverter.convert(font, FontType.WOFF2)
output = woff2.to_bytes(FontType.WOFF2)
Path("MyFont.woff2").write_bytes(output)
print(f"WOFF2 output: {len(output)} bytes")
Можете също така да конвертирате от съществуващ файл WOFF 1 в WOff2 за усъвършенстване на компресията:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path
woff = FontLoader.open("MyFont.woff")
woff2 = FontConverter.convert(woff, FontType.WOFF2)
Path("MyFont.woff2").write_bytes(woff2.to_bytes(FontType.WOFF2))
print("Upgraded WOFF 1 (zlib) -> WOFF2 (Brotli)")
Зареждане на WOFF2 шрифтове
FontLoader.open автоматично разкомпресира данните на сгъстените с Brotli глифи:
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}")
Не се изисква никакъв етап на декомпресия. BrotliDecoder за да се преди изграждането на Woff2Font Във всеки случай.
Кодиране на ниско ниво Brotli
Вътрешно уведомление за API: Възраст
BrotliEncoderи в)BrotliDecoderса вътрешни. комунални услуги (aspose_font._brotliТе не са част от публичната API повърхност. За компресия на WOFF2 шрифт, предпочитайте:FontLoader.open()в комбинация с:Woff2Font, която се занимава с Brotli. прозрачно.
За компресия на произволни двоични данни независимо от операциите с шрифтовете, вътрешната система на BrotliEncoder излага на опасността от quality параметър (0-11):
from aspose_font._brotli import BrotliEncoder # internal API
data = b"Sample data to compress" * 200
# quality=11 = maximum compression; quality=0 = fastest
encoder = BrotliEncoder(quality=11)
compressed = encoder.encode(data)
ratio = len(compressed) / len(data)
print(f"Original : {len(data)} bytes")
print(f"Compressed : {len(compressed)} bytes")
print(f"Ratio : {ratio:.2%}")
BrotliEncoder.encode(data) приема bytes и възвръщаемост. bytes.Кодирачът. Инстанция не е многократно използваема при обаждания с различни настройки за качество create нов екземпляр за всяко ниво на качество.
Декодиране на Brotli с ниско ниво
Вътрешно уведомление за API: Виж обявлението по-горе
BrotliDecoderсъщо е и вътрешна полезност.
BrotliDecoder.decode е метод на класно ниво, който декомпресира всеки Brotli полезен товар:
from aspose_font._brotli import BrotliEncoder, BrotliDecoder # internal API
original = b"Round-trip compression test" * 100
# Compress
encoder = BrotliEncoder(quality=6)
compressed = encoder.encode(original)
print(f"Compressed to {len(compressed)} bytes")
# Decompress
recovered = BrotliDecoder.decode(compressed)
assert recovered == original
print(f"Decompressed: {len(recovered)} bytes — data intact: {recovered == original}")
BrotliDecoder.decode взема се от: bytes полезен товар и връщане bytes.Процесира се от: Цялата полезна натоварване в едно обаждане няма интерфейс за стрийминг.
Ръководство за нивото на компресия
Съветът на ЕС quality параметър в BrotliEncoder.__init__ Карти за стандартния Бротли нива на качество:
| Качество на продукта | Скорост | Съотношението на компресията | Типична употреба |
|---|---|---|---|
| 0 | Най-бързо. | Най-ниски стойности | Реално време / чувствителни към латентност |
| 1-3 | Бързо. | Ниско ниво на действие | Поток на данни |
| 4-6 | Балансирани | Средна стойност | Общо предназначение (препоръчително) |
| 7-9 | Бавно. | Високо | Статични активи |
| 10-11 | Най-бавно. | Най-високо ниво на | Фонтови файлове, архивирани |
За производството на шрифтове (WOFF2), качеството 11 дава най-добрия размер на файла и се използва: в стандарта FontConverter.convert Път.
Бързо стартиране
Инсталирайте библиотеката:
pip install "aspose-font>=1.0.0"
Преобразуване на TTF в WOFF2 и проверка на компресията:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path
# Convert to WOFF2 (Brotli applied automatically)
ttf = FontLoader.open("MyFont.ttf")
woff2 = FontConverter.convert(ttf, FontType.WOFF2)
woff2_bytes = woff2.to_bytes(FontType.WOFF2)
# Compare sizes
ttf_bytes = ttf.to_bytes(FontType.TTF)
print(f"TTF : {len(ttf_bytes)} bytes")
print(f"WOFF2 : {len(woff2_bytes)} bytes ({len(woff2_bytes)/len(ttf_bytes):.1%} of TTF)")
Path("MyFont.woff2").write_bytes(woff2_bytes)
print("Done — WOFF2 saved")
Отворени източници и лицензиране
Aspose.Font FOSS for Python is released under the MIT License. The bundled Brotli В допълнение, в пакета е включена и реализация под собствена лиценз с отворен код. могат да използват библиотеката безплатно в лични, търговски и проекти с отворен код.
Започваме
- Започваме
- УРФУК Как да се направи ръководство
- Как се прави сгъстяването на Бротли
- Огнено референтно
- КБ статии