【问题标题】:How can I display a Unicode character using Apache fop? Showing "?" instead of character.如何使用 Apache fop 显示 Unicode 字符?显示“?”而不是性格。
【发布时间】:2011-12-20 10:34:55
【问题描述】:

我一直在尝试插入 Unicode 字符 ∇ 或 ▽,因此它会显示在 Apache FOP 生成的 PDF 中。

这是我到目前为止所做的:

    1234563运营商。代码是∇∇NABLA,我也可以使用▽▽一个向下的三角形。
  1. 找到正确的代码后,我必须选择一种包含必要字形的字体,并且 Adob​​e PostScript 和 PDF 规范指定了每个 PostScript 解释器和 PDF 阅读器必须可用的 Base-14 Font Character Mapping,所以我在列表中搜索并且字体Symbol包含∇&#x2207,(没有字体包含▽▽丢弃)

  2. 在搜索之后,我认为我应该在 xsl:fo 中使用的结果代码是:

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

  4. 我使用的是 Apache fop 0.95,我怀疑是那个版本导致了问题,我应该更新到 1.0,但目前是生产中使用的版本,团队负责人说很难正在升级它。

所以这就是问题所在,除了版本之外还有其他问题吗?可能是我忘了做的傻事吗? 如何使用 Apache fop 显示 Unicode 字符?

【问题讨论】:

  • 我在 FOP 1.0 和 FOP .95 中都尝试了您的 fo:block 代码。它在两个版本中都运行良好。您可以访问 stderr 吗?如果存在字体或字形问题,您应该会收到警告。
  • @DevNull 实际上,我还没有在 FOP 1.0 中测试过,只是 FOP .95,我开始学习这个,你能告诉我如何访问 stderr 以查看它是否是字体或字形问题?
  • 您可能在 Eclipse 等 IDE 中进行开发。每当您运行代码时,输​​出都会发送到控制台;默认情况下(至少在 Eclipse 中)会在该控制台中将 stderr 显示为红线。
  • 可能您的 FOP 配置不包含适合替代 Symbol 字体的字体,或者您的 PDF 阅读器的 Symbol 字体存在问题。
  • @gioele 我同意你的第一个说法,也许 FOP 配置不包括合适的字体,我刚刚结束使用 svg 来绘制它,我做了所有这些研究以避免使用 svg,但在最后我无法解决它,顺便说一句,我不再使用 xsl:fo。

标签: xml xsl-fo apache-fop


【解决方案1】:

尝试使用符号的十进制值(我认为您不需要 Symbol 字体系列):

需要了解特殊符号取值的大家可以找here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多