Πώς το Aspose.Font χρησιμοποιεί την συμπίεση του βρόγχου για WOFF2 στο Python

Πώς το Aspose.Font χρησιμοποιεί την συμπίεση του βρόγχου για WOFF2 στο Python

Το WOFF2 (Web Open Font Format 2) συμπίεση των δεδομένων του glyph χρησιμοποιώντας Brotli, μια γενική χρήση. Ανεπαρκής αλγόριθμος συμπίεσης που αναπτύχθηκε από την Google. Aspose.Font FOSS για χειρισμούς Python όλες οι λειτουργίες του Brotli εσωτερικά – δεν χρειάζεται να εγκαταστήσετε οποιαδήποτε εξωτερική συμπίεση Βιβλιοθήκη - Το Μπαγκλίντ BrotliEncoder και BrotliDecoder Οι τάξεις είναι διαθέσιμες για χαμηλό επίπεδο χρήσης όταν χρειάζεται να συμπιέσετε ή να αποσυνδέσετε αυθαίρετα δεδομένα εκτός του Ο κανονικός δρόμος μετατροπής WOFF2.

Βήμα προς βήμα οδηγός

Βήμα 1: Εγκατάσταση του πακέτου

pip install "aspose-font>=1.0.0"

Βήμα 2: Εισαγωγή απαιτούμενων τάξεων

Για τις λειτουργίες WOFF2:

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

Για τις λειτουργίες χαμηλού επιπέδου Brotli (εσωτερική API - μπορεί να αλλάξει μεταξύ των εκδόσεων):

from aspose_font._brotli import BrotliEncoder, BrotliDecoder  # internal API

Βήμα 3: Δημιουργήστε ένα WOFF2 γραμματοσειρά (Brotli-Compressed)

Η τυποποιημένη διαδρομή: μετατρέψτε οποιαδήποτε γραμματοσειρά σε WOFF2. η συμπίεση του Brotli εφαρμόζεται αυτόματα.

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

Δεν απαιτούνται πρόσθετα βήματα για την συμπίεση.Η βιβλιοθήκη καλεί BrotliEncoder εσωτερικά κατά την παραγωγή του WOFF2.

Βήμα 4: Κατεβάστε και ελέγξτε ένα WOFF2 Font

Όταν φορτώνουμε ένα .woff2 Το αρχείο, η βιβλιοθήκη αποσπά το Brotli-compressed glyph Τα δεδομένα αυτόματα πριν από την έκθεση των ιδιοτήτων γραμματοσειράς:

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 Ανακαλύπτει τα μαγικά byte και τις αναφορές του WOFF2 BrotliDecoder Για να αποσυντίθεται το ρεύμα του γλυφίου πριν από την κατασκευή της Woff2Font Η περίπτωση.

Βήμα 5: Κωδικοποίηση χαμηλού επιπέδου βρύσης

Εσωτερική φωτιά: ΟΙ ΠΡΟΣΟΧΕΣBrotliEncoder και BrotliDecoder Εσωτερικές χρήσεις για την συμπίεση γραμματοσειράς WOFF2, προτιμάτε το Το δημόσιο API εμφανίζεται στα βήματα 3-4 παραπάνω.

Χρησιμοποιήστε BrotliEncoder απευθείας όταν πρέπει να συμπιέσετε αυθαίρετα δυαδικά δεδομένα με Βραζιλία - The quality Η παραμέτρηση (0-11) ελέγχει το επίπεδο συμπίεσης:

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

Η ποιότητα 11 δίνει τη καλύτερη αναλογία συμπίεσης στο κόστος της ταχύτητας κωδικοποίησης. η ποιότητά 0 είναι πιο γρήγορη. για τα δεδομένα γραμματοσειράς στην έκδοση WOFF2, η βιβλιοθήκη χρησιμοποιεί το προεπιλεγμένο επίπεδο ποιότητας.

Βήμα 6: Αποκρυπτογράφηση χαμηλού επιπέδου βρύσης

Χρησιμοποιήστε BrotliDecoder.decode Για να αποσυνδέσετε τα συμπιεστικά δεδομένα:

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 είναι μια μέθοδος τάξης που λαμβάνει τα συμπιεσμένα byte και επιστρέφει τα αποσυσταθέντα byte. δεν υπάρχει API streaming — το πλήρες συμπιεσμένο Η πληρωμή πρέπει να παρέχεται σε μία κλήση.

Πότε να χρησιμοποιήσετε χαμηλού επιπέδου APIs

Η BrotliEncoder και BrotliDecoder Οι τάξεις είναι χρήσιμες όταν:

  • Πρέπει να συμπιέσετε ή να αποσυνδέσετε αυθαίρετα δυαδικά φορτία ανεξάρτητα από την επεξεργασία γραμματοσειρών (για παράδειγμα, συμπίεση μεταδεδομένων γραμμάτων ή προσαρμοσμένα μπλοκ δεδομένων).
  • Πρέπει να προεπιβεβαιώσετε ότι ένα φορτίο συμπιεσμένο με Brotli είναι καλά σχηματισμένο πριν το μεταφέρετε σε έναν παρσερό WOFF2.
  • Κατασκευάζετε μια δοκιμαστική συσκευή που απαιτεί γνωστά δεδομένα αναλογίας συμπίεσης.

Για όλες τις τυποποιημένες λειτουργίες γραμματοσειράς (φορτωθείτε, μετατρέψετε, αποθηκεύσετε WOFF2), δεν μπορείτε να Χρειάζεται το χαμηλό επίπεδο API - FontLoader.open και FontConverter.convert χειρισμός Πάρτε διαφανώς.

Συχνές ερωτήσεις

Η βιβλιοθήκη χρειάζεται ένα εξωτερικό πακέτο μπουκάλι;?

No. Aspose.Font FOSS για το Python συσσωρεύει τη δική του Brotli εφαρμογή. brotli, brotlicffi,Ακόμα και παρόμοια συσκευασία απαιτείται.

Ποια ποιότητα συμπίεσης χρησιμοποιεί η βιβλιοθήκη για το WOFF2;?

Η βιβλιοθήκη χρησιμοποιεί το προεπιλεγμένο επίπεδο ποιότητας για την παραγωγή WOFF2. επίπεδο ποιότητας για τα προσαρμοσμένα καθήκοντα συμπίεσης, χρήση BrotliEncoder(quality=N) Που είναι N Είναι μεταξύ 0 (το ταχύτερο) και 11 (η καλύτερη συμπίεση).

Μπορώ να αποσυνδέσω ένα ροή WOFF2 glyph άμεσα;?

Τα δεδομένα Glyph του WOFF2 χρησιμοποιούν ένα συνδυασμό της αποσύνθεσης Brotli και ενός συγκεκριμένου γραμματοσειρά. μετασχηματισμός (το “μεταμορφωμένο” μορφή του πίνακα). Αποσυμπίεση της πρώτης ροής Brotli μόνο δεν αρκεί για να ανακτήσει ένα χρήσιμο γράμμα - πρέπει να φορτώσετε το αρχείο WOFF2 Μέσα από FontLoader.open, η οποία εφαρμόζεται τόσο στην αποσύνθεση του Brotli όσο και στην Αντίθετα μετασχηματισμός του τραπέζου.

Δείτε επίσης

 Ελληνικά