# Настройка подстановки шрифтов в презентациях с использованием C++

> Обеспечьте оптимальную подстановку шрифтов в Aspose.Slides для C++ при конвертации презентаций PowerPoint и OpenDocument в другие форматы файлов.

Source: https://docs.aspose.com/slides/ru/cpp/font-substitution/
Updated: 2026-03-29

## **Установить правила замены шрифтов**

Aspose.Slides позволяет задать правила для шрифтов, определяющие, что необходимо сделать в определённых условиях (например, когда шрифт недоступен) следующим образом:

1. Загрузите соответствующую презентацию.  
2. Загрузите шрифт, который будет заменён.  
3. Загрузите новый шрифт.  
4. Добавьте правило замены.  
5. Добавьте правило в коллекцию правил замены шрифтов презентации.  
6. Сгенерируйте изображение слайда, чтобы увидеть эффект.

Этот код C++ демонстрирует процесс подстановки шрифтов:

```c++
// Путь к каталогу документов.
const String outPath = u"../out/RuleBasedFontsReplacement_out.pptx";
const String templatePath = u"../templates/DefaultFonts.pptx";


// Загружает презентацию
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

// Определяет шрифт, который будет заменён, и новый шрифт
SharedPtr<IFontData> sourceFont = MakeObject<FontData>(u"SomeRareFont");
SharedPtr<IFontData> destFont = MakeObject<FontData>(u"Arial");
	
// Добавляет правило шрифта для замены шрифта
SharedPtr<FontSubstRule> fontSubstRule = MakeObject<FontSubstRule>(sourceFont, destFont, FontSubstCondition::WhenInaccessible);

// Добавляет правило в коллекцию правил подстановки шрифтов
SharedPtr<FontSubstRuleCollection> fontSubstRuleCollection = MakeObject<FontSubstRuleCollection>();
fontSubstRuleCollection->Add(fontSubstRule);

// Добавляет коллекцию правил шрифтов в список правил
pres->get_FontsManager()->set_FontSubstRuleList ( fontSubstRuleCollection);


// Сохраняет PPTX на диск
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
```

{{%  alert title="NOTE"  color="warning"   %}} 

Возможно, вам будет интересно посмотреть [**Замена шрифтов**](/slides/ru/cpp/font-replacement/). 

{{% /alert %}}

## **Ограничения для шрифтов математических уравнений**

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

Однако у уравнений Office Math есть важное ограничение. Если уравнение было создано с помощью **Cambria Math**, Aspose.Slides всё равно может потребовать оригинальный шрифт **Cambria Math** для правильно расчёта и отрисовки макета уравнения. Поэтому подстановка **Cambria Math** другим математическим шрифтом, например **STIX Two Math**, не поддерживается при рендеринге уравнений и может привести к исключению, указывающему, что требуется **Cambria Math**.

Чтобы успешно конвертировать такие презентации, убедитесь, что **Cambria Math** доступен Aspose.Slides во время выполнения. Вы можете установить шрифт в операционной системе или предоставить его как [внешний шрифт](/slides/ru/cpp/custom-font/), чтобы он мог участвовать в обычном процессе выбора шрифтов при рендеринге и конвертации.

Это ограничение относится только к рендерингу уравнений. Описанные выше стандартные правила подстановки шрифтов по‑прежнему применяются к обычному тексту презентации, когда оригинальный шрифт недоступен.

## **Часто задаваемые вопросы**

**В чем разница между заменой шрифтов и их подстановкой?**

[Замена](/slides/ru/cpp/font-replacement/) — принудительное переопределение одного шрифта другим во всей презентации. Подстановка — правило, которое срабатывает при определённом условии, например когда оригинальный шрифт недоступен, и тогда используется назначенный запасной шрифт.

**Когда именно применяются правила подстановки?**

Правила участвуют в стандартной последовательности [выбора шрифтов](/slides/ru/cpp/font-selection-sequence/), которая оценивается во время загрузки, рендеринга и конвертации; если выбранный шрифт недоступен, применяется замена или подстановка.

**Каким будет поведение по умолчанию, если ни замена, ни подстановка не настроены, а шрифт отсутствует в системе?**

Библиотека попытается выбрать ближайший доступный системный шрифт, аналогично тому, как это делает PowerPoint.

**Можно ли добавить пользовательские внешние шрифты во время выполнения, чтобы избежать подстановки?**

Да. Вы можете [добавлять внешние шрифты](/slides/ru/cpp/custom-font/) во время выполнения, чтобы библиотека учитывала их при выборе и рендеринге, включая последующие конвертации.

**Поставляет ли Aspose какие‑либо шрифты вместе с библиотекой?**

Нет. Aspose не поставляет платные или бесплатные шрифты; вы добавляете и используете шрифты по собственному усмотрению и ответственности.

**Есть ли различия в поведении подстановки на Windows, Linux и macOS?**

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

**Как подготовить окружение, чтобы минимизировать неожиданную подстановку при пакетных конверсиях?**

Синхронизируйте набор шрифтов между машинами или контейнерами, [добавьте необходимые внешние шрифты](/slides/ru/cpp/custom-font/) для выводимых документов и, по возможности, [встраивайте шрифты](/slides/ru/cpp/embedded-font/) в презентации, чтобы выбранные шрифты были доступны во время рендеринга.
