---
title: "Манипулация на шрифта и проблеми с производителността в C++"
---

Всички налични механизми за манипулиране на шрифта се съдържат в класа [FontSettings](https://reference.aspose.com/words/cpp/class/aspose.words.fonts.font_settings). Този клас е отговорен за извличането на шрифтовете в дефинираните източници на шрифтове, както и за процеса на заместване на шрифта, както е описано по-долу.

## Разбор на разрешените шрифтове

Шрифтовете се анализират в няколко стъпки:

1. Получаване на информация за шрифта, решаване от всички налични шрифтове.
1. Анализ на разрешените шрифтове, за да получите налични глифове и показатели (хоризонтални и вертикални).
1. Анализ на разрешените шрифтове за вграждане и подмножаване.

Когато Aspose.Words срещне шрифт в документа за първи път, той се опитва да получи основна информация за шрифта, като пълното име на шрифта, фамилното име, версията, стила, от файловете с шрифтове, разположени във всеки източник на шрифт. След като всички шрифтове са извлечени, Aspose.Words използва тези подробности, за да намери необходимите данни за шрифта или подходящ заместител на искания шрифт.

## Проблем С Производителността При Замяна На Шрифтове

Тъй като процедурата, описана по-горе, отнема много време, тя може да повлияе отрицателно на производителността на приложението при първото му стартиране. Всеки случай на **FontSettings** обаче има свой собствен кеш, което може да намали времето за обработка на следващите документи. Например можете да споделите екземпляр от класа **FontSettings** между различни документи, което ви позволява да ускорите зареждането на документите. Следващият пример показва това:

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Rendering-Printing-WorkingWithFontSettings-FontSettingsWithLoadOptions.cpp" >}}

В случай, че **FontSettings** не е определено изрично, Aspose.Words използва по подразбиране **FontSettings** екземпляр. Този екземпляр също се споделя автоматично между документите и може да бъде извлечен по следния начин::

**C++**

```cpp
System::SharedPtr<FontSettings> fontSettings = System::MakeObject<FontSettings>()->get_DefaultInstance();
```

## Използване на инстанцията по подразбиране FontSettings

Ако сте сигурни, че всички документи за обработка изискват едни и същи настройки на шрифта, тогава се препоръчва да настроите и използвате екземпляра по подразбиране **FontSettings**. Да предположим, че трябва да използвате едни и същи източници на шрифт за всички ваши документи. В този случай можете просто да промените инстанцията по подразбиране, както следва::

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Rendering-Printing-WorkingWithFontSettings-FontSettingsFontSource.cpp" >}}

```

Обичай **FontSettings** имат по-висок приоритет от инстанция по подразбиране.

```
