Hi folks, last time I looked at Cairo, its PDF generation was not really suitable for use in LilyPond. I have now updated my Cairo repository and saw that there are commits for its PDF backend supporting hyperlinks, document outlines, document metadata as of last October.
What does that mean? Mainly a viable migration strategy where we might be able to drop catering for a whole lot of graphics programming ourselves by introducing a dependency on Cairo. I am not overly enthused about the programming quality of Cairo but LilyPond's quality tends to be worse in the same departments and it's also hugely inefficient due to using Scheme data structures and programming where they are rather inappropriate and waste a humongous amount of resources. It would be a large amount of work to bring LilyPond's graphics programming up to scratch. Moving to Cairo's data structures alone would be quite advantageous and would likely speed up backend operations significantly. We might also be able to forego creating PostScript as an intermediate stage to creating PDF and create bitmap formats without using PostScript as well (again, this should really speed up things). Drawbacks? Like other things, being on Guile-2.x would make for synergies with existing projects (not least of all guile-cairo though I haven't checked its suitability in general, with the new PDF-level features, and possible compatibility with Guile-1: I think it supported Guile-1 at some point of time). Of course, we have a number of other areas under construction anyway, but I think that the graphics handling of LilyPond is so undercatered for that our dearth of resources is more a reason for than against starting on such a move. The first step would likely just involve moving to Cairo data structures while keeping most of the current code except where the code would duplicate Cairo API calls in a reasonably straightforward way. -- David Kastrup _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel