FontSubstitutionSettings

FontSubstitutionSettings class

يحدد إعدادات آلية استبدال الخط.

لمعرفة المزيد، قم بزيارةالعمل مع الخطوط مقالة توثيقية.

public class FontSubstitutionSettings

الخصائص

اسموصف
DefaultFontSubstitution { get; }الإعدادات المتعلقة بقاعدة استبدال الخط الافتراضية.
FontConfigSubstitution { get; }الإعدادات المتعلقة بقاعدة استبدال تكوين الخط.
FontInfoSubstitution { get; }الإعدادات المتعلقة بقاعدة استبدال معلومات الخط.
FontNameSubstitution { get; }الإعدادات المتعلقة بقاعدة استبدال اسم الخط.
TableSubstitution { get; }الإعدادات المتعلقة بقاعدة استبدال الجدول.

ملاحظات

تتكون عملية استبدال الخط من عدة قواعد يتم فحصها واحدة تلو الأخرى بترتيب معين. إذا لم تتمكن القاعدة الأولى من حل الخط، فسيتم فحص القاعدة الثانية وهكذا.

ترتيب القواعد كما يلي: 1. قاعدة استبدال اسم الخط (ممكّنة افتراضيًا) 2. قاعدة استبدال تكوين الخط (معطلة افتراضيًا) 3. قاعدة استبدال الجدول (ممكّنة افتراضيًا) 4. قاعدة استبدال معلومات الخط (ممكّنة افتراضيًا) 5. قاعدة الخط الافتراضية (ممكّنة افتراضيًا)

لاحظ أن قاعدة استبدال معلومات الخط ستحل دائمًا الخط إذاFontInfo متاح وسيتجاوز قاعدة الخط الافتراضية. إذا كنت تريد استخدام قاعدة الخط الافتراضية، فيجب عليك تعطيل قاعدة استبدال معلومات الخط .

لاحظ أن قاعدة استبدال تكوين الخط سوف تحل الخط في معظم الحالات وبالتالي تتجاوز كافة القواعد الأخرى.

أمثلة

يوضح كيفية الوصول إلى مصدر خط نظام المستند وتعيين بدائل الخطوط.

Document doc = new Document();
doc.FontSettings = new FontSettings();

// بشكل افتراضي، يحتوي المستند الفارغ دائمًا على مصدر خط النظام.
Assert.AreEqual(1, doc.FontSettings.GetFontsSources().Length);

SystemFontSource systemFontSource = (SystemFontSource) doc.FontSettings.GetFontsSources()[0];
Assert.AreEqual(FontSourceType.SystemFonts, systemFontSource.Type);
Assert.AreEqual(0, systemFontSource.Priority);

PlatformID pid = Environment.OSVersion.Platform;
bool isWindows = (pid == PlatformID.Win32NT) || (pid == PlatformID.Win32S) ||
                 (pid == PlatformID.Win32Windows) || (pid == PlatformID.WinCE);
if (isWindows)
{
    const string fontsPath = @"C:\WINDOWS\Fonts";
    Assert.AreEqual(fontsPath.ToLower(),
        SystemFontSource.GetSystemFontFolders().FirstOrDefault()?.ToLower());
}

foreach (string systemFontFolder in SystemFontSource.GetSystemFontFolders())
{
    Console.WriteLine(systemFontFolder);
}

// قم بتعيين خط موجود في دليل خطوط Windows كبديل للخط غير الموجود.
doc.FontSettings.SubstitutionSettings.FontInfoSubstitution.Enabled = true;
doc.FontSettings.SubstitutionSettings.TableSubstitution.AddSubstitutes("Kreon-Regular", new[] {"Calibri"});

Assert.AreEqual(1,
    doc.FontSettings.SubstitutionSettings.TableSubstitution.GetSubstitutes("Kreon-Regular").Count());
Assert.Contains("Calibri",
    doc.FontSettings.SubstitutionSettings.TableSubstitution.GetSubstitutes("Kreon-Regular").ToArray());

// بدلاً من ذلك، يمكننا إضافة مصدر خط المجلد حيث يحتوي المجلد المقابل على الخط.
FolderFontSource folderFontSource = new FolderFontSource(FontsDir, false);
doc.FontSettings.SetFontsSources(new FontSourceBase[] {systemFontSource, folderFontSource});
Assert.AreEqual(2, doc.FontSettings.GetFontsSources().Length);

// إعادة تعيين مصادر الخطوط لا تزال تتركنا مع مصدر خط النظام بالإضافة إلى البدائل.
doc.FontSettings.ResetFontSources();

Assert.AreEqual(1, doc.FontSettings.GetFontsSources().Length);
Assert.AreEqual(FontSourceType.SystemFonts, doc.FontSettings.GetFontsSources()[0].Type);
Assert.AreEqual(1,
    doc.FontSettings.SubstitutionSettings.TableSubstitution.GetSubstitutes("Kreon-Regular").Count());

أنظر أيضا