The long anticipated new version of Inkscape, a free vector graphics editor, is finally out with some major improvements and clean-ups.

I think it's a bit pointless to duplicate the existing release notes that cover the release in details, so let's cover pros and cons of new things.

And the new things are:

a whole new Spray tool;

multipath editing;

improved editing of nodes selection;

improved Connector tool;

a number of crucial changes in the Text tool;

even better snapping;

some changes in the bitmap handling department;

a number of new extensions.

As you can see, the new version isn't exactly like one of the few recent ones that were bursting with new features. It "merely" brings to life several important feature requests and a perhaps less noticeable boring thing called "bugfixing".

Spray tool

The new Spray tool (click A to activate it) was created last year by a group of Centrale Lyon students led by Cedric Gemy. What it does is painting with copies or clones of currently selected objects over canvas.

The tool is actually a spin-off from Tweak tool, and its initial implementation was much more complex than the final one, with an extra dialog where you could tweak all sorts of internal options. The tool was then simplified and made more consistent with the rest of Inkscape's tools.

There are three modes in the tool: creating copies, creating clones and merging copies into a single path. You can actually spray bitmap objects too, either as clones or copies. So if you wish to use some bitmap brush, feel free to do so.

You can tell Spray tool to be stylus pressure sensitive when it comes to relative width of a circular area to fill (you can control that area with left and right arrows keys too), you can define how many objects (in non-absolute values) you want after one click, how much rotation and scaling of the selection should vary, how focused sprayed copies or clones should be.

I wouldn't go as far as saying that Spray tool is equal to Symbol Sprayer from Adobe Illustrator: while doing essentially same thing, these two tools were designed in quite different ways. For example, you don't get repainting or erasing mode in Inkscape's Spray tool, but then the Tweak tool does this job just fine and is just a button away from you.

Nodes editing

The Node tool was rewritten by Krzysztof Kosinski during his Google Summer of Code 2009 project. Apart from internals being ported to lib2geom it has two major new features: multipath editing and advanced editing of selected nodes.

Finally you can select multiple paths and edit their nodes. Now, since you get edit gradients with the Node tool, that means you can also edit multiple gradient fills. You just press N to switch to the Node tool, press Shift and keep clicking on paths to add them to selection. Here is what it looks like in the end:

Needless to say, now you can merge end nodes of different paths, no need to combine them first any more.

And in the future Krzysztof is planning to implement multishape editing.

The other big feature is being able to edit a selection of nodes just like selection of objects: scale, rotate and skew it. Here is what the selection cue looks like:

It really works just like selection of objects: you can scale nodes proportionally or rotate them around base point with adjustable position. But here is one thing worth mentioning: for Selector tool the shortcut to switch mode of selection cure from scaling to rotating/skewing is Shift+S. For the Node tool this shortcut is taken to make selected nodes smooth, so Shift+H is used instead. It takes a bit getting used to, but once you learn it, you don't want go back :)

In case you are new to Inkscape, the application will display hints regarding keyboard shortcuts to deal with nodes selection in the status bar. If you don't really want to see the selection cue, just toggle its display off from tool's options toolbar.

One more small, but very welcome addition is visualization of curve's direction on path outlines ("File > Inkscape Preferences... > Tools > Node > Show path directions on outlines"). There are several uses for this new handy feature, like e.g. when you work on type design. Of course, FontForge can detect incorrect path direction and fix it for you, but it's much better to get things right from the very beginning. And of course you will appreciate direction display, if you do a lot of arrows.

Improved text editing

One thing I always considered crucial for viability of a software project is willingness of its developers to work on features that are really a must. For a long time Inkscape's Text tool was a bit of a motherless child and had a number of not quite obvious features.

Thanks to financial support from community via linuxfund.org the tool was reworked by Tavmjong Bah who is mostly known to wider audience as creator of Inkscape's user manual. He added numeric controls for leading, letter and word spaces, horizontal and vertical baseline shifts and glyph rotation.

As if it wasn't good enough already, Tav went ahead and implemented another long standing feature request: subscripts and superscripts, so you can finally do simple physics equations:

Or chemical ones:

There are some small imperfections here, unfortunately. Most obvious one is that whenever you apply a style to a text object that changes font, subscript/superscript formatting is lost.

Here is an example from the Screenshots section at inkscape.org that illustrates how the Text tool can be used:

The last thing to mention here is that Glyphs dialog was added by Jon Cruz to simplify insertion of special characters:

You can filter glyphs by scripts or Unicode ranges. For appending to work you need to switch to the Text tool and place cursor inside a text frame.

Connector

This tool was also a bit of a motherless child. Initially started as one of the early Google Summer of Code projects, it was never quite close to feature set of equivalent tools in specialized applications such as Microsoft Visio or, for what it's worth, Dia. Finally last year Arcady Cracan improved it during his Google Summer of Code project. Some changes were part of previous version, but most new features only hit 0.48.

You can easily say what are those from the screenshot above: unidirectional lines now automatically converge, and now lines can also be orthogonal, that is — being created from horizontal and vertical segments. Just hover mouse cursor over the image to see what this diagram would look like without orthogonal lines.

Snapping

The previous version featured a massive improvement of snapping functionality thanks to hard work by Diederic van Lierop. But up until now snapping occurred only after you had started drawing a new object, not before.

Starting with 0.48 snapping occurs as soon your you move a mouse pointer close enough to a feature that is enabled for snapping from the snapping options toolbar.

I'm happy to conclude that there is probably nothing else I would want to see implemented here. Over last few versions snapping has become a solid feature that just works. Admittedly it works on per-document basis, but since it complements my workflow, there really is nothing else I can say. Excellent work!

Bitmaps embedding

Before v0.48 any bitmap file you dragged and dropped onto Inkscape's document was linked to. Starting with this version you will be asked if you want to link to this image or embed it into SVG document itself.

This is actually just the first step towards saner handling of bitmaps. This spring another group of students from Lyon Politechnique worked on Image properties dialog. Their code is currently available separately (in a branch), but is expected to be part of v0.49. If you are really curios, you can fetch and build this branch right now. Or you can read students report on their project to get a better idea what was done.

Effects extensions

There are eight new effect extensions, four of which I consider really interesting to me:

"Modify Path > PixelSnap...", align vector objects to pixel grid to make them look crisp when rendered 1:1;

"Render > Barcode - Datamatrix", created 2D barcode as per BS ISO/IEC 16022:2006;

"JessyInk", a rather popular extension that allows creating rich presentations as SVG documents that can be viewed from a web browser;

"Web > Slicer", pretty self-explanatory.

The two latter extensions are worth being described in details, expect tutorials :)

Some existing extensions were improved in various ways. I'm sort of biased here, because the Measure Path extension got my feature request implemented: it can now measure area. Works fine for polygons, but admittedly adds up to 0,03% extra for circles.

Caveats

Apart from things I already mentioned before there are few areas that need a lot of work.

First of all, there have been knowingly no rendering optimizations in this release, unlike in the past several ones. That means that you still have to rely on No Filters and Outline display modes for working on complex illustrations. On the other hand, some quite dramatic optimizations are coming with the next version (more on that below).

Next thing is that some new features that I intentionally omitted in the review are at the very initial stage of implementation and thus are rather crude: new dialog to configure input devices, adaptive UI and custom swatches. I just really hope they will be improved in the next version.

And the last thing is that despite of rather heroic attempts to defeat bugs there's still plenty of them around, including those that crash Inkscape. My pet peeve here is the crasher that raises its ugly head whenever I edit SVG documents produced by FontForge (which is a fine font production tool, but sadly a somewhat inadequate font design tool).

The only advice I can give: file bug reports. I can tell from experience that some bugs turn out to be easy to fix.

Google Summer of Code 2010

This year Inkscape got five slots in the annual Google Summer of Code program. Unfortunately two projects, Export dialog rewrite and PowerStroke LPE, failed at midterm evaluation, and another project failed at final evaluation

On the other hand, PowerStroke project was picked by Johan Engelen who mentored the student and actually came up with live path effects back in 2006 or so. User interface was discussed during Libre Graphics Meeting this May with some active community members and several SVG working committee members from W3C. The current code is already available (though hidden by default) in the coming v0.49.

Two successful projects are very interesting. During the first one the rest of the rendering was ported to Cairo, including SVG filters whose rendering has also become threaded (in case you are on multicore or multiprocessor system). There is a plan to rewrite SVG filters in OpenCL and make use of cairo-gl in the future. For now you can fetch the branch from Bazaar repository via:

bzr branch lp:~tweenk/inkscape/gsoc-cairo

The other successful project deals with parallel access of various Inkscape's functions to same chunks of XML tree. This is all about internal design of Inkscape — the foundation to build new user-visible features upon.

Interview

There is now interview with Inkscape developers and contributors published here at Libre Graphics World. You will learn more about work on this version, some upcoming cool features and overall plans.

Future plans

It looks like the next development cycle is going to be long again: there are several Google Summer of Code projects to merge, some already started projects to finish and, of course, a lot of testing and bugfixing. There is no knowing how much time it will take.

There are several branches in repository that have code for various nice little features: guides management, templates management, coordinates fix and so on. I wouldn't dream of speculating, which of them will be part of 0.49. On the other hand, not mentioning them at all doesn't sound right to me either.

One big change you should expect is The Great Return of Point Releases. The point releases (e.g. 0.48.1, 0.48.2 etc.) will contain only bugfixes and updated translations. That way you won't have to wait ages for bugfixes.

Written by: Alexandre Prokoudine

Illustrations by: Alexandre Prokoudine, Konstantin Rotkevich et al.

License: CC NY SA 3.0 Unported