无法用iText显示unicode 0x0332

时间:2012-11-14 21:09:03

标签: java unicode fonts itext

设置

我正在使用iText 5.3.0和Fedora 17,使用PDF阅读器测试llpp和evince。我的IDE是Eclipse Indigo r2。我的终端是urxvt,其字体与PDF中使用的字体相同。

问题

其他unicode字符显示就好了。 iText书中的清单11.3显示就好了。但尝试获取带有an underline的X,X,如"X\u0332",则不会显示在PDF上。我可以使用System.out.println将字符串记录到终端,它可以正常工作。这是我正在尝试的一个例子:

public static void main(String[] args) throws DocumentException, IOException {
  Document document = new Document(PageSize.LETTER);
  PdfWriter.getInstance(document, new FileOutputStream("fnord.pdf"));
  document.open();
  FontFactory.register("fonts/mplus-1mn-regular.ttf", "mplus");
  Font font = FontFactory.getFont(
    "mplus",
    BaseFont.IDENTITY_H,
    BaseFont.EMBEDDED,
    12
  );
  String s = "X\u0332";
  System.out.println(s);
  document.add(new Paragraph(s, font));
  document.close();
}

我发现一个古老的,可能相关的email from Paulo Soares说法“必须在将文字呈现给iText之前完成”。

我不确定这意味着什么,或者如何做,或者它是否仍然相关。

预期/实际

我希望:一张带有X的PDF,X下面有一行,即X.

我得到:带有X的PDF,没有行。

2 个答案:

答案 0 :(得分:0)

你的角色是一个非空间,see here

编辑页面说它左右连接,所以我的答案不是很有用:(

答案 1 :(得分:0)

我的pdf观看者似乎没有正确显示。我复制并粘贴了pdf查看器中的文本输出,复制到我的终端(我已经验证了这个角色的工作),然后看到X.

复制和粘贴工作在

  • llpp with mupdf version a606f714258677688c67e9561b87cc70f9e9b6b0
  • adobe reader 9.5.1

但是在evince 3.4.0(poppler 0.18.4)中不起作用。复制的文本只是一个简单的X。

所以似乎iText没有错。