# پیکربندی جایگزینی قلم در ارائه‌ها با استفاده از C++

> فعال‌سازی جایگزینی بهینه قلم در Aspose.Slides برای C++ هنگام تبدیل ارائه‌های PowerPoint و OpenDocument به سایر فرمت‌های فایل.

Source: https://docs.aspose.com/slides/fa/cpp/font-substitution/
Updated: 2026-06-13

## **نمای کلی**

جایگزینی قلم به Aspose.Slides این امکان را می‌دهد که هنگام رندر یا تبدیل، در صورت عدم دسترسی به قلم اصلی ارائه، از قلم دیگری استفاده کند. می‌توانید با استفاده از متد `GetSubstitutions` در اینترفیس `IFontsManager` بررسی کنید که کدام قلم‌ها جایگزین شده‌اند.

Aspose.Slides همچنین امکان تعریف قواعد جایگزینی قلم را فراهم می‌کند. به‌عنوان مثال می‌توانید مشخص کنید که یک قلم غیرقابل دسترس با قلم دیگری که موجود است جایگزین شود و سپس این قواعد را از طریق مدیر قلم ارائه اعمال کنید.

## **تنظیم قواعد جایگزینی قلم**

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="توجه"  color="warning"   %}} 

ممکن است بخواهید به [**جایگزینی قلم**](/slides/fa/cpp/font-replacement/) نگاهی بیندازید. 

{{% /alert %}}

## **محدودیت‌های قلم‌های معادلات ریاضی**

قواعد جایگزینی قلم در فرآیند استاندارد انتخاب قلم که در طول رندر و تبدیل استفاده می‌شود، مشارکت دارند. این قواعد برای سناریوهای متن معمولی مناسب هستند که در آن Aspose.Slides می‌تواند یک قلم غیرقابل دسترسی را با قلم دیگری که موجود است طبق قاعده پیکربندی شده جایگزین کند.

با این حال، معادلات ریاضی Office محدودیتی مهم دارند. اگر معادله‌ای با **Cambria Math** ایجاد شده باشد، Aspose.Slides ممکن است هنوز برای محاسبه و رندر صحیح چیدمان معادله به قلم اصلی **Cambria Math** نیاز داشته باشد. به همین دلیل، جایگزینی **Cambria Math** با قلم ریاضی دیگر مانند **STIX Two Math** برای رندر معادله پشتیبانی نمی‌شود و ممکن است هنوز استثنایی نشان دهد که **Cambria Math** ضروری است.

برای تبدیل موفقیت‌آمیز چنین ارائه‌هایی، اطمینان حاصل کنید که **Cambria Math** در زمان اجرا برای Aspose.Slides در دسترس باشد. می‌توانید این قلم را در سیستم عامل نصب کنید یا به عنوان یک [قلم خارجی](/slides/fa/cpp/custom-font/) فراهم کنید تا در فرآیند انتخاب قلم معمولی در هنگام رندر و تبدیل شرکت کند.

این محدودیت مخصوص رندر معادلات است. قواعد استاندارد جایگزینی قلم که در بالا توضیح داده شد، همچنان برای متن عادی ارائه کاربرد دارد وقتی قلم اصلی در دسترس نیست.

## **سوالات متداول**

**تفاوت جایگزینی قلم و جایگزینی (substitution) چیست؟**

[جایگزینی](/slides/fa/cpp/font-replacement/) یک بازنویسی اجباری یک قلم با قلم دیگر در تمام ارائه است. جایگزینی (substitution) قاعده‌ای است که تحت شرایط خاصی فعال می‌شود، مثلاً وقتی قلم اصلی در دسترس نیست و سپس یک قلم جایگزین تعیین‌شده استفاده می‌شود.

**قواعد جایگزینی دقیقاً چه زمانی اعمال می‌شوند؟**

قواعد در توالی استاندارد [انتخاب قلم](/slides/fa/cpp/font-selection-sequence/) که هنگام بارگذاری، رندر و تبدیل ارزیابی می‌شود، مشارکت دارند؛ اگر قلم انتخاب‌شده در دسترس نباشد، جایگزینی یا جایگزینی (substitution) اعمال می‌شود.

**اگر هیچ قاعده‌ای برای جایگزینی یا جایگزینی تنظیم نشده باشد و قلم در سیستم موجود نباشد، رفتار پیش‌فرض چیست؟**

کتابخانه سعی می‌کند نزدیک‌ترین قلم موجود در سیستم را انتخاب کند، مشابه رفتاری که PowerPoint اتخاذ می‌کند.

**آیا می‌توانم در زمان اجرا قلم‌های خارجی سفارشی اضافه کنم تا از جایگزینی جلوگیری شود؟**

بله. می‌توانید [قلم‌های خارجی](/slides/fa/cpp/custom-font/) را در زمان اجرا اضافه کنید تا کتابخانه آنها را برای انتخاب و رندر در نظر بگیرد، از جمله برای تبدیل‌های بعدی.

**آیا Aspose قلم‌هایی را همراه با کتابخانه توزیع می‌کند؟**

خیر. Aspose هیچ قلمی، چه رایگان و چه پولی، توزیع نمی‌کند؛ شما قلم‌ها را به اختیار و مسئولیت خود اضافه و استفاده می‌کنید.

**آیا رفتار جایگزینی در ویندوز، لینوکس و macOS متفاوت است؟**

بله. کشف قلم‌ها از پوشه‌های قلم سیستم عامل آغاز می‌شود. مجموعه قلم‌های پیش‌فرض موجود و مسیرهای جستجو در هر پلتفرم متفاوت است که بر دسترسی و نیاز به جایگزینی تأثیر می‌گذارد.

**چگونه می‌توانم محیط را برای حداقل کردن جایگزینی ناخواسته در تبدیل‌های دسته‌ای آماده کنم؟**

مجموعه قلم‌ها را بین ماشین‌ها یا کانتینرها همگام‌سازی کنید، [قلم‌های خارجی](/slides/fa/cpp/custom-font/) مورد نیاز برای اسناد خروجی را اضافه کنید و در صورت امکان [قلم‌ها را درون‌ساز کنید](/slides/fa/cpp/embedded-font/) تا قلم‌های انتخاب‌شده در زمان رندر در دسترس باشند.
