پیکربندی جایگزینی فونت در ارائه‌ها در .NET

بررسی کلی

جایگزینی فونت به Aspose.Slides امکان می‌دهد تا هنگام رندر یا تبدیل، در صورت عدم دسترسی به فونت اصلی ارائه، از فونت دیگری استفاده کند. می‌توانید با استفاده از متد GetSubstitutions در اینترفیس IFontsManager، ببینید که کدام فونت‌ها جایگزین شده‌اند.

Aspose.Slides همچنین اجازه می‌دهد قوانین جایگزینی فونت را تعریف کنید. به عنوان مثال می‌توانید مشخص کنید که یک فونت غیرقابل دسترسی باید با فونت دیگری که در دسترس است جایگزین شود و سپس این قوانین را از طریق مدیر فونت ارائه اعمال کنید.

دریافت جایگزینی‌های فونت

برای این که بتوانید بفهمید کدام فونت‌های ارائه حین فرآیند رندرینگ جایگزین می‌شوند، Aspose.Slides متد GetSubstitution را از اینترفیس IFontsManager ارائه می‌دهد.

کد C# نشان می‌دهد چگونه تمام جایگزینی‌های فونتی که هنگام رندر یک ارائه انجام می‌شود را دریافت کنید:

using (Presentation pres = new Presentation(@"Presentation.pptx"))
{
    foreach (var fontSubstitution in pres.FontsManager.GetSubstitutions())
    {
        Console.WriteLine("{0} -> {1}", fontSubstitution.OriginalFontName, fontSubstitution.SubstitutedFontName);
    }
}

تنظیم قوانین جایگزینی فونت

Aspose.Slides به شما اجازه می‌دهد قوانین برای فونت‌هایی که در شرایط خاص (مثلاً زمانی که فونت قابل دسترسی نیست) باید چه کاری انجام شود را به این شکل تنظیم کنید:

  1. ارائهٔ مربوطه را بارگذاری کنید.
  2. فونتی که باید جایگزین شود را بارگذاری کنید.
  3. فونت جدید را بارگذاری کنید.
  4. یک قانون برای جایگزینی اضافه کنید.
  5. قانون را به مجموعهٔ قوانین جایگزینی فونت ارائه اضافه کنید.
  6. تصویر اسلاید را تولید کنید تا اثر را مشاهده کنید.

این کد C# فرایند جایگزینی فونت را نمایش می‌دهد:

// ارائه را بارگذاری می‌کند
Presentation presentation = new Presentation("Fonts.pptx");

// فونت منبعی را که جایگزین می‌شود بارگذاری می‌کند
IFontData sourceFont = new FontData("SomeRareFont");

// فونت جدید را بارگذاری می‌کند
IFontData destFont = new FontData("Arial");

// قاعده‌ای برای جایگزینی فونت اضافه می‌کند
IFontSubstRule fontSubstRule = new FontSubstRule(sourceFont, destFont, FontSubstCondition.WhenInaccessible);

// قانون را به مجموعهٔ قوانین جایگزینی فونت اضافه می‌کند
IFontSubstRuleCollection fontSubstRuleCollection = new FontSubstRuleCollection();
fontSubstRuleCollection.Add(fontSubstRule);

// مجموعهٔ قوانین فونت را به لیست قوانین اضافه می‌کند
presentation.FontsManager.FontSubstRuleList = fontSubstRuleCollection;

using (IImage image = presentation.Slides[0].GetImage(1f, 1f))
{
    // تصویر را به‌صورت JPEG در دیسک ذخیره می‌کند
    image.Save("Thumbnail_out.jpg", ImageFormat.Jpeg);
}

محدودیت‌های فونت‌های معادلات ریاضی

قوانین جایگزینی فونت در فرآیند استاندارد انتخاب فونت که هنگام رندرینگ و تبدیل استفاده می‌شود شرکت می‌کنند. این قوانین برای متن‌های معمولی مناسب هستند که Aspose.Slides می‌تواند فونت غیرقابل دسترسی را با فونت موجود دیگری طبق قانون پیکربندی‌شده جایگزین کند.

با این حال، معادلات ریاضی Office محدودیت مهمی دارند. اگر معادله‌ای با Cambria Math ایجاد شده باشد، Aspose.Slides ممکن است هنوز برای محاسبه و رندر صحیح چیدمان معادله به فونت اصلی Cambria Math نیاز داشته باشد. به همین دلیل، جایگزینی Cambria Math با یک فونت ریاضی دیگر مانند STIX Two Math برای رندر معادله پشتیبانی نمی‌شود و ممکن است همچنان استثنایی نشان دهد که Cambria Math لازم است.

برای تبدیل موفق این ارائه‌ها، اطمینان حاصل کنید که Cambria Math در زمان اجرا برای Aspose.Slides در دسترس باشد. می‌توانید این فونت را در سیستم عامل نصب کنید یا به عنوان یک external font ارائه دهید تا در فرآیند انتخاب فونت استاندارد هنگام رندرینگ و تبدیل شرکت کند.

این محدودیت مخصوص رندر معادلات است. قوانین استاندارد جایگزینی فونت که در بالا توضیح داده شد، همچنان برای متن‌های معمولی ارائه اعمال می‌شوند وقتی فونت اصلی در دسترس نباشد.

سؤالات متداول

تفاوت جایگزینی فونت با جایگزینی (substitution) چیست؟

Replacement یک اجبار برای جایگزینی یک فونت با فونت دیگر در تمام ارائه است. Substitution قانونی است که تحت شرط خاصی فعال می‌شود، برای مثال وقتی فونت اصلی در دسترس نیست و سپس یک فونت پیش‌فرض تعیین‌شده استفاده می‌شود.

قوانین جایگزینی دقیقاً کی اعمال می‌شوند؟

این قوانین در توالی استاندارد font selection شرکت می‌کنند که هنگام بارگذاری، رندرینگ و تبدیل ارزیابی می‌شود؛ اگر فونت انتخاب‌شده در دسترس نباشد، جایگزینی یا substitution اعمال می‌شود.

رفتار پیش‌فرض چه می‌شود اگر نه جایگزینی و نه substitution پیکربندی نشده باشد و فونت بر روی سیستم موجود نباشد؟

کتابخانه سعی می‌کند نزدیک‌ترین فونت سیستم موجود را انتخاب کند، مشابه رفتار PowerPoint.

آیا می‌توانم در زمان اجرا فونت‌های خارجی سفارشی را اضافه کنم تا از جایگزینی جلوگیری شود؟

بله. می‌توانید add external fonts را در زمان اجرا اضافه کنید تا کتابخانه آنها را برای انتخاب و رندرینگ در نظر بگیرد، از جمله برای تبدیل‌های بعدی.

آیا Aspose فونت‌هایی را همراه با کتابخانه توزیع می‌کند؟

خیر. Aspose هیچ فونت پرداختی یا رایگانی را توزیع نمی‌کند؛ شما خودتان فونت‌ها را اضافه و استفاده می‌کنید و مسئولیت آن را بر عهده دارید.

آیا رفتار جایگزینی در Windows، Linux و macOS متفاوت است؟

بله. کشف فونت از دایرکتوری‌های فونت سیستم عامل آغاز می‌شود. مجموعه فونت‌های پیش‌فرض موجود و مسیرهای جستجو در هر پلتفرم متفاوت است که بر دسترس‌پذیری و نیاز به جایگزینی تأثیر می‌گذارد.

چگونه می‌توانم محیط را برای کاهش جایگزینی غیرمنتظره در تبدیل‌های دسته‌ای آماده کنم؟

مجموعهٔ فونت‌ها را بین ماشین‌ها یا کانتینرها همگام‌سازی کنید، add the external fonts مورد نیاز برای اسناد خروجی اضافه کنید و در صورت ممکن، embed fonts را در ارائه‌ها بگنجانید تا فونت‌های انتخاب‌شده در زمان رندرینگ در دسترس باشند.