تخصيص خطوط PowerPoint في C++
نظرة عامة
Aspose.Slides يتيح لك استخدام الخطوط المخصصة في العروض التقديمية دون الحاجة إلى تثبيتها على نظام التشغيل. يمكنك تحميل الخطوط من مجلدات مخصصة، أو توفير الخطوط لعروض تقديمية محددة عبر مصادر الخطوط على مستوى المستند، أو تحميل الخطوط الخارجية مباشرة من البيانات الثنائية.
تُستعمل الخطوط التي تم تحميلها عندما يتم عرض أو تصدير العرض، على سبيل المثال إلى PDF أو صور أو صيغ أخرى مدعومة. يساعد ذلك في الحفاظ على اتساق مخرجات العرض عبر بيئات مختلفة. توضح المقالة أيضاً كيفية فحص مجلدات الخطوط التي يستخدمها Aspose.Slides وكيفية مسح ذاكرة التخزين المؤقت للخطوط بعد العمل مع الخطوط الخارجية.
تسجيل الخطوط المخصصة للتصيير منفصل عن تضمين الخطوط داخل ملف PPTX. إذا كان لابد من تخزين الخط داخل العرض نفسه، استخدم ميزات تضمين الخطوط صراحةً.
يمكن لمظهر العرض الإشارة إلى عائلات خطوط مختلفة لأنظمة كتابة فردية. تخزن هذه الخرائط أسماء الخطوط لكنها لا تثبت أو تحمل ملفات الخط. راجع خطوط السمة المحددة للسكريبت لإدارة هذه الخرائط، واستخدم خيارات التحميل أدناه لجعل الخطوط المشار إليها متاحة لتصيير متسق.
ملاحظة
Aspose Slides يتيح لك تحميل هذه الخطوط باستخدام FontsLoader::LoadExternalFonts:
تحميل الخطوط المخصصة
Aspose.Slides يتيح لك تحميل الخطوط المستخدمة في عرض تقديمي دون تثبيتها على النظام. يؤثر ذلك على مخرجات التصدير—مثل PDF، الصور، والصيغ المدعومة الأخرى—بحيث تبدو المستندات الناتجة متسقة عبر البيئات. يتم تحميل الخطوط من أدلة مخصصة.
- حدد مجلدًا أو أكثر يحتوي على ملفات الخط.
- استدعِ الطريقة الساكنة FontsLoader::loadExternalFonts لتحميل الخطوط من تلك المجلدات.
- حمّل واعرض/صدّر العرض التقديمي.
- استدعِ FontsLoader.clearCache لمسح ذاكرة التخزين المؤقت للخطوط.
يوضح المثال البرمجي التالي عملية تحميل الخطوط:
#include <DOM/Fonts/FontsLoader.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/array.h>
#include <system/string.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
// حدد المجلدات التي تحتوي على ملفات الخطوط المخصصة.
String externalFontFolder = u"assets/fonts";
auto fontFolders = MakeObject<Array<String>>(1, externalFontFolder );
// حمّل الخطوط المخصصة من المجلدات المحددة.
FontsLoader::LoadExternalFonts(fontFolders);
auto presentation = MakeObject<Presentation>(u"sample.pptx");
// اعرض/صدّر العرض التقديمي (على سبيل المثال إلى PDF أو صور أو صيغ أخرى) باستخدام الخطوط المحمّلة.
presentation->Save(u"output.pdf", SaveFormat::Pdf);
presentation->Dispose();
// امسح ذاكرة التخزين المؤقت للخطوط بعد الانتهاء من العمل.
FontsLoader::ClearCache();
ملاحظة
FontsLoader::loadExternalFonts يضيف مجلدات إضافية إلى مسارات بحث الخطوط، لكنه لا يغيّر ترتيب تهيئة الخطوط. يتم تهيئة الخطوط بهذا الترتيب:
- مسار خطوط نظام التشغيل الافتراضي.
- المسارات التي تم تحميلها عبر FontsLoader.
الحصول على مجلدات الخطوط المخصصة
Aspose.Slides يوفر FontsLoader::GetFontFolders() للسماح لك باكتشاف مجلدات الخطوط. تُعيد هذه الطريقة المجلدات التي أضيفت عبر طريقة LoadExternalFonts ومجلدات خطوط النظام.
يعرض هذا الكود C++ كيفية استخدام طريقة FontsLoader::GetFontFolders():
#include <DOM/Fonts/FontsLoader.h>
using namespace Aspose::Slides;
// تقوم هذه السطر بطباعة المجلدات التي يتم فحصها لملفات الخطوط.
// هذه هي المجلدات التي تم إضافتها عبر طريقة LoadExternalFonts ومجلدات خطوط النظام.
auto fontFolders = FontsLoader::GetFontFolders();
تحديد الخطوط المخصصة المستخدمة مع عرض تقديمي
Aspose.Slides يوفر الخاصية LoadOptions::set_DocumentLevelFontSources للسماح لك بتحديد الخطوط الخارجية التي سيتم استخدامها مع العرض التقديمي.
يعرض هذا الكود C++ كيفية استخدام الخاصية LoadOptions::set_DocumentLevelFontSources:
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <IFontSources.h>
#include <system/io/file.h>
#include <system/string.h>
using namespace Aspose::Slides;
using namespace System;
using namespace System::IO;
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++ عملية تحميل الخط إلى مصفوفة بايتات:
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <IFontSources.h>
#include <system/io/file.h>
#include <system/string.h>
using namespace Aspose::Slides;
using namespace System;
using namespace System::IO;
// مسار دليل المستندات
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. إذا كنت بحاجة إلى أن يُحمل الخط داخل ملف العرض، يجب عليك استخدام ميزات التضمين الصريحة.
هل يمكنني التحكم في سلوك السقوط عندما يفتقد الخط المخصص بعض الرموز؟
نعم. قم بتكوين استبدال الخط، قواعد الاستبدال، ومجموعات السقوط لتحديد الخط الذي يُستخدم عندما تكون الرموز المطلوبة غير موجودة.
هل يمكنني استخدام الخطوط في حاويات Linux/Docker دون تثبيتها على مستوى النظام؟
نعم. يمكنك الإشارة إلى مجلدات الخطوط الخاصة بك أو تحميل الخطوط من مصفوفات بايتات. هذا يلغي أي اعتماد على أدلة الخطوط النظامية داخل صورة الحاوية.
ماذا عن الترخيص—هل يمكنني تضمين أي خط مخصص دون قيود؟
أنت مسؤول عن الامتثال لترخيص الخط. تختلف الشروط؛ بعض التراخيص تحظر التضمين أو الاستخدام التجاري. تأكد دائمًا من مراجعة اتفاقية ترخيص الخط قبل توزيع المخرجات.