C++ में PowerPoint फ़ॉन्ट को कस्टमाइज़ करें

समीक्षा

Aspose.Slides आपको प्रस्तुतियों में कस्टम फ़ॉन्ट्स का उपयोग करने की अनुमति देता है बिना उन्हें ऑपरेटिंग सिस्टम पर इंस्टॉल किए। आप फ़ॉन्ट्स को कस्टम फ़ोल्डरों से लोड कर सकते हैं, दस्तावेज़-स्तर के फ़ॉन्ट स्रोतों के माध्यम से किसी विशिष्ट प्रस्तुतिकरण के लिए फ़ॉन्ट्स प्रदान कर सकते हैं, या बाइनरी डेटा से सीधे बाहरी फ़ॉन्ट्स लोड कर सकते हैं।

लोड किए गए फ़ॉन्ट्स का उपयोग तब किया जाता है जब प्रस्तुति को रेंडर या निर्यात किया जाता है, उदाहरण के रूप में PDF, छवियों और अन्य समर्थित प्रारूपों में। यह विभिन्न वातावरणों में प्रस्तुति आउटपुट की संगति बनाए रखने में मदद करता है। लेख यह भी बताता है कि Aspose.Slides द्वारा उपयोग किए गए फ़ॉन्ट फ़ोल्डरों की जांच कैसे करें और बाहरी फ़ॉन्ट्स के साथ काम करने के बाद फ़ॉन्ट कैश कैसे साफ़ किया जाए।

रेंडरिंग के लिए कस्टम फ़ॉन्ट्स का पंजीकरण PPTX फ़ाइल में फ़ॉन्ट्स को एंबेड करने से अलग है। यदि किसी फ़ॉन्ट को सीधे प्रस्तुति के भीतर संग्रहीत करना आवश्यक है, तो फ़ॉन्ट एंबेडिंग सुविधाओं का स्पष्ट रूप से उपयोग करें।

कस्टम फ़ॉन्ट लोड करें

Aspose.Slides आपको प्रस्तुति में प्रयुक्त फ़ॉन्ट्स को सिस्टम पर इंस्टॉल किए बिना लोड करने की अनुमति देता है। इससे निर्यात आउटपुट—जैसे PDF, छवियां, और अन्य समर्थित प्रारूपों—पर प्रभाव पड़ता है, जिससे परिणामी दस्तावेज़ विभिन्न वातावरणों में समान दिखते हैं। फ़ॉन्ट्स कस्टम डायरेक्टरीज़ से लोड किए जाते हैं।

  1. उन फ़ोल्डरों को निर्दिष्ट करें जिनमें फ़ॉन्ट फ़ाइलें हों।
  2. उन फ़ोल्डरों से फ़ॉन्ट्स लोड करने के लिए स्थिर FontsLoader::loadExternalFonts मेथड को कॉल करें।
  3. प्रस्तुति को लोड और रेंडर/निर्यात करें।
  4. फ़ॉन्ट कैश साफ़ करने के लिए FontsLoader.clearCache को कॉल करें।

निम्नलिखित कोड उदाहरण फ़ॉन्ट लोड करने की प्रक्रिया दर्शाता है:

// कस्टम फ़ॉन्ट फ़ाइलों वाले फ़ोल्डरों को परिभाषित करें.
auto fontFolders = MakeObject<Array<String>>(1, externalFontFolder );

// Load custom fonts from the specified folders.
FontsLoader::LoadExternalFonts(fontFolders);

auto presentation = MakeObject<Presentation>(u"sample.pptx");

// लोड किए गए फ़ॉन्ट्स का उपयोग करके प्रस्तुति को रेंडर/एक्सपोर्ट करें (जैसे PDF, छवियां, या अन्य फ़ॉर्मैट).
presentation->Save(u"output.pdf", SaveFormat::Pdf);
presentation->Dispose();

// काम समाप्त होने के बाद फ़ॉन्ट कैश साफ़ करें.
FontsLoader::ClearCache();

कस्टम फ़ॉन्ट फ़ोल्डर प्राप्त करें

Aspose.Slides आपको फ़ॉन्ट फ़ोल्डर खोजने के लिए FontsLoader::GetFontFolders() प्रदान करता है। यह मेथड LoadExternalFonts मेथड के द्वारा जोड़े गए फ़ोल्डरों और सिस्टम फ़ॉन्ट फ़ोल्डरों को लौटाता है।

यह C++ कोड आपको दर्शाता है कि कैसे FontsLoader::GetFontFolders() मेथड का उपयोग किया जाए:

// यह पंक्ति उन फ़ोल्डरों को आउटपुट करती है जिन्हें फ़ॉन्ट फ़ाइलों के लिए जाँच किया जाता है.
// ये फ़ोल्डर LoadExternalFonts मेथड और सिस्टम फ़ॉन्ट फ़ोल्डरों के माध्यम से जोड़े गए हैं.
auto fontFolders = FontsLoader::GetFontFolders();

प्रस्तुति के साथ उपयोग किए जाने वाले कस्टम फ़ॉन्ट्स निर्दिष्ट करें

Aspose.Slides आपको प्रस्तुति के साथ उपयोग किए जाने वाले बाहरी फ़ॉन्ट्स निर्दिष्ट करने के लिए LoadOptions::set_DocumentLevelFontSources प्रॉपर्टी प्रदान करता है।

यह C++ कोड आपको दिखाता है कि कैसे LoadOptions::set_DocumentLevelFontSources प्रॉपर्टी का उपयोग किया जाए:

auto memoryFont1 = File::ReadAllBytes(u"customfonts\\CustomFont1.ttf");
auto memoryFont2 = File::ReadAllBytes(u"customfonts\\CustomFont2.ttf");

auto loadOptions = System::MakeObject<LoadOptions>();
loadOptions->get_DocumentLevelFontSources()->set_FontFolders(System::MakeArray<String>({u"assets\\fonts", u"global\\fonts"}));
loadOptions->get_DocumentLevelFontSources()->set_MemoryFonts(System::MakeArray<ArrayPtr<uint8_t>>({memoryFont1, memoryFont2}));
{
    auto presentation = System::MakeObject<Presentation>(u"MyPresentation.pptx", loadOptions);
    //प्रस्तुति के साथ कार्य करें
    //CustomFont1, CustomFont2 के साथ-साथ assets\fonts और global\fonts फ़ोल्डरों तथा उनकी सबफ़ोल्डरों में मौजूद फ़ॉन्ट्स प्रस्तुति के लिए उपलब्ध हैं
}

फ़ॉन्ट्स को बाहरी रूप से प्रबंधित करें

Aspose.Slides आपको बाहरी फ़ॉन्ट्स को बाइट एरे में लोड करने की अनुमति देने के लिए FontsLoader::LoadExternalFont मेथड प्रदान करता है।

यह C++ कोड बाइट एरे फ़ॉन्ट लोड करने की प्रक्रिया को दर्शाता है:

// दस्तावेज़ निर्देशिका का पथ
const String outPath = u"../out/SpecifyFontsUsedWithPresentation.pptx";
const String templatePath = u"../templates/AccessSlides.pptx";

ArrayPtr<String> fontsLocation =  MakeArray<System::String>({ u"assets\\fonts", u"global\\fonts" });// ;
ArrayPtr<ArrayPtr<uint8_t>> memoryfontsLocation = MakeArray < ArrayPtr<uint8_t>>({ File::ReadAllBytes(u"../templates/CustomFont1.ttf"), File::ReadAllBytes(u"../templates/CustomFont2.ttf") });

SharedPtr < Aspose::Slides::LoadOptions > loadOptions = MakeObject <Aspose::Slides::LoadOptions>();

loadOptions->get_DocumentLevelFontSources()->set_FontFolders(fontsLocation);
loadOptions->get_DocumentLevelFontSources()->set_MemoryFonts(memoryfontsLocation);
	
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath, loadOptions);

अक्सर पूछे जाने वाले प्रश्न

क्या कस्टम फ़ॉन्ट्स सभी फ़ॉर्मैट्स (PDF, PNG, SVG, HTML) में निर्यात को प्रभावित करते हैं?
हां। जुड़े फ़ॉन्ट्स को रेंडरर सभी निर्यात फ़ॉर्मैट्स में उपयोग करता है।

क्या कस्टम फ़ॉन्ट्स स्वचालित रूप से परिणामी PPTX में एंबेड हो जाते हैं?
नहीं। रेंडरिंग के लिए फ़ॉन्ट पंजीकरण करना PPTX में इसे एंबेड करने के समान नहीं है। यदि आपको फ़ॉन्ट को प्रस्तुति फ़ाइल के अंदर रखना आवश्यक है, तो आपको स्पष्ट रूप से embedding features का उपयोग करना होगा।

क्या मैं कस्टम फ़ॉन्ट में कुछ ग्लिफ़ न होने पर फ़ॉलबैक व्यवहार को नियंत्रित कर सकता हूँ?
हां। आप font substitution, replacement rules, और fallback sets को कॉन्फ़िगर करके यह निर्धारित कर सकते हैं कि अनुरुक्त ग्लिफ़ गायब होने पर कौन सा फ़ॉन्ट उपयोग किया जाए।

क्या मैं Linux/Docker कंटेनरों में फ़ॉन्ट्स का उपयोग बिना उन्हें सिस्टम-व्यापी इंस्टॉल किए कर सकता हूँ?
हां। अपने फ़ॉन्ट फ़ोल्डरों की ओर इशारा करें या फ़ॉन्ट्स को बाइट एरे से लोड करें। यह कंटेनर इमेज में सिस्टम फ़ॉन्ट डायरेक्टरीज़ पर किसी भी निर्भरता को हटा देता है।

लाइसेंसिंग के बारे में क्या—क्या मैं किसी भी कस्टम फ़ॉन्ट को बिना प्रतिबंधों के एंबेड कर सकता हूँ?
आप फ़ॉन्ट लाइसेंसिंग अनुपालन के लिए जिम्मेदार हैं। शर्तें विभिन्न हो सकती हैं; कुछ लाइसेंस एंबेडिंग या व्यावसायिक उपयोग को प्रतिबंधित करते हैं। आउटपुट वितरित करने से पहले हमेशा फ़ॉन्ट के EULA की समीक्षा करें।