Наличност и заместване на шрифта
Contents
[
Hide
]
Текст в документ може да бъде форматиран с различни шрифтове, като например Ариал, времена нов роман, Вердана и други. Когато Aspose.Words рендира документ, той се опитва да избере шрифтовете, които са посочени в документа.
Има обаче ситуации, когато точният шрифт не може да бъде намерен и Aspose.Words трябва да го замени с подобен шрифт. Aspose.Words избира шрифта според следния процес:
- Aspose.Words опитва се да намери шрифт сред наличните източници на шрифтове с точно име на шрифта.
- Aspose.Words опитва се да намери необходимия шрифт сред шрифтовете, вградени в оригиналния документ. Някои формати на документи, като DOCX, могат да съдържат вградени шрифтове.
- Ако Aspose.Words не може да намери необходимия шрифт с точно съвпадение на името и свойството AltName, определено за този шрифт, тогава Aspose.Words ще намери шрифта, дефиниран с AltName от класа FontInfo, който определя информацията за шрифта.
- Ако Aspose.Words не може да намери дефинирания шрифт и AltName не е дефиниран, тогава правилата за заместване на шрифта се прилагат един по един, както е описано по-долу (когато се намери подходяща замяна, процесът на заместване на шрифта спира и следващата стъпка не се изпълнява):
- Aspose.Words ще се опита да Приложи OS настройки на шрифта, ако са налични, като използва помощната програма
FontConfig
. Тази функция не - Windows трябва да се използва с FontConfig-съвместим OS. Почти всеки Юникс-базиран OS вече имаFontConfig
библиотека, която е предназначена да осигури конфигурация на шрифта в цялата система, персонализиране и достъп до приложения. В противен случай тази библиотека може лесно да бъде инсталирана от потребителя.
Aspose.Words знае как да прави заявки за данни и да интерпретира FontConfig резултати за свои собствени цели. По подразбиране помощната програмаFontConfig
е забранена. Можете да го активирате, както следва:
C++fontSettings->get_SubstitutionSettings()->get_FontConfigSubstitution()->set_Enabled(true);
- Следващата стъпка е прост, но невероятно мощен механизъм, наречен TableSubstitutionRule. По подразбиране тази функция е активна и достъпна за всеки OS. Aspose.Words използва XML таблици, които определят основните правила за заместване за различни OS. Съгласно правилото за заместване на таблицата ще се използва списъкът с имената на заместващите шрифтове.
XMLOriginalFont - шрифт за заместване, SubstituteFonts - списък на вариантите за заместване, разделени със запетая. Първият наличен шрифт се използва за замяна.<TableSubstitutionSettings xmlns="Aspose.Words"> <SubstitutesTable> <Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" /> … </SubstitutesTable> </TableSubstitutionSettings>
Основната характеристика на това правило е възможността да заредите свои собствени таблици за заместване, както е показано в следващия пример:
C++Можете да вземете като основа съществуващата таблица от буркана или да я запишете програмно по следния начин:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Load(u"Table.xml");
C++Въпреки гъвкавостта на този механизъм, има някои случаи, когато е по-добре да го деактивирате, както е показано по-долу.:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Save(u"MyTable.xml");
C++fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->set_Enabled(false);
- FontInfo правилото за заместване ще се прилага, ако правилото за заместване на таблицата не може да намери шрифта. Този механизъм е активиран по подразбиране. Aspose.Words намира най-подходящия шрифт според информацията за шрифта, съдържаща се в определен документ. Тази информация може да бъде получена от класа FontInfo, както е показано по-долу.:
C++Потребителите не могат да се намесват в работния поток на тази функция, освен ако не решат да я деактивират в случай на незадоволителни резултати.:System::SharedPtr<FontInfoCollection> fontInfos = doc->get_FontInfos();
C++Ако FontInfo не е наличен за липсващия шрифт, процесът спира.fontSettings->get_SubstitutionSettings()->get_FontInfoSubstitution()->set_Enabled(false);
- DefaultFont правилото за заместване ще се прилага в случаите, когато
FontInfo
заместването също е неуспешно. Това правило също е разрешено по подразбиране. Съгласно това правило Aspose.Words ще се опита да използва шрифта по подразбиране, посочен в свойството DefaultFontName. Ако потребителят не е избрал свой собствен шрифт по подразбиране, тогава “пъти нов роман” ще се използва като шрифт по подразбиране. Това правило може да бъде деактивирано, както е показано по-долу:
C++За да проверите текущия шрифт по подразбиране, използвайте:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_Enabled(false);
C++За да настроите своя собствена опция за замяна, приложете:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->get_DefaultFontName();
C++fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_DefaultFontName(u"Arial");
- Aspose.Words ще се опита да Приложи OS настройки на шрифта, ако са налични, като използва помощната програма
- Ако Aspose.Words не може да извърши заместването на шрифта, той се опитва да получи първия наличен шрифт от наличните източници на шрифтове.
- И накрая, ако Aspose.Words не може да намери никакви шрифтове сред наличните източници на шрифтове, той прави документа с помощта на свободния шрифт, който е вграден в Aspose.Words събрание.
Ако FontInfo е наличен, FontInfo substitution rule винаги ще разреши шрифта и ще замени правилото за шрифта по подразбиране. Ако искате да използвате правилото за шрифт по подразбиране, трябва да забраните FontInfo substitution rule. Обърнете внимание, че FontConfig substitution rule ще разреши шрифта в повечето случаи и по този начин замества всички други правила.