Настройка шрифтов PowerPoint на Android

Загрузить пользовательские шрифты

Aspose.Slides позволяет загружать шрифты, которые используются при рендеринге презентаций, без необходимости их установки. Шрифты загружаются из пользовательского каталога.

  1. Создайте экземпляр класса FontsLoader и вызовите метод loadExternalFonts.
  2. Загрузите презентацию, которую необходимо отобразить.
  3. Очистить кэш в классе FontsLoader.
// Папки для поиска шрифтов
String[] folders = new String[] { externalFontsDir };

// Загружает шрифты из пользовательского каталога шрифтов
FontsLoader.loadExternalFonts(folders);

// Выполнить некоторые действия и рендеринг презентации/слайда
Presentation pres = new Presentation("DefaultFonts.pptx");
try {
    pres.save("NewFonts_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();

    // Очищает кеш шрифтов
    FontsLoader.clearCache();
}

Получить пользовательские папки шрифтов

Aspose.Slides предоставляет метод getFontFolders для поиска папок шрифтов. Этот метод возвращает папки, добавленные через метод LoadExternalFonts, а также системные папки шрифтов.

// Эта строка выводит папки, где ищутся файлы шрифтов.
// Это папки, добавленные через метод LoadExternalFonts, и системные папки шрифтов.
String[] fontFolders = FontsLoader.getFontFolders();

Указание пользовательских шрифтов, используемых в презентации

Aspose.Slides предоставляет свойство setDocumentLevelFontSources для указания внешних шрифтов, которые будут использоваться в презентации.

byte[] memoryFont1 = Files.readAllBytes("customfonts/CustomFont1.ttf");
byte[] memoryFont2 = Files.readAllBytes("customfonts/CustomFont2.ttf");

LoadOptions loadOptions = new LoadOptions();
loadOptions.getDocumentLevelFontSources().setFontFolders(new String[] { "assets/fonts", "global/fonts" });
loadOptions.getDocumentLevelFontSources().setMemoryFonts(new byte[][] { memoryFont1, memoryFont2 });

Presentation pres = new Presentation("MyPresentation.pptx", loadOptions);
try {
    // Работа с презентацией
    // CustomFont1, CustomFont2 и шрифты из папок assets/fonts и global/fonts и их подпапок доступны для презентации
} finally {
    if (pres != null) pres.dispose();
}

Управление шрифтами извне

Aspose.Slides предоставляет метод loadExternalFont(byte[] data) для загрузки внешних шрифтов из бинарных данных.

FontsLoader.loadExternalFont(Files.readAllBytes(Paths.get("ARIALN.TTF")));
FontsLoader.loadExternalFont(Files.readAllBytes(Paths.get("ARIALNBI.TTF")));
FontsLoader.loadExternalFont(Files.readAllBytes(Paths.get("ARIALNI.TTF")));

try
{
    Presentation pres = new Presentation("");
    try {
        // внешний шрифт, загруженный во время жизни презентации
    } finally {
        
    }
}
finally
{
    FontsLoader.clearCache();
}

FAQ

Влияют ли пользовательские шрифты на экспорт во все форматы (PDF, PNG, SVG, HTML)?

Да. Связанные шрифты используются рендерером во всех форматах экспорта.

Встраиваются ли пользовательские шрифты автоматически в полученный PPTX?

Нет. Регистрация шрифта для рендеринга не то же самое, что его встраивание в PPTX. Если требуется, чтобы шрифт был включён в файл презентации, необходимо использовать явные функции встраивания.

Могу ли я контролировать поведение fallback, когда у пользовательского шрифта отсутствуют отдельные глифы?

Да. Настройте замену шрифтов, правила замены и наборы fallback, чтобы точно определить, какой шрифт использовать, если запрашиваемый глиф отсутствует.

Могу ли я использовать шрифты в контейнерах Linux/Docker без их установки на уровне системы?

Да. Указывайте собственные папки со шрифтами или загружайте шрифты из массивов байтов. Это устраняет любую зависимость от системных каталогов шрифтов в образе контейнера.

Как насчёт лицензирования — могу ли я встраивать любой пользовательский шрифт без ограничений?

Вы несёте ответственность за соблюдение условий лицензий шрифтов. Условия различаются; некоторые лицензии запрещают встраивание или коммерческое использование. Всегда проверяйте лицензионное соглашение (EULA) шрифта перед распространением результатов.