On Tue, May 14, 2013 at 11:19 AM, Jan Gerber <jgerber(a)wikimedia.org> wrote:
for the Score extension it would be nice to output SVG
images, the SVG
images produced by lilypond have lots of white space (it outputs paper
sheets), covert can give the outer bound and offset of the area we want to
display:
I.e. for
http://upload.wikimedia.org/wikipedia/test2/d/d5/ScoreSVGTest.svg
$ convert ScoreSVGTest.svg -trim info:-
ScoreSVGTest.svg SVG 434x267 744x1052+27+23 16-bit DirectClass 0.010u
0:00.009
Handy that you can get trim info out of convert, that's probably easier
than using an XML parser and trying to understand all the paths and
transformations manually. :)
If SVG is scaled to 744x1052, we want to crop it to
434x267 starting at
(27, 23)
Does anyone know how to translate this into the width/height/viewBox
properties in SVG?
So, there's two things you probably want to modify:
* the width and height attributes on the <svg> element
* the viewBox attribute on the <svg> element
On the sample file you'll see them like this:
<svg ... width="210.00mm" height="297.00mm" viewBox="0 0
119.5016 169.0094">
The 'width' and 'height' attributes set the default physical size of the
image, in this case an A4 sheet of paper. Note that these apparently can
include units; if units are unspecified I think they default to CSS pixels.
Yay!
The 'viewBox' attribute lists the *internal* coordinate space that fits in
that physical box, as "origin-x origin-y width height" Unfortunately it's
not the same units as the physical width/height here, but luckily the
initial origin is at 0,0 in these, so it makes the math simpler. ;)
You should be able to scale your target coordinates from ImageMagick's
pixel counts into both the physical size and internal coordinate spaces,
then set the width/height and viewBox attributes to match.
-- brion