Εισαγωγή
Σε αντίθεση με το WOFF 1 που χρησιμοποιεί zlib, το woff2 εφαρμόζει το brotli σε μια προ-μεταμορφωμένη εικόνα γραφείου glyph, συνήθως επιτυγχάνοντας 20-30% καλύτερη συμπίεση από το web open font format 1.
Aspose.Font FOSS for Python handles all Brotli operations internally through its Συσκευασμένος BrotliEncoder και BrotliDecoder Εξωτερική - Δεν υπάρχει εξωτερική brotli, brotlicffi, ή παρόμοιο πακέτο απαιτείται. το τυποποιημένο API μετατροπής γραμματοσειράς εφαρμόζει τη συμπίεση Brotli διαφανώς κατά την παραγωγή του WOFF2.
Η βιβλιοθήκη δημοσιεύεται στο PyPI ως aspose-font υπό την άδεια του MIT.
Βασικά Χαρακτηριστικά
Μετατροπή γραμματοσειρών σε WOFF2
Η κύρια χρήση του Brotli στο Aspose.Font είναι αυτόματη συμπίεση WOFF2. FontConverter.convert Με FontType.WOFF2 Για να φτιάξετε ένα συμπιεσμένο μανιτάρι WEB Πηγή:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path
# Load any supported format
font = FontLoader.open("MyFont.ttf") # TTF, OTF, WOFF, EOT, CFF, TYPE1
# Convert to WOFF2 — Brotli applied internally
woff2 = FontConverter.convert(font, FontType.WOFF2)
output = woff2.to_bytes(FontType.WOFF2)
Path("MyFont.woff2").write_bytes(output)
print(f"WOFF2 output: {len(output)} bytes")
Μπορείτε επίσης να μετατρέψετε από ένα υπάρχον αρχείο WOFF 1 σε WofF2 για την αναβάθμιση της συμπίεσης:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path
woff = FontLoader.open("MyFont.woff")
woff2 = FontConverter.convert(woff, FontType.WOFF2)
Path("MyFont.woff2").write_bytes(woff2.to_bytes(FontType.WOFF2))
print("Upgraded WOFF 1 (zlib) -> WOFF2 (Brotli)")
Εισαγωγή WOFF2 Fonts
FontLoader.open Αποσπά τα δεδομένα του 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}")
Δεν απαιτείται βήμα αποσύνθεσης.Ο φορτιστής ισχύει BrotliDecoder Για το Γκίλι πριν την κατασκευή του Woff2Font Η περίπτωση.
Μείωση κρυπτογράφησης βρογχίτιδας
Εσωτερική προειδοποίηση API: ΟΙ ΠΡΟΣΟΧΕΣ
BrotliEncoderκαιBrotliDecoderΕίναι εσωτερικά Η χρήση (aspose_font._brotliΔεν είναι μέρος της δημόσιας επιφάνειας API. και μπορεί να αλλάξει μεταξύ των εκδόσεων. για συμπίεση γραμματοσειράς WOFF2, προτιμάτεFontLoader.open()σε συνδυασμό μεWoff2Font,Που χειρίζεται το Brotli με διαφάνεια.
Για την συμπίεση αυθαίρετων δυαδικών δεδομένων ανεξάρτητα από τις λειτουργίες γραμματοσειράς, Η εσωτερική BrotliEncoder Εμφανίζεται η quality Ημερομηνία 0-11 :
from aspose_font._brotli import BrotliEncoder # internal API
data = b"Sample data to compress" * 200
# quality=11 = maximum compression; quality=0 = fastest
encoder = BrotliEncoder(quality=11)
compressed = encoder.encode(data)
ratio = len(compressed) / len(data)
print(f"Original : {len(data)} bytes")
print(f"Compressed : {len(compressed)} bytes")
print(f"Ratio : {ratio:.2%}")
BrotliEncoder.encode(data) Αποδέχεται bytes και επιστρέφει bytes.Ο κωδικός η περίπτωση δεν μπορεί να επαναχρησιμοποιηθεί σε κλήσεις με διαφορετικές ρυθμίσεις ποιότητας - δημιουργήστε Ένα νέο επίπεδο για κάθε επίπεδο ποιότητας.
Μείωση του μανιτάρι
Εσωτερική προειδοποίηση API: Δείτε την προειδοποίηση παραπάνω -
BrotliDecoderΕίναι επίσης ένα εσωτερική χρησιμότητα.
BrotliDecoder.decode είναι μια μέθοδος κατηγορίας που αποσπά οποιοδήποτε Brotli Πληρωμή :
from aspose_font._brotli import BrotliEncoder, BrotliDecoder # internal API
original = b"Round-trip compression test" * 100
# Compress
encoder = BrotliEncoder(quality=6)
compressed = encoder.encode(original)
print(f"Compressed to {len(compressed)} bytes")
# Decompress
recovered = BrotliDecoder.decode(compressed)
assert recovered == original
print(f"Decompressed: {len(recovered)} bytes — data intact: {recovered == original}")
BrotliDecoder.decode Πάρτε ένα bytes Πληρωμή και επιστροφή bytes.Η διαδικασία είναι ολόκληρη η επιβάρυνση σε μία κλήση - δεν υπάρχει διασύνδεση streaming.
Οδηγός Επίπεδο συμπίεσης
Η quality Παραμέτρων σε BrotliEncoder.__init__ Χάρτες για το πρότυπο Brotli Επίπεδα ποιότητας:
| Ποιότητα | ταχύτητα | Συγκρίσεις συμπίεσης | Τυπική χρήση |
|---|---|---|---|
| 0 | ταχύτερα | χαμηλότερη | Ρεάλ-χρόνος / ευαίσθητη σε ακραίες στιγμές |
| 1-3 | Γρήγορα | Μείωση | Streaming δεδομένων |
| 4-6 | ισορροπημένη | Μέση | Γενικός σκοπός (αποκαλούμενος) |
| 7-9 | αργά | Υψηλή | Στατικά περιουσιακά στοιχεία |
| 10-11 | αργότερα | Υψηλότερος | Φωτογραφίες, αρχεία |
Για την παραγωγή γραμματοσειρών (WOFF2), η ποιότητα 11 δίνει το καλύτερο μέγεθος αρχείου και χρησιμοποιείται Στο πρότυπο FontConverter.convert Ο δρόμος .
Γρήγορη έναρξη
Εγκατάσταση της βιβλιοθήκης:
pip install "aspose-font>=1.0.0"
Μετατρέψτε ένα TTF σε WOFF2 και ελέγξτε την συμπίεση:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path
# Convert to WOFF2 (Brotli applied automatically)
ttf = FontLoader.open("MyFont.ttf")
woff2 = FontConverter.convert(ttf, FontType.WOFF2)
woff2_bytes = woff2.to_bytes(FontType.WOFF2)
# Compare sizes
ttf_bytes = ttf.to_bytes(FontType.TTF)
print(f"TTF : {len(ttf_bytes)} bytes")
print(f"WOFF2 : {len(woff2_bytes)} bytes ({len(woff2_bytes)/len(ttf_bytes):.1%} of TTF)")
Path("MyFont.woff2").write_bytes(woff2_bytes)
print("Done — WOFF2 saved")
Ανοικτή Πηγή και Άδεια Χρήσης
Aspose.Font FOSS for Python is released under the MIT License. The bundled Brotli Η εφαρμογή περιλαμβάνεται στο πακέτο με την άδεια ανοικτού κώδικα. Μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη σε προσωπικά, εμπορικά και ανοικτά έργα χωρίς κόστος.