Fonts
Fonts
این راهنما نشان میدهد چگونه قلمهای مرجع در یک سند را بررسی کنید، دادههای قلم توکار را استخراج کنید، و TrueType تعبیه قلم را هنگام ذخیره با Aspose.Words FOSS برای .NET کنترل کنید. Aspose.Words FOSS برای .NET تمام قلمهای مرجعشده توسط سند بارگذاریشده را از طریق FontInfoCollection ردیابی میکند و متادیتای هر قلم، استخراج قلم توکار، و کنترلهای تعبیه-در-ذخیره را از طریق FontInfo در اختیار میگذارد. Document.FontSettings و LoadOptions.FontSettings نقطهٔ ورود FontSettings (بهصورت عمدی در این نسخه حداقلی) را فراهم میکنند.
بررسی قلمهای استفادهشده در یک سند
DocumentBase.FontInfos (که توسط Document ارثبری میشود) یک FontInfoCollection برمیگرداند که هر قلم مرجعشده در هرجایی از سند را توصیف میکند. میتوانید با نام (مثلاً fontInfos["Arial"]) به آن دسترسی پیدا کنید، وجود آن را با Contains(name) تست کنید، تعدادشان را با Count بشمارید، یا کل مجموعه را از طریق GetEnumerator() فهرست کنید.
ویژگیهای قلم و طبقهبندی
هر FontInfo یک قلم را توصیف میکند: Name و AltName آن را شناسایی میکنند، Family آن را با استفاده از شمارشگر FontFamily ( Auto، Roman، Swiss، Modern، Script، Decorative ) طبقهبندی مینماید، Pitch FontPitch آن را گزارش میدهد ( Default، Fixed، Variable )، و IsTrueType، Charset، و Panose دادههای سطح پایینتر مطابقت قلم را در اختیار میگذارند.
استخراج قلم توکار
اگر یک سند دارای قلمهای توکار باشد، FontInfo.GetEmbeddedFont(format, style) بایتهای خام قلم توکار را برای EmbeddedFontFormat معین (EmbeddedOpenType یا OpenType) و EmbeddedFontStyle (Regular، Bold، Italic، BoldItalic) بر میگرداند. GetEmbeddedFontAsOpenType(style) قلم را مستقیماً به قالب OpenType تبدیلشده بر میگرداند، صرفنظر از این که ابتدا چگونه توکار شده باشد.
حقوق مجوز توکار کردن قلم
قبل از استخراج یا بازتوکار کردن یک قلم، FontInfo.EmbeddingLicensingRights را بررسی کنید، که یک شیء FontEmbeddingLicensingRights است. EmbeddingUsagePermissions سطح مجوز را از طریق شمارنده FontEmbeddingUsagePermissions (Installable، RestrictedLicense، PrintAndPreview، Editable) گزارش میدهد، در حالی که NoSubsetting و BitmapEmbeddingOnly محدودیتهای بیشتری که توسط فروشنده قلم تنظیم شدهاند را علامت میزنند.
کنترل توکار کردن قلم هنگام ذخیرهسازی
FontInfoCollection همچنین سوئیچهای توکار سطح سند را دربردارد: EmbedTrueTypeFonts را روی true تنظیم کنید تا تمام قلمهای TrueType استفادهشده در سند هنگام ذخیره شدن توکار شوند، EmbedSystemFonts را برای شامل کردن قلمهایی که بهطور معمول در هر سیستمی موجود فرض میشوند، و SaveSubsetFonts را برای توکار کردن فقط گلیفهای واقعاً استفادهشده به جای قلم کامل تنظیم کنید.
دامنه FontSettings در این نسخه
Document.FontSettings و LoadOptions.FontSettings هر دو یک شیء FontSettings بر میگردانند، و FontSettings.DefaultInstance یک نمونه پیشفرض مشترک را افشا میکند. در این نسخهی FOSS، سطح API FontSettings به آن ویژگی نمونه پیشفرض محدود شده است — حلوفصل منبع قلم بر پایه پوشه و سیستم، که در جای دیگر در Aspose.Words برای جایگزینی یا حلوفصل قلمها برای چیدمان صفحه و رندر استفاده میشود، موجود نیست، زیرا چیدمان صفحه و رندر خارج از دامنه این نسخه هستند. در اینجا مدیریت قلم به معنای بررسی متادیتا و توکار کردن است، نه جایگزینی قلم برای رندر.
نکات و بهترین شیوهها
- همیشه
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsرا قبل از استخراج یا توزیع مجدد یک فونت توکار بررسی کنید — برخی فونتها فقط تحت مجوزRestrictedLicenseیاPrintAndPreviewهستند. - از
GetEmbeddedFontAsOpenType()استفاده کنید وقتی به فرمت خروجی یکسانی نیاز دارید بدون توجه به این که سند منبع فونت را چگونه توکار کرده است (EmbeddedOpenTypeدر مقابلOpenType). FontInfoCollection.SaveSubsetFontsرا رویtrueتنظیم کنید تا حجم فایل خروجی کاهش یابد زمانی که فونتهای توکار فقط از تعداد محدودی گلیف استفاده میکنند.- استفاده از
FontInfoCollection.Contains(name)ارزانتر از ایندکسگذاری و مدیریت یک جستجوی ناموفق (مثلاًfontInfos[name]) است وقتی فقط نیاز به بررسی وجود یک فونت دارید.
مشکلات معمول
| مشکل | دلیل | رفع |
|---|---|---|
GetEmbeddedFont() داده قابل استفادهای بر نمیگرداند | فونت ارجاعشده در واقع در سند جاسازی نشده است | قبل از فرض اینکه دادههای فونت موجود است، تنظیمات جاسازی سند را بررسی کنید |
ایندکسگذاری در FontInfoCollection بر اساس نام هیچ نتیجهای نمیدهد | نام فونت دقیقاً مطابقت ندارد، از جمله حساسیت به حروف بزرگ/کوچک | فهرست FontInfoCollection را با GetEnumerator() انجام دهید تا رشتهٔ دقیق Name را تأیید کنید |
| APIهای مورد انتظار برای جایگزینی/حل فونت وجود ندارند | حل منبع فونت مبتنی بر پوشه و سیستم در این نسخهٔ متن باز پیادهسازی نشده است | از FontInfo/FontInfoCollection فقط برای فراداده و جاسازی استفاده کنید؛ جایگزینی فونت برای رندر بخشی از محدودهٔ این نسخه نیست |
FAQ
چگونه میتوانم تمام فونتهایی که یک سند به آنها ارجاع میدهد را فهرست کنم؟
Document.FontInfos را (یک FontInfoCollection) از طریق GetEnumerator() شمارش کنید، یا با نام آن اندیسگذاری کنید تا یک مورد خاص را جستجو کنید (مثلاً fontInfos["Arial"]).
آیا میتوانم بایتهای خام یک فونت توکار را از یک سند استخراج کنم؟
بله، اگر فونت توکار باشد — برای فرمت توکار اصلی FontInfo.GetEmbeddedFont(format, style) را صدا بزنید، یا برای نرمالسازی نتیجه به OpenType از GetEmbeddedFontAsOpenType(style) استفاده کنید.
چگونه میتوانم اطمینان حاصل کنم که هنگام ذخیرهسازی سند، فونتها توکار میشوند؟
قبل از ذخیره، FontInfoCollection.EmbedTrueTypeFonts را به true تنظیم کنید؛ اگر همچنین نیاز دارید که فونتها فرض کنند در هر سیستمی موجود هستند، EmbedSystemFonts را اضافه کنید، و برای توکار کردن فقط گلیفهای مورد استفاده، SaveSubsetFonts را اضافه کنید.
آیا این نسخه از حل فونتها از یک پوشهٔ سفارشی برای رندرینگ پشتیبانی میکند؟
نه — حل منبع فونت بر پایهٔ پوشه و سیستم (FontSettings پیکربندی منبع) در اینجا پیادهسازی نشده است، زیرا هدف آن خدمت به چینش صفحه و رندرینگ است که خارج از حوزهٔ این نسخهٔ متنباز میباشد.
FontEmbeddingLicensingRights.NoSubsetting به چه معنی است؟
این یک پرچم مجوز است که توسط حقوق توکار ارائهدهندهٔ فونت گزارش میشود: وقتی true، ممکن است فونت به فقط گلیفهای مورد استفاده محدود نشود.
API Reference خلاصه
| کلاس / متد | توضیح |
|---|---|
FontInfoCollection | فونتهای ارجاعشده در یک سند؛ فهرستساز بر اساس نام (fontInfos[name])، Contains()، Count، GetEnumerator()، بهعلاوه EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | فرادادههای یک قلم: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | استخراج بایتهای قلم توکار |
EmbeddedFontFormat / EmbeddedFontStyle | enumهایی که فرمت و نوع سبک یک فونت جاسازیشده را شناسایی میکنند |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | محدودیتهای مجوز جاسازی برای هر فونت گزارش شده |
FontSettings | نقطه ورودی حداقل تنظیمات فونت (Document.FontSettings, LoadOptions.FontSettings)؛ در این نسخه حل منبع فونت انجام نمیشود |