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

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

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

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

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

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

Этот PHP‑код демонстрирует процесс замены шрифтов:

```php
  # Загружает презентацию
  $pres = new Presentation("Fonts.pptx");
  try {
    # Загружает исходный шрифт, который будет заменён
    $sourceFont = new FontData("SomeRareFont");
    # Загружает новый шрифт
    $destFont = new FontData("Arial");
    # Добавляет правило шрифта для замены шрифта
    $fontSubstRule = new FontSubstRule($sourceFont, $destFont, FontSubstCondition->WhenInaccessible);
    # Добавляет правило в коллекцию правил подстановки шрифтов
    $fontSubstRuleCollection = new FontSubstRuleCollection();
    $fontSubstRuleCollection->add($fontSubstRule);
    # Добавляет коллекцию правил шрифтов в список правил
    $pres->getFontsManager()->setFontSubstRuleList($fontSubstRuleCollection);
    # Шрифт Arial будет использован вместо SomeRareFont, когда последний недоступен
    $slideImage = $pres->getSlides()->get_Item(0)->getImage(1.0, 1.0);
    # Сохраняет изображение на диск в формате JPEG
    try {
      $slideImage->save("Thumbnail_out.jpg", ImageFormat::Jpeg);
    } finally {
      if (!java_is_null($slideImage)) {
        $slideImage->dispose();
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }
```

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

Возможно, вам будет интересно посмотреть [**Замена шрифтов**](/slides/ru/php-java/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/php-java/custom-font/), чтобы он участвовал в обычном процессе выбора шрифта при рендеринге и конвертации.

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

## **FAQ**

**В чём разница между заменой шрифта и заменой шрифта (substitution)?**

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

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

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

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

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

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

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

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

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

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

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

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

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