根据此处的说明,我尝试过但找不到类似的问题/问题。
在 Ubuntu 上,使用:
iText Core 7.2.1
pdfCalligraph 3.0.0
这段代码:
Document doc = new Document(new PdfDocument(new PdfWriter(new ByteArrayOutputStream())));
PdfFont urduFont = PdfFontFactory.createFont("Jameel_Noori_Nastaliq.ttf", PdfEncodings.IDENTITY_H, EmbeddingStrategy.FORCE_EMBEDDED);
String hope = "\u0627\u064f\u0645\u0651\u06cc\u062f"; // اُمّید
Text text = new Text(hope).setFont(urduFont).setTextAlignment(TextAlignment.RIGHT);
doc.add(new Paragraph(text).setBaseDirection(BaseDirection.RIGHT_TO_LEFT).setFontScript(UnicodeScript.ARABIC));
抛出:
java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at com.itextpdf.layout.renderer.LineRenderer.updateBidiLevels(LineRenderer.java:1496)
at com.itextpdf.layout.renderer.LineRenderer.layout(LineRenderer.java:178)
at com.itextpdf.layout.renderer.ParagraphRenderer.directLayout(ParagraphRenderer.java:234)
at com.itextpdf.layout.renderer.ParagraphRenderer.layout(ParagraphRenderer.java:106)
at com.itextpdf.layout.renderer.RootRenderer.addChild(RootRenderer.java:141)
at com.itextpdf.layout.RootElement.createAndAddRendererSubTree(RootElement.java:367)
at com.itextpdf.layout.RootElement.addElement(RootElement.java:376)
at com.itextpdf.layout.RootElement.add(RootElement.java:105)
at com.itextpdf.layout.Document.add(Document.java:140)
这是我用Jameel Noori Nastaliq测试的单词列表——最优雅的乌尔都语字体之一。使用 Nafees Nastaliq、 Noto Nastaliq和Amar Nastaliq字体进行测试时,观察到了相同的结果(使用不同的单词集) 。
其次,一些单词(至少几百个;又因字体而异)看起来很混乱:
iText(坏):
与HTML(好):
以下是使用 Jameel Noori Nastaliq 测试的更详尽的单词列表。
\u0691
似乎是最有问题的角色之一。其他还包括一些变音符号。
是否有希望在不尝试并切换到其他字体的情况下解决此问题?