[Feature Request]: More flexible SVG snippet cropping

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
Report Content as Inappropriate

[Feature Request]: More flexible SVG snippet cropping

I might have posted my request to the wrong mailing list. The original
message is below, but is not quite relevant with some new developments.

I have found the -dpreview option, but has a big limitation as it only
outputs the first line.

Looking through the code, my feature seems like in between the two existing
methods dump-page and dump-preview, found in scm/framework-svg.scm. The
little stumbling block is how both methods are invoked
separately: output-framework or output-preview-framework, both supplying
different arguments, the main difference being "stensil" that is required
for calculating the viewbox, but is not in dump-page.

Would it be possible for the two methods to be merged, so that there's an
option for cropping on pages that are not just previews (and on multi-page
scores)? (Or if a third method could be made...)

If someone could add this feature, it would be very useful for my work, and
for Lilypond's prominence on Wikipedia.


Étienne Beaulé (Ebe123 <https://phabricator.wikimedia.org/p/Ebe123/>)
[hidden email]

The original message is below:


Hello! I use lilypond quite often to illustrate and show snippets of music
on the web, both using lilypond-book and other tools (such as MediaWiki
<https://www.mediawiki.org/wiki/MediaWiki>'s Score extension
<https://www.mediawiki.org/wiki/Extension:Score>). Looking at the process
for lilypond-book, I see that the snippets are in a .png format and are cropped
using "gs", not natively.

As a feature, my final objective would be the ability to typeset the
snippets into a vector format, as the resolution's better and it takes up
less space.

In order for the goal to be eventually reached, cropping would have to be
native to lilypond. Right now, there is no cropping for SVGs. Each
generated SVG is the size of the page, through the height, width, and
0 119.5016 169.0094" attributes.

With individual snippets I've typeset into SVG, I've been taking the
bounding box and using that as the viewBox; modifying the snippets with
this js:

var svg = document.getElementsByTagName("svg")[0];
var box = svg.getBBox();
var viewBox = [box.x, box.y, box.width, box.height].join(" ");

svg.setAttribute("viewBox", viewBox);

However, I don't think it's a very good solution; finding that such
functionality should be built-in to lilypond, and not require the use of
user javascript (of which would be unusable anyway with img tags used with

In the MediaWiki extension, I've been trying to find a way, and the feature
request is being tracked: https://phabricator.wikimedia.org/T49578. Making
the extension output SVG is no problem (just change the backend on the
lilypond command), but cropping is. I believe that the Lilypond project
would be more suited to handle and incorporate this proposed feature, and
could potentially be useful when outputting PNG too. A flag could be added
to the command if cropping is desired.

Thank you for considering my feature request. This would not only help me,
but make Lilypond more flexible for typesetting music.


Étienne Beaulé (Ebe123 <https://phabricator.wikimedia.org/p/Ebe123/>)
lilypond-devel mailing list
[hidden email]