Εισαγωγή

Σε αντίθεση με το 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 Η εφαρμογή περιλαμβάνεται στο πακέτο με την άδεια ανοικτού κώδικα. Μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη σε προσωπικά, εμπορικά και ανοικτά έργα χωρίς κόστος.


Ξεκινώντας

Σχετικοί Πόροι