XSL-FO:如何添加" helvetica neue"字体和输出到pdf

时间:2015-03-31 21:55:28

标签: fonts xsl-fo apache-fop fontforge

我是否正确使用XSL-FO(Apache FOP)生成pdf时,无法使用windows 7 c:\ windows \ fonts *中的字体?

我刚刚安装了" helvetica neue" OTF格式的字体。

根据 https://xmlgraphics.apache.org/fop/trunk/fonts.html

"对系统字体的支持依赖于Java AWT子系统来获取字体度量信息。通过操作系统注册,AWT子系统知道系统上可用的字体,以及每个字体的字体度量。

使用支持系统字体的渲染器(参见上表)并且您错过了字体时,您可以将其安装在您的操作系统中,并且它应该可用于这些渲染器。请注意,对于仅支持自定义字体的输出格式(例如PDF或PostScript),情况并非如此。"

如果我的理解是正确的,那就说如果我的渲染是PDF(意思是输出是pdf ??),那么我就无法通过AWT / OS访问字体,因此,我赢了# 39;能够使用Windows 7字体生成PDF格式的文字吗?

------------------------------更新,这仅适用于ttf字体,而不适用于otf。 不知道如何让otf字体工作。

----------------------------- update:20150402:

使用FOP 1.1:

我从以下网址下载了这个特殊的免费helvetica neue字体: http://www.ephifonts.com/free-helvetica-font-helvetica-neue.html

我将fop配置为使用fop.xconf但我在处理ttf文件时遇到错误,而且我不知道如何使用fontforge编辑字体ttf文件:

fop -c fop.xconf -xml xml.xml -xsl coversheet.xsl -pdf output.pdf

Apr 2, 2015 6:53:55 PM org.apache.fop.fonts.truetype.TTFFile readCMAP
SEVERE: Unsupported TrueType font: No Unicode or Symbol cmap table not    present. Aborting
Apr 2, 2015 6:53:55 PM org.apache.fop.events.LoggingEventListener    processEvent
WARNING: Unable to load font file: file:/C:/windows/FONTS/HelveticaNeue.ttf. Reason: java.io.IOException: TrueType font is not supported: file:/C:/windows/FONTS/HelveticaNeue.ttf

Apr 2, 2015 6:53:55 PM org.apache.fop.fonts.truetype.TTFFile getTTCnames
INFO: This is a TrueType collection file with 4 fonts

由于

1 个答案:

答案 0 :(得分:0)

(初步披露:我是FOP开发人员)

  

我是否认为无法使用Windows 7中的字体   c:\ windows \ fonts *当使用XSL-FO(Apache FOP)生成pdf?

要配置字体需要才能被FOP识别和使用,但配置可以真的简单:您可以告诉FOP查看所有字体特定目录中的文件(甚至是递归的),或者只是在“通常”的位置查找字体。

此配置片段取自您问题中链接的相同font configuration page

<renderers>
  <renderer mime="application/pdf">
     <fonts>
        <!-- register all the fonts found in a directory -->
        <directory>C:\MyFonts1</directory>

        <!-- register all the fonts found in a directory and all of its sub directories (use with care) -->
        <directory recursive="true">C:\MyFonts2</directory>

        <!-- automatically detect operating system installed fonts -->
        <auto-detect/>
     </fonts>
  </renderer>
</renderers>

您可以在this answer中找到有关字体配置的其他详细信息。

  

更新,这仅适用于ttf字体,而不适用于otf。不知道我怎么能得到   otf字体工作。

版本2.0已添加OpenType字体支持。