2015-12-15 43 views
1

部分中有这个jasper-report-character-encoding-in-pdf问题。字体(Myanmar3)在iText中无法正确显示

问题不能在碧玉报告来解决,因为它似乎是一个问题(利用iText v 5.5.4)

示例代码:

public class FontTest { 

    /** The resulting PDF file. */ 
    public static final String RESULT = "pdf/fontTest.pdf"; 
    /** the text to render. */ 
    public static final String TEST = "\u1005\u101B\u1004\u103A\u1038\u1021\u1004\u103A\u1038\u1019\u103B\u102C\u1038\u1011\u100A\u103A\u101E\u103D\u1004\u103A\u1038\u1001\u103C\u1004\u103A\u1038"; 

    public void createPdf(String filename) throws IOException, DocumentException { 
     Document document = new Document(); 
     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename)); 
     document.open(); 
     BaseFont bf = BaseFont.createFont(
      "lib/mm3.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
     Font font = new Font(bf, 20); 
     ColumnText column = new ColumnText(writer.getDirectContent()); 
     column.setSimpleColumn(36, 730, 569, 36); 
     column.addElement(new Paragraph(TEST, font)); 
     column.go(); 
     document.close(); 
    } 

    public static void main(String[] args) throws IOException, DocumentException { 
     new FontTest().createPdf(RESULT); 
    } 
} 

的字体可以是在mm3.ttf

下载将错误地呈现为:

PDF RESULT

应该呈现为(使用浏览器相同的ttf

Correct rendering

只是出于好奇发生了什么事? (似乎是某些字符,虚线的圆圈应该向后移动,但这不会发生)。

这是.tff的问题还是iText不支持这些字体?

+3

你看到的是由此造成的行为iText不支持连字的事实。您需要下一个未发布的iText版本。我们将在明年发布测试版本,但仅限于客户。 –

+0

@BrunoLowagie,1000感谢您的回复,期待新版本 –

+0

是否可以使用此版本的iText直接处理* glyphs *?然后你需要知道的是这个字体的内部OpenType'规则',你可以在你的代码中做charcater的翻译。 – usr2564301

回答

1

转换成Bruno Lowagie答案(社区维基)评论(的原始开发者)

你看到的是一个事实,即iText的不支持连字引起的行为。 (当前版本github.com5.5.8

您需要下一个未发布的iText版本。我们将推出测试版,明年(2016),但只有给客户

多亏了@Rad Lexus此的其他问题提供有关iText的访问直接的openType字形一些赏金有一个答案Accessing OpenType glyph variants in iText

+0

我编辑了你的答案,因为官方下载页面在GitHub上。 Sourceforge只是一个传统备份。 –

+0

它不是我的,它的每个人的:) –

+0

我们现在在5.5.9,但是这主要是一个bug修复版本。不是Bruno提到的新版本。 –