مقدمة

يستخدم WOFF2 (نموذج الخط المفتوح على الويب 2) بروتلي كخوارزمية ضغط. بخلاف WOff 1 الذي يستخدمه zlib ، ينطبق WOF2 Brotli على تمثيل جدول النقاط المنقلب مسبقًا ، ويحقق عادة ضغوطًًة أفضل بنسبة 20-30٪ من WOFC 1. وهذا يجعل WOFE 2 هو تنسيق التوصيل المفضل لخطط الطباعة على شبكة الإنترنت.

Aspose.Font FOSS for Python handles all Brotli operations internally through its المجمعة BrotliEncoder و BrotliDecoder لا يوجد طبقات خارجية brotli, brotlicffi,، أو مطلوب حزمة مماثلة. API التحويل القياسي للخطوط النصية يطبق ضغط بروتلي بصورة شفافة عند إنتاج مخرج WOFF2.

تم نشر المكتبة على PyPI كـ: aspose-font تحت ترخيص MIT.


الميزات الرئيسية

تحويل الخطوط إلى WOFF2

الاستخدام الأساسي لـ Brotli في Aspose. font هو الضغط الآلي WOFF2. استخدام FontConverter.convert مع FontType.WOFF2 لإنتاج بروتلي المضغوطة النمط الالكتروني:

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 الخطوط

FontLoader.open يفكّر ضغط بيانات النقاط المضغوطة بواسطة بروتلي تلقائياً:

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,، التي تتعامل مع بروتلي بصورة شفافة.

لضغط البيانات الثنائية التعسفية بغض النظر عن عمليات الخطوط،, الداخلية 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.- المُرَجّم . مثال لا يمكن إعادة استخدامه عبر المكالمات مع تغيير الإعدادات الجودة create مثال جديد لكل مستوى من المستويات.


“إنه منخفض المستوى” بروتلي

إشعار داخلي لـ API: انظر الإشعار أعلاه BrotliDecoder هو أيضاً المفيد الداخلي.

BrotliDecoder.decode هي طريقة على مستوى الفئة التي تفكّر أي بروتلي. الحمولة المفيدة:

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. إنها تعمل على كل الحمولة في مكالمة واحدة لا يوجد واجهة بث.


دليل مستوى الضغط

المجلس الوزاري quality المعيار في BrotliEncoder.__init__ خرائط إلى بروتلي القياسية مستويات الجودة:

الجودةالسرعةنسبة الضغطالاستخدام النموذجي
0أسرعأدنى مستوىالوقت الحقيقي / حساسية التأخير
1-3سريعمنخفضةالبيانات المتدفقة
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 يتم تضمين التنفيذ في الحزمة تحت ترخيص مفتوح المصدر الخاص بها. أنت يمكن استخدام المكتبة في مشاريع شخصية، تجارية ومفتوحة المصدر دون أي تكلفة.


بدءاً من

الموارد ذات الصلة