چگونه Aspose.Font از فشرده سازی بوتلی برای WOFF2 در Python استفاده می کند

چگونه Aspose.Font از فشرده سازی بوتلی برای WOFF2 در Python استفاده می کند

WOFF2 (Web Open Font Format 2) داده های گلیف خود را با استفاده از Brotli، یک هدف کلی فشرده می کند. الگوریتم فشرده سازی بدون از دست دادن توسعه یافته توسط گوگل. Aspose.Font FOSS برای دستبند Python همه کارهای Brotli در داخل – شما نیازی به نصب هیچ فشرده سازی خارجی ندارید کتابخانه : بسته بندی BrotliEncoder و BrotliDecoder کلاس ها برای استفاده از سطح پایین زمانی که شما نیاز به فشرده سازی یا فاش کردن داده های خودخواهانه خارج از مسیر تبدیل WOFF2 استاندارد است.

راهنمای گام به گام

مرحله اول: نصب بسته بندی

pip install "aspose-font>=1.0.0"

مرحله دوم: کلاس های مورد نیاز واردات

برای عملیات استاندارد WOFF2:

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType

برای عملیات های کم سطح Brotli (API داخلی – ممکن است بین انتشارات تغییر کند):

from aspose_font._brotli import BrotliEncoder, BrotliDecoder  # internal API

مرحله 3: ایجاد یک فونت WOFF2 (کلاهبرداری)

مسیر استاندارد: هر فونت را به 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 به صورت داخلی.

مرحله چهارم: یک فونت WOFF2 را بارگذاری و بررسی کنید.

هنگامی که بارگذاری A .woff2 فایل، کتابخانه فشرده سازی گلیف فاش شده توسط Brotli اطلاعات قبل از نمایش ویژگی های فونت:

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 مثال .

مرحله پنجم: کدگذاری کمبود بوتلی

آتش سوزی داخلی : در این مطلب به شما پیشنهاد می کنیمBrotliEncoder و BrotliDecoder استفاده از ابزارهای داخلی برای فشرده سازی فونت WOFF2، ترجیح می دهید API عمومی در مراحل 3-4 بالا نشان داده شده است.

استفاده از BrotliEncoder به طور مستقیم زمانی که شما نیاز به فشرده سازی داده های باینری خودخواه با بوتاکس - The quality پارامتر (0-11) سطح فشرده سازی را کنترل می کند:

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 یک روش کلاس است که با بیت های فشرده و… بازگرداندن بایت های فشرده وجود ندارد API جریان - کامل فاش شده پرداخت باید در یک تماس انجام شود.

چه زمانی از APIs کم سطح استفاده کنیم؟

و این BrotliEncoder و BrotliDecoder کلاس ها مفید هستند اگر:

  • شما باید بارهای باینری خودخواه را بدون پردازش فونت (به عنوان مثال، فشرده سازی متادیت های فونتی یا بلوک های داده سفارشی) فاش کنید.
  • شما باید قبل از آن تأیید کنید که یک بار بسته بندی شده توسط Brotli قبل به انتقال آن به یک پارس WOFF2 شکل گرفته است.
  • شما یک تثبیت تست را ایجاد می کنید که نیاز به داده های شناخته شده-تراکم-نسبی دارد.

برای تمام عملیات های استاندارد فونت (شحن، تبدیل، ذخیره WOFF2) شما نمی توانید نیاز به API سطح پایین - FontLoader.open و FontConverter.convert دستکاری شفافیت را بشویید.

پرسش های متداول

آیا کتابخانه نیاز به یک بسته خارجی دارد؟?

FOSS برای Python پیاده سازی Brotli خود را بسته بندی می کند. brotli, brotlicffi,یا بسته های مشابهی مورد نیاز است.

کتابخانه از چه کیفیتی برای WOFF2 استفاده می کند؟?

کتابخانه از سطح کیفیت پیش فرض برای تولید WOFF2 استفاده می کند. سطح کیفیت برای کارهای فشرده سازی سفارشی، استفاده از BrotliEncoder(quality=N) کجا N بین 0 (سرعت) و 11 (بهترین فشرده سازی) است.

آیا می توانم جریان گلیف WOFF2 را به طور مستقیم از بین ببرم؟?

WOFF2 داده های گلیف از ترکیبی از تخریب Brotli و یک فونت خاص استفاده می کند. تبدیل (فرمت میز “تغییر”).خنثی کردن جریان خام Brotli تنها برای بازگرداندن یک فونت قابل استفاده کافی نیست – شما باید فایل WOFF2 را بارگذاری کنید. از طریق FontLoader.open,که در آن هر دو دکمه و دکوراسیون بوتلی اعمال می شود. تغییر میز برعکس.

See Also

 فارسی