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

Attachment: input_MPH.fo
Description: input_MPH.fo

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

Reply via email to