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 <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


---------------------------------------------------------------------
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

Reply via email to