如何在 Apache FOP 中自动创建 italic/bold 字体?
How to create italic/bold fonts automatically in Apache FOP?
假设我正在使用 Apache FOP 创建一个 PDF 文件。 PDF 中的所有字符应为 Times New Roman Italic
。由于我的系统中没有这样的字体,Apache FOP 将尝试在 /data/fonts 中查找字体,该字体由 fop.xconf.
设置
<directory>/data/fonts</directory>
然而,/data/fonts中只有一个文件,即Times New Roman Regular.ttf
。是的,没有 Times New Roman Italic.ttf
也没有 Times New Roman Bold.ttf
。
ls /data/fonts
'Times New Roman Regular.ttf'
在这种情况下,Apache FOP 报告它找不到 Times New Roman Italic
字体,它又回到默认字体,它不是 Times New Roman
也不是斜体。
我可以通过将 Times New Roman Italic.ttf
放入 /data/fonts 来解决问题,但是如果我没有该字体的特定 italic/bold 版本怎么办?据我所知,有些字体根本没有特定的 bold/italic 版本。 Apache FOP 是否可以从常规字体自动创建 italic/bold 样式,即使结果不如特定的 italic/bold 字体?
如果您使用的是 FOP 2.2 版,则有一个配置选项可以启用自动创建 模拟 斜体和粗体字形:simulate-style
.
此示例将 style
和 weight
的四种组合映射到 相同的 TrueType 字体,在需要时加粗和倾斜字形:
<font kerning="yes" embed-url="Times.ttf" simulate-style="true">
<font-triplet name="Times" style="normal" weight="normal"/>
<font-triplet name="Times" style="italic" weight="normal"/>
<font-triplet name="Times" style="normal" weight="bold"/>
<font-triplet name="Times" style="italic" weight="bold"/>
</font>
请注意,注册所有不同的 font-triplet
元素非常重要;如果你只有 <font-triplet name="Times" style="normal" weight="normal"/>
字体替换机制将 首先 将粗体、斜体和粗斜体映射到注册的正常变体,然后 然后 FOP 将模拟样式(什么都不做)。
假设我正在使用 Apache FOP 创建一个 PDF 文件。 PDF 中的所有字符应为 Times New Roman Italic
。由于我的系统中没有这样的字体,Apache FOP 将尝试在 /data/fonts 中查找字体,该字体由 fop.xconf.
<directory>/data/fonts</directory>
然而,/data/fonts中只有一个文件,即Times New Roman Regular.ttf
。是的,没有 Times New Roman Italic.ttf
也没有 Times New Roman Bold.ttf
。
ls /data/fonts
'Times New Roman Regular.ttf'
在这种情况下,Apache FOP 报告它找不到 Times New Roman Italic
字体,它又回到默认字体,它不是 Times New Roman
也不是斜体。
我可以通过将 Times New Roman Italic.ttf
放入 /data/fonts 来解决问题,但是如果我没有该字体的特定 italic/bold 版本怎么办?据我所知,有些字体根本没有特定的 bold/italic 版本。 Apache FOP 是否可以从常规字体自动创建 italic/bold 样式,即使结果不如特定的 italic/bold 字体?
如果您使用的是 FOP 2.2 版,则有一个配置选项可以启用自动创建 模拟 斜体和粗体字形:simulate-style
.
此示例将 style
和 weight
的四种组合映射到 相同的 TrueType 字体,在需要时加粗和倾斜字形:
<font kerning="yes" embed-url="Times.ttf" simulate-style="true">
<font-triplet name="Times" style="normal" weight="normal"/>
<font-triplet name="Times" style="italic" weight="normal"/>
<font-triplet name="Times" style="normal" weight="bold"/>
<font-triplet name="Times" style="italic" weight="bold"/>
</font>
请注意,注册所有不同的 font-triplet
元素非常重要;如果你只有 <font-triplet name="Times" style="normal" weight="normal"/>
字体替换机制将 首先 将粗体、斜体和粗斜体映射到注册的正常变体,然后 然后 FOP 将模拟样式(什么都不做)。