在 Android 上配置演示文稿的字体替代
Contents
[
Hide
]
设置字体替代规则
Aspose.Slides 允许您设置字体规则,以确定在特定条件下(例如,无法访问字体时)应采取的操作,方式如下:
- 加载相关演示文稿。
- 加载将被替换的字体。
- 加载新字体。
- 为替换添加规则。
- 将该规则添加到演示文稿的字体替换规则集合中。
- 生成幻灯片图像以观察效果。
以下 Java 代码演示了字体替代过程:
// 加载演示文稿
Presentation pres = new Presentation("Fonts.pptx");
try {
// 加载要被替换的源字体
IFontData sourceFont = new FontData("SomeRareFont");
// 加载新字体
IFontData destFont = new FontData("Arial");
// 添加字体替换规则
IFontSubstRule fontSubstRule = new FontSubstRule(sourceFont, destFont, FontSubstCondition.WhenInaccessible);
// 将规则添加到字体替换规则集合
IFontSubstRuleCollection fontSubstRuleCollection = new FontSubstRuleCollection();
fontSubstRuleCollection.add(fontSubstRule);
// 将字体规则集合添加到规则列表
pres.getFontsManager().setFontSubstRuleList(fontSubstRuleCollection);
// 当 SomeRareFont 不可访问时,将使用 Arial 字体代替
IImage slideImage = pres.getSlides().get_Item(0).getImage(1f, 1f);
// 将图像以 JPEG 格式保存到磁盘
try {
slideImage.save("Thumbnail_out.jpg", ImageFormat.Jpeg);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
NOTE
您可能想查看Font Replacement。常见问题
字体替代(font replacement)和字体置换(font substitution)有什么区别?
Replacement 是在整个演示文稿中强制用另一个字体覆盖一个字体。Substitution 是在特定条件下触发的规则,例如原始字体不可用时,使用指定的回退字体。
替代规则究竟何时生效?
这些规则参与标准的font selection序列,该序列在加载、渲染和转换期间评估;如果所选字体不可用,则会应用替代或置换。
如果未配置替代或置换且系统缺少该字体,默认行为是什么?
库将尝试选择最接近的可用系统字体,类似于 PowerPoint 的行为。
我可以在运行时附加自定义外部字体以避免置换吗?
可以。您可以在运行时add external fonts,使库在选择和渲染时考虑这些字体,包括后续的转换。
Aspose 是否随库分发任何字体?
否。Aspose 不分发付费或免费字体;您自行添加和使用字体,需自行负责。
在 Windows、Linux 和 macOS 上,置换行为是否存在差异?
是的。字体发现从操作系统的字体目录开始。不同平台的默认可用字体集和搜索路径不同,这会影响可用性以及是否需要置换。
如何准备环境以最大程度减少批量转换期间的意外置换?
在机器或容器之间同步字体集,add the external fonts以满足输出文档的需求,并在可能的情况下在演示文稿中embed fonts,确保渲染时可用所选字体。