Dear Chris, I have posted this as FOP-2918. Thanks,
Jan Driesen IT Office Brepols Publishers NV -----Original Message----- From: Chris Bowditch <bowditch_ch...@hotmail.com> Sent: maandag 2 maart 2020 15:49 To: fop-users@xmlgraphics.apache.org Subject: Re: Surrogate pair error 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_histor > ic) 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(MultiBy > teFont.java:570) > > at > org.apache.fop.fonts.MultiByteFont.performSubstitution(MultiByteFont.j > ava: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(TextLayo > utManager.java:960) > > at > org.apache.fop.layoutmgr.inline.TextLayoutManager.getNextKnuthElements > (TextLayoutManager.java:819) > > at > org.apache.fop.layoutmgr.inline.LineLayoutManager.collectInlineKnuthEl > ements(LineLayoutManager.java:698) > > at > org.apache.fop.layoutmgr.inline.LineLayoutManager.getNextKnuthElements > (LineLayoutManager.java:627) > > at > org.apache.fop.layoutmgr.BlockLayoutManager.getNextChildElements(Block > LayoutManager.java:141) > > at > org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElemen > ts(BlockStackingLayoutManager.java:290) > > at > org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(Block > LayoutManager.java:113) > > at > org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(Block > LayoutManager.java:105) > > at > org.apache.fop.layoutmgr.FlowLayoutManager.getNextChildElements(FlowLa > youtManager.java:223) > > at > org.apache.fop.layoutmgr.FlowLayoutManager.addChildElements(FlowLayout > Manager.java:147) > > at > org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLa > youtManager.java:116) > > at > org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLa > youtManager.java:69) > > at > org.apache.fop.layoutmgr.PageBreaker.getNextKnuthElements(PageBreaker. > java:251) > > at > org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBrea > ker.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(Page > SequenceLayoutManager.java:143) > > at > org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.ja > va: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(Transf > ormerIdentityImpl.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$FragmentContentD > ispatcher.dispatch(Unknown > Source) > > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unk > nown > 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(Transfo > rmerIdentityImpl.java:485) > > at > org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:293) > > ... 3 more > > Jan Driesen > > IT Office > > Brepols Publishers NV > > *From:*Simon Steiner <simonsteiner1...@gmail.com> > *Sent:* maandag 24 februari 2020 12:39 > *To:* fop-users@xmlgraphics.apache.org > *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 <jan.drie...@brepols.net > <mailto:jan.drie...@brepols.net>> > *Sent:* 24 February 2020 11:34 > *To:* fop-users@xmlgraphics.apache.org > <mailto:fop-users@xmlgraphics.apache.org> > *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(CharUtilitie > s.java:417) > > at > org.apache.fop.render.pdf.PDFPainter.drawTextWithDX(PDFPainter.java:49 > 4) > > 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(IFRendere > r.java:1237) > > at > org.apache.fop.render.intermediate.IFRenderer.renderText(IFRenderer.ja > va:1063) > > at > org.apache.fop.render.AbstractRenderer.renderInlineArea(AbstractRender > er.java:861) > > at > org.apache.fop.render.intermediate.IFRenderer.renderInlineArea(IFRende > rer.java:926) > > at > org.apache.fop.render.AbstractRenderer.renderLineArea(AbstractRenderer > .java:845) > > at > org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.j > ava:704) > > at > org.apache.fop.render.AbstractRenderer.renderBlock(AbstractRenderer.ja > va:758) > > at > org.apache.fop.render.intermediate.IFRenderer.renderBlock(IFRenderer.j > ava:998) > > at > org.apache.fop.render.AbstractRenderer.renderBlocks(AbstractRenderer.j > ava:689) > > at > org.apache.fop.render.AbstractRenderer.renderFlow(AbstractRenderer.jav > a:591) > > at > org.apache.fop.render.AbstractPathOrientedRenderer.renderFlow(Abstract > PathOrientedRenderer.java:789) > > at > org.apache.fop.render.AbstractRenderer.renderMainReference(AbstractRen > derer.java:568) > > at > org.apache.fop.render.AbstractRenderer.renderBodyRegion(AbstractRender > er.java:433) > > at > org.apache.fop.render.AbstractRenderer.renderRegionViewport(AbstractRe > nderer.java:380) > > at > org.apache.fop.render.intermediate.IFRenderer.renderRegionViewport(IFR > enderer.java:737) > > at > org.apache.fop.render.AbstractRenderer.renderPageAreas(AbstractRendere > r.java:345) > > at > org.apache.fop.render.AbstractRenderer.renderPage(AbstractRenderer.jav > a:318) > > at > org.apache.fop.render.intermediate.IFRenderer.renderPage(IFRenderer.ja > va: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(PageSequ > enceLayoutManager.java:243) > > at > org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(Page > SequenceLayoutManager.java:147) > > at > org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.ja > va: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(Transf > ormerIdentityImpl.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$FragmentContentD > ispatcher.dispatch(Unknown > Source) > > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unk > nown > 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(Transfo > rmerIdentityImpl.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: fop-users-unsubscr...@xmlgraphics.apache.org > For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org