Fonts

Fonts

هذا الدليل يوضح كيفية فحص الخطوط المشار إليها في مستند، استخراج بيانات الخط المدمجة، والتحكم في تضمين الخط TrueType عند الحفظ باستخدام Aspose.Words FOSS لـ .NET. Aspose.Words FOSS لـ .NET يتتبع كل خط مشار إليه في مستند تم تحميله عبر FontInfoCollection، ويكشف عن البيانات الوصفية لكل خط، استخراج الخط المدمج، والتحكم في التضمين عند الحفظ عبر FontInfo. يوفر Document.FontSettings وLoadOptions.FontSettings نقطة الدخول FontSettings (الحد الأدنى المقصود، في هذا الإصدار).


فحص الخطوط المستخدمة في مستند

DocumentBase.FontInfos (الموروثة من Document) تُرجِع FontInfoCollection يصف كل خط مُشار إليه في أي مكان في المستند. يمكن الفهرسة إليه بالاسم (مثلاً fontInfos["Arial"])، اختبار وجوده باستخدام Contains(name)، عدّها باستخدام Count، أو تعداد المجموعة كلها عبر GetEnumerator().


خصائص الخط وتصنيفه

كل FontInfo يصف خطًا واحدًا: Name وAltName يحددان هويته، Family يصنفه عبر تعداد FontFamily (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 (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
واجهات برمجة التطبيقات المتوقعة لاستبدال/حل الخطوط مفقودةلم يتم تنفيذ حل مصدر الخطوط القائم على المجلد والنظام في هذه النسخة المفتوحة المصدراستخدم FontInfo/FontInfoCollection للبيانات الوصفية والتضمين فقط؛ استبدال الخطوط لأغراض العرض ليس ضمن نطاق هذه النسخة

FAQ

كيف يمكنني سرد كل الخطوط التي يشير إليها المستند؟

قم بتعداد Document.FontInfos (وهو FontInfoCollection) عبر GetEnumerator()، أو افهرس إليه بالاسم للبحث عن واحد محدد (مثل fontInfos["Arial"]).

هل يمكنني استخراج البايتات الخام للخط المضمّن من المستند؟

نعم، إذا كان الخط مضمّنًا — استدعِ FontInfo.GetEmbeddedFont(format, style) للحصول على الصيغة المضمّنة الأصلية، أو GetEmbeddedFontAsOpenType(style) لتطبيع النتيجة إلى OpenType.

كيف أتأكد من أن الخطوط مضمّنة عند حفظ المستند؟

عيّن 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()استخرج بايتات الخط المضمنة
EmbeddedFontFormat / EmbeddedFontStyleالتعدادات التي تحدد تنسيق الخط المضمّن وتنوع النمط
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissionsقيود ترخيص التضمين المبلّغ عنها لكل خط
FontSettingsنقطة دخول إعدادات الخط الدنيا (Document.FontSettings, LoadOptions.FontSettings)؛ لا يتم حل مصدر الخط في هذا الإصدار

انظر أيضاً

 العربية