On Mon, Aug 18, 2008 at 6:29 AM, Sjur Moshagen <[EMAIL PROTECTED]> wrote: > Hello all, > > I'm trying to set up locationmap-based user configuration of the > FOPNGSerializer, but I'm having some problems. > > In the present output.xmap within the pdf plugin, FOPNGSerializer is > defined/initialised as follows: > > <map:serializers default="fo2pdf"> > <map:serializer name="fo2pdf" > src="org.apache.cocoon.blocks.fop.FOPNGSerializer" > mime-type="application/pdf" /> > </map:serializers> > > This is fine as long as you don't need to change any of the default fonts. > But as is discussed on the mailing lists from time to time, the default > fonts are not enough in some cases, and cause some or all of your chars to > appear as squares in the pdf document.[1] > > The solution is to specify a font configuration file, and point the > FOPNGSerializer to it. This is done using a <user-config> element as a > daughter to the <map:serializer> element, like this: > > <map:serializers default="fo2pdf"> > <map:serializer name="fo2pdf" > src="org.apache.cocoon.blocks.fop.FOPNGSerializer" > mime-type="application/pdf"> > > > <user-config>/Users/sjur/gtsvn/xtdoc/sd/src/documentation/resources/fonts/config.xml</user-config> > </map:serializer> > </map:serializers> > > The above specification works for me, but as you can see, the path is > hardcoded, and you have to change the output.xmap in the plugin. What I > would like to have is something like: > > <map:serializers default="fo2pdf"> > <map:serializer name="fo2pdf" > src="org.apache.cocoon.blocks.fop.FOPNGSerializer" > mime-type="application/pdf"> > <user-config>{lm:pdf.user-config}</user-config> > </map:serializer> > </map:serializers> > > combined with a locationmap match (in locationmap.xml in the plugin) like: > > <match pattern="pdf.user-config"> > <select> > <location src="resources/fonts/config.xml"/> > </select> > </match> > > The intended behavior is that if the config.xml file exists in the project > directory hierarchy, the path to it should be returned, and the config file > used. If there is NO such file defined, the locationmap should return the > empty string, as a <user-config> element with no content will behave as > nothing was specified, and fall back to defaults. This is what most users > would want. > > But the locationmap instead returns: > > /usr/local/forrest/build/plugins/org.apache.forrest.plugin.output.pdf/pdf.user-config} > > which of course triggers an error. > > To me it looks like the locationmap, when nothing is found, returns the path > to the locationmap.xml file (excluding the filename), combined with the last > part of the lm: specification in the sitemap: 'pdf.user-config}' > > An empty locationmap selection: > > <match pattern="pdf.user-config"> > <select> > <location src="resources/fonts/config.xml"/> <!-- no such file, > select the next one --> > <location src=""/> <!-- should return an empty string, but returns a > bad, non-empty string --> > </select> > </match> > > returns the same bogus string as above. > > Anybody any clue about what is going on? How can I get the intended > behaviour? > > Sjur > > [1] http://marc.info/?l=forrest-user&m=118525205328423&w=2
Hi Sjur, I mailed Cocoon about this[1] long ago and filed a bug[2] which says it's now fixed. I reckon we'd need to update Cocoon to see if that's true(I don't see any actual commits against it). I don't remember much more than that unfortunately but I hope that helps. --tim [1] - http://marc.info/?t=111996379000002&r=1&w=2 [2] - https://issues.apache.org/jira/browse/COCOON-1542