परिचय

Type 1 Adobe का मूल स्केलेबल फ़ॉन्ट फ़ॉर्मेट है, जो TrueType और OpenType से पहले आया। Type 1 फ़ॉन्ट दो फ़ाइलों से बनते हैं: एक .pfb (Printer Font Binary) फ़ाइल जिसमें एन्क्रिप्टेड फ़ॉन्ट प्रोग्राम होता है, और एक .afm (Adobe फ़ॉन्ट मीट्रिक्स) फ़ाइल जिसमें कर्निंग और मीट्रिक डेटा होता है। OpenType द्वारा प्रतिस्थापित किए जाने के बावजूद, Type 1 फ़ॉन्ट प्रकाशन कार्यप्रवाहों, PostScript पाइपलाइनों, और अभिलेखीय दस्तावेज़ों में अभी भी प्रचलित हैं।

Aspose.Font FOSS for Python Type 1 के आंतरिक भागों तक सीधे पहुँच प्रदान करता है Type1Font, Type1FontData, Type1Serializer, और Type1Interpreter के माध्यम से। आप FontLoader.open के जरिए PFB या PFA फ़ाइलें लोड कर सकते हैं, एम्बेडेड फ़ॉन्ट प्रोग्राम मेटाडेटा की जाँच कर सकते हैं, कैरक्टर्स्ट्रिंग्स को ग्लिफ़ पाथ्स में व्याख्या कर सकते हैं, और फ़ॉन्ट्स को फिर से PFB या PFA फ़ॉर्मेट में सीरियलाइज़ कर सकते हैं।

यह लाइब्रेरी PyPI पर aspose-font के रूप में प्रकाशित की गई है और MIT लाइसेंस के तहत लाइसेंस प्राप्त है। इसमें कोई अनिवार्य व्यावसायिक निर्भरताएँ नहीं हैं और यह मानक Python 3 पर चलती है।


मुख्य विशेषताएँ

Type 1 फ़ॉन्ट लोड करना

FontLoader.open का उपयोग करके PFB या PFA फ़ाइल लोड करें। लौटाया गया ऑब्जेक्ट मानक Font इंटरफ़ेस और Type1Font क्लास के माध्यम से Type 1-विशिष्ट कार्यक्षमता दोनों को उजागर करता है:

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() के माध्यम से कर्न पेयर लुकअप संभव होते हैं।

AFM फ़ाइल के बिना, get_kern_pairs() एक खाली सूची लौटाता है क्योंकि कर्न डेटा AFM फ़ाइल में रहता है, न कि PFB प्रोग्राम में स्वयं। load_afm मेथड एक फ़ाइल पाथ स्ट्रिंग स्वीकार करता है जो साथ की .afm फ़ाइल की ओर इशारा करता है।


Type1FontData मेटाडेटा तक पहुँच

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-स्लॉट encoding vector (PostScript glyph names)
  • charstrings (dict[str, bytes]) — glyph name → charstring बाइट्स मैपिंग
  • subrs (list[bytes]) — चर स्ट्रिंग इंजन द्वारा उपयोग की गई सबरोूटीन बाइट स्ट्रिंग्स
  • len_iv (int) — lenIV एन्क्रिप्शन पैरामीटर

Charstrings की व्याख्या

Type1Interpreter Type 1 charstring programs को GlyphPath outlines में डिकोड करता है। Type1FontData.charstrings से raw charstring bytes को 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) tuple लौटाता है। GlyphPath glyph outline के लिए drawing commands रखता है। वह integer निष्पादन के बाद अंतिम stack depth है, जो malformed charstrings को debug करने में उपयोगी है।


PFB और PFA में Serializing

Type1Serializer लोड किए गए Type 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.otf✓—
EOT.eot✓—
CFF.cff✓—
TYPE1.pfb/.pfa✓—
WOFF.woff✓—
WOFF2.woff2✓—

Type 1 फ़ॉन्ट FontLoader.open के द्वारा लोड किए जाते हैं और Type1Serializer के द्वारा सीरियलाइज़ किए जाते हैं।


ओपन सोर्स & लाइसेंसिंग

Aspose.Font FOSS for Python MIT लाइसेंस के तहत जारी किया गया है। आप इसे व्यक्तिगत, व्यावसायिक, और ओपन-सोर्स प्रोजेक्ट्स में निःशुल्क उपयोग कर सकते हैं। स्रोत कोड GitHub पर उपलब्ध है और पैकेज PyPI के माध्यम से aspose-font के रूप में वितरित किया जाता है।


शुरू करना

संबंधित संसाधन