Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Words需要TrueType字体用于各种任务,包括将文档呈现为固定页面格式,例如PDF或XPS。 当Aspose.Words呈现文档时,它需要执行TrueType字体的嵌入和子集嵌入到结果文档中,这是文档生成期间的正常做法,包括流行的PDF或XPS格式。 这可确保文档对任何查看器都显示相同。 此外,XPS规范要求字体始终嵌入到文档中。
要确保Aspose.Words准确测量字符并成功嵌入相关字体,必须满足以下条件:
请注意,文档中的字体表示一个实体,如family name,style,size,color,与TrueTypefont(物理字体)实体不同。 Aspose.Words在处理的某个阶段将文档中的字体解析为物理字体。 这可以实现某些任务,最常见的是在布局构建和嵌入/子集到固定页面格式期间计算文本大小的任务。 许多其他不太受欢迎的任务,例如加载HTML时的字体解析和替换或嵌入/子集到某些流格式,也同样启用。
所有可用的字体操作机制都包含在FontSettings类中。 此类负责在定义的字体源中获取字体以及字体替换过程,如下所述。
字体分几个步骤解析:
当Aspose.Words第一次在文档中遇到字体时,它会尝试从位于每个字体源中的字体文件中获取基本字体信息,例如字体全名、族名、版本、样式。 检索所有字体后,Aspose.Words使用这些详细信息来查找所需的字体数据或所请求字体的合适替换。
由于上述过程非常耗时,因此可能会在首次启动时对应用程序性能产生负面影响。 但是,FontSettings的每个实例都有自己的缓存,这可以减少后续文档的处理时间。 例如,您可以在不同文档之间共享FontSettings类的实例,这使您可以加快文档的加载速度。 下面的示例演示了这一点:
在FontSettings未明确定义的情况下,Aspose.Words使用默认的FontSettings实例。 此实例也会在文档之间自动共享,并且可以按如下方式提取:
Java
FontSettings fontSettings = FontSettings.getDefaultInstance();
如果您确定所有处理文档都需要相同的字体设置,那么建议设置和使用默认的FontSettings实例。 假设您需要为所有文档使用相同的字体源。 在这种情况下,您只需修改默认实例,如下所示:
文档中的文本可以使用各种字体进行格式化,例如Arial,Times New Roman,Verdana等。 当Aspose.Words呈现文档时,它会尝试选择文档中指定的字体。
但是,在某些情况下,无法找到确切的字体,并且Aspose.Words必须将其替换为类似的字体。 Aspose.Words根据以下过程选择字体:
FontConfig实用程序应用OS字体设置(如果它们可用)。 此非Windows功能必须与FontConfig兼容的OS一起使用。 几乎任何基于Unix的OS已经有一个FontConfig库,旨在提供系统范围的字体配置,自定义和访问应用程序。 否则,用户可以轻松安装此库。FontConfig实用程序处于禁用状态。 您可以按如下方式启用它: fontSettings.getSubstitutionSettings().getFontConfigSubstitution()().setEnabled(true);
<TableSubstitutionSettings xmlns="Aspose.Words">
<SubstitutesTable>
<Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" />
…
</SubstitutesTable>
</TableSubstitutionSettings>
fontSettings.getSubstitutionSettings().getTableSubstitution().load("Table.xml");
fontSettings.getSubstitutionSettings().getTableSubstitution().save("MyTable.xml");
fontSettings.getSubstitutionSettings().getTableSubstitution().setEnabled(false);
FontInfoCollection fontInfos = doc.getFontInfos();
fontSettings.getSubstitutionSettings().getFontInfoSubstitution().setEnabled(false);
FontInfo替换也失败的情况下应用。 默认情况下也启用此规则。 根据此规则,Aspose.Words将尝试使用DefaultFontName属性中指定的默认字体。 如果用户没有选择自己的默认字体,那么"Times New Roman"将被用作默认字体。 可以禁用此规则,如下所示: fontSettings.getSubstitutionSettings().getDefaultFontSubstitution().setEnabled(false);
fontSettings.getSubstitutionSettings().getDefaultFontSubstitution().getDefaultFontName();
fontSettings.getSubstitutionSettings().getDefaultFontSubstitution().setDefaultFontName("Arial");
有时,可能不清楚为什么文档布局发生了变化,或者为什么某些字体看起来不像预期的那样。 在这种情况下,由IWarningCallback接口实现的字体替换警告消息来拯救。 他们有FontSubstitution警告类型和标准描述文本格式,“字体'
Aspose.Words中使用了两种不同的机制-字体替换和字体回退。 字体替换是在文档中指定的字体在字体源中找不到时使用的,如上面部分所述。 字体回退机制在字体解析时使用,但不包含特定字符。 在这种情况下,Aspose.Words尝试使用字符的后备字体之一。
有一个BuildAutomatic方法,通过扫描可用字体自动构建回退设置。 由于此方法可能会产生非最佳回退设置,因此您可以使用FontFallbackSettings类的属性来控制字体回退行为。 此类指定字体回退机制的设置。 您可以获取FontFallbackSettings类的实例,如下所示:
Java
FontFallbackSettings settings = fontSettings.getFallbackSettings();
与Table substitution rule类似,此机制使用XML表进行配置。 可以使用以下方法加载和保存这些XML表:
Java
fontSettings.getFallbackSettings().load("MyNewFallbackTable.xml");
fontSettings.getFallbackSettings().save("Current_FallbackTable.xml");
Aspose.Words版本包括两个表:MsOfficeFallbackSetting.xml和NotoFallbackSetting.xml。
MsOfficeFallbackSetting表定义了一系列字符的替换策略,类似于Microsoft Word使用的策略。 因此,该策略需要安装MicrosoftOffice字体。 MsOfficeFallbackSetting可以使用以下方法激活:
.Java
fontSettings.getFallbackSettings().loadMsOfficeFallbackSettings();
NotoFallbackSetting表是专门为与Google Noto字体一起使用而创建的(请参阅下一节中有关Google Noto字体设置的更多信息),可以按如下方式启用:
Java
fontSettings.getFallbackSettings().loadNotoFallbackSettings();
下面的代码示例演示如何从XML文件加载字体回退设置:
在上面的代码示例中,使用了以下XML文件:
<FontFallbackSettings xmlns="Aspose.Words">
<FallbackTable>
<!-- Fallback table consists of the rules. Each rule defines the fallback fonts which Aspose.Words should use for specified Unicode ranges and base fonts. Rules are checked one by one and the first applicable fallback font is used. If none of the rules are applicable then ".notdef" glyph (missing glyph) from the base font will be used. -->
<!-- This rule defines that "Vijaya" fallback font should be used for "U+0B80..U+0BFF Tamil" Unicode block. -->
<Rule Ranges="0B80-0BFF" FallbackFonts="Vijaya"/>
<!-- This rule defines that "Segoe UI Emoji" and "Segoe UI Symbol" fallback fonts should be used for "U+1F300..U+1F5FF Miscellaneous Symbols and Pictographs", "U+1F600..U+1F64F Emoticons" Unicode blocks. If "Segoe UI Emoji" font does not contains the glyph for the requested Unicode code point then "Segoe UI Symbol" will be checked. -->
<Rule Ranges="1F300-1F64F" FallbackFonts="Segoe UI Emoji, Segoe UI Symbol"/>
<!-- This rule defines that "Arial" fallback font should be used for "U+2000..U+206F General Punctuation", "U+2070..U+209F Superscripts and Subscripts" Unicode blocks and specific "U+20B9 INDIAN RUPEE SIGN" code point. -->
<Rule Ranges="2000-206F, 2070-209F, 20B9" FallbackFonts="Arial" />
<!-- These rules defines that for "U+3040..U+309F Hiragana" Unicode block "MS Gothic" fallback font should be used if base font is "Times New Roman" and "MS Mincho" fallback font for all other base fonts. -->
<Rule Ranges="3040-309F" FallbackFonts="MS Gothic" BaseFonts="Times New Roman"/>
<Rule Ranges="3040-309F" FallbackFonts="MS Mincho"/>
<!-- This rule defines that "Arial Unicode MS" fallback font should be used if applicable fallback font was not found by previous rules. -->
<Rule FallbackFonts="Arial Unicode MS"/>
</FallbackTable>
</FontFallbackSettings>Aspose.Words为Google Noto字体提供预定义的字体回退设置。 这些是根据SIL开放字体许可证授权的免费字体,可以从Google Noto字体下载。 FontFallbackSettings类提供LoadNotoFallbackSettings方法。 它加载预定义的回退设置,这些设置使用Google Noto字体,如下面的代码示例所示:
Aspose.Words尝试自动在文件系统上查找TrueType字体。 通常,您可以依靠Aspose.Words的默认行为来查找TrueType字体,但有时您需要指定自己的包含TrueType字体的文件夹。 该 指定TrueType字体位置 主题描述Aspose.Words查找字体的方式和位置,以及如何指定自己的字体位置。
Aspose.Words和Microsoft Word中字体格式的处理存在一些差异,如下表所示:
| Microsoft Word | Aspose.Words | |
|---|---|---|
| TrueType字体和带有TrueType轮廓的OpenType字体 | 支持。 | 支持。 |
| OpenType字体与PostScript轮廓 | 支持大多数情况。 不支持嵌入到固定页面格式,如PDF和XPS。 文本替换为位图图像。 | 支持大多数情况,包括嵌入到固定页面格式。 |
| OpenType字体变化 | 仅支持命名实例。 不支持连续变化。 | 支持唯一的默认实例。 不支持命名实例和连续变体。 |
| Type1字体 | 支持2013年之前的Windows版本和MacOS 版本。 从2013年开始,对Windows版本的支持将被删除。 | 不支持。 |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.