Com Aspose.Font utilitza la compressió de Brotli per WOFF2 en Python
WOFF2 (Web Open Font Format 2) comprimeix les seves dades de glifs utilitzant Brotli, un sistema d’ús general. Algoritme de compressió sense pèrdues desenvolupat per Google. Aspose.Font FOSS per a Python manipuladors totes les operacions de Brotli internament no cal instal·lar cap compressió externa. biblioteca. El paquet de BrotliEncoder i de la BrotliDecoder classes estan disponibles per a: utilització de baix nivell quan cal compresar o descomprimir dades arbitràries fora del sistema. ruta de conversió WOFF2 estàndard.
Guia de pas a pas
Pas 1: Instal·la el paquet
pip install "aspose-font>=1.0.0"Pas 2: Import de les classes necessàries
Per a les operacions WOFF2 estàndard:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontTypePer a operacions de baix nivell Brotli (l’API interna pot canviar entre versions):
from aspose_font._brotli import BrotliEncoder, BrotliDecoder # internal APIPas 3: Crear una font WOFF2 (comprimida per Brotli)
La ruta estàndard: convertir qualsevol font a WOFF2. Brotli comprimida s’aplica automàticament.
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")No cal cap pas addicional per a la compressió. La biblioteca trucades BrotliEncoder internament en la producció de WOFF2.
Pas 4: Carregar i verificar una font WOFF2
Quan es carrega un .woff2 arxiu, la biblioteca descomprimeix el glifa comprimit per Brotli. dades automàticament abans d’explicar les propietats de la lletra:
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 detecta els bytes màgics WOFF2 i invoca BrotliDecoder a la descomprimir el flux de glifs abans de construir la Woff2Font instància.
Pas 5: Encodatge de Brotli a baix nivell
API interna: El dia de la mort.
BrotliEncoderi de laBrotliDecodersón serveis interns de utilitat. Per a la compressió de fonts WOFF2, prefereix el sistema d’enllaç per a les fonts. API pública mostrada en els passos 3-4 anteriorment.
Utilització: BrotliEncoder directament quan necessiteu comprimir dades binàries arbitràries amb El Brotli. quality el paràmetre (011) controla el nivell de compressió:
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%}")La qualitat 11 dóna la millor relació de compressió al cost de la velocitat d’encriptació. La Qualitat 0 és més ràpida. Per a les dades de font en l’expressió WOFF2, la biblioteca utilitza el nivell de qualitat predeterminat.
Pas 6: Decodificació de Brotli a baix nivell
Utilització: BrotliDecoder.decode per descomprimir dades comprimides amb 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 és un mètode de classe que pren els bytes comprimits i Retorna els bytes descomprimits. No hi ha una API de streaming el complet comprimit la càrrega útil s’ha de proporcionar en una sola crida.
Quan utilitzar les API de Brotli de baix nivell
El BrotliEncoder i de la BrotliDecoder les classes són útils quan:
- Cal comprimir o descomprimir càrregues binàries arbitràries independentment del processament de fonts (per exemple, compressió de metadades de font o blocs de dades personalitzats).
- Has de validar prèviament que una càrrega útil comprimida per Brotli està ben formada abans de passar-la a un parser WOFF2.
- Estàs construint un equipament de prova que requereix dades conegudes sobre la relació de compressió.
Per a totes les operacions de font estàndard (carregament, conversió, guardar WOFF2), no facis necessiten l’API de baix nivell FontLoader.open i de la FontConverter.convert maneta Brotli de forma transparent.
Preguntes freqüents
La biblioteca requereix un paquet de brotli extern?
No. FOSS per Python agrupa la seva pròpia implementació de Brotli. brotli, brotlicffi, o si es requereix un paquet similar.
Quina qualitat de compressió utilitza la biblioteca per WOFF2?
La biblioteca utilitza el nivell de qualitat predeterminat per a la sortida WOFF2. Per controlar l’ús d’un sistema de control, es pot utilitzar un programa de codi i una aplicació. nivell de qualitat per a tasques de compressió personalitzades, ús BrotliEncoder(quality=N) on: N és entre 0 (més ràpid) i 11 (millor compressió).
Puc descomprimir un flux de glifs WOFF2 directament?
Els dades de glifs WOFF2 utilitzen una combinació de descompressió Brotli i un font específic. transformar (el format de taula “transformada”). Descompressar el flux brut Brotli no és suficient per recuperar una font utilitzable has de carregar el fitxer WOFF2 a través de FontLoader.open, que aplica tant la descompressió de Brotli com el procés d’ús del gas. transformada de taula inversa.