OK, I misrepresented the SVG serializer here... It appears to create
by default icons of constant
size, namely 111px wide by 32px high. I can modify that by specifying
that the height of the icon
is to be 15px by adding <map:parameter name="height" value="15"/> to
the <map:serialize>
element and adding the attribute height="15px" to the <svg> element.
I then get icons which are consistently 60px by 15px, but this is
still not what I want.
Does noone know a way to crop white space on the left and right sides
of an image from Cocoon?
The arbitrary widths are still displayed on the web pages so that
must be down to the rendering
of the HTML by the browsers. Since the problem is present in all the
browsers I use (on Mac OS X
and Windows), it is presumably a problem with my coding.
Steve
On 5 Jul 2006, at 22:38, Stephen Winnall wrote:
I am trying to generate PNG text icons from SVG in Cocoon. I just
want a PNG with no extra
space around the text.
I use the following match in my sitemap and generate the
appropriate text icon by calling
1) .../nav2.png?icon-text=abc
2) .../nav2.png?icon-
text=Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogoch
3) ...
<map:match pattern="nav2.png">
<map:generate src="resources/svg/nav2.svg" type="file" />
<map:transform src="resources/svg/nav2.xslt">
<map:parameter name="icon-text" value="{request-param:icon-text}"
/>
</map:transform>
<map:serialize type="svg2png" />
</map:match>
The generated icon should contain the text and nothing else. The
following is the template I
use (see <map:generate> above).
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg">
<text />
</svg>
And this is the transformation (see <map:transform> above).
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"
xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/
2000/svg">
<xsl:param name="icon-text" />
<xsl:template match="/svg:svg/svg:text">
<text
style="font-size:15px;font-style:normal;font-variant:normal;font-
weight:normal;font-stretch:normal;writing-mode:lr-
tb;fill:black;fill-opacity:1;font-family:VAG Rounded Std Thin"
x="0"
y="15px"
id="icon-text">
<xsl:value-of select="$icon-text" />
</text>
</xsl:template>
<xsl:template match="svg:*">
<xsl:copy>
<xsl:apply-templates select="*|@*|text()" />
</xsl:copy>
</xsl:template>
<xsl:template match="@*">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
This all works in principle but the PNGs generated have non-
predictable widths (with a
variance in height in occasional cases). It is as though the text
is being padded with
blanks to the right. I can't pass a parameter "height" to the SVG
serializer because I don't
know how long the rendered text is.
Can anyone point to my error? How can I specify that I want to
generate a text icon whose
width is defined by the rendered length of the text?
Steve
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]