Настройка шрифтов PowerPoint в .NET
Aspose Slides позволяет загружать эти шрифты с помощью метода FontsLoader.LoadExternalFonts:
Load Custom Fonts
Aspose.Slides позволяет загружать шрифты, которые используются при рендеринге презентаций, без их установки в системе. Шрифты загружаются из пользовательского каталога.
- Создайте экземпляр класса FontsLoader и вызовите метод LoadExternalFonts.
- Загрузите презентацию, которую необходимо отрисовать.
- Очистите кэш в классе FontsLoader.
Этот C#‑код демонстрирует процесс загрузки шрифтов:
// Путь к каталогу документов
string dataDir = "C:\\";
// папки для поиска шрифтов
String[] folders = new String[] { dataDir };
// Загружает шрифты из пользовательского каталога шрифтов
FontsLoader.LoadExternalFonts(folders);
// Выполните некоторую работу и сделайте рендеринг презентации/слайда
using (Presentation presentation = new Presentation(dataDir + "DefaultFonts.pptx"))
presentation.Save(dataDir + "NewFonts_out.pptx", SaveFormat.Pptx);
// Очищает кэш шрифтов
FontsLoader.ClearCache();
Get Custom Font Folders
Aspose.Slides предоставляет метод GetFontFolders, позволяющий находить папки шрифтов. Метод возвращает папки, добавленные через метод LoadExternalFonts, а также системные папки шрифтов.
Этот C#‑код показывает, как использовать GetFontFolders:
// Эта строка выводит папки, проверяемые на наличие файлов шрифтов.
// Это папки, добавленные через метод LoadExternalFonts, а также системные папки шрифтов.
string[] fontFolders = FontsLoader.GetFontFolders();
Specify Custom Fonts Used with a Presentation
Aspose.Slides предоставляет свойство DocumentLevelFontSources, позволяющее указать внешние шрифты, которые будут использованы в презентации.
Этот C#‑код показывает, как использовать свойство DocumentLevelFontSources:
byte[] memoryFont1 = File.ReadAllBytes("customfonts\\CustomFont1.ttf");
byte[] memoryFont2 = File.ReadAllBytes("customfonts\\CustomFont2.ttf");
LoadOptions loadOptions = new LoadOptions();
loadOptions.DocumentLevelFontSources.FontFolders = new string[] { "assets\\fonts", "global\\fonts" };
loadOptions.DocumentLevelFontSources.MemoryFonts = new byte[][] { memoryFont1, memoryFont2 };
using (IPresentation presentation = new Presentation("MyPresentation.pptx", loadOptions))
{
// Работа с презентацией
// CustomFont1, CustomFont2 и шрифты из папок assets\fonts & global\fonts, а также их подпапок доступны для презентации
}
Manage Fonts Externally
Aspose.Slides предоставляет метод LoadExternalFont(byte[] data), позволяющий загружать внешние шрифты из бинарных данных.
Этот C#‑код демонстрирует процесс загрузки шрифтов из массива байтов:
FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALN.TTF"));
FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALNBI.TTF"));
FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALNI.TTF"));
try
{
using (Presentation pres = new Presentation(""))
{
// внешний шрифт, загруженный на время жизни презентации
}
}
finally
{
FontsLoader.ClearCache();
}
FAQ
Влияют ли пользовательские шрифты на экспорт во все форматы (PDF, PNG, SVG, HTML)?
Да. Подключённые шрифты используются рендерером во всех форматах экспорта.
Встраиваются ли пользовательские шрифты автоматически в полученный файл PPTX?
Нет. Регистрация шрифта для рендеринга не равна его встраиванию в PPTX. Если нужен шрифт внутри файла презентации, необходимо использовать явные встроенные функции.
Можно ли контролировать поведение fallback, когда у пользовательского шрифта отсутствуют отдельные глифы?
Да. Настройте font substitution, replacement rules и fallback sets, чтобы точно определить, какой шрифт использовать при отсутствии требуемого глифа.
Можно ли использовать шрифты в контейнерах Linux/Docker без их системной установки?
Да. Указывайте свои каталоги шрифтов или загружайте шрифты из массивов байтов. Это устраняет зависимость от системных каталогов шрифтов в образе контейнера.
Что касается лицензирования — можно ли встраивать любой пользовательский шрифт без ограничений?
Вы несёте ответственность за соблюдение лицензий шрифтов. Условия различаются; некоторые лицензии запрещают встраивание или коммерческое использование. Всегда проверяйте EULA шрифта перед распространением результатов.