कोर फ़ॉन्ट प्रबंधन

कोर फ़ॉन्ट प्रबंधन

कोर फ़ॉन्ट प्रबंधन

यह गाइड दर्शाता है कि फ़ॉन्ट को फ़ाइल पाथ या बाइट एरेज़ से कैसे लोड किया जाए, मेटाडेटा प्रॉपर्टीज़ को पढ़ा जाए, यूनिकोड कोड पॉइंट्स को ग्लिफ़ IDs से मैप किया जाए, ग्लिफ़्स प्राप्त किए जाएँ, और वैरिएबल फ़ॉन्ट एक्सिस और नामित इंस्टेंस के साथ काम किया जाए।

FontLoader सभी फ़ॉन्ट लोडिंग ऑपरेशन्स के लिए मुख्य प्रवेश बिंदु है। एक बार फ़ॉन्ट लोड हो जाने पर, Font बेस क्लास मेटाडेटा, एन्कोडिंग, ग्लिफ़ एक्सेस, और मेट्रिक्स तक पहुँच प्रदान करती है बिना बाइनरी टेबल पार्सिंग की आवश्यकता के।


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

FontLoader.open(source, font_type, collection_index) स्वचालित फ़ॉर्मेट डिटेक्शन के साथ फ़ाइल पाथ से फ़ॉन्ट लोड करता है। FontLoader.load(source, font_type, collection_index) इन-मेमोरी या नेटवर्क वर्कफ़्लोज़ के लिए रॉ बाइट्स को स्वीकार करता है।

from aspose_font import FontLoader

# From a file path — format auto-detected
font = FontLoader.open("Roboto-Regular.ttf")

# From raw bytes — useful for in-memory or network workflows
with open("OpenSans-Regular.otf", "rb") as f:
    font = FontLoader.load(f.read())

फ़ॉन्ट मेटाडेटा पढ़ना

लोड करने के बाद, Font ऑब्जेक्ट font_name, font_family, font_style, और num_glyphs प्रॉपर्टीज़ को तेज़ निरीक्षण के लिए उजागर करता है बिना मैन्युअल टेबल पार्सिंग के।

from aspose_font import FontLoader

font = FontLoader.open("MyFont.ttf")
print(font.font_name)    # full PostScript name
print(font.font_family)  # family name
print(font.font_style)   # style name e.g. "Regular", "Bold"
print(font.num_glyphs)   # total glyph count

ग्लिफ एन्कोडिंग

FontEncoding यूनिकोड कोड पॉइंट्स को ग्लिफ़ IDs से मैप करता है। एकल कोड पॉइंट को हल करने के लिए unicode_to_gid(cp) का उपयोग करें, या फ़ॉन्ट में सभी मैप किए गए कोड पॉइंट्स को सूचीबद्ध करने के लिए get_all_codepoints() का उपयोग करें।

from aspose_font import FontLoader

font = FontLoader.open("OpenSans-Regular.otf")

# Map a single code point
gid = font.encoding.unicode_to_gid(0x41)  # GID for 'A'

# Enumerate all mapped code points
all_cps = font.encoding.get_all_codepoints()
print(f"Font covers {len(all_cps)} Unicode code points")

ग्लिफ एक्सेस

GlyphAccessor ID, यूनिकोड, या टेक्स्ट स्ट्रिंग द्वारा ग्लिफ़ ऑब्जेक्ट्स को पुनः प्राप्त करता है।

from aspose_font import FontLoader

font = FontLoader.open("OpenSans-Regular.otf")

glyph = font.glyph_accessor.get_glyph_by_id(gid)
glyph_a = font.glyph_accessor.get_glyph_by_unicode(0x41)
glyphs = font.glyph_accessor.get_glyphs_for_text("Hello")
all_ids = font.glyph_accessor.get_all_glyph_ids()

वेरिएबल फ़ॉन्ट्स

वेरिएबल फ़ॉन्ट्स के लिए (जो एक fvar तालिका रखते हैं), TtfFont सीधे अक्ष परिभाषाओं और नामित इंस्टेंसेज़ को उजागर करता है।

from aspose_font import FontLoader
from aspose_font import TtfFont

loaded = FontLoader.load("Roboto-VariableFont_wdth,wght.ttf")
ttf: TtfFont = loaded.font

# Check if the font is variable
if ttf.is_variable:
    # List all variation axes
    for axis in ttf.variable_axes:
        print(f"{axis.tag}  range: {axis.min_value}..{axis.max_value}  default: {axis.default_value}")

    # Look up a single axis by tag
    wght = ttf.get_axis("wght")
    if wght:
        print(f"Weight axis: {wght.min_value}..{wght.max_value}")

    # Enumerate named instances (e.g. Bold, Condensed)
    for inst in ttf.named_instances:
        print(f"Instance: name_id={inst.name_id}  coordinates={inst.coordinates}")

उच्च-स्तरीय इंस्टेंसिंग कार्यप्रवाहों के लिए, SmartInstancer अक्ष गिनती और नामित इंस्टेंस समाधान को एकल ऑब्जेक्ट में सम्मिलित करता है:

from aspose_font import FontLoader
from aspose_font import SmartInstancer

loaded = FontLoader.load("Roboto-VariableFont_wdth,wght.ttf")
instancer = SmartInstancer(loaded.font)

print(f"Axes: {[a.tag for a in instancer.axes]}")
print(f"Named instances: {len(instancer.named_instances)}")

टिप्स और सर्वश्रेष्ठ प्रथाएँ

  • एक ही फ़ॉन्ट फ़ाइल को कई बार प्रोसेस करते समय लोड किए गए Font ऑब्जेक्ट्स को कैश करें
  • टेम्प फाइलों से बचने के लिए नेटवर्क या डेटाबेस वर्कफ़्लो के लिए FontLoader.load(bytes) का उपयोग करें
  • सबसेटिंग से पहले num_glyphs की जाँच करें ताकि पोस्ट-सेट कवरेज का अनुमान लगाया जा सके
  • get_all_glyph_ids() पूरी ग्लिफ़ सेट को इटररेट करने के लिए उपयोगी है

सामान्य समस्याएँ

समस्याकारणसमाधान
UnsupportedFontFormatExceptionफ़ाइल प्रारूप पहचाना नहीं गयासुनिश्चित करें कि फ़ाइल एक वैध TTF/OTF/CFF/WOFF/WOFF2/EOT/Type1 है
FontParseExceptionविकृत बाइनरी डेटालोड करने से पहले लिंटर के साथ फ़ॉन्ट फ़ाइल को मान्य करें
GlyphNotFoundExceptionGID सीमा से बाहरID द्वारा पहुँचने से पहले num_glyphs की जाँच करें

FAQ

क्या FontLoader WOFF2 का समर्थन करता है?

हाँ। FontLoader.open() और FontLoader.load() दोनों WOFF2 फ़ाइलें स्वीकार करते हैं और फ़ॉर्मेट को स्वतः पहचान लेते हैं।

क्या मैं URL से फ़ॉन्ट लोड कर सकता हूँ?

सीधे नहीं। फ़ॉन्ट बाइट्स को urllib या requests से डाउनलोड करें और उन्हें FontLoader.load(bytes) को पास करें।

क्या लोडिंग थ्रेड-सुरक्षित है?

प्रत्येक FontLoader.open() कॉल एक स्वतंत्र Font ऑब्जेक्ट लौटाता है। अलग-अलग ऑब्जेक्ट्स पर समकालिक कॉल सुरक्षित हैं।


API Reference सारांश

क्लास / मेथडविवरण
FontLoader.open(path)फ़ाइल पथ से फ़ॉन्ट लोड करें
FontLoader.load(data)कच्चे बाइट्स से फ़ॉन्ट लोड करें
Font.font_nameपूर्ण PostScript फ़ॉन्ट नाम
Font.font_familyफ़ॉन्ट परिवार का नाम
Font.font_styleफ़ॉन्ट शैली नाम
Font.num_glyphsकुल ग्लिफ़ गिनती
FontEncoding.unicode_to_gid(cp)Unicode कोड पॉइंट को ग्लिफ़ ID से मैप करें
FontEncoding.get_all_codepoints()सभी Unicode कोड पॉइंट्स के साथ ग्लिफ़ मैपिंग्स
GlyphAccessor.get_glyph_by_id(gid)ID से ग्लिफ़ प्राप्त करें
GlyphAccessor.get_glyph_by_unicode(cp)Unicode कोड पॉइंट से ग्लिफ़ प्राप्त करें
GlyphAccessor.get_glyphs_for_text(text)टेक्स्ट स्ट्रिंग के लिए ग्लिफ़्स प्राप्त करें
GlyphAccessor.get_all_glyph_ids()फ़ॉन्ट में सभी glyph IDs की सूची बनाएं
TtfFont.is_variableक्या फ़ॉन्ट में variable font डेटा है
TtfFont.variable_axesप्रत्येक variation axis के लिए VariableAxis ऑब्जेक्ट्स की सूची
TtfFont.get_axis(tag)चार-अक्षर टैग द्वारा एकल axis खोजें
TtfFont.named_instancesफ़ॉन्ट की fvar तालिका में परिभाषित नामित इंस्टेंसेस
SmartInstancer(font)अक्ष और इंस्टेंस क्वेरीज़ को लपेटने वाला उच्च-स्तरीय सहायक

यह भी देखें

 हिन्दी