On Tue, May 14, 2013 at 11:19 AM, Jan Gerber jgerber@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