Перетворення шрифтів. Додаткові відомості | .NET
У деяких випадках є сенс прочитати/змінити перетворені дані шрифту перед збереженням шрифту.
Метод Aspose.Font.Font.Convert(FontType fontType) був розроблений для таких випадків. Цей метод перетворює шрифт у вказаний тип і повертає об’єкт, успадкований від класу Aspose.Font.Font, який відповідає значенню FontType, переданому в метод Convert().
Наступна таблиця показує карту узгодженості між значеннями FontType та об’єктами, успадкованими від базового класу Aspose.Font.Font.
| Тип шрифту | Об’єкт шрифту |
|---|---|
TTF | Aspose.Font.Ttf.TtfFont |
Type1 | Aspose.Font.Type1.Type1Font |
CFF | Aspose.Font.Cff.CffFont |
OTF | Aspose.Font.Ttf.TtfFont |
Використовуйте об’єкт результуючого шрифту, щоб отримати доступ до властивостей шрифту або змінити їх перед збереженням результуючого шрифту або замість збереження результуючого шрифту.
На даний момент метод
Convert() підтримує конвертацію лише у формат шрифту TrueType (FontType.TTF), тому завжди повертає об’єкт типу
TtfFont як результат перетворення незалежно від використовуваного вихідного шрифту.
Наступний фрагмент коду завантажує шрифт CFF CenturyGothic з диска, перетворює його у формат TrueType і змінює назву перетвореного шрифту на “CenturyGothic_Converted”.
Виконайте наступні дії:
- Завантажте вихідний шрифт CFF –
- Створіть абсолютний шлях до вихідного файлу, використовуючи константу каталогу даних:
1string fontPath = Path.Combine(DataDir, "CenturyGothic.cff");Це гарантує правильне розташування файлу незалежно від операційної системи.
- Створіть
FontFileDefinition, який повідомляє Aspose.Font фізичний формат файлу ("cff") та надає джерело потоку для файлу:
1var fontFileDef = new FontFileDefinition("cff", new FileSystemStreamSource(fontPath));- Створіть
FontDefinition, який поєднує потрібний тип шрифту (FontType.CFF) з раніше створенимfontFileDef:
1var fontDefinition = new FontDefinition(FontType.CFF, fontFileDef);- Відкрийте шрифт за допомогою
Font.Open(fontDefinition). Метод повертає загальний екземплярFont, який представляє завантажений шрифт CFF і може бути використаний для подальших кроків конвертації.
- Конвертуйте шрифт на TrueType –
- Викличте метод конверсії для попередньо завантаженого об’єкта
Font:
1Aspose.Font.Font convertedFont = font.Convert(FontType.TTF);- Метод
Convertзчитує вихідні дані CFF, застосовує алгоритм конверсії та повертає новий екземплярAspose.Font.Font, який внутрішньо представляє шрифт TrueType (TtfFont). - Цей загальний
convertedFontможна додатково перетворити на конкретний типAspose.Font.Ttf.TtfFontдля доступу до властивостей, специфічних для TrueType.
- Приведіть результат до конкретного класу TrueType та перейменуйте –
- Безпечно приведіть загальний
convertedFontдо конкретного класу TrueType:
1Aspose.Font.Ttf.TtfFont destFont = convertedFont as Aspose.Font.Ttf.TtfFont;- Перевірте, чи приведення пройшло успішно (
destFont != null). Якщо приведення не вдалося, помилка обробиться відповідно. - Встановіть нову назву для конвертованого шрифту:
1destFont.FontName = "CenturyGothic_Converted";- Це оновлює внутрішні метадані назви шрифту, які будуть відображені у збереженому файлі.
- Підготуйте шлях до вихідного файлу –
- Виберіть потрібну назву вихідного файлу, наприклад,
"CffToTtf_out.ttf". - Створіть повний вихідний шлях, використовуючи константу вихідного каталогу:
1string outPath = Path.Combine(OutputDir, "CffToTtf_out.ttf");Path.Combineзабезпечує правильні роздільники шляхів на різних платформах та безпечно об’єднує ім’я каталогу та файлу.
- Збережіть конвертований шрифт TrueType –
- Збережіть перейменований шрифт TrueType на диск:
1destFont.Save(outPath);- Після збереження ви можете за потреби перевірити, чи файл було створено:
1bool exists = System.IO.File.Exists(outPath);- Запис
outPathабо перевірки існування допомагає підтвердити успішне конвертування та збереження.
1
2 // Open cff font
3 string fontPath = Path.Combine(DataDir, "CenturyGothic.cff");
4 FontDefinition fontDefinition = new FontDefinition(FontType.CFF, new FontFileDefinition("cff", new FileSystemStreamSource(fontPath)));
5 Font font = Font.Open(fontDefinition);
6
7 // Convert font into TrueType format and cast font returned to Aspose.Font.Ttf.TtfFont
8 Aspose.Font.Ttf.TtfFont destFont = font.Convert(FontType.TTF) as Aspose.Font.Ttf.TtfFont;
9
10 // Change name of converted font
11 destFont.FontName = "CenturyGothic_Converted";
12
13 // Ttf output settings
14 string outPath = Path.Combine(OutputDir, "CffToTtf_out.ttf");
15
16 // Save resultant font with font name changed
17 destFont.Save(outPath);Повний набір прикладів використання Aspose.Font для.NET розміщено в [Aspose.Font.Examples.sln]( https://github.com/aspose-font/Aspose.Font-Documentation/tree/master/ net-examples) у папці net-examples папки Aspose.Font Документація репозиторій github.