[ https://issues.apache.org/jira/browse/PDFBOX-5812?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tilman Hausherr updated PDFBOX-5812: ------------------------------------ Description: As reported by Toshiaki Ito in the users mailing list with a possible solution https://lists.apache.org/thread/y8z4k5vyc0t22d4c2hwzr7kzmo5zv08s {code} public static void main(String[] args) throws IOException { final String fontPath = "NotoSansJP-Regular.ttf"; final String out = "output.pdf"; // Atka Mackerel in Japanese kanji. (surrogate pair) final String message = "\uD867\uDE3D"; try (PDDocument doc = new PDDocument()) { PDPage page = new PDPage(); doc.addPage(page); PDFont font = PDType0Font.load(doc, new File(fontPath)); try (PDPageContentStream contents = new PDPageContentStream(doc, page)) { contents.beginText(); contents.setFont(font, 64); contents.newLineAtOffset(100, 700); contents.showText(message); contents.endText(); } doc.save(out); System.out.println(out + " created!"); } } {code} {noformat} **** StackTrace **** Exception in thread "main" java.lang.IllegalStateException: could not find the glyphId for the character: ? at org.apache.pdfbox.pdmodel.PDAbstractContentStream.applyGSUBRules(PDAbstractContentStream.java:1651) at org.apache.pdfbox.pdmodel.PDAbstractContentStream.encodeForGsub(PDAbstractContentStream.java:1632) at org.apache.pdfbox.pdmodel.PDAbstractContentStream.showTextInternal(PDAbstractContentStream.java:302) at org.apache.pdfbox.pdmodel.PDAbstractContentStream.showText(PDAbstractContentStream.java:266) at org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStream.java:37) at org.example.App.main(App.java:30) {noformat} It worked with 2.0.31 and I've just confirmed. was: As reported by Toshiaki Ito in the users mailing list https://lists.apache.org/thread/y8z4k5vyc0t22d4c2hwzr7kzmo5zv08s {code} public static void main(String[] args) throws IOException { final String fontPath = "NotoSansJP-Regular.ttf"; final String out = "output.pdf"; // Atka Mackerel in Japanese kanji. (surrogate pair) final String message = "\uD867\uDE3D"; try (PDDocument doc = new PDDocument()) { PDPage page = new PDPage(); doc.addPage(page); PDFont font = PDType0Font.load(doc, new File(fontPath)); try (PDPageContentStream contents = new PDPageContentStream(doc, page)) { contents.beginText(); contents.setFont(font, 64); contents.newLineAtOffset(100, 700); contents.showText(message); contents.endText(); } doc.save(out); System.out.println(out + " created!"); } } {code} {noformat} **** StackTrace **** Exception in thread "main" java.lang.IllegalStateException: could not find the glyphId for the character: ? at org.apache.pdfbox.pdmodel.PDAbstractContentStream.applyGSUBRules(PDAbstractContentStream.java:1651) at org.apache.pdfbox.pdmodel.PDAbstractContentStream.encodeForGsub(PDAbstractContentStream.java:1632) at org.apache.pdfbox.pdmodel.PDAbstractContentStream.showTextInternal(PDAbstractContentStream.java:302) at org.apache.pdfbox.pdmodel.PDAbstractContentStream.showText(PDAbstractContentStream.java:266) at org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStream.java:37) at org.example.App.main(App.java:30) {noformat} It worked with 2.0.31 and I've just confirmed. > IllegalStateException are thrown by surrogate pair character 𩸽 > --------------------------------------------------------------- > > Key: PDFBOX-5812 > URL: https://issues.apache.org/jira/browse/PDFBOX-5812 > Project: PDFBox > Issue Type: Bug > Affects Versions: 3.0.2 PDFBox > Reporter: Tilman Hausherr > Priority: Major > Labels: regression > Attachments: NotoSansJP-Regular.ttf > > > As reported by Toshiaki Ito in the users mailing list with a possible solution > https://lists.apache.org/thread/y8z4k5vyc0t22d4c2hwzr7kzmo5zv08s > {code} > public static void main(String[] args) throws IOException { > final String fontPath = "NotoSansJP-Regular.ttf"; > final String out = "output.pdf"; > // Atka Mackerel in Japanese kanji. (surrogate pair) > final String message = "\uD867\uDE3D"; > try (PDDocument doc = new PDDocument()) { > PDPage page = new PDPage(); > doc.addPage(page); > PDFont font = PDType0Font.load(doc, new File(fontPath)); > try (PDPageContentStream contents = new PDPageContentStream(doc, page)) > { > contents.beginText(); > contents.setFont(font, 64); > contents.newLineAtOffset(100, 700); > contents.showText(message); > contents.endText(); > } > doc.save(out); > System.out.println(out + " created!"); > } > } > {code} > {noformat} > **** StackTrace **** > Exception in thread "main" java.lang.IllegalStateException: could not > find the glyphId for the character: ? > at > org.apache.pdfbox.pdmodel.PDAbstractContentStream.applyGSUBRules(PDAbstractContentStream.java:1651) > at > org.apache.pdfbox.pdmodel.PDAbstractContentStream.encodeForGsub(PDAbstractContentStream.java:1632) > at > org.apache.pdfbox.pdmodel.PDAbstractContentStream.showTextInternal(PDAbstractContentStream.java:302) > at > org.apache.pdfbox.pdmodel.PDAbstractContentStream.showText(PDAbstractContentStream.java:266) > at > org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStream.java:37) > at org.example.App.main(App.java:30) > {noformat} > It worked with 2.0.31 and I've just confirmed. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org