为什么使用Arial Unicode MS无法正确呈现Gujarati-Indian文本?

时间:2016-04-15 20:03:33

标签: java pdf fonts itext

这是关于此问题的How to export fonts in Gujarati-Indian Language to pdf?@amedee-van-gasse,iText asked me的QA工程师的后续跟踪,用相关的mcve发布特定于itext的问题。

为什么这个unicode \u0ab9\u0abf\u0aaa\u0acd\u0ab8序列无法正确呈现?

它应该像这样呈现:

હિપ્સ,也使用unicode-converter

进行了测试

然而此代码(示例改编自iText: Chapter 11: Choosing the right font

public class FontTest {

    /** The resulting PDF file. */
    public static final String RESULT = "fontTest.pdf";
    /** the text to render. */
    public static final String TEST = "\u0ab9\u0abf\u0aaa\u0acd\u0ab8";

    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(
            "ARIALUNI.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();
        System.out.println("DONE");
    }

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

生成结果

pdf output

有所不同
  

હિપ્સ

我使用itextpdf-5.5.4.jaritextpdf-5.5.9.jaritext-2.1.7.js3.jar进行了测试(与jasper-reports一起分发)

使用它的字体与MS Office ARIALUNI.TTF一起分发,可以从这里下载Arial Unicode MS *也许有一些法律问题下载请参阅Mike' Pomax&#39 ; Kamermans发表评论

2 个答案:

答案 0 :(得分:9)

无论您选择哪种字体,iText5和iText2(顺便说一下,它都是非常过时的版本)都不支持人工智能脚本的渲染。

渲染印度语脚本与任何拉丁文脚本都不相似,因为应采取一系列额外的操作来获得正确的结果,例如:某些角色需要先根据语言规则重新排序。

这是iText公司的一个已知问题。

在iText5中有一个名为GujaratiLigaturizer的Gujaranti的存根实现,但实现非常糟糕,你不能期望用它得到正确的结果。

您可以尝试使用此ligaturizer处理字符串,然后按以下方式输出结果字符串:

IndicLigaturizer g = new GujaratiLigaturizer();
String processed = g.process(inputString);
// proceed with the processed string

答案 1 :(得分:0)

使用最新的版式jar文件构建您的应用程序 将解决您的古吉拉特语字体渲染问题 在itext中。