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 поверхня FontSettings API обмежена лише цим властивістю екземпляра за замовчуванням — розв’язання шрифтів на основі папок та системних джерел, яке в іншому місці в Aspose.Words використовується для заміни або розв’язання шрифтів для розмітки та рендерингу сторінок, відсутнє, оскільки розмітка та рендеринг сторінок виходять за межі цього випуску. Обробка шрифтів тут означає перевірку метаданих та вбудовування, а не заміну шрифтів для рендерингу.
Поради та найкращі практики
- Завжди перевіряйте
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsперед тим, як витягувати чи розповсюджувати вбудований шрифт — деякі шрифти ліцензовані лишеRestrictedLicenseабоPrintAndPreview. - Використовуйте
GetEmbeddedFontAsOpenType(), коли потрібен послідовний формат виводу незалежно від того, як вихідний документ вбудував шрифт (EmbeddedOpenTypeпротиOpenType). - Встановіть
FontInfoCollection.SaveSubsetFontsуtrue, щоб зменшити розмір вихідного файлу при вбудовуванні шрифтів, які використовують лише кілька гліфів. FontInfoCollection.Contains(name)дешевше, ніж індексування та обробка невдалого пошуку (наприклад,fontInfos[name]), коли потрібно лише перевірити наявність шрифту.
Поширені проблеми
| Проблема | Причина | Виправлення |
|---|---|---|
GetEmbeddedFont() не повертає придатних даних | Посиланий шрифт насправді не вбудований у документ | Перевірте налаштування вбудовування документа, перш ніж припускати, що дані шрифту присутні |
Індексування FontInfoCollection за назвою нічого не знаходить | Назва шрифту не збігається точно, включаючи регістр | Перелічіть FontInfoCollection за допомогою GetEnumerator(), щоб підтвердити точний рядок Name |
| Очікувані API для підстановки/розв’язання шрифтів відсутні | Розв’язання джерела шрифтів на основі папок та системи не реалізовано в цьому FOSS-виданні | Використовуйте FontInfo/FontInfoCollection лише для метаданих та вбудовування; підстановка шрифтів для візуалізації не входить у сферу цього видання |
FAQ
Як отримати список усіх шрифтів, які використано у документі?
Перераховуйте Document.FontInfos (a FontInfoCollection) за допомогою GetEnumerator(), або індексуйте його за назвою, щоб знайти конкретний (наприклад, fontInfos["Arial"]).
Чи можу я отримати необроблені байти вбудованого шрифту з документа?
Так, якщо шрифт вбудований — викличте FontInfo.GetEmbeddedFont(format, style) для оригінального вбудованого формату, або GetEmbeddedFontAsOpenType(style), щоб нормалізувати результат до OpenType.
Як переконатися, що шрифти вбудовані під час збереження документа?
Встановіть FontInfoCollection.EmbedTrueTypeFonts у true перед збереженням; додайте EmbedSystemFonts, якщо вам також потрібні шрифти, які передбачається, що присутні в будь-якій системі, і SaveSubsetFonts, щоб вбудувати лише використані гліфи.
Чи підтримує ця редакція визначення шрифтів з користувацької теки для рендерингу?
Ні — визначення джерел шрифтів на основі теки та системи (FontSettings конфігурація джерела) тут не реалізовано, оскільки воно слугує для розмітки сторінок та рендерингу, що виходить за межі цієї FOSS-редакції.
Що означає 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 | Перелічення, що ідентифікують формат вбудованого шрифту та варіант стилю |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Обмеження ліцензії на вбудовування, повідомлені для кожного шрифту |
FontSettings | Мінімальна точка входу font-settings (Document.FontSettings, LoadOptions.FontSettings); у цьому випуску відсутнє розв’язання font-source |