دسترسی به فونت و جایگزینی آن

Contents
[ ]

یک متن در یک سند را می توان با فونت های مختلف مانند Arial، Times New Roman، Verdana و دیگران فرمت کرد. هنگامی که Aspose.Words یک سند را ارائه می دهد، سعی می کند فونت هایی را که در سند مشخص شده اند انتخاب کند.

با این حال، شرایطی وجود دارد که فونت دقیق را نمی توان یافت و Aspose.Words باید آن را به جای یک فونت مشابه جایگزین کند. Aspose.Words فونت را با توجه به فرآیند زیر انتخاب می کند:

  1. Aspose.Words سعی می کند یک فونت را در میان منابع فونت موجود با نام دقیق فونت پیدا کند.
  2. Aspose.Words سعی می کند فونت مورد نیاز را در میان فونت های جاسازی شده در سند اصلی پیدا کند. برخی از فرمت های سند مانند DOCX می توانند شامل فونت های جاسازی شده باشند.
  3. اگر Aspose.Words نتواند فونت مورد نیاز را با نام دقیق مطابقت پیدا کند و ویژگی AltName برای این فونت تعریف شده باشد، پس Aspose.Words فونت تعریف شده با AltName را از کلاس FontInfo پیدا می کند که اطلاعات فونت را مشخص می کند.
  4. اگر Aspose.Words نتواند فونت تعریف شده را پیدا کند، و AltName نیز تعریف نشده باشد، قوانین جایگزینی فونت به صورت یک به یک اعمال می شود، همانطور که در زیر توضیح داده شده است (هنگامی که جایگزینی مناسب پیدا می شود، فرآیند جایگزینی فونت متوقف می شود و مرحله بعدی اجرا نمی شود):
    1. Aspose.Words سعی خواهد کرد که تنظیمات فونت OS را اعمال کند، اگر آنها در دسترس باشند، با استفاده از ابزار FontConfig. این ویژگی غیرWindows باید با FontConfig سازگار OS استفاده شود. تقریبا هر OS مبتنی بر یونیکس در حال حاضر دارای یک کتابخانه FontConfig است که برای ارائه پیکربندی فونت، سفارشی سازی و دسترسی به برنامه های کاربردی در سراسر سیستم طراحی شده است. در غیر این صورت، این کتابخانه می تواند به راحتی توسط کاربر نصب شود.
      Aspose.Words می داند که چگونه داده ها را پرس و جو کند و نتایج FontConfig را برای اهداف خود تفسیر کند. به طور پیش فرض، ابزار FontConfig غیرفعال است. شما می توانید آن را به صورت زیر فعال کنید:
      C++
            fontSettings->get_SubstitutionSettings()->get_FontConfigSubstitution()->set_Enabled(true);
            
      
    2. مرحله بعدی یک مکانیسم ساده اما فوق العاده قدرتمند به نام TableSubstitutionRule است. به طور پیش فرض، این ویژگی فعال است و برای هر OS در دسترس است. Aspose.Words از XML جدول استفاده می کند که قوانین اساسی جایگزینی را برای OS مختلف تعریف می کند. طبق قانون جایگزینی جدول، لیست نام فونت های جایگزین استفاده خواهد شد.
      XML
            <TableSubstitutionSettings xmlns="Aspose.Words"> 
      	<SubstitutesTable> 
      		<Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" /></SubstitutesTable> 
            </TableSubstitutionSettings>
            
      OriginalFont - یک فونت که باید جایگزین شود، SubstituteFonts - لیست انواع جایگزین، با یک کاما جدا شده است. اولین فونت موجود برای جایگزینی استفاده می شود.
      ویژگی اصلی این قانون توانایی بارگذاری جداول جایگزینی خود است، همانطور که در مثال زیر نشان داده شده است:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Load(u"Table.xml");
            
      
      شما می توانید جدول موجود را از شیشه به عنوان پایه بگیرید یا آن را به صورت برنامه ریزی شده به روش زیر ذخیره کنید:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Save(u"MyTable.xml");
            
      
      علیرغم انعطاف پذیری این مکانیزم، مواردی وجود دارد که بهتر است آن را غیرفعال کنید، همانطور که در زیر نشان داده شده است:
      C++
            fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->set_Enabled(false);
            
      
    3. اگر قانون جایگزینی جدول نتواند فونت را پیدا کند، قانون جایگزینی FontInfo اعمال خواهد شد. این مکانیزم به طور پیش فرض فعال است. Aspose.Words مناسب ترین فونت را با توجه به اطلاعات فونت موجود در یک سند خاص پیدا می کند. این اطلاعات را می توان از کلاس FontInfo به عنوان زیر نشان داده شده است:
      C++
            System::SharedPtr<FontInfoCollection> fontInfos = doc->get_FontInfos();
            
      
      کاربران نمی توانند در جریان کار این ویژگی دخالت کنند مگر اینکه تصمیم بگیرند در صورت نتایج نامطلوب آن را غیرفعال کنند:
      C++
            fontSettings->get_SubstitutionSettings()->get_FontInfoSubstitution()->set_Enabled(false);
            
      
      اگر FontInfo برای فونت گمشده در دسترس نباشد، فرآیند متوقف می شود.
    4. DefaultFont قانون جایگزینی در صورتی اعمال می شود که جایگزین FontInfo نیز شکست خورده باشد. این قانون به طور پیش فرض نیز فعال است. طبق این قانون ،Aspose.Words سعی خواهد کرد از فونت پیش فرض مشخص شده در ویژگی DefaultFontName استفاده کند. اگر کاربر فونت پیش فرض خود را انتخاب نکرده باشد، “Times New Roman” به عنوان فونت پیش فرض استفاده می شود. این قانون را می توان غیرفعال کرد همانطور که در زیر نشان داده شده است:
      C++
            fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_Enabled(false);
            
      
      برای بررسی فونت پیش فرض فعلی، از:
      C++
            fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->get_DefaultFontName();
            
      
      برای راه اندازی گزینه جایگزین خود، درخواست کنید:
      C++
            fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_DefaultFontName(u"Arial");
            
      
  5. اگر Aspose.Words قادر به انجام تعویض فونت نباشد، سعی می کند اولین فونت موجود را از منابع فونت موجود دریافت کند.
  6. در نهایت، اگر Aspose.Words نتواند فونت هایی را در میان منابع فونت موجود پیدا کند، سند را با استفاده از فونت رایگان Fanwood که در مجموعه Aspose.Words جاسازی شده است، ارائه می دهد.