XSL-FO:如何添加 "helvetica neue" 字体并输出为 pdf
XSL-FO: how to add "helvetica neue" fonts and output to pdf
当使用 XSL-FO (Apache FOP) 生成 pdf 时,无法使用来自 windows 7 c:\windows\fonts* 的字体,我是否正确?
我刚刚安装了 OTF 格式的 "helvetica neue" 字体。
根据
https://xmlgraphics.apache.org/fop/trunk/fonts.html
"对系统字体的支持依赖于 Java AWT 子系统的字体规格信息。通过操作系统注册,AWT 子系统知道系统上可用的字体以及每种字体的字体规格。
当使用支持系统字体的渲染器(见上文 table)并且您缺少一种字体时,您可以将它安装在您的操作系统中并且它应该可用于这些渲染器。请注意,这不适用于仅支持自定义字体的输出格式,例如 PDF 或 PostScript。"
如果我的理解是正确的,就是说如果我的渲染是PDF(意思是输出是pdf??),那么我无法通过AWT/OS访问字体,因此,我不会能够使用 windows 7 种字体在 PDF 中生成带有此类字体的文本吗?
----------------------------更新,这只适用于ttf字体,不适用于otf。
不确定如何让 otf 字体工作。
----------------------------更新: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
谢谢
(初步披露:我是FOP开发者)
Am I correct that it's not possible to use fonts from windows 7
c:\windows\fonts* when using XSL-FO (Apache FOP) to generate a pdf?
字体需要配置才能被FOP识别和使用,但是配置可以真的简单:你可以告诉 FOP 查看特定目录中的所有字体文件(甚至递归),或者只是在 "usual" 位置查找字体。
此配置片段取自您问题中链接的同一个 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 中找到有关字体配置的更多详细信息。
Update, this works only for ttf font, not otf. Not sure how I can get
otf fonts to work.
2.0 版添加了 OpenType 字体支持。
当使用 XSL-FO (Apache FOP) 生成 pdf 时,无法使用来自 windows 7 c:\windows\fonts* 的字体,我是否正确?
我刚刚安装了 OTF 格式的 "helvetica neue" 字体。
根据 https://xmlgraphics.apache.org/fop/trunk/fonts.html
"对系统字体的支持依赖于 Java AWT 子系统的字体规格信息。通过操作系统注册,AWT 子系统知道系统上可用的字体以及每种字体的字体规格。
当使用支持系统字体的渲染器(见上文 table)并且您缺少一种字体时,您可以将它安装在您的操作系统中并且它应该可用于这些渲染器。请注意,这不适用于仅支持自定义字体的输出格式,例如 PDF 或 PostScript。"
如果我的理解是正确的,就是说如果我的渲染是PDF(意思是输出是pdf??),那么我无法通过AWT/OS访问字体,因此,我不会能够使用 windows 7 种字体在 PDF 中生成带有此类字体的文本吗?
----------------------------更新,这只适用于ttf字体,不适用于otf。 不确定如何让 otf 字体工作。
----------------------------更新: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
谢谢
(初步披露:我是FOP开发者)
Am I correct that it's not possible to use fonts from windows 7 c:\windows\fonts* when using XSL-FO (Apache FOP) to generate a pdf?
字体需要配置才能被FOP识别和使用,但是配置可以真的简单:你可以告诉 FOP 查看特定目录中的所有字体文件(甚至递归),或者只是在 "usual" 位置查找字体。
此配置片段取自您问题中链接的同一个 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 中找到有关字体配置的更多详细信息。
Update, this works only for ttf font, not otf. Not sure how I can get otf fonts to work.
2.0 版添加了 OpenType 字体支持。