كيف Aspose.Font يستخدم ضغط بروتلي لـ WOFF2 في بايثون

كيف Aspose.Font يستخدم ضغط بروتلي لـ WOFF2 في بايثون

WOFF2 (نموذج النمط المفتوح على الويب 2) يضغط بيانات الرمز باستخدام بروتلي ، وهو مخصص للأغراض العامة خوارزمية ضغط بدون خسائر تم تطويرها من قبل Google. Aspose.Font FOSS لـ Python التعاملات جميع عمليات بروتلي داخليا لا تحتاج إلى تثبيت أي ضغط خارجي المكتبة. 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

بالنسبة لعمليات بروتلي منخفضة المستوى (قد تتغير API الداخلية بين الإصدارات):

from aspose_font._brotli import BrotliEncoder, BrotliDecoder  # internal API

الخطوة 3: إنشاء واف2 (مضغوطة بروتلي)

المسار القياسي: تحويل أي خط إلى WOFF2 يتم تطبيق ضغط بروتلي تلقائياً.

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 النصوص

عند تحميل .woff2 الملف، مكتبة فك ضغط بروتلي-الضغوط 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 يكتشف بايت السحر WOFF2 ويدعو BrotliDecoder إلى فك ضغط التيار قبل بناء النظام. Woff2Font مثال.

الخطوة 5: ترميز بروتلي منخفض المستوى

API الداخلية: (أوباما)BrotliEncoder و BrotliDecoder هي خدمات المرافق الداخلية قد يتغير بين الإصدارات. لضغط الخطوط WOFF2 ، تفضل API العامة كما هو مبين في الخطوات 3-4 أعلاه.

استخدام BrotliEncoder مباشرة عندما تحتاج إلى ضغط البيانات الثنائية التعسفية مع بروتلي) ، المدير التنفيذي لـ (بروتلي). quality المعيار (011) يسيطر على مستوى الضغط:

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 هي طريقة طبقة تأخذ البايت المضغوطة و يعيد بايتات غير مضغوطة. لا يوجد واجهة برمجة التشغيل المباشرة الضغط الكامل يجب أن يتم توفير الحمولة في مكالمة واحدة.

متى تستخدم واجهات برمجة التطبيقات منخفضة المستوى في بروتلي؟

المجلس الوزاري BrotliEncoder و BrotliDecoder فئات مفيدة عندما:

  • تحتاج إلى ضغط أو فك الضغط على الحمولات الثنائية التعسفية بغض النظر عن معالجة الخطوط (على سبيل المثال، ضغطة البيانات الوصفيه للخطوط أو كتل بيانات مخصصة).
  • يجب عليك التحقق من أن الحمولة المضغوطة بواسطة بروتلي هي بشكل جيد قبل نقلها إلى محلل WOFF2.
  • أنت تبني جهاز اختبار يتطلب بيانات معروفة عن نسبة الضغط.

لجميع العمليات القياسية للخطوط (التحميل، التحويل، حفظ WOFF2) ، لا تقوم تحتاج إلى واجهة الاستخدام الخاصة بالمستوى المنخفض FontLoader.open و FontConverter.convert المقبض بروتلي بصورة شفافة.

الأسئلة المتكررة

هل المكتبة تحتاج إلى حزمة بروتلي خارجية؟?

لا. Aspose.Font FOSS لبيثون يجمع تنفيذ بروتلي الخاص به. لا brotli, brotlicffi,، أو مطلوب حزمة مماثلة.

ما هي جودة الضغط التي تستخدمها المكتبة لـ WOFF2 ؟?

المكتبة تستخدم مستوى الجودة الافتراضي للخروج WOFF2. للتحكم في مستوى الجودة لمهام الضغط المخصص، الاستخدام BrotliEncoder(quality=N) حيث: N بين 0 (أسرع) و 11 (الأفضل ضغط).

هل يمكنني فك ضغط تيار الويف2 مباشرة؟?

بيانات WOFF2 glyph تستخدم مزيج من Brotli decompression و font-specific. تحويل (صيغة الجدول “تحويلها”). فك ضغط بروتلي الخام. وحده لا يكفي لاسترداد الخط القابل للاستخدام يجب عليك تحميل ملف WOFF2 من خلال FontLoader.open,، والتي تطبق كل من إزالة ضغط بروتلي و تحويل الجدول العكسي.

انظر أيضا

 العربية