1

根据此处的说明,我尝试过但找不到类似的问题/问题。

在 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 NastaliqAmar Nastaliq字体进行测试时,观察到了相同的结果(使用不同的单词集) 。


其次,一些单词(至少几百个;又因字体而异)看起来很混乱:

iText(坏):

HTML(好):

以下是使用 Jameel Noori Nastaliq 测试的更详尽的单词列表。

\u0691似乎是最有问题的角色之一。其他还包括一些变音符号。

是否有希望在不尝试并切换到其他字体的情况下解决此问题?

4

0 回答 0