On 24 Jun 2009, at 19:19, Sam Fuqua wrote:

Hi Sam

I took your advice and have gotten some error output. It doesn't print this every time, but it has printed for every font I have installed something to the effect of "Failed to load font file ___ . Could not load InputStream". If it could find the files itself, then I know that it wasn't me putting in a bad URL, but why would it be that it can't load any of them? I'm trying to use a .ttf font.

Went digging a bit, and in FOP Trunk, the message in question comes from within o.a.fop.fonts.FontLoader.openFontURI(). I haven't yet located the code in question in 0.95 or earlier, but from what I can tell, it looks a bit like someone has been abusing the JAXP StreamSource object to open simple binary streams which are in no way related to XML... If it were used to load font-metrics XML, that I can dig, but in case of plain byte streams, using the JAXP pattern does not seem appropriate.

Try to follow:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/FontLoader.java?revision=746664

First we try to obtain a Source object, via the FontResolver that is passed in. The minimal resolver that is generated by the default FontManager uses the StreamSource(String) constructor. It only passes in the URI to the resource, which the JAXP API docs tell us leaves the InputStream unset. I think (but am far from certain) that a JAXP- compliant parser may even choose to ignore setting the systemId if the content is not valid XML... which is one possible cause for the cited message. Another one is that the URL is actually not valid according to URI syntax.
Can you show us a few of those URLs?


I also tried loading the font manually by creating a FontTriplet and EmbedFontInfo and adding it to the FopFactory FontCache, which gave no error except for the usual "Substituting with 'any'". Any ideas?

Was this after clearing the cache? It's a file called 'fop- fonts.cache', normally residing in the user's home directory, in a subdir named '.fop'. I would try deleting that to make sure the cache is reconstituted from scratch. Activating DEBUG-level output will show more info about what happens when the fonts are initially loaded.

Regards

Andreas

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to