Re: Surrogate pair error
Chris Bowditch <[email protected]>
| Newsgroups | gmane.text.xml.fop.user |
|---|---|
| Message-ID | <AM6PR0402MB3541BF609B1A8DB393CE8B44FBE70@AM6PR0402MB3541.eurprd04.prod.outlook.com> |
Hi Jan, Indeed this should work since FOP 2.3 thanks to FOP-1969. I suggest you log a new bug if you are able to share your XSL-FO and supporting Font files. Thanks, Chris On 24/02/2020 14:05, Jan Driesen wrote: > > Hi, > > If we set the MPH 2b Damas font > (https://fedoraproject.org/wiki/MPH_2B_Damase_fonts), we get the > exception from my initial email. Using fontforge, I could verify that > this font has a glyph for the character. > > If we set Segoe UI Historic > (https://docs.microsoft.com/en-us/typography/font-list/segoe_ui_historic) > as a font (it also has a glyph for this), we get a different exception. > > Both fonts are referred to in fop.xconf > > A version of the FO for each font is attached to this mail. > > INFO: Default page-height set to: 297mm > > feb 24, 2020 2:59:28 PM org.apache.fop.apps.FopConfParser configure > > INFO: Default page-width set to: 210mm > > feb 24, 2020 2:59:29 PM org.apache.fop.cli.Main startFOP > > SEVERE: Exception > > org.apache.fop.apps.FOPException: ill-formed UTF-16 sequence, contains > isolated high surrogate at end of sequence > > java.lang.IllegalArgumentException: ill-formed UTF-16 sequence, > contains isolated high surrogate at end of sequence > > Â Â Â Â Â Â Â at > org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:296) > > Â Â Â Â Â Â Â at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:116) > > Â Â Â Â Â Â Â at org.apache.fop.cli.Main.startFOP(Main.java:183) > > Â Â Â Â Â Â Â at org.apache.fop.cli.Main.main(Main.java:214) > > Caused by: java.lang.IllegalArgumentException: ill-formed UTF-16 > sequence, contains isolated high surrogate at end of sequence > > Â Â Â Â Â Â Â at > org.apache.fop.fonts.MultiByteFont.mapCharsToGlyphs(MultiByteFont.java:666) > > Â Â Â Â Â Â Â at > org.apache.fop.fonts.MultiByteFont.charSequenceToGlyphSequence(MultiByteFont.java:570) > > Â Â Â Â Â Â Â at > org.apache.fop.fonts.MultiByteFont.performSubstitution(MultiByteFont.java:551) > > Â Â Â Â Â Â Â at > org.apache.fop.fonts.LazyFont.performSubstitution(LazyFont.java:424) > > Â Â Â Â Â Â Â at org.apache.fop.fonts.Font.performSubstitution(Font.java:471) > > Â Â Â Â Â Â Â at > org.apache.fop.fonts.GlyphMapping.processWordMapping(GlyphMapping.java:141) > > Â Â Â Â Â Â Â at > org.apache.fop.fonts.GlyphMapping.doGlyphMapping(GlyphMapping.java:92) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.inline.TextLayoutManager.processWord(TextLayoutManager.java:960) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.inline.TextLayoutManager.getNextKnuthElements(TextLayoutManager.java:819) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.inline.LineLayoutManager.collectInlineKnuthElements(LineLayoutManager.java:698) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.inline.LineLayoutManager.getNextKnuthElements(LineLayoutManager.java:627) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.BlockLayoutManager.getNextChildElements(BlockLayoutManager.java:141) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:290) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:113) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:105) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.FlowLayoutManager.getNextChildElements(FlowLayoutManager.java:223) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.FlowLayoutManager.addChildElements(FlowLayoutManager.java:147) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:116) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:69) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.PageBreaker.getNextKnuthElements(PageBreaker.java:251) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreaker.java:770) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java:178) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java:158) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:389) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.PageBreaker.doLayout(PageBreaker.java:112) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:143) > > Â Â Â Â Â Â Â at > org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:267) > > Â Â Â Â Â Â Â at > org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:139) > > Â Â Â Â Â Â Â at > org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:362) > > Â Â Â Â Â Â Â at > org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:190) > > Â Â Â Â Â Â Â at > org.apache.xalan.transformer.TransformerIdentityImpl.endElement(TransformerIdentityImpl.java:1102) > > Â Â Â Â Â Â Â at > org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) > > Â Â Â Â Â Â Â at > org.apache.xerces.xinclude.XIncludeHandler.endElement(Unknown Source) > > Â Â Â Â Â Â Â at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown > Source) > > Â Â Â Â Â Â Â at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > > Â Â Â Â Â Â Â at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > > Â Â Â Â Â Â Â at org.apache.xerces.parsers.XML11Configuration.parse(Unknown > Source) > > Â Â Â Â Â Â Â at org.apache.xerces.parsers.XML11Configuration.parse(Unknown > Source) > > Â Â Â Â Â Â Â at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > > Â Â Â Â Â Â Â at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown > Source) > > Â Â Â Â Â Â Â at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:485) > > Â Â Â Â Â Â Â at > org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:293) > > Â Â Â Â Â Â Â ... 3 more > > Jan Driesen > > IT Office > > Brepols Publishers NV > > *From:*Simon Steiner <[email protected]> > *Sent:* maandag 24 februari 2020 12:39 > *To:* [email protected] > *Subject:* RE: Surrogate pair error > > HI, > > Can you set the font-family in the fo file and add a font to the > fop.xconf? > > Thanks > > *From:*Jan Driesen <[email protected] > <mailto:[email protected]>> > *Sent:* 24 February 2020 11:34 > *To:* [email protected] > <mailto:[email protected]> > *Subject:* Surrogate pair error > > Hi everybody, > > We have a document containing the following character: Unicode > Character 'CYPRIOT SYLLABLE RO' (U+10826) > > When running fop (2.4) to render a pdf, it fails with the exception > pasted below. Attached you can find a sample fo file that contains the > character and produces the error. > > I understand that fop 2.3 introduced support for surrogate pairs. > > feb 24, 2020 12:24:00 PM org.apache.fop.apps.FopConfParser configure > > INFO: Default page-height set to: 11.00in > > feb 24, 2020 12:24:00 PM org.apache.fop.apps.FopConfParser configure > > INFO: Default page-width set to: 8.50in > > feb 24, 2020 12:24:02 PM org.apache.fop.events.LoggingEventListener > processEvent > > WARNING: Glyph "?" (0xd802) not available in font "Helvetica". > > feb 24, 2020 12:24:02 PM org.apache.fop.events.LoggingEventListener > processEvent > > WARNING: Glyph "?" (0xdc26) not available in font "Helvetica". > > feb 24, 2020 12:24:02 PM org.apache.fop.area.RenderPagesModel addPage > > SEVERE: Error while rendering page 1 > > java.lang.StringIndexOutOfBoundsException: String index out of range: 1 > > Â Â Â Â Â Â Â at java.lang.String.charAt(String.java:658) > > Â Â Â Â Â Â Â at > org.apache.fop.util.CharUtilities.containsSurrogatePairAt(CharUtilities.java:417) > > Â Â Â Â Â Â Â at > org.apache.fop.render.pdf.PDFPainter.drawTextWithDX(PDFPainter.java:494) > > Â Â Â Â Â Â Â at > org.apache.fop.render.pdf.PDFPainter.drawText(PDFPainter.java:436) > > Â Â Â Â Â Â Â at > org.apache.fop.render.pdf.PDFPainter.drawText(PDFPainter.java:449) > > Â Â Â Â Â Â Â at > org.apache.fop.render.intermediate.IFRenderer$TextUtil.flush(IFRenderer.java:1237) > > Â Â Â Â Â Â Â at > org.apache.fop.render.intermediate.IFRenderer.renderText(IFRenderer.java:1063) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderInlineArea(AbstractRenderer.java:861) > > Â Â Â Â Â Â Â at > org.apache.fop.render.intermediate.IFRenderer.renderInlineArea(IFRenderer.java:926) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderLineArea(AbstractRenderer.java:845) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:704) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderBlock(AbstractRenderer.java:758) > > Â Â Â Â Â Â Â at > org.apache.fop.render.intermediate.IFRenderer.renderBlock(IFRenderer.java:998) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.java:689) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderFlow(AbstractRenderer.java:591) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractPathOrientedRenderer.renderFlow(AbstractPathOrientedRenderer.java:789) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderMainReference(AbstractRenderer.java:568) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderBodyRegion(AbstractRenderer.java:433) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderRegionViewport(AbstractRenderer.java:380) > > Â Â Â Â Â Â Â at > org.apache.fop.render.intermediate.IFRenderer.renderRegionViewport(IFRenderer.java:737) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderPageAreas(AbstractRenderer.java:345) > > Â Â Â Â Â Â Â at > org.apache.fop.render.AbstractRenderer.renderPage(AbstractRenderer.java:318) > > Â Â Â Â Â Â Â at > org.apache.fop.render.intermediate.IFRenderer.renderPage(IFRenderer.java:587) > > Â Â Â Â Â Â Â at > org.apache.fop.area.RenderPagesModel.addPage(RenderPagesModel.java:123) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.AbstractPageSequenceLayoutManager.finishPage(AbstractPageSequenceLayoutManager.java:316) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.PageSequenceLayoutManager.finishPage(PageSequenceLayoutManager.java:243) > > Â Â Â Â Â Â Â at > org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:147) > > Â Â Â Â Â Â Â at > org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:267) > > Â Â Â Â Â Â Â at > org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:139) > > Â Â Â Â Â Â Â at > org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:362) > > Â Â Â Â Â Â Â at > org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:190) > > Â Â Â Â Â Â Â at > org.apache.xalan.transformer.TransformerIdentityImpl.endElement(TransformerIdentityImpl.java:1102) > > Â Â Â Â Â Â Â at > org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) > > Â Â Â Â Â Â Â at > org.apache.xerces.xinclude.XIncludeHandler.endElement(Unknown Source) > > Â Â Â Â Â Â Â at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown > Source) > > Â Â Â Â Â Â Â at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > > Â Â Â Â Â Â Â at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > > Â Â Â Â Â Â Â at org.apache.xerces.parsers.XML11Configuration.parse(Unknown > Source) > > Â Â Â Â Â Â Â at org.apache.xerces.parsers.XML11Configuration.parse(Unknown > Source) > > Â Â Â Â Â Â Â at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > > Â Â Â Â Â Â Â at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown > Source) > > Â Â Â Â Â Â Â at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:485) > > Â Â Â Â Â Â Â at > org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:293) > > Â Â Â Â Â Â Â at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:116) > > Â Â Â Â Â Â Â at org.apache.fop.cli.Main.startFOP(Main.java:183) > > Â Â Â Â Â Â Â at org.apache.fop.cli.Main.main(Main.java:214) > > Is this a bug, or are we missing something? > > Thanks, > > Jan Driesen > > IT Office > > Brepols Publishers NV > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected]