[ 
https://issues.apache.org/jira/browse/FOP-3314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18080935#comment-18080935
 ] 

Jonas Morrissey commented on FOP-3314:
--------------------------------------

Hi [~ssteiner] , I added a reproducing example. In fact, any text with a font 
using kerning should make the problem obvious.

But in trying to reproduce it outside of our own application, I noticed that by 
default the SVGDocumentHandler loads all fonts *_without_* kerning infos. So 
the issue won't ever occur.

I only noticed the bug because we use the SVGDocumentHandler with a "custom" 
configurator. Actually just the default configurator:

 
{code:java}
public class SVGDocumentHandlerWithConfigurator extends SVGDocumentHandler {    
private final IFDocumentHandlerConfigurator configurator;       

public SVGDocumentHandlerWithConfigurator(IFContext context, 
RendererConfig.RendererConfigParser rendererConfigParser) {                
super(requireNonNull(context));         
this.configurator = new 
DefaultRendererConfigurator(requireNonNull(context.getUserAgent()), 
requireNonNull(rendererConfigParser));      }

}
 {code}
 

 

But if a user doesn't set a configurator, then In IFUtil#setupFonts we will run 
into documentHandler.setDefaultFontInfo(fontInfo), which delegates to 
AbstractSVGDocumentHandler#setDefaultFontInfo which builds a FontInfo object 
calling

 
{code:java}
FontInfo fi = Java2DUtil.buildDefaultJava2DBasedFontInfo(fontInfo, 
getUserAgent());{code}
 

And for the return value of this call, 
fi.getFonts().entrySet().stream().filter(it -> 
it.getValue().hasKerningInfo()).collect(Collectors.toList()) will always be 
empty. 

 

I'm not sure if this is intended behaviour.

> SVGUtil#formatMptArrayToPt doesn't actually convert milli-point to point
> ------------------------------------------------------------------------
>
>                 Key: FOP-3314
>                 URL: https://issues.apache.org/jira/browse/FOP-3314
>             Project: FOP
>          Issue Type: Bug
>          Components: renderer/svg
>    Affects Versions: 2.11
>            Reporter: Jonas Morrissey
>            Priority: Minor
>         Attachments: reproRed.fo
>
>
> SVGUtil#formatMptArrayToPt(int[]) is documented as formatting lengths in 
> millipoints as point values, but the current implementation simply converts 
> an int[] into a String[]:
> {code:java}
>     public static String formatMptArrayToPt(int[] lengths) {
>         return IFUtil.toString(lengths);
>     } {code}
> without also dividing each entry by 1000.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to