Cum Aspose.Font Utilizarea Brotli Compression pentru WOFF2 în Python
WOFF2 (Web Open Font Format 2) comprime datele sale de glif folosind Brotli, un program general-purpose. Algoritmul de compresie fără pierderi dezvoltat de Google. Aspose.Font FOSS pentru Python handle toate operaţiunile Brotli intern nu este necesar să instalaţi nicio compresie externă Biblioteca. BrotliEncoder și de: BrotliDecoder cursuri sunt disponibile pentru: utilizare la nivel scăzut atunci când trebuie să comprimaţi sau decomprimați date arbitrare în afara sistemului de comenzi. traseul standard de conversie WOFF2.
Ghid pas cu pas
Pasul 1: Instalați pachetul
pip install "aspose-font>=1.0.0"Pasul 2: Importarea clasei necesare
Pentru operațiunile standard WOFF2:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontTypePentru operațiunile de nivel scăzut Brotli (API internă poate fi modificată între lansări):
from aspose_font._brotli import BrotliEncoder, BrotliDecoder # internal APIPasul 3: Creați un font WOFF2 (comprimat cu Brotli)
Calea standard: convertiți orice font în WOFF2. Compresia Brotli este aplicată automat.
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")Nu sunt necesare paşi suplimentari pentru comprimare. BrotliEncoder în interiorul producției WOFF2.
Pasul 4: Încărcarea și verificarea unui font WOFF2
La încărcarea unui .woff2 Fişier, biblioteca decomprimează gliful comprimat de Brotli. date automat înainte de a expune proprietățile tipului de scris:
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 detectează baiti magici WOFF2 și invocă BrotliDecoder la … în decomprimează fluxul de glif înainte de a construi Woff2Font În cazul în care.
Pasul 5: Codarea Brotli la nivel scăzut
API internă: Începe.
BrotliEncoderși de:BrotliDecodersunt utilități interne Pentru compresia WOFF2, preferați compunerea fontului. API publică prezentată în pașii 3-4 de mai sus.
Utilizare: BrotliEncoder direct atunci când trebuie să comprimați date binare arbitrare cu Brotli, în care se află… quality parametru (011) controlează nivelul de comprimare:
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%}")Calitatea 11 oferă cel mai bun raport de comprimare la costul vitezei de codificare. Calitatea 0 este cea mai rapidă. Pentru datele font în ieșirea WOFF2, biblioteca folosește nivelul standard de calitate.
Pasul 6: Decodarea Brotli de nivel scăzut
Utilizare: BrotliDecoder.decode pentru decomprimarea datelor comprimate prin 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 este o metodă de clasă care ia byte comprimate și returnă bați decomprimate. Nu există API de streaming complet comprimat sarcina utilă trebuie să fie furnizată într-o singură apelare.
Când să utilizați API-uri Brotli de nivel scăzut
În ceea ce priveşte BrotliEncoder și de: BrotliDecoder clasele sunt utile atunci când:
- Trebuie să comprimați sau decomprimaţi sarcini binare arbitrare, independent de procesarea fontului (de exemplu, compresia metadatei fonturilor sau a blocurilor personalizate de date).
- Trebuie să pre-validați că o încărcătură utilă comprimată Brotli este bine formată înainte de a o trece la un parser WOFF2.
- Construiţi un dispozitiv de testare care necesită date cunoscute privind raportul de compresie.
Pentru toate operațiunile de tip standard (încărcare, conversie, salvare WOFF2), nu faceți acest lucru. necesită API de nivel scăzut FontLoader.open și de: FontConverter.convert mânerul Brotli transparentă.
Întrebări frecvente
Biblioteca necesită un pachet extern de brotli?
Nu. Aspose.Font FOSS pentru Python are propria implementare Brotli. brotli, brotlicffi, sau este necesar un pachet similar.
Ce calitate de comprimare folosește biblioteca pentru WOFF2?
Biblioteca folosește nivelul de calitate implicit pentru WOFF2 ieșire. Pentru a controla nivelul de calitate pentru sarcinile de comprimare personalizate, utilizarea BrotliEncoder(quality=N) unde: N este cuprinsă între 0 (cea mai rapidă) și 11 (cumpărarea cea mai bună).
Pot decompres un flux de glifoane direct?
Datele de glif WOFF2 utilizează o combinație de decompresie Brotli și un font specific. transform (formatul tabelului “transformat”). Decompresarea fluxului brut Brotli Singur nu este suficient pentru a recupera un font utilizabil trebuie să încărcați fișierul WOFF2 prin intermediul FontLoader.open, care aplică atât decompresiunea Brotli, cât şi transformarea tabelului invers.