परिचय

TrueType फ़ॉन्ट्स (.ttf) और उनका OpenType सुपरसेट (.otf) आधुनिक ऑपरेटिंग सिस्टम्स में प्रमुख फ़ॉन्ट फ़ॉर्मेट हैं। दोनों फ़ॉर्मेट एक ही बाइनरी टेबल संरचना साझा करते हैं जो OpenType विशिष्टता में निहित है। Aspose.Font FOSS Python के लिए इस संरचना को TtfFont के माध्यम से उजागर करता है, जिससे व्यक्तिगत OpenType टेबल्स, कर्न पेयर डेटा, वैरिएबल फ़ॉन्ट एक्सिस, और ग्लिफ़ रूपरेखा तक प्रत्यक्ष पहुँच मिलती है।

TtfFont क्लास Font बेस क्लास को TTF-विशिष्ट विधियों के साथ विस्तारित करता है, जिसमें get_blob, get_table_bytes, set_table_bytes, और instantiate शामिल हैं, जो वैरिएबल फ़ॉन्ट एक्सिस को लॉक करने के लिए हैं। TtfTableSet प्रॉपर्टी (ttf_tables) सबसे सामान्य OpenType टेबल्स तक टाइप्ड एक्सेस प्रदान करती है: head, hhea, maxp, os2, name, post।

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


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

TTF और OTF फ़ॉन्ट्स लोड करना

किसी भी TrueType या OpenType फ़ॉन्ट फाइल को लोड करने के लिए FontLoader.open का उपयोग करें:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)

FontLoader.open फ़ाइल हेडर से फ़ॉन्ट फ़ॉर्मेट का पता लगाता है। दोनों .ttf (TrueType) और .otf (OpenType CFF) फ़ाइलें समर्थित हैं और दोनों एक TtfFont इंस्टेंस लौटाते हैं।


OpenType तालिकाओं तक TtfTableSet के माध्यम से पहुँच

ttf_tables प्रॉपर्टी एक TtfTableSet लौटाती है जिसमें सामान्य OpenType तालिकाओं के लिए टाइप्ड एक्सेसर होते हैं। प्रत्येक प्रॉपर्टी तालिका ऑब्जेक्ट या यदि अनुपलब्ध हो तो None लौटाती है:

TtfFont पर ttf_tables प्रॉपर्टी एक TtfTableSet इंस्टेंस लौटाती है। उपलब्ध तालिका एक्सेसर:

  • head — HeadTable | None
  • hhea — HheaTable | None
  • maxp — MaxpTable | None
  • os2 — Os2Table | None
  • name — NameTable | None
  • post — PostTable | None

प्रत्येक प्रॉपर्टी टेबल ऑब्जेक्ट या None लौटाती है यदि वह टेबल फ़ॉन्ट फ़ाइल में मौजूद नहीं है। विशिष्ट टेबलों की जाँच करने के लिए TtfTableSet प्रॉपर्टीज़ तक पहुँचें इससे पहले कि आप उन्हें पढ़ें। जिन टेबलों को नामित एक्सेसर द्वारा कवर नहीं किया गया है, उनके लिए TtfTableSet.get_raw(tag) का उपयोग करके चार-अक्षरीय OpenType टैग द्वारा कच्चे बाइट्स प्राप्त करें।


कच्चे टेबल बाइट्स पढ़ना

get_table_bytes(tag) किसी भी OpenType टेबल के लिए कच्चे बाइट्स लौटाता है। जब टेबल अनुपलब्ध हो तो None लौटाने वाले None-सुरक्षित वैरिएंट के लिए get_blob(tag) का उपयोग करें:

TtfFont कच्ची टेबल एक्सेस के लिए दो विधियाँ प्रदान करता है:

  • get_table_bytes(tag) -> bytes — नामित टेबल के लिए कच्चे बाइट्स लौटाता है (यदि अनुपलब्ध हो तो त्रुटि उत्पन्न करता है)
  • get_blob(tag) -> bytes | None — यदि टेबल अनुपलब्ध हो तो None लौटाता है (सुरक्षित वैरिएंट)

दोनों विधियाँ चार-अक्षरीय OpenType टेबल टैग स्वीकार करती हैं जैसे "cmap", "GDEF", या "GPOS"। जब टेबल वैकल्पिक हो तो get_blob का उपयोग करें ताकि आप प्रक्रिया करने से पहले None की जाँच कर सकें।


केर्न जोड़े

get_kern_pairs() फ़ॉन्ट में एन्कोडेड सभी केर्न जोड़े लौटाता है। प्रत्येक KernPair में left (GlyphId), right (GlyphId), और value (फ़ॉन्ट यूनिट्स में int) होते हैं:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")

for pair in pairs[:5]:
    print(f"  Left: {pair.left}  Right: {pair.right}  Value: {pair.value}")

फ़ॉन्ट मेट्रिक्स

मानक मीट्रिक्स metrics प्रॉपर्टी के माध्यम से उपलब्ध हैं:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

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

वैरिएबल फ़ॉन्ट समर्थन

चर फ़ॉन्ट्स के लिए, TtfFont is_variable, variable_axes, और named_instances को उजागर करता है। विशिष्ट अक्ष को उसके चार-अक्षरीय टैग द्वारा प्राप्त करने के लिए get_axis(tag) का उपयोग करें:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/RobotoFlex.ttf")

print(f"Is variable: {loaded.is_variable}")
print(f"Axes       : {len(loaded.variable_axes)}")

TtfFont पर get_axis(tag) विधि उसके चार-अक्षरीय टैग द्वारा एक VariableAxis प्राप्त करती है (उदाहरण के लिये वजन के लिये "wght", चौड़ाई के लिये "wdth")। यदि अक्ष फ़ॉन्ट की fvar टेबल में मौजूद नहीं है तो यह None लौटाती है।


फ़ॉन्ट रूपांतरण

to_bytes(font_type) फ़ॉन्ट को एक अलग फ़ॉर्मेट में बदलता है। लक्ष्य निर्दिष्ट करने के लिए FontType enum का उपयोग करें:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
    fh.write(ttf_bytes)

print(f"Serialized: {len(ttf_bytes)} bytes")

त्वरित प्रारंभ

लाइब्रेरी स्थापित करें:

.venv/bin/pip install aspose-font

एक TTF फ़ॉन्ट लोड करें और उसका निरीक्षण करें:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("Roboto-Regular.ttf")

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

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

ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")

समर्थित फ़ॉर्मेट्स

फ़ॉर्मेटएक्सटेंशनपढ़ेंलिखें
TTF.ttf✓—
OTF.otf✓—
EOT.eot✓—
CFF.cff✓—
TYPE1.pfb/.pfa✓—
WOFF.woff✓—
WOFF2.woff2✓—

सभी फ़ॉर्मेट्स FontLoader.open के माध्यम से लोड होते हैं। TTF/OTF फ़ॉन्ट्स एक TtfFont इंस्टेंस लौटाते हैं।


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

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


शुरू करना

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