我在apache fop 1.0环境中使用嵌入式字体:
<fo:block-container
right="10mm" position="absolute">
<fo:block font-family="hnlt57con" >
my text
</fo:block>
</fo:block-container>
configfile如下所示:
<fop version="1.0">
<renderers>
<renderer mime="application/pdf">
<fonts>
<font kerning="no" embed-url="Y:/test/helvetica-neue-lt-std-57-condensed.ttf" embedding-mode="subset">
<font-triplet name="hnlt57con" style="normal" weight="normal" />
</font>
</fonts>
</renderer>
</renderers>
这样可以正常工作,文本以字体hnlt57con呈现。
我现在要做的是以粗体显示一些文字:
<fo:block-container
right="10mm" position="absolute">
<fo:block font-family="hnlt57conbold" font-weight="bold" >
my text
</fo:block>
</fo:block-container>
configfile如下所示:
<fop version="1.0">
<renderers>
<renderer mime="application/pdf">
<fonts>
<font kerning="no" embed-url="Y:/test/helvetica-neue-lt-std-57-condensed.ttf" embedding-mode="subset">
<font-triplet name="hnlt57con" style="normal" weight="normal" />
</font>
<font kerning="no" embed-url="Y:/test/helvetica-neue-lt-std-57-condensed.ttf" embedding-mode="subset">
<font-triplet name="hnlt57conbold" style="normal" weight="bold" />
</font>
</fonts>
</renderer>
</renderers>
不幸的是,文本不是以粗体显示,而是以与上例相同的方式。
添加额外的font-triplet(如http://www.scriptorium.com/whitepapers/fop_fonts/FOP_fonts5.html中的sugessted)并没有改变任何内容:
<fop version="1.0">
<renderers>
<renderer mime="application/pdf">
<fonts>
<font kerning="no" embed-url="Y:/test/helvetica-neue-lt-std-57-condensed.ttf" embedding-mode="subset">
<font-triplet name="hnlt57con" style="normal" weight="normal" />
</font>
<font kerning="no" embed-url="Y:/test/helvetica-neue-lt-std-57-condensed.ttf" embedding-mode="subset">
<font-triplet name="hnlt57conbold" style="normal" weight="bold" />
<font-triplet name="hnlt57conbold" style="normal" weight="700" />
</font>
</fonts>
</renderer>
</renderers>
helvetica-neue-lt-std-57-condensed.ttf是一种使用fontforge从helvetica-neue-lt-std-57-condensed.otf转换自己的字体。
我的问题:
如何在嵌入字体中以粗体呈现一些文本?
该字体是否有可能以粗体显示,因为它是从otf转换而来的?在MS-Word中,我可以粗体使用它。
我错过了什么吗?
答案 0 :(得分:2)
是的,你错过了最重要的事情。普通字体不是粗体字体,它们是不同的东西,因此是不同的文件。在您的示例中,您将正常字体和粗体字体指向完全相同的TTF文件(读取:字体文件)。即helvetica-neue-lt-std-57-condensed.ttf。
所以你告诉FOP使用与普通和粗体完全相同的字体文件,因此你会看到相同的输出。
要对此进行测试,请尝试将“粗体”条目指向您拥有的其他TTF文件。您将看到字符更改为该字体。
简而言之,“粗体”字体和“普通”字体不是从同一个TTF字体文件创建的,它们来自两个不同的文件。您应该将粗体条目指向具有粗体字形的其他文件。
哦,我应该补充一点,尽管您认为它在Microsoft Word中有效,但您确实错了。 Word是(1)使用不同但相似的字体而不告诉你或(2):假冒“通过膨胀字体中的像素来加粗。除非你真的在Windows中安装了它,否则不会使用完全不同的粗体字体不知道。