Just FYI in case you had anything to add..
----- Forwarded message from Jason Dorje Short <jdorje@...>
Date: Wed, 29 Jun 2005 21:37:27 -0400
From: Jason Dorje Short <jdorje@...>
Reply-To: Jason Dorje Short <jdorje@...>
Subject: [cairo] redesigning the arguments for svg2png
To: "Cairo Mail List (E-mail)" <cairo@...>
Current arguments for svg2png:
input.svg and output.png are taken directly as parameters
This is all explained in `man svg2png`. The problem is it's
For instance if you give -w and -h svg2png makes an image with the
$WIDTH and $HEIGHT and puts the SVG file inside it with preserved
ratio. Thus there is no distortion and there is padding.
One thing I need to do is to change the aspect ratio. I want to
width and height and have the SVG "stretch" to take up this whole
Thus the xscale and yscale are different. Thus there is distortion
there's no padding. This is what rsvg, sodipodi, and inkscape
command-line renderers do.
A third thing one would want to do is preserve the aspect ratio but
without any padding. Thus the $WIDTH and $HEIGHT provide the max
dimensions, just like svg2png does now, but without any padding.=20
there is no distortion and there is no padding. IIRC this is what
librsvg rsvg_pixbuf_from_file_at_max_size function does (which I've
found very useful in the past).
Yet another thing you might want to do is specify the xscale and
independently. I can't recall ever needing to do this, but rsvg
Finally, one might wish to specify things in DPI. If the SVG image
given in real-world dimensions (e.g., inches) giving a DPI to render
will allow you to make the PNG image show up at the right size when
rendered at that DPI (to a monitor or a printer). Aspect ratio is
preserved; this is just a (possibly) convenient way of setting the
--scale. Inkscape provides a -d $DPI parameter allowing this. Note
that this will not work with all SVG files.
Of course svg2png should be able to do all of the above tasks. It
also be nice to keep command-line compatibility with rsvg, inkscape,
sodipodi. The trick is to do all this without having confusingly
options or giving unexpected default behavior.
Thus I suggest:
--flipx (-X maybe?)
--flipy (-Y maybe?)
You may pad or stretch or neither but not both. The default should
to do neither (same as rsvg, inkscape, and sodipodi), this changes
current behavior which is to pad. (--pad and --stretch were
Supporting -d will require new functions to libsvg and libsvg-cairo
set the DPI.
-x and -y are changed from flipx and flipy to xscale and yscale.=20
matches the rsvg args (they call it --x-zoom, --y-zoom).
In case of conflicting options (--width and --xscale both given) the
higher up in the list is given priority (this is obviously arbitrary
can be tweaked a bit). Care should be taken to give a sensible
no matter what combination of args are given (rsvg is pretty bad at
For full compatibility with inkscape and rsvg it would be necessary
add more "long argument" aliases. This would be convenient but
also add clutter to the interface.
Inkscape also has some additional parameters that might be useful,
either for new features or compatibility. See -a, -f, -e, -i, -j,
-b, -y from `man inkscape`. I don't understand all of these but
them are probably desirable.
In a related note xsvg should probably support a similar set of
Seems there could be a lot of overlap here.
cairo mailing list
----- End forwarded message -----