مکان فونت TrueType را مشخص کنید

این مبحث رفتار پیش‌فرض Aspose.Words را هنگام جستجوی فونت‌های TrueType، از جمله تفاوت‌های خاص سیستم عامل، توصیف می‌کند و نحوه تعیین منابع فونت کاربر را نشان می‌دهد.

کلاس FontSourceBase برای تعیین منابع مختلف فونت استفاده می شود. چندین پیاده سازی از کلاس FontSourceBase وجود دارد:

جزئیات پیاده سازی برای برخی از کلاس ها در زیر توضیح داده شده است.

بارگیری فونت ها از سیستم

یک کلاس SystemFontSource ویژه وجود دارد که همیشه به طور پیش فرض استفاده می شود. این نشان دهنده تمام فونت های TrueType نصب شده بر روی سیستم است. بنابراین، می توان یک لیست منبع با SystemFontSource و هر منبع مورد نیاز دیگری ایجاد کرد:

یک نمونه از کلاس SystemFontSource به طور پیش فرض در FontSettings تعریف شده است. در سیستم عامل های مختلف، فونت ها ممکن است در مکان های مختلفی قرار گیرند. با این حال، استفاده از یک نمونه FontSettings برای هر سند راه حل بهینه ای نیست. در اکثر موارد استفاده از default_instance باید کافی باشد.

نمونه‌های هر سند فقط در صورتی مورد نیاز است که نیاز به استفاده از منابع فونت متفاوت برای اسناد مختلف باشد، که این مورد نادر است. استفاده از چندین نمونه FontSettings عملکرد را کاهش می دهد زیرا حافظه پنهان را به اشتراک نمی گذارد.

جایی که Aspose.Words به دنبال فونت های TrueType در Windows می گردد

در بیشتر موارد، کاربران Windows با مشکلات قابل توجهی با فونت های از دست رفته یا چیدمان های نادرست مواجه نمی شوند. به طور معمول، Aspose.Words از طریق یک سند عبور می کند و هنگامی که با پیوند فونت روبرو می شود، با موفقیت داده های فونت را از پوشه سیستم واکشی می کند.

در Windows، Aspose.Words ابتدا تمام فونت های موجود را از پوشه _%windir%\Fonts می گیرد. این تنظیم بیشتر اوقات برای شما کار می کند. شما فقط در صورت نیاز پوشه های فونت خود را مشخص می کنید. Aspose.Words برای .NET همچنین به دنبال فونت‌های اضافی ثبت‌شده در کلید رجیستری *HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts می‌گردد. علاوه بر این، Windows 10 نصب فونت ها را برای کاربر فعلی امکان پذیر می کند. فونت‌ها در پوشه %userprofile%\AppData\Local\Microsoft\Windows\Fonts قرار می‌گیرند و همچنین در رجیستری HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Fonts مشخص می‌شوند، جایی که Aspose.Words به دنبال این فونت‌ها می‌گردد.

اگر سندی حاوی فونت‌های تعبیه‌شده باشد، Aspose.Words می‌تواند داده‌های فونت مربوطه را از سند بخواند و از آن برای ایجاد طرح‌بندی سند استفاده کند. اسناد همچنین ممکن است حاوی پیوندهایی به فونت هایی باشند که در پوشه های سیستم نیستند، در این صورت سناریوهای زیر عمل می کنند:

  • کاربران می توانند منابع فونت جدید را از طریق کلاس FontSettings تنظیم کنند
  • Aspose.Words می تواند سعی کند فونت از دست رفته را با فونت مشابه جایگزین کند

فونت ها در سیستم های غیر Windows

Aspose.Words فونت‌ها را در پوشه‌های فونت سیستم جستجو می‌کند. لیستی از این پوشه ها ممکن است با روش SystemFontSource.get_system_font_folders دیده شود. اگر هیچ فونت پشتیبانی شده ای یافت نشد، Aspose.Words از فونت پیش فرض داخلی Fanwood.ttf استفاده می کند.

از آنجایی که معیارهای فونت Windows و غیر Windows OS متفاوت است، Aspose.Words هر کاری که ممکن است برای یافتن فونت مشابه و ایجاد طرحی مشابه با اصلی انجام می دهد. بهرحال همیشه این امکان پذیر نیست. در این موارد، کلاس FontSettings باید برای افزودن فونت های سفارشی یا قوانین جایگزین استفاده شود.

جایی که Aspose.Words به دنبال فونت های TrueType در Linux می گردد

توزیع های مختلف Linux ممکن است فونت ها را در پوشه های مختلف ذخیره کنند. Aspose.Words به دنبال فونت ها در چندین مکان می گردد. به‌طور پیش‌فرض، Aspose.Words فونت‌ها را در همه مکان‌های زیر جستجو می‌کند: /usr/share/fonts /usr/local/share/fonts /usr/X11R6/lib/X11/fonts. این رفتار پیش‌فرض برای اکثر توزیع‌های Linux کار می‌کند، اما تضمین نمی‌شود که همیشه کار کند، در این صورت ممکن است لازم باشد مکان فونت‌های نوع true را به صراحت مشخص کنید. برای انجام این کار، باید بدانید که فونت های TrueType در کجای توزیع Linux شما نصب شده اند.

جایی که Aspose.Words به دنبال فونت های TrueType در Mac OS X می گردد

Aspose.Words به دنبال فونت‌ها در پوشه /Library/Fonts می‌گردد، که محل استاندارد فونت‌های TrueType در Mac OS X است. در حالی که این تنظیم بیشتر اوقات برای شما کار می‌کند، ممکن است لازم باشد پوشه‌های فونت خود را در پوشه مشخص کنید. در صورت نیاز

بارگیری فونت ها از پوشه

اگر سندی که در حال پردازش است حاوی پیوندهایی به فونت هایی است که در سیستم نیستند، یا نمی خواهید آنها را به پوشه سیستم اضافه کنید یا مجوز ندارید، بهترین راه حل این است که یک پوشه با فونت های خود اضافه کنید. روش FontSettings.set_fonts_sources این اجازه می دهد تا منبع سیستم را با منبع کاربر جایگزین کنید. Aspose.Words دیگر به دنبال فونت‌ها در رجیستری یا پوشه Windows\Font نیست و در عوض فقط فونت‌های داخل پوشه (های) مشخص‌شده را اسکن می‌کند. متد FontSettings.get_font_sources مقادیر مربوطه را برمی گرداند.

تعیین یک یا چند پوشه فونت

متدهای FontSettings.set_fonts_folder و FontSettings.set_fonts_folders میانبرهایی برای روش FontSettings.set_font_sources با یک یا چند نمونه FolderFontSource هستند. این روش ها برای نشان دادن جایی که Aspose.Words باید به دنبال فونت باشد استفاده می شود. اگر پوشه ای وجود نداشته باشد یا در دسترس نباشد، Aspose.Words فقط این پوشه را نادیده می گیرد. اگر همه پوشه ها، از جمله منابع برای جایگزینی فونت، نادیده گرفته شوند، Aspose.Words از فونت Fanwood به عنوان پیش فرض استفاده می کند.

مثال زیر نحوه تنظیم پوشه یا منبع را نشان می دهد که Aspose.Words متعاقباً از آن برای جستجوی فونت های TrueType در حین رندر یا جاسازی فونت ها استفاده می کند:

فایل قالب این نمونه را می توانید از Aspose.Words GitHub دانلود کنید.

یک پارامتر بولی اضافی کنترل می‌کند که آیا فونت‌ها به صورت بازگشتی در همه پوشه‌ها اسکن شوند یا خیر، بنابراین تمام پوشه‌های فرزند یک پوشه مشخص را اسکن می‌کند. مثال زیر نشان می دهد که چگونه می توان Aspose.Words را به گونه ای تنظیم کرد که در چندین پوشه برای فونت های TrueType هنگام رندر یا جاسازی فونت ها جستجو کند:

به اولویت ها توجه کنید اگر فونت هایی با نام خانوادگی و سبک مشابه در منابع فونت های مختلف وجود داشته باشد، Aspose.Words فونت را از منبع با اولویت بالاتر انتخاب می کند. توضیحات قسمت “اولویت” را در زیر ببینید.

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

دارایی اولویت دار

ویژگی اولویت زمانی استفاده می شود که فونت هایی با نام خانوادگی و سبک مشابه در منابع فونت های مختلف وجود داشته باشد. در این حالت Aspose.Words فونت را از منبعی با مقدار اولویت بالاتر انتخاب می کند. به عنوان مثال، یک نسخه قدیمی از فونت در پوشه سیستم وجود دارد و مشتری نسخه جدیدی از همان فونت را در یک پوشه سفارشی اضافه کرده است.

دریافت لیستی از فونت های موجود

اگر می‌خواهید فهرستی از فونت‌های موجود را دریافت کنید که مثلاً می‌توان از آنها برای رندر کردن یک سند PDF استفاده کرد، می‌توانید از روش get_available_fonts استفاده کنید، همانطور که در مثال کد زیر نشان داده شده است. کلاس PhysicalFontInfo اطلاعات مربوط به فونت فیزیکی موجود برای موتور فونت Aspose.Words را مشخص می کند: