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准确测量字符并成功嵌入相关字体,必须满足以下条件:
请注意,文档中的字体代表一个实体,例如家族名称、样式、大小、颜色,与 TrueType 字体(物理字体)实体不同。 Aspose.Words 在处理的某个阶段将文档中的字体解析为物理字体。这可以实现某些任务,最常见的是在布局构建期间计算文本大小以及固定页面格式的嵌入/子集化的任务。许多其他不太流行的任务,例如加载 HTML 时的字体解析和替换或嵌入/子集化到某些流格式,也同样启用。
所有可用的字体操作机制都包含在 FontSettings 类中。此类负责在定义的字体源中获取字体以及字体替换过程,如下所述。
字体解析分几个步骤:
当 Aspose.Words 第一次在文档中遇到某种字体时,它会尝试从每个字体源中的字体文件中获取基本字体信息,例如字体全名、家族名称、版本、样式。检索到所有字体后,Aspose.Words 使用这些详细信息来查找所需的字体数据或所需字体的合适替代品。
由于上述过程非常耗时,因此可能会对应用程序首次启动时的性能产生负面影响。但是,FontSettings 的每个实例都有自己的缓存,这可以减少后续文档的处理时间。例如,您可以在不同文档之间共享 FontSettings 类的实例,这使您可以加快文档的加载速度。以下示例演示了这一点:
在未明确定义 FontSettings 的情况下,Aspose.Words 使用默认的 FontSettings 实例。该实例也会在文档之间自动共享,并且可以按如下方式提取:
如果您确定所有处理文档都需要相同的字体设置,那么建议设置并使用默认的 FontSettings 实例。假设您需要为所有文档使用相同的字体源。在这种情况下,您只需修改默认实例即可:
文档中的文本可以使用各种字体进行格式化,例如 Arial、Times New Roman、Verdana 等。当 Aspose.Words 呈现文档时,它会尝试选择文档中指定的字体。
然而,在某些情况下,无法找到确切的字体,Aspose.Words 必须将其替换为类似的字体。 Aspose.Words按照以下过程选择字体:
FontConfig 库,该库旨在提供系统范围的字体配置、自定义和对应用程序的访问。否则,用户可以轻松安装该库。
Aspose.Words 知道如何查询数据并解释 FontConfig 结果以达到其自身目的。默认情况下,FontConfig 实用程序处于禁用状态。您可以按如下方式启用它: fontSettings.SubstitutionSettings.FontConfigSubstitution.Enabled = true;
FontConfig 替换规则替换字体,则将使用此规则替换字体。 <TableSubstitutionSettings xmlns="Aspose.Words">
<SubstitutesTable>
<Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" />
…
</SubstitutesTable>
</TableSubstitutionSettings>
fontSettings.SubstitutionSettings.TableSubstitution.Load("Table.xml");
fontSettings.SubstitutionSettings.TableSubstitution.Enabled = false;
FontInfoCollection fontInfos = doc.FontInfos;
fontSettings.SubstitutionSettings.FontInfoSubstitution.Enabled = false;
FontInfo替换也失败的情况下,将应用DefaultFont替换规则。该规则也是默认启用的。根据此规则,Aspose.Words 将尝试使用 DefaultFontName 属性中指定的默认字体。如果用户没有选择自己的默认字体,那么"Times New Roman"将被用作默认字体。可以禁用该规则,如下所示: fontSettings.SubstitutionSettings.DefaultFontSubstitution.Enabled = false;
fontSettings.SubstitutionSettings.DefaultFontSubstitution.DefaultFontName;
fontSettings.SubstitutionSettings.DefaultFontSubstitution.DefaultFontName = "Arial";
如果 FontInfo 可用,FontInfo 替换规则 将始终解析字体并覆盖默认字体规则。如果您想使用默认字体规则,您应该禁用FontInfo 替换规则。请注意,FontConfig 替换规则 将在大多数情况下解析字体,从而覆盖所有其他规则。
有时,可能不清楚为什么文档布局发生了变化,或者为什么某些字体看起来不符合预期。在这种情况下,IWarningCallback 接口实现的字体替换警告消息可以发挥作用。它们具有 FontSubstitution 警告类型和标准描述文本格式"Font ‘
Aspose.Words 使用两种不同的机制–字体替换和字体回退。当在字体源中找不到文档中指定的字体时,将使用字体替换,如上面各节所述。字体回退机制在字体解析时使用,但它不包含特定字符。在这种情况下,Aspose.Words 尝试使用该字符的后备字体之一。
有一种 BuildAutomatic 方法可以通过扫描可用字体自动构建后备设置。由于此方法可能会产生非最佳回退设置,因此您可以使用 FontFallbackSettings 类的属性来控制字体回退行为。此类指定字体回退机制的设置。您可以按如下方式获取 FontFallbackSettings 类的实例:
.NET
FontFallbackSettings settings = fontSettings.FallbackSettings;
与表替换规则类似,该机制使用XML表进行配置。可以使用以下方法加载和保存这些 XML 表:
.NET
fontSettings.FallbackSettings.Load("MyNewFallbackTable.xml");
fontSettings.FallbackSettings.Save("Current_FallbackTable.xml");
Aspose.Words 版本包括两个表:MsOfficeFallbackSetting.xml 和 NotoFallbackSetting.xml。
MsOfficeFallbackSetting表定义了一系列字符的替换策略,这与Microsoft Word使用的策略类似。因此,该策略需要安装 Microsoft Office 字体。 MsOfficeFallbackSetting 可以使用以下方法激活:
.NET
fontSettings.FallbackSettings.LoadMsOfficeFallbackSettings();
NotoFallbackSetting 表是专门为与 Google Noto 字体一起使用而创建的(请参阅下一节中有关 Google Noto 字体设置的更多信息),并且可以按如下方式启用:
.NET
fontSettings.FallbackSettings.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 Fonts 下载。 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 字体 | 支持的。 | 支持的。 |
| 具有 PostScript 轮廓的 OpenType 字体 | 支持大多数场景。不支持嵌入固定页面格式,例如 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.