Fonts
Fonts
यह गाइड दिखाता है कि दस्तावेज़ में संदर्भित फ़ॉन्ट्स की जाँच कैसे करें, एम्बेडेड फ़ॉन्ट डेटा कैसे निकालें, और TrueType फ़ॉन्ट एम्बेडिंग को सहेजते समय Aspose.Words FOSS for .NET के साथ कैसे नियंत्रित करें। Aspose.Words FOSS for .NET लोड किए गए दस्तावेज़ द्वारा संदर्भित प्रत्येक फ़ॉन्ट को FontInfoCollection के माध्यम से ट्रैक करता है, और प्रति-फ़ॉन्ट मेटाडेटा, एम्बेडेड फ़ॉन्ट एक्सट्रैक्शन, और सहेजते समय एम्बेडिंग नियंत्रणों को FontInfo के माध्यम से उजागर करता है। Document.FontSettings और LoadOptions.FontSettings (इस संस्करण में जानबूझकर न्यूनतम) FontSettings प्रवेश बिंदु प्रदान करते हैं।
दस्तावेज़ में उपयोग किए गए फ़ॉन्ट्स का निरीक्षण
DocumentBase.FontInfos (Document द्वारा विरासत में मिला) एक FontInfoCollection लौटाता है जो दस्तावेज़ में कहीं भी संदर्भित प्रत्येक फ़ॉन्ट का वर्णन करता है। इसे नाम से इंडेक्स करें (जैसे fontInfos["Arial"]), Contains(name) से जाँचें कि यह मौजूद है या नहीं, Count से उनकी संख्या गिनें, या GetEnumerator() के माध्यम से पूरी संग्रह को सूचीबद्ध करें।
फ़ॉन्ट गुण और वर्गीकरण
प्रत्येक FontInfo एक फ़ॉन्ट का वर्णन करता है: Name और AltName इसे पहचानते हैं, Family इसे FontFamily enum के माध्यम से वर्गीकृत करता है (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch इसका FontPitch रिपोर्ट करता है (Default, Fixed, Variable), और IsTrueType, Charset, तथा Panose निचले स्तर के फ़ॉन्ट-मैचिंग डेटा को उजागर करते हैं।
एंबेडेड फ़ॉन्ट निष्कर्षण
यदि किसी दस्तावेज़ में एम्बेडेड फ़ॉन्ट्स हैं, तो FontInfo.GetEmbeddedFont(format, style) एक दिए गए EmbeddedFontFormat (EmbeddedOpenType या OpenType) और EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic) के लिए कच्चे एम्बेडेड फ़ॉन्ट बाइट्स लौटाता है। GetEmbeddedFontAsOpenType(style) फ़ॉन्ट को सीधे OpenType फ़ॉर्मेट में परिवर्तित करके लौटाता है, चाहे वह मूल रूप से कैसे एम्बेड किया गया हो।
फ़ॉन्ट एम्बेडिंग लाइसेंसिंग अधिकार
फ़ॉन्ट को निकालने या पुनः-एम्बेड करने से पहले, FontInfo.EmbeddingLicensingRights जाँचें, जो एक FontEmbeddingLicensingRights ऑब्जेक्ट है। EmbeddingUsagePermissions FontEmbeddingUsagePermissions enum (Installable, RestrictedLicense, PrintAndPreview, Editable) के माध्यम से लाइसेंस स्तर रिपोर्ट करता है, जबकि NoSubsetting और BitmapEmbeddingOnly फ़ॉन्ट विक्रेता द्वारा निर्धारित अतिरिक्त प्रतिबंधों को चिह्नित करते हैं।
सेव पर फ़ॉन्ट एम्बेडिंग को नियंत्रित करना
FontInfoCollection में दस्तावेज़-स्तर के एम्बेडिंग स्विच भी होते हैं: EmbedTrueTypeFonts को true पर सेट करें ताकि दस्तावेज़ सहेजे जाने पर उपयोग किए गए सभी TrueType फ़ॉन्ट एम्बेड हो जाएँ, EmbedSystemFonts को सेट करें ताकि सामान्यतः किसी भी प्रणाली पर मौजूद मानने वाले फ़ॉन्ट शामिल हों, और SaveSubsetFonts को सेट करें ताकि संपूर्ण फ़ॉन्ट के बजाय केवल वास्तविक उपयोग किए गए ग्लिफ़ एम्बेड हों।
FontSettings इस संस्करण में दायरा
Document.FontSettings और LoadOptions.FontSettings दोनों एक FontSettings ऑब्जेक्ट लौटाते हैं, और FontSettings.DefaultInstance एक साझा डिफ़ॉल्ट इंस्टेंस को उजागर करता है। इस FOSS संस्करण में, FontSettings का API सतह केवल उस डिफ़ॉल्ट-इंस्टेंस प्रॉपर्टी तक सीमित है — फ़ोल्डर-आधारित और सिस्टम फ़ॉन्ट-स्रोत समाधान, जो Aspose.Words में अन्यत्र पृष्ठ लेआउट और रेंडरिंग के लिए फ़ॉन्ट्स को बदलने या हल करने के लिए उपयोग किया जाता है, यहाँ मौजूद नहीं है, क्योंकि पृष्ठ लेआउट और रेंडरिंग इस संस्करण के दायरे के बाहर हैं। यहाँ फ़ॉन्ट हैंडलिंग का अर्थ है मेटाडेटा निरीक्षण और एम्बेडिंग, रेंडरिंग के लिए फ़ॉन्ट प्रतिस्थापन नहीं।
टिप्स और सर्वोत्तम प्रथाएँ
- हमेशा
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsजाँचें इससे पहले कि आप एम्बेडेड फ़ॉन्ट को निकालें या पुनः वितरित करें — कुछ फ़ॉन्ट केवलRestrictedLicenseयाPrintAndPreviewलाइसेंस वाले होते हैं। - जब आपको स्रोत दस्तावेज़ ने फ़ॉन्ट को कैसे एम्बेड किया है, चाहे कुछ भी हो, एक सुसंगत आउटपुट फ़ॉर्मेट चाहिए हो तो
GetEmbeddedFontAsOpenType()का उपयोग करें (EmbeddedOpenTypeबनामOpenType)। - केवल कुछ ही ग्लिफ़्स उपयोग करने वाले फ़ॉन्ट एम्बेड करते समय आउटपुट फ़ाइल आकार को कम करने के लिए
FontInfoCollection.SaveSubsetFontsकोtrueपर सेट करें। - जब आपको केवल फ़ॉन्ट की उपस्थिति की जाँच करनी हो, तो
FontInfoCollection.Contains(name)को इंडेक्स करने और विफल लुकअप (उदाहरण के लिएfontInfos[name]) को संभालने की तुलना में यह सस्ता है।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
GetEmbeddedFont() कोई उपयोगी डेटा नहीं लौटाता है | संदर्भित फ़ॉन्ट वास्तव में दस्तावेज़ में एम्बेडेड नहीं है | फ़ॉन्ट डेटा मौजूद होने का अनुमान लगाने से पहले दस्तावेज़ की एम्बेडिंग सेटिंग्स की जाँच करें |
नाम द्वारा FontInfoCollection में इंडेक्सिंग करने पर कुछ नहीं मिलता | फ़ॉन्ट नाम ठीक-ठीक मेल नहीं खाता, केस सहित | FontInfoCollection को GetEnumerator() के साथ गिनें ताकि सटीक Name स्ट्रिंग की पुष्टि की जा सके |
| अपेक्षित फ़ॉन्ट प्रतिस्थापन/समाधान API गुम हैं | फ़ोल्डर- और सिस्टम-आधारित फ़ॉन्ट स्रोत समाधान इस FOSS संस्करण में लागू नहीं किया गया है | मेटाडेटा और एम्बेडिंग के लिए केवल FontInfo/FontInfoCollection का उपयोग करें; रेंडरिंग के लिए फ़ॉन्ट प्रतिस्थापन इस संस्करण के दायरे में शामिल नहीं है |
FAQ
मैं किसी दस्तावेज़ द्वारा संदर्भित प्रत्येक फ़ॉन्ट की सूची कैसे प्राप्त करूँ?
GetEnumerator() के माध्यम से Document.FontInfos (एक FontInfoCollection) को सूचीबद्ध करें, या नाम द्वारा उसमें इंडेक्स करके किसी विशिष्ट को खोजें (उदाहरण के लिए fontInfos["Arial"])।
क्या मैं किसी दस्तावेज़ से एम्बेडेड फ़ॉन्ट के कच्चे बाइट्स निकाल सकता हूँ?
हाँ, यदि फ़ॉन्ट एम्बेडेड है — मूल एम्बेडेड फॉर्मेट के लिए FontInfo.GetEmbeddedFont(format, style) को कॉल करें, या परिणाम को OpenType में सामान्यीकृत करने के लिए GetEmbeddedFontAsOpenType(style) का उपयोग करें।
मैं दस्तावेज़ सहेजते समय सुनिश्चित कैसे करूँ कि फ़ॉन्ट एम्बेडेड हों?
सहेजने से पहले FontInfoCollection.EmbedTrueTypeFonts को true पर सेट करें; यदि आपको यह भी चाहिए कि फ़ॉन्ट किसी भी सिस्टम पर मौजूद हों, तो EmbedSystemFonts जोड़ें, और केवल उपयोग में आने वाले ग्लिफ़्स को एम्बेड करने के लिए SaveSubsetFonts जोड़ें।
क्या यह संस्करण रेंडरिंग के लिए कस्टम फ़ोल्डर से फ़ॉन्ट हल करने का समर्थन करता है?
नहीं — फ़ोल्डर- और सिस्टम-आधारित फ़ॉन्ट स्रोत समाधान (FontSettings स्रोत कॉन्फ़िगरेशन) यहाँ लागू नहीं किया गया है, क्योंकि यह पेज लेआउट और रेंडरिंग की सेवा के लिए है, जो इस FOSS संस्करण के दायरे से बाहर हैं।
FontEmbeddingLicensingRights.NoSubsetting का क्या अर्थ है?
यह फ़ॉन्ट विक्रेता के एम्बेडिंग अधिकारों द्वारा रिपोर्ट किया गया एक लाइसेंसिंग फ़्लैग है: जब true हो, तो फ़ॉन्ट को केवल उपयोग में आने वाले ग्लिफ़्स तक सीमित नहीं किया जा सकता।
API Reference सारांश
| क्लास / मेथड | विवरण |
|---|---|
FontInfoCollection | एक दस्तावेज़ में संदर्भित फ़ॉन्ट; नाम द्वारा इंडेक्सर (fontInfos[name]), Contains(), Count, GetEnumerator(), साथ ही EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | एक फ़ॉन्ट का मेटाडेटा: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | एम्बेडेड font bytes निकालें |
EmbeddedFontFormat / EmbeddedFontStyle | एंबेडेड फ़ॉन्ट के फ़ॉर्मेट और शैली वैरिएंट की पहचान करने वाले Enums |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | फ़ॉन्ट के अनुसार रिपोर्ट किए गए एम्बेडिंग लाइसेंस प्रतिबंध |
FontSettings | न्यूनतम फ़ॉन्ट-सेटिंग्स प्रवेश बिंदु (Document.FontSettings, LoadOptions.FontSettings); इस संस्करण में फ़ॉन्ट-स्रोत समाधान नहीं है |