مقدمة
النوع 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) اسم الخط في PostScriptfull_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.