مقدمة

WOFF (نموذج الخط المفتوح على الويب) هو الحاوية القياسية لتقديم الخطوط على الشبكة. يغطي WOff 1 خط TrueType أو CFF بالضغط zlib ؛ يطبق WOF 2 ضغطة Brotli بدلاً من ذلك ، ويحقق عادة نسبة ضغط أفضل بنسبة 20-30٪ . تدعم كلتا الصيغين كل متصفح جديد وهي تنسيق التوصية المقترحة لطباعة الالكترونيات.

Aspose.Font FOSS for Python exposes WOFF and WOFF2 through the WoffFont و Woff2Font كلا الطبقتين يشتركان نفس واجهة برمجة التطبيق: فهي تعرض خصائص الخط (font_name, font_family, num_glyphs) ، اختياري. metadata_xml المقاطعة، و inner_font الوصول الذي يعيد المبلغ الأساسي TtfFont,، و a to_bytes() طريقة تحويل الصيغة.

تم نشر المكتبة على PyPI كـ: aspose-font ومرخصة بموجب قانون MIT رخصة بدون إعتماداً تجارياً إلزاميّاً.


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

تحميل WOFF وWOFF2 الخطوط

استخدام FontLoader.open لتحميل ملف WOFF أو WOff2. يكتشف الجهاز التحميل الصيغة من الملف بايت سحري تلقائيًا:

from aspose_font.loader import FontLoader

# Load WOFF 1
woff = FontLoader.open("MyFont.woff")
print(f"Name   : {woff.font_name}")
print(f"Family : {woff.font_family}")
print(f"Style  : {woff.font_style}")
print(f"Glyphs : {woff.num_glyphs}")
print(f"Type   : {woff.font_type}")

# Load WOFF 2
woff2 = FontLoader.open("MyFont.woff2")
print(f"Name   : {woff2.font_name}")
print(f"Glyphs : {woff2.num_glyphs}")

FontLoader.open يعيد a WoffFont لـ: .woff الملفات و Woff2Font لـ: .woff2 الملفات. كلا الطبقتين تنفيذ نفس Font واجهة قاعدة لذلك رمز أن يقرأ خصائص هو متطابق لكلا الصيغ.


فحص بيانات WOFF المتحولة

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

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# metadata_xml is a WoffFont-specific property
xml = getattr(font, "metadata_xml", None)
if xml:
    print("WOFF metadata XML:")
    print(xml[:500])
else:
    print("No metadata block in this WOFF file")

المجلس الوزاري metadata_xml العقار يعود a str يحتوي على XML الخام، أو None إذا كان الخط لا يتضمن كتلة بيانات. كلاهما WoffFont و Woff2Font كشف هذا الممتلكات.


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

WOFF وWOFF2 تغلف الخط TrueType. inner_font الممتلكات تعطيك الـ الأساسية TtfFont مع الوصول الكامل لمجموعة جداول OpenType الخاصة به:

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# inner_font is a WoffFont-specific property returning the TtfFont
inner = getattr(font, "inner_font")
tables = inner.ttf_tables        # TtfTableSet

print(f"Units/em    : {tables.head.units_per_em}")
print(f"Ascender    : {tables.hhea.ascender}")
print(f"Num glyphs  : {tables.maxp.num_glyphs}")
print(f"Family name : {tables.name.best_name(1)}")

من خلال inner_font.ttf_tables يمكنك الوصول إلى جميع جداول OpenType القياسية: head, hhea, maxp, os2, name,، و post.للجدول بدون اسم المرفق، الاستخدام inner_font.get_blob(tag) لاسترداد البايتات الخام بواسطة علامة OpenType.


أزواج النواة من ووف فونت

get_kern_pairs() يعيد كل أزواج النواة المضمنة في الخط. KernPair يحمل left (غليفيد) ،, right (GlyphId) ، و value (int، في وحدات الخط):

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
pairs = font.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")

for pair in pairs[:5]:
    print(f"  {pair.left} + {pair.right} = {pair.value}")

يتم تخزين أزواج النواة في TTF الداخلية. kern جدول. الخطوط مع OpenType GPOS الميزات النووية بدلا من kern الجدول سيعيد قائمة فارغة من هذه الطريقة.


تحويل الصيغة

FontConverter.convert تحويل بين شكلات الخط. استخدم النمط FontType إينوم لتحديد الصيغة المستهدفة، ثم الاتصال to_bytes() لتحديد المسلسل:

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

# TTF -> WOFF
ttf = FontLoader.open("MyFont.ttf")
woff = FontConverter.convert(ttf, FontType.WOFF)
Path("MyFont.woff").write_bytes(woff.to_bytes(FontType.WOFF))

# TTF -> WOFF2 (Brotli-compressed)
woff2 = FontConverter.convert(ttf, FontType.WOFF2)
Path("MyFont.woff2").write_bytes(woff2.to_bytes(FontType.WOFF2))

# WOFF -> WOFF2
existing_woff = FontLoader.open("MyFont.woff")
converted = FontConverter.convert(existing_woff, FontType.WOFF2)
Path("MyFont-from-woff.woff2").write_bytes(converted.to_bytes(FontType.WOFF2))

# WOFF2 -> WOFF (decompress back to WOFF 1)
existing_woff2 = FontLoader.open("MyFont.woff2")
woff1 = FontConverter.convert(existing_woff2, FontType.WOFF)
Path("MyFont-from-woff2.woff").write_bytes(woff1.to_bytes(FontType.WOFF))

جميع مسارات التحويل الأربعة (TTF إلى WOFF، TTF إلى WOFF2 ، WWF الى WWOFF2, Wwoff2 إلى (WOFF) مدعومة بنفس المادة. FontConverter.convert API.


إنشاء حزمة خطوط ويب

WebFontBuilder.build يخلق حزمة شفرات ويب كاملة من TTF واحد. يُنتج WOFF وWOFF2 ومشاهدة SVG الاختياري في مكالمة واحدة:

from aspose_font.web import WebFontBuilder
from aspose_font.loader import FontLoader
from pathlib import Path

# Load a TTF source font
font = FontLoader.open("MyFont.ttf")

# Build WOFF + WOFF2 output files
WebFontBuilder.build(
    font=font,
    file_stem="MyFont",
    include_woff=True,
    font_display="swap",
    preview_text="The quick brown fox",
    instance_coordinates=None,
    output_dir=Path("web-output"),
)

بعد المكالمة،, web-output/ تحتوي على: MyFont.woff, MyFont.woff2,، و إمكانية اختيار a MyFont-preview.svg. font_display خرائط المعلمات مباشرة إلى المخططات الإجتماعية font-display وصف ويقبل "auto", "block", "swap", "fallback",، أو "optional".


بدء سريع

قم بتثبيت المكتبة:

pip install "aspose-font>=1.0.0"

تحميل ووف فونت وتحويله إلى واف 2:

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

# Load WOFF
font = FontLoader.open("MyFont.woff")
print(f"Font   : {font.font_name}")
print(f"Glyphs : {font.num_glyphs}")
print(f"Type   : {font.font_type}")

# Inspect metadata (if present) — WoffFont-specific property
xml = getattr(font, "metadata_xml", None)
print(f"Has metadata: {xml is not None}")

# Access inner OpenType tables — WoffFont-specific property
inner = getattr(font, "inner_font")
tables = inner.ttf_tables
print(f"Units/em: {tables.head.units_per_em}")

# Convert to WOFF2
woff2 = FontConverter.convert(font, FontType.WOFF2)
Path("MyFont.woff2").write_bytes(woff2.to_bytes(FontType.WOFF2))
print("Converted to WOFF2")

تصميمات الخطوط المستخدمة على الويب المدعومة

شكلتمديدالحمولةتحويل إلى WOFFتحويل إلى WOFF2
TTF.ttfنعم , أنا كذلكنعم , أنا كذلكنعم , أنا كذلك
OTF.تفنعم , أنا كذلكنعم , أنا كذلكنعم , أنا كذلك
WOFF. ووفنعم , أنا كذلكنعم , أنا كذلك
WOFF2. ووف2نعم , أنا كذلكنعم , أنا كذلك
EOT. لانعم , أنا كذلكنعم , أنا كذلكنعم , أنا كذلك
CFF. cffنعم , أنا كذلكنعم , أنا كذلكنعم , أنا كذلك
TYPE1.pfb/.pfaنعم , أنا كذلكنعم , أنا كذلكنعم , أنا كذلك

جميع تنسيقات المصدر تدعم التحويل إلى WOFF وWOFF2 عبر FontConverter.convert.


المصدر المفتوح والتصنيف

Aspose.Font FOSS for Python is released under the MIT License. You can use it in المشاريع الشخصية والتجارية والمفتوحة المصدر دون أي تكلفة. ويتم استخدام رمز المصادر في متاح على GitHub ويتم توزيع الحزمة عبر PyPI كـ aspose-font.


بدءاً من

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