تحديد موقع خطوط تروتايب
يصف هذا الموضوع السلوك الافتراضي لـ Aspose.Words عندما يبحث عن خطوط TrueType، بما في ذلك الاختلافات الخاصة بنظام التشغيل، ويوضح كيفية تحديد مصادر خطوط المستخدم.
يتم استخدام فئة FontSourceBase لتحديد مصادر الخطوط المختلفة. هناك عدة تطبيقات لفئة FontSourceBase:
تفاصيل التنفيذ لبعض الفئات موضحة أدناه.
تحميل الخطوط من النظام
هناك فئة SystemFontSource خاصة يتم استخدامها دائمًا بشكل افتراضي. وهو يمثل جميع خطوط TrueType المثبتة على النظام. لذلك، من الممكن إنشاء قائمة مصادر باستخدام SystemFontSource وأي مصادر أخرى مطلوبة:
يتم تعريف مثيل واحد لفئة SystemFontSource افتراضيًا في FontSettings. في أنظمة التشغيل المختلفة، قد توجد الخطوط في أماكن مختلفة. ومع ذلك، فإن استخدام مثيل FontSettings لكل مستند ليس هو الحل الأمثل. في معظم الحالات، يجب أن يكون استخدام default_instance كافيًا.
تكون المثيلات لكل مستند مطلوبة فقط إذا كان مطلوبًا استخدام مصادر خطوط مختلفة لمستندات مختلفة، وهي حالة نادرة. يؤدي استخدام العديد من مثيلات FontSettings إلى تقليل الأداء لأنها لا تشارك ذاكرة التخزين المؤقت.
حيث يبحث Aspose.Words عن خطوط TrueType على Windows
في معظم الحالات، لا يواجه مستخدمو Windows مشكلات كبيرة مع الخطوط المفقودة أو التخطيطات غير الصحيحة. عادةً، يمر Aspose.Words خلال المستند، وعندما يواجه رابط الخط، فإنه يجلب بيانات الخط من مجلد النظام بنجاح.
في Windows، يأخذ Aspose.Words أولاً جميع الخطوط المتوفرة من المجلد _%windir%\Fonts. سيعمل هذا الإعداد معك في معظم الأوقات. يمكنك فقط تحديد مجلدات الخطوط الخاصة بك إذا كنت بحاجة إلى ذلك. يبحث Aspose.Words لـ .NET أيضًا عن الخطوط الإضافية المسجلة في مفتاح التسجيل HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts. بالإضافة إلى ذلك، يتيح Windows 10 تثبيت الخطوط للمستخدم الحالي. يتم وضع الخطوط في المجلد %userprofile%\AppData\Local\Microsoft\Windows\Fonts ويتم تحديدها أيضًا في السجل HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Fonts، حيث سيبحث Aspose.Words عن هذه الخطوط.
إذا كان المستند يحتوي على خطوط مضمنة، فيمكن لـ Aspose.Words قراءة بيانات الخط ذات الصلة من المستند واستخدامها لإنشاء تخطيط المستند. قد تحتوي المستندات أيضًا على روابط لخطوط غير موجودة في مجلدات النظام، وفي هذه الحالة تعمل السيناريوهات التالية:
- يمكن للمستخدمين إعداد مصادر خطوط جديدة من خلال فئة FontSettings
- يمكن أن يحاول Aspose.Words استبدال الخط المفقود بخط مماثل
الخطوط على الأنظمة غير التابعة لـ Windows
سيبحث Aspose.Words عن الخطوط في مجلدات خطوط النظام. يمكن رؤية قائمة بهذه المجلدات بواسطة طريقة SystemFontSource.get_system_font_folders. إذا لم يتم العثور على خطوط مدعومة، فسيستخدم Aspose.Words الخط الافتراضي المدمج Fanwood.ttf.
نظرًا لاختلاف مقاييس الخط في نظام Windows ونظام التشغيل غير Windows، فإن Aspose.Words يبذل كل ما في وسعه للعثور على خط مشابه وإنشاء تخطيط مشابه للخط الأصلي. علي أية حال هي ليست دائما “ممكنة. في هذه الحالات، يجب استخدام فئة FontSettings لإضافة خطوط مخصصة أو قواعد استبدال.
حيث يبحث Aspose.Words عن خطوط TrueType على Linux
قد تقوم توزيعات Linux المختلفة بتخزين الخطوط في مجلدات مختلفة. يبحث Aspose.Words عن الخطوط في عدة مواقع. افتراضيًا، يبحث Aspose.Words عن الخطوط في جميع المواقع التالية: /usr/share/fonts
/usr/local/share/fonts
/usr/X11R6/lib/X11/fonts
. سيعمل هذا السلوك الافتراضي مع معظم توزيعات Linux، ولكن ليس من المضمون أن يعمل طوال الوقت، وفي هذه الحالة قد تحتاج إلى تحديد موقع خطوط نوع true بشكل صريح. للقيام بذلك، تحتاج إلى معرفة مكان تثبيت خطوط TrueType على توزيع Linux الخاص بك.
حيث يبحث Aspose.Words عن خطوط TrueType على نظام التشغيل Mac OS X
يبحث Aspose.Words عن الخطوط في المجلد /Library/Fonts، وهو الموقع القياسي لخطوط TrueType على نظام التشغيل Mac OS X. على الرغم من أن هذا الإعداد سيعمل معك في معظم الأوقات، فقد تحتاج إلى تحديد مجلدات الخطوط الخاصة بك في المجلد الحالة عندما تحتاج إلى ذلك.
تحميل الخطوط من المجلد
إذا كان المستند الذي تتم معالجته يحتوي على روابط لخطوط غير موجودة في النظام، أو إذا كنت لا تريد إضافتها إلى مجلد النظام، أو إذا كنت تفتقر إلى الأذونات، فإن الحل الأفضل هو إضافة مجلد بخطوطك الخاصة باستخدام طريقة FontSettings.set_fonts_sources. سيسمح هذا باستبدال مصدر النظام بمصدر مستخدم. لن يقوم Aspose.Words بعد الآن بالبحث عن الخطوط في السجل أو مجلد Windows\Font وبدلاً من ذلك سيبحث فقط عن الخطوط الموجودة داخل المجلد (المجلدات) المحدد. ستقوم طريقة FontSettings.get_font_sources بإرجاع القيم المقابلة.
تحديد مجلد خط واحد أو عدة مجلدات
تُعد أساليب FontSettings.set_fonts_folder وFontSettings.set_fonts_folders اختصارات لأسلوب FontSettings.set_font_sources مع مثيل واحد أو أكثر من مثيلات FolderFontSource. تُستخدم هذه الطرق للإشارة إلى المكان الذي يجب أن يبحث فيه Aspose.Words عن الخطوط. إذا كان المجلد غير موجود أو لا يمكن الوصول إليه، فسيتجاهل Aspose.Words هذا المجلد فقط. إذا تم تجاهل كافة المجلدات، بما في ذلك مصادر استبدال الخط، فسيستخدم Aspose.Words خط Fanwood كخط افتراضي.
يوضح المثال التالي كيفية تعيين المجلد أو المصدر، الذي سيستخدمه Aspose.Words لاحقًا للبحث عن خطوط TrueType أثناء عرض الخطوط أو تضمينها:
يمكنك تنزيل ملف القالب الخاص بهذا المثال من Aspose.Words GitHub.
تتحكم معلمة منطقية إضافية فيما إذا كان سيتم فحص الخطوط بشكل متكرر عبر جميع المجلدات، وبالتالي فحص جميع المجلدات الفرعية لمجلد محدد. يوضح المثال التالي كيفية تعيين Aspose.Words للبحث في مجلدات متعددة عن خطوط TrueType عند عرض الخطوط أو تضمينها:
لاحظ الأولويات. إذا كانت هناك خطوط بنفس اسم العائلة والنمط في مصادر خطوط مختلفة، فسيقوم Aspose.Words بتحديد الخط من المصدر ذي الأولوية الأعلى. راجع وصف حقل “الأولوية” أدناه.
إذا كنت لا ترغب في استخدام خطوط النظام على الإطلاق، فإن Aspose.Words يسمح لك بتجاهلها واستخدام الخطوط الخاصة بك فقط:
الملكية ذات الأولوية
يتم استخدام الخاصية أولوية عندما تكون هناك خطوط لها نفس اسم العائلة والنمط في مصادر خطوط مختلفة. في هذه الحالة، يقوم Aspose.Words بتحديد الخط من المصدر ذي القيمة ذات الأولوية الأعلى. على سبيل المثال، يوجد إصدار قديم من الخط في مجلد النظام وقام العميل بإضافة إصدار جديد من نفس الخط في مجلد مخصص.
الحصول على قائمة الخطوط المتاحة
إذا كنت ترغب في الحصول على قائمة الخطوط المتاحة، والتي، على سبيل المثال، يمكن استخدامها لعرض مستند PDF، فيمكنك استخدام طريقة get_available_fonts، كما هو موضح في مثال التعليمات البرمجية التالي. تحدد فئة PhysicalFontInfo معلومات حول الخط الفعلي المتوفر لمحرك خطوط Aspose.Words: