You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-dev@xmlgraphics.apache.org by "Simone Rondelli (JIRA)" <ji...@apache.org> on 2016/09/01 16:23:20 UTC

[jira] [Comment Edited] (FOP-2644) Generated font metrics do not contains GSUB, GPOS, GDEF tables

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

Simone Rondelli edited comment on FOP-2644 at 9/1/16 4:22 PM:
--------------------------------------------------------------

Thanks Adam for clarification. The reason why I was trying to us the Font Metrics was to force the Java2D based renderer to use a lazy font otherwise, as I stated in my previous comment, I have a too high memory/CPU overhead all related to font reading. The point is that I have a stack of 20 fonts but not all of them are used at the same time in the same document. With the LazyFont I can spread the loading overhead in a bigger window of time. This indeed works for the PDF renderer but not for the PNG renderer that is not able to instantiate a LazyFont instance without the Font Metrics ({{org.apache.fop.render.java2d.ConfiguredFontCollection}}).

My questions are:

* What would be a way to get the org.apache.fop.render.java2d.ConfiguredFontCollection to generate LazyFont without the Font Metrics? For my understanding the reason why the Font Metrics are necessary is that the LazyFont is read immediately after its creation ({{font = new CustomFontMetricsMapper(fontMetrics, fontSource);}}) forcing the reading of the Font Metrics if available (fast) or the reading of the Font file (slow). A possible solution could be to create something like LazyFontMetricsMapper.
* Why every renderer reload the font from scratch? If I have 20 fonts and 8 renderers it means that we have 160 font reading (with huge memory/CPU impact) while there could be just 20 font reading. Wouldn't it be better to just share the font informations across the renderers?





was (Author: rondelli):
Thanks Adam for clarification. The reason why I was trying to us the Font Metrics was to force the Java2D based renderer to use a lazy font otherwise, as I stated in my previous comment, I have a too high memory/CPU overhead all related to font reading. The point is that I have a stack of 20 fonts but not all of them are used at the same time in the same document. With the LazyFont I can spread the loading overhead in a bigger window of time. This indeed works for the PDF renderer but not for the PNG renderer that is not able to instantiate a LazyFont instance without the Font Metrics ({{org.apache.fop.render.java2d.ConfiguredFontCollection}}).

My questions are:

* What would be a way to get the org.apache.fop.render.java2d.ConfiguredFontCollection to generate LazyFont without the Font Metrics? For my understanding the reason why the Font Metrics are necessary is that the LazyFont is read immediately after its creation ({{font = new CustomFontMetricsMapper(fontMetrics, fontSource);}}) forcing the reading of the Font Metrics if available (fast) or the reading of the Font file (slow). A possible solution could be to make LazyFont to implements FontMetricsMapper or to create something like LazyFontMetricsMapper.
* Why every renderer reload the font from scratch? If I have 20 fonts and 8 renderers it means that we have 160 font reading (with huge memory/CPU impact) while there could be just 20 font reading. Wouldn't it be better to just share the font informations across the renderers?




> Generated font metrics do not contains GSUB, GPOS, GDEF tables
> --------------------------------------------------------------
>
>                 Key: FOP-2644
>                 URL: https://issues.apache.org/jira/browse/FOP-2644
>             Project: FOP
>          Issue Type: Bug
>          Components: font/opentype
>    Affects Versions: 2.1
>         Environment: All OS/Platforms affected
>            Reporter: Simone Rondelli
>
> In order to reduce the memory footprint of an ApacheFOP based application, where I have several Java2D based renderers, I created the XML metrics for the fonts used (more then 20). This way {{org.apache.fop.render.java2d.ConfiguredFontCollection}} creates instances of {{LazyFont}}.
> THE PROBLEM:
> The generated metrics.xml do not contain the GSUB, GPOS, GDEF tables info . This led to an incorrect generated output. 
> Eg: instead of this  🇮🇹  the generated pdf has 🇮 🇹. 
> (I'm working on a for ApacheFOP that supports Surrogate Pairs and I'm testing it with Emojis FOP-1969)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)