Доступність та заміна шрифтів

Contents
[ ]

Текст у документі може бути відформатований різними шрифтами, такими як Arial, Times New Roman, Verdana та інші. При відображенні документа Aspose.Words виконується спроба вибрати шрифти, зазначені в документі.

Однак бувають ситуації, коли неможливо знайти точний шрифт, і Aspose.Words потрібно замінити його подібним шрифтом. Aspose.Words вибір шрифту здійснюється відповідно до наступного процесу:

  1. Aspose.Words намагається знайти шрифт з точною назвою серед доступних джерел шрифтів.
  2. Aspose.Words намагається знайти потрібний шрифт серед шрифтів, вбудованих у оригінальний документ. Деякі формати документів, такі як DOCX, можуть містити вбудовані шрифти.
  3. Якщо Aspose.Words не вдається знайти потрібний шрифт із точним збігом назви та властивості AltName, визначеного для цього шрифту, тоді Aspose.Words знайде шрифт, визначений AltName із класу FontInfo, який визначає інформацію про Шрифт.
  4. Якщо Aspose.Words не вдається знайти певний шрифт, а AltName також не визначено, то правила заміни шрифту застосовуються послідовно, як описано нижче (коли відповідна Заміна знайдена, процес заміни шрифту зупиняється і наступний крок не виконується).:
    1. Aspose.Words спробує застосувати налаштування шрифту OS, якщо вони доступні, за допомогою утиліти FontConfig. Ця функція, не сумісна з Windows, повинна використовуватися з OS, сумісною з FontConfig. Практично в будь-який Unix-системі OS вже є бібліотека FontConfig, призначена для забезпечення загальносистемної настройки шрифтів, кастомізації і доступу до додатків. В іншому випадку користувач може легко встановити цю бібліотеку.
      Aspose.Words вміє запитувати дані та інтерпретувати результати FontConfig для власних цілей. За замовчуванням утиліта FontConfig відключена. Ви можете включити її наступним чином:
      C++
            fontSettings->get_SubstitutionSettings()->get_FontConfigSubstitution()->set_Enabled(true);
            
      
    2. Наступний крок-це простий, але неймовірно потужний механізм, який називається TableSubstitutionRule. За замовчуванням ця функція активна і доступна для будь-яких OS. Aspose.Words використовує таблиці XML, які визначають основні правила заміни для різних OS. Відповідно до правила підстановки в таблицю, буде використовуватися список замінюють назв шрифтів.
      XML
            <TableSubstitutionSettings xmlns="Aspose.Words"> 
      	<SubstitutesTable> 
      		<Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" /></SubstitutesTable> 
            </TableSubstitutionSettings>
            
      OriginalFont - шрифт, який потрібно замінити, SubstituteFonts - список варіантів заміни, розділених комою. Для заміни використовується перший доступний шрифт.
      Головною особливістю цього правила є можливість завантаження власних таблиць підстановки, як це показано в наступному прикладі:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Load(u"Table.xml");
            
      
      Ви можете взяти за основу існуючу таблицю з jar або зберегти її програмно наступним чином:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Save(u"MyTable.xml");
            
      
      Незважаючи на гнучкість цього механізму, в деяких випадках його краще відключити, як показано нижче:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->set_Enabled(false);
            
      
    3. Правило підстановки FontInfo буде застосовано, якщо не вдається знайти шрифт за допомогою правила підстановки в таблицю. Цей механізм Включений за замовчуванням. Aspose.Words знаходить найбільш підходящий шрифт відповідно до інформації про Шрифт, що міститься в конкретному документі. Цю інформацію можна отримати з класу FontInfo, Як показано нижче:
      C++
            System::SharedPtr<FontInfoCollection> fontInfos = doc->get_FontInfos();
            
      
      Користувачі не можуть втручатися в робочий процес цієї функції, якщо вони не вирішать вимкнути її у разі незадовільних результатів:
      C++
            fontSettings->get_SubstitutionSettings()->get_FontInfoSubstitution()->set_Enabled(false);
            
      
      Якщо FontInfo недоступний для відсутнього шрифту, тоді процес зупиняється.
    4. правило підстановки DefaultFont буде застосовано в тому випадку, якщо підстановка FontInfo також завершилася невдачею. Це правило також включено за замовчуванням. Відповідно до цього правила Aspose.Words спробує використовувати шрифт за замовчуванням, вказаний у властивості DefaultFontName. Якщо Користувач не вибрав власний шрифт за замовчуванням, “Times New Roman"буде використовуватися як шрифт за замовчуванням. Це правило можна вимкнути, як показано нижче:
      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");
            
      
  5. Якщо Aspose.Words не може виконати заміну шрифту, він намагається отримати перший доступний шрифт із доступних джерел шрифтів.
  6. Нарешті, якщо Aspose.Words не вдається знайти будь-які шрифти серед доступних джерел шрифтів, документ відображається за допомогою безкоштовного шрифту Fanwood, вбудованого в збірку Aspose.Words.