字体转换。高级详细信息| .NET
在某些情况下,在保存字体之前,可以读取/修改转换的字体数据的感觉。
方法 aspose.font.font.convert(fonttype fonttype)是为这种情况设计的。此方法将字体转换为指定类型的字体和 返回从 aspose.font.font类继承的对象的对应的对象,该类别对应于 fonttype值,将其传递到 convert()方法中。
下表显示了 fonttype值和对象之间的相干性图,该值是从基础 aspose.font.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 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);使用aspose.font for.net的完整示例放在 aspose.font.examples.sln解决方案中,在 net-examples aspose.font文档文件夹中。