कोर फ़ॉन्ट प्रबंधन
कोर फ़ॉन्ट प्रबंधन
यह गाइड दर्शाता है कि फ़ॉन्ट को फ़ाइल पाथ या बाइट एरेज़ से कैसे लोड किया जाए, मेटाडेटा प्रॉपर्टीज़ को पढ़ा जाए, यूनिकोड कोड पॉइंट्स को ग्लिफ़ 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 | विकृत बाइनरी डेटा | लोड करने से पहले लिंटर के साथ फ़ॉन्ट फ़ाइल को मान्य करें |
GlyphNotFoundException | GID सीमा से बाहर | 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) | अक्ष और इंस्टेंस क्वेरीज़ को लपेटने वाला उच्च-स्तरीय सहायक |