Преобразование шрифтов. Дополнительные сведения | .NET
В некоторых случаях имеет смысл прочитать/изменить данные конвертированного шрифта перед сохранением шрифта.
Метод Aspose.Font.Font.Convert(FontType fontType) был разработан для таких случаев. Этот метод преобразует шрифт в указанный тип и возвращает объект, унаследованный от класса Aspose.Font.Font, который соответствует значению FontType, переданному в метод Convert().
В следующей таблице показана карта согласованности между значениями FontType и объектами, унаследованными от базового класса Aspose.Font.Font.
| Font type | Font object |
|---|---|
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 converterFont = 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 = converterFont 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 exist = 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);The full range of examples for using Aspose.Font for.NET is placed in Aspose.Font.Examples.sln solution, in the net-examples folder of the Aspose.Font Documentation github repository.