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 <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(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
input_MPH.fo
Description: input_MPH.fo
input_Segoe.fo
Description: input_Segoe.fo
--------------------------------------------------------------------- To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org