SVG Filters

I’ve finally found the motivation to begin the implementation of SVG filters in lasem. It’s still pretty rough, there’s a lot of bugs to fix and things to finish, but when I’ve tried to render icons from gnome-icon-theme, a very large subset of this theme renders fine. Here’s an example:

For now, feGaussianBlur, feOffset, feBlend, feMerge, feMergeNode, feComposite and feFlood are supported. Support the remaining filter primitive should appear soon. Fortunately, I’m able to use Caleb Moore’s librsvg code (same license) for the filter algorithms, even if I try to use cairo API when possible.

I’ve done some work on markers, fixing overflow and automatic marker orientation:

I’ve also lately worked on the robustness of lasem, by importing in the test suite a lot of the attached files in librsvg bug reports, thanks to Olav Vitters who gave me the method for an automatic extraction of attached files in bugzilla. I’ve first downloaded the result of a bugzilla query as xml, then wrote a small script which finds attachement url and retrieves them.

Here’s the script (be careful if you use it, as bugzilla will ban you if you download a large amount of data):