مقدمة

النوع 1 هو تنسيق الخط الأصلي القابل للتوسع من Adobe ، والذي يسبق TrueType و OpenTybe. النوع 1 من الخطوط يتكون من ملفين: a .pfb (ملف النص الثنائي للطابعة) يحتوي على الملف برنامج الخط المشفى، وبرنامج خط .afm (مقاييس Adobe Font) الملف مع كيرنينغ و على الرغم من استبدالها بواسطة OpenType ، لا تزال الخطوط النوع 1 سائدة في جميع أنحاء العالم. نشر سير العمل، خط أنابيب PostScript، ووثائق الأرشيف.

Aspose.Font FOSS for Python provides direct access to Type 1 internals through Type1Font, Type1FontData, Type1Serializer,، و Type1Interpreter.يمكنك أن تحملي ملفات PFB أو PFA عبر: FontLoader.open,، تفحص البيانات الوصفية للبرنامج المضمن،, تفسير خطوط الرسوم إلى مسارات النمط، وتسلسل الخطوط مرة أخرى إلى صيغة PFB أو PFA.

تم نشر المكتبة على PyPI كـ: aspose-font وترخيص تحت ترخيصة MIT. ليس له اعتمادات تجارية إلزامية ويتم تشغيله على Python 3 القياسي.


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

تحميل النوع 1 الخطوط

استخدام FontLoader.open لتحميل ملف PFB أو PFA. يعرض الكائن المُسترد كل من الملفات الإلكترونية والإلكتريكية و الـPDF. القياسية Font واجهة وتشغيل نوع 1 المحددة من خلال Type1Font الفئة:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Courier.pfb")

print(loaded.font_name)    # e.g. "Courier"
print(loaded.font_family)  # e.g. "Courier"
print(loaded.num_glyphs)   # number of defined glyphs
print(loaded.font_style)   # style string, e.g. "Regular"

FontLoader.open يكتشف تنسيق النوع 1 تلقائياً من عنوان الملف. PFB و ملفات PFA مدعومة كلاهما.


تحميل مقاييس AFM

النوع 1 الخطوط شحنات المقاييس في منفصلة .afm الملف. Type1Font الطبقة يُعرض على load_afm(path) طريقة تربط بيانات AFM مع كائن الخط المحمول،, تمكين البحث عن زوجات النواة عبر: get_kern_pairs().

بدون ملف القيادة الجوية،, get_kern_pairs() يعيد قائمة فارغة لأن بيانات النواة تعيش في ملف AFM، وليس في برنامج PFB نفسه. load_afm طريقة تقبل ملفاً خط المسار يشير إلى الشريك .afm الملف.


الوصول إلى نوع1FontData الميتاداتا

المجلس الوزاري Type1FontData الطبقة تعرض قاموس البرنامج المضمن في النوع 1 يحتوي على المقاييس، مربع الحدود، وقطاع التشفير، والشارسترينغز، والأدلة الفرعية:

from aspose_font.type1.data import Type1FontData

# Type1FontData is the font program dictionary parsed from the PFB
# Access its properties to inspect the raw PostScript font data

Type1FontData خصائص:

  • font_name (str) اسم الخط في PostScript
  • full_name (str) اسم كامل يمكن قراءته من قبل الإنسان
  • family_name (str) عائلة الخطوط
  • weight (str) سلك الوزن (مثل:. "Medium")
  • italic_angle (float) زاوية متقطعة بالدرجات
  • is_fixed_pitch (bool) صحيح لخطوط النصوص ذات الفضاء الواحد
  • font_bbox (tuple[int, int, int, int]) مربع تحديد (llx, lly, urx, ury)
  • underline_position (int) وضع التشديد في وحدات الخطوط
  • underline_thickness (int) سمك خط التشديد
  • encoding (list[str]) متجه تشفير 256-slot (أسماء النقاط PostScript)
  • charstrings (dict[str, bytes]) اسم النص → رسم الخط بايتات المخططات
  • subrs (list[bytes]) سلاسل بايت فرعية تستخدم بواسطة محرك التشغيل
  • len_iv (int) معدل تشفير lenIV

ترجمة تشارسترينغز

Type1Interpreter يفكّر برامج تشارسترينغ من النوع 1 إلى GlyphPath الخطوط العريضة، تمرّحوا. بايتات الشارسترينغ الخام من Type1FontData.charstrings إلى interpret:

from aspose_font.type1.interpreter import Type1Interpreter

interpreter = Type1Interpreter()
charstring = b"\x0e"  # seac or other charstring bytes

glyph_path, stack_depth = interpreter.interpret(charstring)
for cmd in glyph_path.commands:
    print(cmd)

interpret يعيد a (GlyphPath, int) المجموعة. GlyphPath يحتوي على الرسم. القواعد المطلوبة لخط الأشكال. العدد الكامل هو عمق الستيك النهائي بعد التنفيذ،, وهو مفيد لتصحيح الخطأ في الخيوط المسيئة.


التسلسلية إلى PFB و PFA

Type1Serializer يحول الخطوط المثبتة من النوع 1 إلى تنسيق PFB الثنائي أو نص PFA. كلا الطريقتين تقبل أيّة طرق. Font مثال ويعيد بايتات خام:

from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer

loaded = FontLoader.open("fonts/Courier.pfb")

# Serialize to PFB (binary) format
pfb_bytes = Type1Serializer.serialize_pfb(loaded)
with open("output/Courier_copy.pfb", "wb") as fh:
    fh.write(pfb_bytes)

# Serialize to PFA (text) format
pfa_bytes = Type1Serializer.serialize_pfa(loaded)
with open("output/Courier_copy.pfa", "wb") as fh:
    fh.write(pfa_bytes)

print(f"PFB: {len(pfb_bytes)} bytes")
print(f"PFA: {len(pfa_bytes)} bytes")

قوائم الخطوط

يمكن الوصول إلى المقاييس والترميز من خلال المعيار. Font واجهة:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Courier.pfb")

metrics = loaded.metrics
print(f"Units per em  : {metrics.units_per_em}")
print(f"Ascender      : {metrics.ascender}")
print(f"Descender     : {metrics.descender}")
print(f"Underline pos : {metrics.underline_position}")
print(f"Underline tck : {metrics.underline_thickness}")

بدء سريع

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

.venv/bin/pip install aspose-font

تحميل خط PFB وتفقدة:

from aspose_font import FontLoader
from aspose_font.type1.serializer import Type1Serializer

loaded = FontLoader.open("Courier.pfb")

print(f"Font name : {loaded.font_name}")
print(f"Family    : {loaded.font_family}")
print(f"Style     : {loaded.font_style}")
print(f"Glyphs    : {loaded.num_glyphs}")

metrics = loaded.metrics
print(f"UPM       : {metrics.units_per_em}")

# Round-trip: serialize back to PFB
pfb_bytes = Type1Serializer.serialize_pfb(loaded)
print(f"Serialized: {len(pfb_bytes)} bytes")

تنسيقات مدعومة

شكلتمديداقرأاكتب
TTF.ttf
OTF.تف
EOT. لا
CFF. cff
TYPE1.pfb/.pfa
WOFF. ووف
WOFF2. ووف2

يتم تحميل الخطوط من النوع 1 عبر: FontLoader.open و تم نشره عبر Type1Serializer.


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

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


بدءاً من

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