lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Using/requiring Cairo


From: David Kastrup
Subject: Using/requiring Cairo
Date: Sat, 24 Jun 2017 12:43:52 +0200

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]