Cum Aspose.Font Utilizarea Brotli Compression pentru WOFF2 în Python

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 FontType

Pentru operațiunile de nivel scăzut Brotli (API internă poate fi modificată între lansări):

from aspose_font._brotli import BrotliEncoder, BrotliDecoder  # internal API

Pasul 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: BrotliDecoder sunt 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.

Vezi și:

 Română