הכניסה
סוג 1 הוא פורמט טקסט מקורי של Adobe, המציג את TrueType ו- OpenTYpe. סוג 1 של טופס מורכב משני קבצים: A .pfb (הדפסה של טופס בינארי) קובץ המכיל את תוכנית ה-Fort, ו- A .afm (Adobe Font Metrics) קובץ עם קרנינג ו למרות שהחומר מוחלף על ידי 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.
הספרייה פורסמה ב-PIPI כ aspose-font והיא מורשית על פי רישיון MIT. אין לו תלויות מסחריות חובה והוא פועל על Python סטנדרטי 3.
תכונות מרכזיות
טופס 1 של ציטוטים
שימוש FontLoader.open כדי להעלות קובץ PFB או PFA.האובייקט החוזר מראה את שני סטנדרטים Font הפונקציונליות של סוג 1 ו-Type 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 Metrics
סוג 1 טופסים להציב את המטריקים שלהם בנפרד .afm קובץ - The Type1Font מדרגה להציג A load_afm(path) שיטה שמחברת את נתוני AFM לאובייקט הפורט הנעלם, אפשרות ל-Kern Pair Lookups באמצעות get_kern_pairs().
ללא קובץ ה-AFM, get_kern_pairs() החזיר רשימה ריקה כי נתונים גרעיניים חיים על פי ה-FBI, לא על ידי הוועדה המקומית לביטוח. load_afm שיטת קבלת קובץ מסלול המשיכו להדגיש את השותף .afm קובץ .
גישה לנתונים Type1FontData
The 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שם הפוסט של האותיות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• היקף המצב ב- font unitsunderline_thickness(int• להדגיש את שומן התפרצותencoding(list[str]• 256 סלטים (PostScript glyph names)charstrings(dict[str, bytes]) — glyph שם → charstring bytes mappingsubrs(list[bytes]) - סובייקטים תת-רוטניים המשמשים על ידי מנוע הדחיסהlen_iv(int• מפרט ההקפדה של Lenovo
תרגום Charstrings
Type1Interpreter דפדפן מסוג 1 תוכניות לגרסה לתוך GlyphPath תגית: Pass בוטים של קרסטרינג ירוק מ 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 חוזר א (GlyphPath, int) טופל – The 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 | .טטפ | ✓ | — |
| OTF | .אוטו | ✓ | — |
| EOT | .EOT | ✓ | — |
| CFF | .קפ | ✓ | — |
| TYPE1 | .pf / pfa | ✓ | — |
| WOFF | .ווק | ✓ | — |
| WOFF2 | .WOW2 | ✓ | — |
סוג 1 של טופס הונחה באמצעות FontLoader.open סדרה באמצעות Type1Serializer.
קוד פתוח & רישיון
Aspose.Font FOSS for Python is released under the MIT License. You can use it in פרויקטים אישיים, מסחריים ופתוחים ללא תשלום.הקוד המקור הוא זמין ב- GitHub והחבילה מופצה דרך PyPI כ aspose-font.