[
https://issues.apache.org/jira/browse/PDFBOX-4828?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17104096#comment-17104096
]
Tilman Hausherr commented on PDFBOX-4828:
-----------------------------------------
It happened in PDFBOX-4580. The warning "FeatureRecord array not alphabetically
sorted by FeatureTag: init < isol" is related to the problem. Removing the
"return" in the code makes it work again. The change is there to detect corrupt
fonts. ArialUni.ttf is obviously not a corrupt font but it does not follow the
specification.
So there are two things to do:
* make the check more relaxed so that only non alphanum names are checked
* find out why the ArrayIndexOutOfBoundsException. My guess is that we skip
one table but not another table that references it.
> Encode a text using the vertical type of the font in the attachment, which
> succeeded in version 2.0.12 but failed in version 2.0.19
> -----------------------------------------------------------------------------------------------------------------------------------
>
> Key: PDFBOX-4828
> URL: https://issues.apache.org/jira/browse/PDFBOX-4828
> Project: PDFBox
> Issue Type: Bug
> Affects Versions: 2.0.19
> Reporter: bai yuan
> Priority: Major
> Attachments: ARIALUNI.TTF, Test1.java
>
>
> [^ARIALUNI.TTF]
> [^Test1.java]ARIALUNI.TTF^!/jira/images/icons/link_attachment_7.gif|width=7,height=7,align=absmiddle!^
> Run the follows code use 2.0.12, the text can be successfully encoded. Run
> this code use 2.0.19, the text can't be encoded.
> {code:java}
> public static void main(String[] args) throws IOException { public static
> void main(String[] args) throws IOException {
> System.setProperty("sun.java2d.cmm",
> "sun.java2d.cmm.kcms.KcmsServiceProvider"); PDDocument doc = new
> PDDocument(); PDPage page = new PDPage(PDRectangle.A4);
> doc.addPage(page);
> File file = new File("ARIALUNI.TTF"); PDType0Font ttFont =
> PDType0Font.loadVertical(doc, file); PDPageContentStream
> contentStream1 = new PDPageContentStream(doc, page);
> contentStream1.beginText(); contentStream1.newLineAtOffset(100, 100);
> String text = "电信"; if(isCharacterEncodeable(text, ttFont)) {
> contentStream1.setFont(ttFont, 12);
> contentStream1.showText(text); } contentStream1.endText();
> contentStream1.close(); doc.save("export.pdf");
> doc.close(); System.out.println("aaaaa"); } private static boolean
> isCharacterEncodeable(String text, PDFont font){ try { font.encode(text);
> return true; } catch (Exception e) { return false; } }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]