You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by "Thomas S." <th...@cm4all.com> on 2008/07/02 16:07:23 UTC
Embedding fonts
Hi,
I have a problem with embedding fonts while running Apache FOP within a
web application. This seems to be caused by a problem with reading the
font metrics from a jar file.
Obviously FOP can read the configuration from the jar, it also doesn't
complain while starting:
2008-07-02 10:04:04,651 DEBUG
org.apache.fop.render.PrintRendererConfigurator
(PrintRendererConfigurator.java:123) - Starting font configuration...
2008-07-02 10:04:04,656 DEBUG
org.apache.fop.render.PrintRendererConfigurator
(PrintRendererConfigurator.java:318) - Adding font
jar:file:/var/lib/cm4all/tomcat6/base/billy/webapps/CMAdmin/WEB-INF/lib/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/fonts/News_Gothic_MT.ttf,
metric file
jar:file:/var/lib/cm4all/tomcat6/base/billy/webapps/CMAdmin/WEB-INF/lib/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/fonts/ttfnewsgothic.xml
2008-07-02 10:04:04,657 DEBUG
org.apache.fop.render.PrintRendererConfigurator
(PrintRendererConfigurator.java:322) - Font triplet NewsGothicMT, normal,
400
2008-07-02 10:04:04,657 DEBUG
org.apache.fop.render.PrintRendererConfigurator
(PrintRendererConfigurator.java:318) - Adding font
jar:file:/var/lib/cm4all/tomcat6/base/billy/webapps/CMAdmin/WEB-INF/lib/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/fonts/News_Gothic_MT_Bold.ttf,
metric file
jar:file:/var/lib/cm4all/tomcat6/base/billy/webapps/CMAdmin/WEB-INF/lib/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/fonts/ttfnewsgothicbold.xml
2008-07-02 10:04:04,658 DEBUG
org.apache.fop.render.PrintRendererConfigurator
(PrintRendererConfigurator.java:322) - Font triplet NewsGothicMT, normal,
700
2008-07-02 10:04:04,659 DEBUG
org.apache.fop.render.PrintRendererConfigurator
(PrintRendererConfigurator.java:318) - Adding font
jar:file:/var/lib/cm4all/tomcat6/base/billy/webapps/CMAdmin/WEB-INF/lib/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/fonts/News_Gothic_MT_Italic.ttf,
metric file
jar:file:/var/lib/cm4all/tomcat6/base/billy/webapps/CMAdmin/WEB-INF/lib/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/fonts/ttfnewsgothicitalic.xml
2008-07-02 10:04:04,660 DEBUG
org.apache.fop.render.PrintRendererConfigurator
(PrintRendererConfigurator.java:322) - Font triplet NewsGothicMT, italic,
400
2008-07-02 10:04:04,660 DEBUG
org.apache.fop.render.PrintRendererConfigurator
(PrintRendererConfigurator.java:203) - Finished font configuration in 8ms
2008-07-02 10:04:04,733 DEBUG org.apache.fop.fonts.FontSetup
(FontSetup.java:224) - Registering: NewsGothicMT,normal,400 under F15
2008-07-02 10:04:04,733 DEBUG org.apache.fop.fonts.FontSetup
(FontSetup.java:224) - Registering: NewsGothicMT,normal,700 under F16
2008-07-02 10:04:04,734 DEBUG org.apache.fop.fonts.FontSetup
(FontSetup.java:224) - Registering: NewsGothicMT,italic,400 under F17
Also embedding images from the same jar isn't a problem, but using the
font leads to trouble, the error message in the logfile is:
2008-07-02 10:04:14,068 ERROR org.apache.fop.fo.FOTreeBuilder
(FOTreeBuilder.java:229) - javax.xml.transform.TransformerException:
java.lang.RuntimeException: Cannot load font: failed to create Source from
metrics file
jar:file:/var/lib/cm4all/tomcat6/base/billy/webapps/CMAdmin/WEB-INF/lib/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/fonts/ttfnewsgothic.xml
Running FOP having the font metrics as a normal file works perfectly,
but for productive usage this isn't very helpful.
I would be very grateful, if someone has an idea to get this working!
Kind regards,
Thomas
--
View this message in context: http://www.nabble.com/Embedding-fonts-tp18238271p18238271.html
Sent from the FOP - Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: Embedding fonts
Posted by "Thomas S." <th...@cm4all.com>.
J.Pietschmann wrote:
>
>> java.lang.RuntimeException: Cannot load font: failed to create Source
>> from
>> metrics file
>> jar:file:/var/lib/ [snip]
> The embedded file URL ist malformed, maybe the recursive URL resolver
> doesn't like this. Try jar:file:///var/lib/... and check whether this
> helps.
>
Now some more information. To ease the reading, I replaced the path to the
JAR file with "path"!
The URL I'm setting as baseURL and fontBaseURL is
jar:file:/path/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/
This is the URL I'm getting from
this.getClass().getClassLoader().getResource(baseURLString);
for the argument "layouts/LIVINGNET_2008_06_05/", so I think that this
should be a valid URL.
And as already written: Reading the configuration and including images works
with this URL.
But I tried it with the suggested URL, unfortunately with the same error:
2008-07-09 09:45:06,928 [btpool0-0] ERROR
org.apache.fop.fo.FOTreeBuilder.fatalError(FOTreeBuilder.java:229) -
javax.xml.transform.TransformerException: java.lang.RuntimeException: Cannot
load font: failed to create Source from metrics file
jar:file:///path/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/fonts/ttfnewsgothic.xml
So what else can I do?
--
View this message in context: http://www.nabble.com/Embedding-fonts-tp18238271p18357954.html
Sent from the FOP - Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: Embedding fonts
Posted by "Thomas S." <th...@cm4all.com>.
J.Pietschmann wrote:
>
> Which FOP version are you using?
>
I'm using 0.94, but I tried this also with 0.95b, which gives me the same
result!
J.Pietschmann wrote:
>
>> java.lang.RuntimeException: Cannot load font: failed to create Source
>> from
>> metrics file
>> jar:file:/var/lib/ [snip]
> The embedded file URL ist malformed, maybe the recursive URL resolver
> doesn't like this. Try jar:file:///var/lib/... and check whether this
> helps.
>
I use Classloader.getSystemResource() to get a URL to a directory
containing the resources used within the XSL-FO. This directory is used
both as baseURL and as fontBaseURL. Including images works, but the
fonts causing the problem already described.
I can't deliver more information right now, especially which URL is used
as baseURL / fontBaseURL and which image URLs are include
successfully, but I will be back in the office on wednesday and I will post
more information then.
--
View this message in context: http://www.nabble.com/Embedding-fonts-tp18238271p18321752.html
Sent from the FOP - Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Embedding fonts from JAR: Bug in FOURIResolver.resolve() ?
Posted by "Thomas S." <th...@cm4all.com>.
J.Pietschmann wrote:
>
>> java.lang.RuntimeException: Cannot load font: failed to create Source
>> from
>> metrics file
>> jar:file:/var/lib/ [snip]
> The embedded file URL ist malformed, maybe the recursive URL resolver
> doesn't like this. Try jar:file:///var/lib/... and check whether this
> helps.
>
Ok, now I stepped down into the code of FOP 0.94...
Loading the configuration and images uses relative URLs,
in FOURIResolver.resolve(String href, String base) we see
href="fonts/News_Gothic_MT.ttf" and
base="jar:file:/path/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/"
as an example.
But laterly while FO-Processing, FOURIResolver.resolve(String href, String
base) is
indirectly called from LazyFont.load() line: 79, now href is an absolute
URL.
So FOURIResolver.resolve(String href, String base) is called with
href="jar:file:/path/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/fonts/ttfnewsgothic.xml"
and
base="jar:file:/path/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/"
The problem is, that lines 194-196 remove "jar:" from href, and we run into
the problem,
that in line 208 new URL(URL basURL, String href) is called with a href
still containing a
protocol (file:), which is different from the protocol of the baseURL
(jar:), so
absoluteURL = new URL(baseURL, href);
sets
absoluteURL=file:/path/CMBilling-0.0.1-SNAPSHOT.jar!/layouts/LIVINGNET_2008_06_05/fonts/ttfnewsgothic.xml.
This URL doesn't work, of course, it's is missing the proper protocol
specification (jar:)!
Who can I talk to for getting around this problem?
--
View this message in context: http://www.nabble.com/Embedding-fonts-tp18238271p18385572.html
Sent from the FOP - Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: Embedding fonts
Posted by "J.Pietschmann" <j3...@yahoo.de>.
Thomas S. wrote:
> I have a problem with embedding fonts while running Apache FOP within a
> web application. This seems to be caused by a problem with reading the
> font metrics from a jar file.
Which FOP version are you using?
> java.lang.RuntimeException: Cannot load font: failed to create Source from
> metrics file
> jar:file:/var/lib/ [snip]
The embedded file URL ist malformed, maybe the recursive URL resolver
doesn't like this. Try jar:file:///var/lib/... and check whether this
helps.
J.Pietschmann
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org