Skip navigation.

The story of two SVG libraries

Gnome Multimedia
Gnome Multimedia

SVG is a w3c standard for doing vector graphics and is being used more and more in the free software world. Multiple efforts are underway trying to add support or improving support for this format, with the Inkscape and Firefox projects being the most well known SVG backers. librsvg is the rendering library used in the GNOME desktop for SVG images, there have been some nice developments happening around librsvg lately so read on to get the details.

The teams working on librsvg and libsvg have decided to join forces around the CVS version of librsvg. Thanks to the work of the librsvg team, mostly Caleb Moore, librsvg now can support multiple rendering backends, with libart and Cairo backends implemented. The refactoring did cause some rendering regressions with the libart backend and the Cairo backend still needs some more work to reach parity with the libart one, as can be seen in this comparison table.

This means that people like Carl Worth, Dom Lachowicz, Caleb Moore and other contributors will focus their efforts on one SVG rendering library instead of spreading their efforts out over multiple projects, so most of these rendering regressions should be taken care of over the next few months, with a nice speed boost due to Cairo as an extra bonus. The team is of course always looking for more developers to help out though, so if you are interested in technologies such as SVG, Cairo and vector graphics be sure to stop by the #librsvg channel on Gimpnet for a chat.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

rsvg website

The rsvg website "News" hasn't been updated since before GNOME-2.8...

website updated

It has now, since we did the 2.11.0 release yesterday :)

Inkscape?

Why don't you guys discuss merging with the Inkscape canvas too? The Inkscape guys have been talking about spinning off their canvas for a while now. It's in C++ but it seems like making a shared Cairo-based SVG uber canvas would be good for everyone.

Merging with Inkscape

It has to some degree been discussed, the current thinking though is that since the Inkscape engine needs to be more advanced (since it needs to support editing too) it will be slower than librsvg, which only focus on rendering. So sharing backend with Inkscape might cause SVG icon themes etc., to become to resource consuming.

Being 'the best' SVG engine is in many not just about supporting the full width of the specification, but for instance being fast enough for the specific use case its targeted at, or being designed in a way which allows deep integration with a specific project, ref Inkscape and Firefox.

The Inkscape community are talking about using Cairo though, so there will be indirect code sharing through that (which also Firefox will use). Most of the SVG efforts out there also use libxml so that is another point of shared code.

So yes, it is a bit frustrating that we have so many different SVG efforts out there, with none being 100% complete, Batik closest to being such, but due to all having different constraints it is not so easy to merge them together. The librsvg & libsvg merger have at least caused some consolidation of developer effort :)

ReportLab by Anonymous George
SVG is just XML, so you can by Anonymous George
Do you know if this book by Anonymous George
It doesn't cover them by Anonymous George
Impressive! I'll give the by Anonymous George
What is the source of this story? by Anonymous George

Source is me :)

The source is me, as the story submitter and a librsvg community member. This is the 'formal' announcement :)

source is you by Anonymous George

discussion on IRC

In this case the discussion was done on IRC not mailing list :)