2011-11-02 128 views
12

我一直试图插入一个Unicode字符∇或者&#x25BD ;,所以它显示在由Apache FOP生成的PDF中。如何使用Apache fop显示Unicode字符?显示“?”而不是性格。

这是我做过什么,到目前为止:

  1. 首先,你必须知道正确的Unicode码点根据这个基本的帮助Apache XSL-FO Input代表字符,是Unicode的代码点在Unicode中被发现。 org在数学运算符列表中。代码是∇∇ NABLA,我也可以使用▽▽一个向下的三角形。

  2. 在找到正确的代码后,我必须选择一个包含必需字形的字体,并且Adobe PostScript和PDF规范指定Base-14 Font Character Mapping必须可用于每个PostScript解释器和PDF阅读器,因此我在列表和字体符号包含∇ &#x2207,(无字体包含▽ ▽丢弃)

  3. 后,搜索结果的代码,我想我应该在XSL使用:FO是:

    <fo:block font-family="Symbol"> 
    &#x2207; 
    </fo:block> 
    
  4. 问题是当它生成的PDF,结果不是我所期望的“&#x2207;”,而是它显示了一个“?”,我读到当它不能显示字符时通常显示“#”,但我的代码正在显示“?”。

  5. 我正在使用Apache fop 0.95,我怀疑是导致问题的版本,我应该更新到1.0,但目前这是生产中使用的版本,并且团队负责人表示很难该升级它的时刻。

那么这就是问题,除了版本可能是别的东西?可能是我忘了做的东西? 如何使用Apache fop显示Unicode字符?

+0

我在FOP 1.0和FOP.95中试过你的'fo:block'代码。它在两个版本都运行良好。你有权访问stderr吗?如果有字体或字形问题,您应该会收到警告。 –

+0

@DevNull实际上,我还没有在FOP 1.0中测试,只是FOP .95,我开始学习这个,你能告诉我如何访问stderr以查看它是字体还是字形问题? –

+0

也许你正在像Eclipse这样的IDE中进行开发。无论何时运行代码,输出都会发送到控制台;默认情况下(至少在Eclipse中)将在该控制台中显示stderr为红线。 – Wivani

回答

1

与符号的十进制值试试(我想你不需要符号字体系列本):

&#8711;

大家谁需要知道的特殊符号的值,你可以找到他们here