Kako Aspose.Font Koristi Brotli Kompresiju za WOFF2 u Pythonu
WOFF2 (Web Open Font Format 2) komprimira svoje podatke o glifima koristeći Brotli, opće namjene algoritam za kompresiju bez gubitaka razvijen od strane Google-a. Aspose.Font FOSS za Python rukovodeće uređaje sve Brotlijeve operacije unutar ne morate instalirati nikakvu vanjsku kompresiju Knjižnica. BrotliEncoder i u članku 1. BrotliDecoder Klasi su dostupne za: Upotreba na niskom nivou kada je potrebno komprimirati ili dekomprimirati proizvoljne podatke izvan uređaja. standardna WOFF2 staza pretvorbe.
Korak po korak vodič
Korak 1: Instaliraj paket
pip install "aspose-font>=1.0.0"Korak 2: Uvoz zahtjevnih klasa
U slučaju standardnih operacija WOFF2:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontTypeU slučaju operacija Brotli na niskom nivou (intern API može se mijenjati između izdanja):
from aspose_font._brotli import BrotliEncoder, BrotliDecoder # internal APIKorak 3: Stvaranje WOFF2 font (Brotli-Spremenjena)
Standardna staza: pretvorite bilo koji font u WOFF2. Brotli kompresija se primjenjuje automatski.
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")Za kompresiju nisu potrebni dodatni koraci. BrotliEncoder U tom slučaju, u skladu s člankom 16. stavkom 1. točkom (a) i podstavcima 2. i 3. ovog članka.
Korak 4: Uplatiti i potvrditi WOFF2 font
Prilikom utovaranja .woff2 datoteka, knjižnica dekomprimira Brotli-komprimirani glif Ako je to moguće, provjerite sljedeće:
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 Detektuje WOFF2 čarobne bajtove i poziva BrotliDecoder u iznosu od: dekomprimirati strim glifa prije izgradnje Woff2Font Primjer.
Korak 5: Brotli kodiranje niskog razine
Interni API: Sljedeći članak:
BrotliEncoderi u članku 1.BrotliDecodersu unutarnji komunalni sektor Za kompresiju WOFF2 fontova, radije koristite U tom slučaju, u skladu s člankom 13. stavkom 1. točkom (a) ovog članka.
Upotreba: BrotliEncoder direktno kada trebate komprimirati proizvoljne binarne podatke s Brotli, u redu? quality U slučaju da je to moguće, provjerite sljedeće:
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%}")Kvalitet 11 daje najbolji omjer kompresije uz trošak brzine kodiranja. Kvalita 0 je najbrža. Za podatke fontova u WOFF2 izdanju, knjižnica koristi podrazumijevani nivo kvalitete.
Korak 6: Dešifriranje Brotlija niskog razine
Upotreba: BrotliDecoder.decode za dekompresiju podataka komprimiranih Brotlijem:
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 je metoda klase koja uzima komprimirane bajtove i Ne postoji API za strimiranje potpuni komprimirani Pružanje korisnog tereta mora se provesti u jednom pozivu.
Kada koristiti API-e Brotli na niskom nivou?
U skladu s člankom 1. BrotliEncoder i u članku 1. BrotliDecoder razredovi su korisni kada:
- Potrebno je komprimirati ili dekomprimirati proizvoljne binarne korisne opterećenja neovisno o obradi fontova (na primjer, komprimirati metapodatke fontovnih podataka ili prilagođene blokove podataka).
- Morate unaprijed potvrditi da je Brotli-komprimirani korisni teret dobro formiran prije nego što ga proslijedite WOFF2 parseru.
- Izgradite testni uređaj koji zahtijeva poznate podatke o kompresiji.
Za sve standardne operacije font (upisivanje, pretvaranje, pohranjivanje WOFF2), ne možete napraviti: potrebno je API niskog razine FontLoader.open i u članku 1. FontConverter.convert ručka Brotli prozirno.
Česta pitanja
Da li biblioteka zahtijeva vanjski paket brotela?
Ne. Aspose.Font FOSS za Python pakira svoju vlastitu implementaciju Brotlija. brotli, brotlicffi, ili je potreban sličan paket.
Koji je kvaliteta kompresije biblioteka koristi za WOFF2?
Biblioteka koristi podrazumijevan nivo kvalitete za WOFF2 izlaz. Za kontrolu U ovom slučaju, u skladu s člankom 21. stavkom 1. točkom (a) Uredbe (EU) br. BrotliEncoder(quality=N) gdje: N U slučaju da je to moguće, mora se primjenjivati metoda za izračunavanje vrijednosti.
Mogu li dekomprimirati WOFF2 glif struju direktno?
WOFF2 glif podaci koristi kombinaciju Brotli dekompresiju i font-specifični transform (formati tabele “transformirana”). Decompressing sirov Brotli stream Samo nije dovoljno za oporavak korisnog font morate učitati WOFF2 datoteku kroz FontLoader.open, koji primjenjuje i Brotliovu dekompresiju i inverzna transformira tablice.