Why is the Gujarati-Indian text not rendered correctly using Arial Unicode MS?
这是该问题的后续工作,iText的质量检查工程师@ amedee-van-gasse,如何将古吉拉特语-印度语言的字体导出为pdf?我问我如何用相关的mcve发表针对itext的问题。
为什么此序列Unicode
它应该这样呈现:
?????? ,还通过unicode-converter测试
但是,此代码(示例改编的iText形式:第11章:选择正确的字体)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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); } } |
产生此结果:
看起来与
?????
我已经测试了
字体使用了它,该字体随MS Office
无论您选择哪种字体,iText5和iText2(顺便说一下这是一个非常过时的版本)都不支持印度语脚本的呈现。
Rendering Indic脚本与任何拉丁脚本都不相似,因为应采取一系列其他附加操作来获得正确的结果,例如 某些字符需要首先根据语言规则进行重新排序。
这是iText公司的已知问题。
iText5中有一个针对Gujaranti的存根实现,称为GujaratiLigaturizer,但该实现的确很差,您不能期望获得正确的结果。
您可以尝试使用此ligaturizer处理字符串,然后以以下方式输出结果字符串:
1 2 3 | IndicLigaturizer g = new GujaratiLigaturizer(); String processed = g.process(inputString); // proceed with the processed string |
使用最新的版式jar文件构建您的应用程序
将解决您的古吉拉特语字体渲染问题
在itext中。