March 2, 2007

Review: Inkscape 0.45 is the best yet

Author: Nathan Willis

Open source software's preeminent vector graphics package, Inkscape, made a new stable release last month. Inkscape 0.45 packs in new features, speed, and usability enhancements, and offers a tempting look at where the package is headed. provides source code and Autopackage builds for Linux (as well as Mac OS X and Windows binaries). RPM packages for Fedora are available through the Fedora Extras repository; users on other distros will have to seek out an unofficial package for the time being.

If you want to compile Inkscape from source, the project provides a thorough how-to on its wiki. The dependencies are straightforward, but note that there is a "known issue" regarding GTK+ in the Inkscape 0.45 release notes. Strictly speaking, Inkscape only depends on GTK+ 2.8 or later, but using 2.10.7 is highly recommended due to a crash bug.

After the Autopackage package failed to install for me on Ubuntu Edgy, I searched through Ubuntu's discussion forum and found a distro-specific package contributed by a charitable forum member. It has been stable enough that I am not afraid to use it on my everyday machine, but when downloading such community-made packages, it is always a good idea to start by reading the comments of other posters to get a feel for their success rate.

What's new

New features. Click to enlarge.

The number one most exciting new feature in Inkscape 0.45 is the addition of the first SVG Filter to the feature set, Gaussian blur. In accordance with the SVG specification, you can now adjust a blur setting for every object in a drawing, just the way you would adjust its fill color, stroke width, or opacity.

Although it is the only filter for now, it is useful in a variety of circumstances. Inkscape's Bulia Byak explained the logic on the XaraXtreme-dev list. "Xara has a fancy drop shadow tool and fancy 'feathering' but does not provide the basic building block that is the foundation of these effects: Gaussian blur. (Note: feathering is not the same as blur!) Inkscape, by contrast, has started by implementing the universally useful Gaussian blur, which enables these and a multitude of other effects. And now that we have blur, it is easy for programmers and extension writers to add some commonly used things like drop shadows or feathering, based on the Gaussian blur filter."

Indeed, the Gaussian blur filter can be used for some amazing effects. The 0.45 release comes bundled with a set of example drawings, including some photorealistic renderings of real-life objects such as cars and glasses. And the extension writers Byak mentioned have been hard at work, too. Inkscape 0.45 includes a full complement, including color effects such as saturation adjustment, a fractalize effect that subdivides and randomizes drawing objects, and a flexible Lorem Ipsum renderer that can generate pages of "greek text" for designing and testing page layouts.

Fans of the calligraphy pen will appreciate its new incarnation, which boasts a variety of new options and some important fixes for the jitter introduced in previous releases when working with graphics tablets.

Several of the new additions in this release don't introduce drawing features, but aid usability. First and foremost in this category is the History tool; a full-fledged undo history with which you can back up and undo all changes you have made to a document. As an added bonus, the history list box nests together multiple steps of a single change (such as dragging an object to a new location with a series of small moves). Thus you can still back up one step at a time, but the history list is less cluttered to look at.

A smaller but just as important change allows you to select nodes by moving the cursor over an object and then scrolling the mouse wheel. Scrolling up selects additional nodes starting with those nearest to the cursor, and scrolling down selects fewer. If you don't use vector graphics often, that may not sound useful -- but trust me, it is. Having to select multiple nodes on a complex path the old-fashioned way was annoying; sometimes they overlap, sometimes you select the wrong one, sometimes you miss and end up deselecting all of the nodes.

There are plenty of small changes to individual tools and functions -- too many to list here. Check out the release notes for a full account; in particular, if you are a regular user of Adobe Illustrator or Freehand, several new features should make crossing over, importing, and exporting smoother.

What's not

As much as I like Inkscape, I must confess that I have not seen the speed increases that were advertised. Rendering is supposed to be up to 10% faster in this release -- depending on the nature of the drawing, of course -- and several isolated enhancements are supposed to make Inkscape feel faster at particular tasks.

For example: as you move or alter onscreen objects, Inkscape interrupts its screen redraw in response to your changes. Whereas before Inkscape would redraw the screen between each movement, it now starts over if you continue to move. That is supposed to make the interface feel more responsive, since it reacts to you instantaneously, but to me it just manifests itself the same lag time plus a series of mid-redraw UI hangs.

And despite how great the Gaussian blur filter effect is, I have encountered some mysterious bugs when using it with cloned objects. I don't have the steps worked out to positively reproduce it (hence the mystery), but every now and then an object just forgets that it has a blur.

What's next

Example artwork. Click to enlarge.

Neither of those quibbles should discourage anyone from upgrading to Inkscape 0.45. Bugs happen, and whatever the cause of my Gaussian Bermuda Triangle (including the possibility that it is unique to the unofficial package I tested with), no permanent damage was done.

Now that the basic framework for SVG Filters is in place, adding each additional filter will be less daunting. The SVG 1.1 spec describes 16 filter primitives, out of which Byak says Blend is the most requested. The 0.45 filter infrastructure was one of Inkscape's projects for the 2006 Google Summer of Code, and the developers are debating proposing specific filters as projects for 2007.

The speed issue will get new attention in the next development cycle, as the team prepares to move the rendering code from an internal Inkscape renderer to the Cairo vector graphics library. Inkscape's current renderer was written by a developer who has long since left the project, making it more and more of a challenge to maintain. And although it has taken time for Cairo to catch up in speed, it is now fast enough and stable enough to make the switch worthwhile.

On February 16, Byak committed a change to SVN that used Cairo to render Outline mode paths, and reported a 25% speedup. Five and 10 percent speedups can be hard for human beings to gauge, but 25% is significant by any standard.

"The current plan is to gradually switch various elements of our display engine to Cairo. This is relatively easy to do and gives immediate benefits in code simplification, performance, and memory usage." Eventually, Byak says, Inkscape can switch to using Cairo's hardware-accelerated back end, which will give it yet another speed boost.

Hardware-accelerated vector editing sounds good to me. In the meantime, though, the 0.45 release is Inkscape's best yet. This project has maintained a solid level of high-quality, professional releases over its lifetime, and 0.45 lives up to that standard.

The Gaussian blur SVG filter alone opens up a whole new creative arena, bolstered by the new extension effects and usability fixes. And honestly -- how can you not love an application that offers a Pig Latin localization?

Click Here!