【发布时间】:2012-03-16 11:12:23
【问题描述】:
我用:
- Apache fop 1.0
- Java
我需要处理 unicode 高于 u0100 的特殊字符。我应该使用的目标字体是 Arial。由于我无法期望 Arial 出现在目标平台(例如 Linux)上,我在我的 jar 中嵌入了一个 Arial.ttf。 我的实际配置文件如下所示:
<fop ...>
<!-- Base URL for resolving relative URLs -->
<base>./</base>
<!-- Font Base URL for resolving relative font URLs -->
<font-base>./</font-base>
<renderers>
<renderer mime="application/pdf">
<fonts>
<font kerning="yes" embed-url="arial.ttf" encoding-mode="auto">
<font-triplet name="Arial" style="normal" weight="normal"/>
<font-triplet name="ArialMT" style="normal" weight="normal"/>
</font>
<!--<directory>C:/Windows/Fonts</directory>-->
</fonts>
<auto-detect/>
</renderer>
...
</fop>
这样做我在将配置文件加载到 fop 时出错:
org.apache.fop.apps.FOPException: Failed to resolve font with embed-url 'arial.ttf'
到目前为止,我设法让它工作的唯一方法是将文件夹路径硬编码到配置文件中:
<font kerning="yes" embed-url="C:/myapp/arial.ttf" encoding-mode="auto">
<font-triplet name="Arial" style="normal" weight="normal"/>
<font-triplet name="ArialMT" style="normal" weight="normal"/>
</font>
但显然这不是解决方案!
使用可以在 Windows 上工作的“目录”标签,只是因为那里有 Arial。但如上所述,它还必须在 Linux、Mac 等上运行。
“自动检测”标签也不起作用(即使在 Windows 上也不起作用)- 也不是解决方案,因为我不能指望目标平台安装了 Arial。
有解决这个问题的建议吗?
【问题讨论】:
标签: apache-fop