Comment Aspose.Font utilise la compression de Brotli pour WOFF2 dans Python

Comment Aspose.Font utilise la compression de Brotli pour WOFF2 dans Python

WOFF2 (Web Open Font Format 2) comprime ses données glyphées en utilisant Brotli, un but général. Algoritme de compression sans perte développé par Google. Aspose.Font FOSS pour les manœuvres Python toutes les opérations de Brotli à l’intérieur - vous n’avez pas besoin d’installer aucune compression externe Bibliothèque : Le Bandeau BrotliEncoder et BrotliDecoder Les classes sont disponibles pour utilisation à faible niveau lorsque vous avez besoin de comprimer ou décomprimez les données arbitraires en dehors du Le chemin de conversion WOFF2 standard.

Guide étape par étapes

Étape 1 : Installer le package

pip install "aspose-font>=1.0.0"

Étape 2 : Importation des classes requises

Pour les opérations WOFF2 :

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType

Pour les opérations Brotli de bas niveau (API interne - peut changer entre les sorties):

from aspose_font._brotli import BrotliEncoder, BrotliDecoder  # internal API

Étape 3 : Créer un fichier WOFF2 (Comprimé à brothes)

La voie standard : convertir n’importe quel chiffre en WOFF2. la compression de Brotli est appliquée automatiquement.

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")

Aucune étape supplémentaire n’est nécessaire pour la compression.La bibliothèque appelle BrotliEncoder de production interne lors de la production de WOFF2.

Étape 4 : Télécharger et vérifier un fichier WOFF2

Lorsque vous chargez A .woff2 fichier, la bibliothèque décomprime le glyph Brotli-comprimé données automatiquement avant l’exposition des propriétés de la phonture :

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 détectant les bytes et invocations magiques WOFF2 BrotliDecoder à décomprimer le flux glyph avant de construire la Woff2Font et instance.

Étape 5 : Encodage de la bouteille à bas niveau

Le feu intérieur : - LeBrotliEncoder et BrotliDecoder Les utilités internes pour les émissions. Pour la compression de la phonture WOFF2, préférez le L’API public est affiché dans les étapes 3-4 ci-dessus.

Utiliser BrotliEncoder directement lorsque vous avez besoin de comprimer les données binaires arbitraires avec Brotli, le quality Le paramètre (0-11) contrôle le niveau de compression :

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%}")

Qualité 11 donne le meilleur rapport de compression au coût de la vitesse d’encodage. Qualités 0 est le plus rapide. Pour les données font dans l’extension WOFF2, la bibliothèque utilise le niveau de qualité par défaut.

Étape 6 : Décodage de la bouteille à bas niveau

Utiliser BrotliDecoder.decode Pour décomprimer les données compreses par 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 est une méthode de classe qui prend les bytes comprimés et Il n’y a pas d’API de streaming — le complet compresse Le paiement doit être effectué en une seule appel.

Quand utiliser des APIs Brotli à faible niveau

Le BrotliEncoder et BrotliDecoder Les cours sont utiles lorsque :

  • Vous devez comprimer ou décomprimé les charges binaires arbitraires indépendamment du traitement des fonctions (par exemple, la compression de métadonnées de font ou blocs de données personnalisés).
  • Vous devez prévalider qu’une charge de paiement comprimée par Brotli est bien formée avant de la transférer à un parteur WOFF2.
  • Vous construisez une fixation de test qui nécessite des données connues-compression-ratio.

Pour toutes les opérations de caractère standard (charger, convertir, économiser WOFF2), vous ne pouvez pas Il faut un niveau de faible API - FontLoader.open et FontConverter.convert Manger Faire le brouillard transparent.

Questions fréquemment posées

La bibliothèque a-t-elle besoin d’un paquet de brochure extérieur ?

Non. Aspose.Font FOSS pour Python confectionne sa propre mise en œuvre Brotli. brotli, brotlicffi,ou un paquet similaire est nécessaire.

Quelle qualité de compression utilise la bibliothèque pour WOFF2 ?

La bibliothèque utilise le niveau de qualité par défaut pour la production WOFF2. niveau de qualité pour les tâches de compression personnalisées, utilisation BrotliEncoder(quality=N)N Il est entre 0 (la plus rapide) et 11 (le meilleur compression).

Puis-je décomprimer un flux de glyph WOFF2 directement?

Les données glyphes WOFF2 utilisent une combinaison de décompression Brotli et d’un caractère spécifique. transformation (le format de table « transformer »). décompressant le courant brut Brotli seul n’est pas suffisant pour récupérer un fichier utilisable — vous devez charger le fichie WOFF2 par le FontLoader.open,qui s’applique à la fois à l’écart de Brotli et au La table inversée.

Voir aussi

 Français