Uvod u članak

WOFF2 (Web Open Font Format 2) koristi Brotli kao svoj algoritam za kompresiju. Za razliku od WOff 1 koji koristi zlib, WOF 2 primjenjuje Brutli na unaprijed transformiranu predstavljanje tabele glifa, što obično postiže 20-30% bolju komprimiranje od Woffa 1. To čini WOffo-u omiljenim formatom isporuke za web tipografiju .

Aspose.Font FOSS for Python handles all Brotli operations internally through its Srednje i popodne BrotliEncoder i u članku 1. BrotliDecoder Ne postoje vanjske klase. brotli, brotlicffi,Standardni API za pretvaranje fontova je: U slučaju da je to moguće, potrebno je provesti testiranje na temelju sljedećih kriterija:.

Biblioteka je objavljena na PyPI-u kao: aspose-font pod MIT licencom.


Glavne karakteristike

Konverzija fontova u WOFF2

Primarna upotreba Brotlija u Aspose. font je automatska kompresija WOFF2. FontConverter.convert s: FontType.WOFF2 za proizvodnju Brotli-komprimiranog web font:

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

Također možete pretvoriti postojeću datoteku WOFF 1 u WOff2 za nadogradnju kompresije:

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

Upisivanje WOFF2 fontova

FontLoader.open U ovom slučaju, ako je to moguće, primjenjuje se sljedeća metoda:

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

Ne zahtijeva se ni jedan korak dekompresije. BrotliDecoder u skladu s člankom Glifni tok prije izgradnje Woff2Font Primjer.


Brotli kodiranje niskog nivoa

Uputstvo u pogledu internog API-a: Sljedeći članak:BrotliEncoder i u članku 1. BrotliDecoder su unutarnji. javne usluge (aspose_font._brotliU tom smislu, u skladu s člankom 13. stavkom 1. točka (a) Uredbe (EU) br. Za kompresiju WOFF2 fontova, preporučujem: FontLoader.open() kombinirana s: Woff2Font, koji se bavi Brotlijem. transparentno.

Za kompresiju proizvoljenih binarnih podataka neovisno o operacijama fontova, unutarnji sustav BrotliEncoder izloži se: quality U slučaju da je to moguće, provjerite sljedeće:

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) prihvaća bytes i povratne vrijednosti. bytes.Koder. instanc nije ponovljiva preko poziva s različitim postavkama kvalitete create U skladu s člankom 15. stavkom 1. točkom (a) i podstavkom 7.


Brotli dekodiranje niskog nivoa

Uputstvo u pogledu internog API-a: Vidjeti obavijest gore BrotliDecoder je također i unutarnja korist.

BrotliDecoder.decode je metoda na razini klase koja dekomprimira bilo Brotli korisni teret:

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 uzima se u obzir: bytes Pružanje i povrat bytes.Procesira se. Cijeli teret u jednom pozivu. Nema strimiranja interfejsa.


Prikaz razine kompresije

U skladu s člankom 1. quality parametar u BrotliEncoder.__init__ Karte standardnog Brotlija razine kvalitete:

KvalitaBrzina:Iznos kompresijeTipična upotreba
0Najbrži.Najniži nivoU realnom vremenu / osjetljivi na latenciju
1-3Brzo.Niska razinaPrometni podaci
4-6IzbalansiranaSrednja razinaSredstva za proizvodnju i isporuku:
7-9Polako.Visoka.Statična sredstva
10-11Najsporiji.Najviši brojDatoteke fontova, arhiva

Za proizvodnju fontova (WOFF2), kvaliteta 11 daje najbolju veličinu datoteke i koristi se: u standardu FontConverter.convert put.


Brzi početak

Instaliraj knjižnicu:

pip install "aspose-font>=1.0.0"

U ovom slučaju, u skladu s člankom 4. stavkom 1. točkom (a) i podstavkom 2. točkama 3. i 5. ovog članka:

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

Otvoreni izvor i licenciranje

Aspose.Font FOSS for Python is released under the MIT License. The bundled Brotli implementacija je uključena u paket pod vlastitom licencom otvorenog koda. Biblioteka je besplatna za osobne, komercijalne i otvorene projekte.


Početak

Srodni resursi