كيفية العمل مع WOFF في Python

كيفية العمل مع WOFF في Python

يوضح هذا الدليل كيفية تحميل وتفقد وتحويل WOFF وWOFF2 الخطوط على شبكة الإنترنت باستخدام Aspose.Font FOSS لباثون. WOff (نمط النص المفتوح للويب) هو المعيار لتقديم الخطوص على الويб. تستخدم WOF 1 ضغط zlib وWOFF 2 ضغطة Brotli ، وكلاهما يحمل خط TrueType أو CFF الأساسي. Aspose.Font FosS يقوم بتحميل كلا الصيغ ويظهر بيانات الخطوف الداخلية من خلال واجهة برمجة بيئة نظيفة .

خطوة بخطوة دليل

الخطوة 1: قم بتثبيت الحزمة

قم بتثبيت حزمة Aspose.Cells FOSS من PyPI باستخدام أمر pip أدناه:

pip install "aspose-font>=1.0.0"

الخطوة 2: استيراد الدروس المطلوبة

الاستيراد FontLoader, FontConverter,، و FontType لتحميل و تحويل الخطوط WOFF:

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

الخطوة 3: تحميل وفحص WOFF Font

تحميل ملف WOFF مع FontLoader.open() وقراءة الخصائص الأساسية مثل الاسم، العائلة، وعدد النقاط:

from aspose_font.loader import FontLoader

woff_font = FontLoader.open("MyFont.woff")
print(f"Name: {woff_font.font_name}")
print(f"Family: {woff_font.font_family}")
print(f"Glyphs: {woff_font.num_glyphs}")
print(f"Type: {woff_font.font_type}")

الخطوة 4: قراءة بيانات WOFF المتحولة

قد تحتوي ملفات WOFF على كتلة بيانات خروجي XML مع الترخيص، والإئتمانات، و وصف.الوصول إليه من خلال metadata_xml الممتلكات.

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# WOFF fonts may include an XML metadata block
xml = getattr(font, "metadata_xml", None)
if xml:
    print(xml)
else:
    print("No metadata in this WOFF file")

الخطوة 5: الوصول إلى جداول TTF الداخلية

كلاهما WoffFont و Woff2Font كشف عن inner_font الممتلكات التي تعطي أنتِ المُخفية. TtfFont.من خلالها يمكنك الوصول إلى كل المعايير جداول OpenType.

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# WOFF wraps a TrueType font; access its tables via inner_font
inner = getattr(font, "inner_font")
tables = inner.ttf_tables

print(f"Units/em: {tables.head.units_per_em}")
print(f"Family name: {tables.name.best_name(1)}")

الخطوة 6: تحويل TTF إلى WOFF

تحميل شفرة TTF وتحويلها إلى تنسيق WOFF عن طريق تمرير FontType.WOFF إلى FontConverter.convert():

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

ttf_font = FontLoader.open("MyFont.ttf")
woff_font = FontConverter.convert(ttf_font, FontType.WOFF)
woff_bytes = woff_font.to_bytes()

from pathlib import Path
Path("MyFont.woff").write_bytes(woff_bytes)

الخطوة 7: تحويل TTF إلى WOFF2

تحميل شفرة TTF وتحويلها إلى تنسيق WOFF2 عن طريق تمرير FontType.WOFF2 إلى FontConverter.convert():

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

ttf_font = FontLoader.open("MyFont.ttf")
woff2_font = FontConverter.convert(ttf_font, FontType.WOFF2)
woff2_bytes = woff2_font.to_bytes()

from pathlib import Path
Path("MyFont.woff2").write_bytes(woff2_bytes)

الخطوة 8: تحويل بين WOFF وWOFF2

تحويل ملف WOFF محمول إلى WOff2 (أو العكس) عن طريق تمرير الهدف FontType إلى FontConverter.convert():

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

# WOFF -> WOFF2
woff_font = FontLoader.open("MyFont.woff")
woff2_font = FontConverter.convert(woff_font, FontType.WOFF2)

# WOFF2 -> WOFF
woff2_font = FontLoader.open("MyFont.woff2")
woff_font = FontConverter.convert(woff2_font, FontType.WOFF)

مشكلات و تصحيحات مشتركة

FontParseException: Invalid WOFF signature الملف ليس WOFF صالحاً تأكد من أن الملف غير فاسد و يبدأ بـ “Wowff” magic bytes.

FontParseException: WOFF table decompression failed طاولة مضغوطة في داخل ملف WOFF هو فاسد. حاول إعادة تنزيل الملف الخط.

إصدار WOFF2 كبير WOFF2 يستخدم ضغط بروتلي الذي ينتج أصغر من ذلك بكثير. إذا كان خروج WOFF2 الخاص بك كبير بشكل غير متوقع ، تأكد من أن الملفات التي تم تحميلها هي أكبر من 1 (zlib). أنت تبدأ من مصدر TTF الأمثل.

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

ما هو الفرق بين WOFF وWOFF2؟?

يستخدم WOFF 1 ضغط zlib وWOFF 2 ضغوط بروتلي. يحقق WOff2 عادةً ضخة أفضل بنسبة 20-30٪ من WOF 1. كلاهما يغطي نفس بيانات الخط الحقيقي أو CFF الأساسية.

هل يمكنني الوصول إلى جداول الخط من ملف WOFF؟?

نعم، استخدمي الـ… inner_font الممتلكات للحصول على البديل الأساسي TtfFont, ثم طاولات الوصول عبر inner_font.ttf_tables.

هل تمتلك المكتبة دعمًا لبيانات WOFF؟?

نعم، كلاهما. WoffFont و Woff2Font كشف عن metadata_xml العقارات تحتوي على كتلة البيانات المتحولة XML الاختياري.

انظر أيضا

 العربية