Release Notes

Note: The download files for this Inkscape version are provided for historical reasons only. As most of them do not have a checksum or valid/secure GPG signature, be very careful if you download or install them on your computer.

Inkscape 0.47

Inkscape 0.47 brings a host of important improvements all across the program:

Refactoring effort

The focus of the 0.47 release was to clean up legacy code and push forward the migration to clean object-oriented C++. The goal of this effort was to increase reliability and maintainability of Inkscape. In the long run, it will mean fewer bugs and more new features, because it will be easier to develop and find bugs in Inkscape.

Migration to lib2geom

Many parts of the code have been changed to use the 2geom library for geometrical calculations instead of the old libnr and livarot libraries.

Preferences

Instead of global functions directly manipulating an XML document, the preferences API is now exposed through the Inkscape::Preferences singleton. It abstracts away the way the preferences are stored in memory. In the future it may allow for different user settings storage backends (like GConf or the upcoming dconf on GNOME desktops or .plist files on OS X). Previously, Inkscape directly manipulated an internal XML document.

The Preferences directory has been moved on Linux (and Mac OS X) from ~/.inkscape to ~/.config/inkscape to better conform to Linux desktop standards.

Tools

Node tool

Tweak tool

Several new modes are added to the Tweak tool for transforming, duplicating, and deleting selected objects using the same "soft brush" metaphor that the path editing and coloring modes use. Using these new modes, it is easy to "sculpt" scatterings of small objects, such as clone tilings, into complex and naturalistic textures.

Also, the existing path editing modes of the tool have been rearranged: now Shrink and Grow are one mode (shrinks by default, grows with Shift), and Attract and Repel are one mode (attracts by default, repels with Shift). Here is a complete list of modes and shortcuts of the Tweak tool:

Shift+m, Shift+0           move mode
Shift+i, Shift+1        attract/repel objects mode
Shift+z, Shift+2        jitter mode
Shift+<, Shift+>, Shift+3 scale mode
Shift+[, Shift+], Shift+4       rotate mode
Shift+d, Shift+5        duplicate/delete mode
Shift+p, Shift+6        push path mode
Shift+s, Shift+7        shrink/grow path mode
Shift+a, Shift+8        attract/repel path mode
Shift+r, Shift+9        roughen mode
Shift+c         paint mode
Shift+j         color jitter mode
Shift+b         blur mode

In Paint mode, painting with Shift inverts the color you're applying (e.g. when painting with yellow, Shift will switch the applied color to blue).

Calligraphy tool

Paint Bucket tool

Eraser Tool

A new tool, Eraser, has been added to the main toolbox. Its shortcut is Shift+E . It has two main modes, selectable by toggle buttons on its controls bar:

Pen and Pencil

New modes

Apart from the regular Bezier mode, these drawing tools now provide several new modes:

Stroke shapes

As a first step towards this blueprint , it is now possible to automatically apply predefined vector shapes to path strokes in Pen and Pencil tools. The choice of shapes in the drop-down list on the controls bar includes:

To adjust the width of the stroke, open the Path Effect Editor, choose "Pattern along path" effect, and edit its Width parameter. It is measured in units of the original size of the applied shape; the triangles and ellipse are all 10px in size, and the clipboard size can be any size. The default value of Width is 1.00, which means the triangle/elliptic strokes will be 10px wide and the from-clipboard stroke will be as wide as the copied object was tall.

Pencil smoothing

In Pencil tool, the controls bar now provides the Smoothing parameter, changeable in the range from 1 to 100, which controls how much smoothing is applied to the freehand lines you draw. Small Smoothing values produce rough lines with many nodes; large values give smooth lines with few nodes. Previously, this control was only available in Inkscape Preferences.

Pencil sketch mode

The sketch mode is still experimental. In essence, it enables the artist to draw many strokes, which Inkscape then averages into a single path. It tries to mimic sketching with a real pencil and paper, taking the 'visual average' of many strokes and condensing it into one stroke.

Pick the pencil tool, press Alt , and sketch away; release Alt to finalize the result. After each stroke (a stroke starts when the mouse button is pressed down, and ends when it is released), the resulting path will be an average of the old result and the newly drawn stroke. In Inkscape's Pencil tool preferences, one can choose to either average between all drawn strokes (so that all stroke have the same weight), or just the new stroke and the old result (so that later strokes have greater weight).

Currently, going back and forth between A and B in one stroke does not give the expected result; it will result in a long path going back and forth, instead of the visually expected path going from A to B just once. We are working on this (difficult!) issue. For best results, draw strokes only from A to B (and not from B to A).

Text tool

A remaining problem that may be fixed in a future version is that the first opening of the drop-down list of family names may be slow (several seconds) if you have many fonts installed (the delay is Inkscape generating the previews for all fonts). Subsequent openings of the list are much faster.

Connector tool

Path effects

Path Effects stacking

More than one Path Effect can be assigned to an object. A new UI was created to control the stack in the Path Effects Editor (Shift+Ctrl+7): the Effect list shows the stack of effects for the selected object; below, buttons allow you to move a selected effect in the stack up or down or remove it from stack.

The stack works from top to bottom, i.e. the topmost listed effect is applied first, the second one works on the result of the first, and so on until the bottom effect which produces the final visible result. A new effect that you choose in the "Apply new effect" list and created by the Add button gets added to the end of the current stack.

Path Effects for groups

Path effects can now be assigned to a group. In most cases, the effect is applied recursively to the member paths, but for Bend Path and Envelope Deformation the result that the distortion applies to the group as a whole.

Misc new features

New effects

Notable effect bugfixes and changes

We try to refrain from changing the behavior of existing path effects, because it will change appearance in old files when opened in a new version of Inkscape (but not in any other SVG viewer or editor). However, when an effect is really broken, we have to fix it:

Import/Export

PostScript and EPS import

Inkscape's PS and EPS import now uses Ghostscript instead of pstoedit. If you need to open files of these types, install Ghostscript and make sure the directory with the ps2pdf utility from Ghostscript installation is in your PATH. On importing a file, you will see a preferences dialog, similar to PDF import; for multipage PS files, this dialog allows you to select which page to open.

On Windows 7, this is done as follows.

1. Right click on Computer and select Properties . On the top left, click on Advanced system settings , then Environment Variables . Under System Variables find PATH (or make it using New... ), and click on it, then click Edit... .

2. In the edit dialogue, you must links for both the bin and lib directories for Ghostscript. They must be separated from the previous entry and each other by a colon, for example [previous entry];C:\Program Files\gs\gs8.70\lib;C:\Program Files\gs\gs8.70\bin . Do not forget to reload the user-settings, e.g. by log-out and log-in, or by restarting your OS.

PDF import

PDF, PostScript, and EPS export

The new Cairo-based PS and EPS exporter provides much better support for various vector features, including clipping paths, patterns, and non-ASCII characters. Those features that are not supported by the targeted format become embedded bitmaps that preserve the appearance. In particular:

All of PS, EPS, and PDF export formats uniformly support the export area options (page or drawing) and the new export-id option:

UniConvertor-based import and export

Inkscape can now use UniConvertor to import files of the following types:

Inkscape can now use UniConvertor to export files of the following types:

Text objects are not supported as of UniConvertor 1.1.4.

On Windows, UniConvertor is included with Inkscape distribution and does not require separate installation.

HPGL export

In addition to the HPGL export via UniConvertor listed above, Inkscape can now export to HPGL (Hewlett-Packard Graphics Language) via an internal routine that is geared towards various cutters/plotters.

JavaFX export

Inkscape can export drawings to JavaFX format (.fx file extension).

DXF import and export

PNG export

OCAL (Open Clip Art Library) Export

Autosave

The new autosave feature allow for automatic timed backups as work goes on. Saved versions are put in a designated directory and do not overwrite the original SVG file nor each other.

In Inkscape Preferences (Ctrl+Shift+P), Save tab, you can enable this feature and specify various options:

Extensions

New and improved extensions

Extension API changes

Filters

The Filter Editor (former Filter Effects) and Remove Filters commands are moved from the Object menu to the new Filters top-level menu, which also contains a collection of preset filters.

Preset filters

The Filter Editor is powerful, but can be quite cumbersome. You can now apply complex preset filters to selected objects with a single command by choosing it from the new Filters top-level menu. Submenus categorize the filters by function or appearance. To view a sampler of all preset filters, open filters.svg document from Inkscape's examples ( share/examples in the Inkscape tree).

Most filters apply immediately after selecting the command; some present a dialog where you can adjust some of the parameters before applying the filter (such filters have "..." at the end of the command in the menu).

By default, if the selected object already has some filter applied, the chosen filter will be merged with the existing filter for combined effect. However you can also overlay several filters to an object while keeping them separated: simply press Ctrl+G after applying any filter and then apply another one; the filters will then display separately in the Filters Editor.

You can easily add your own filters to these menus. Simply place any SVG file with the filters to the filters subdirectory of your config directory ( ~/.config/Inkscape/ on Linux) and the filters will be picked up from it when you start Inkscape. By default, they will be placed in the Personal submenu under Effects > Filters . If you want to control this, add the following attributes to the filter element:

inkscape:label         is the command label
inkscape:menu          is the submenu to place the command into
inkscape:menu-tooltip  is the tooltip (displayed in the statusbar 
                       as you select the command)

No Filters rendering mode

In order to facilitate editing documents that use lots of SVG filter effects, filter effects can now be disabled for a particular document window by selecting View > Display mode > No Filters from the menu. This provides an intermediate step between Normal and Outline view modes.

The Toggle View command in the Display Mode submenu ( Ctrl+keypad 5 ) toggles between all 3 modes in a loop: Normal, No filters, Outline.

Filter quality setting

In addition to the Blur Quality setting, Inkscape now has a general Filter Effects Quality setting on the Filters tab of Inkscape Preferences. It affects all filters and gives you an opportunity to seek optimum balance between speed and accuracy when rendering filters.

For exporting images, the best quality is used regardless of this setting.

SVG support

Optimized CSS properties

Optimized path data

In this version, the size of the path data written in the d= attribute of path elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).

This is controlled by the options on the SVG output page of Inkscape Preferences dialog. Also, you can change the following attributes in group id="svgoutput" in your preferences.xml file:

Horizontal and vertical path segments

If an SVG contains paths with shorthands for horizontal and vertical path segments ('H' or 'V'), then Inkscape will try to maintain those shorthands if possible, so the saved file will also contain them.

<script> tag preserved

While Inkscape does not yet support SVG scripting via the <script> element, this element is now preserved after editing the file in Inkscape.

Initial SVG Fonts support

As a SoC 2008 project, JucaBlues implemented initial parsing and rendering of SVG Fonts . You can design fonts within Inkscape, but using them to render text on the canvas is not yet supported. We are waiting for libpango to implement proper support of the user-fonts feature.

Currently, the main benefit of this feature is to improve the font design workflow when working with FontForge: You can save SVG files with fonts embedded and import them into Fontforge, and you only need one file per font instead of one file per glyph.

An SVG font is a mapping of chunks of SVG drawing to characters. When a certain character is used in a string, its respective glyph is rendered. If no glyph is declared for a certain character, then there is a default "missing glyph" that is rendered. You can set the drawing that defines this missing glyph; this is done by clicking on the Missing Glyph: From Selection... button at the top of the dialog.

Here's an example of a font design workflow:

  1. Open the SVG Font dialog by _Text > SVG Fonts_.
  2. Click New under the font list. Select the new font in list; you can rename it by clicking on its name and typing a new name. You will see a set of black squares in the text preview area. This is the preview text being rendered. It only uses the default missing glyph (which is initially defined as a black square) because no specific glyphs were defined yet.
  3. Draw something that you want to use for the missing glyph
  4. Click Missing Glyph: From selection...
  5. Draw a glyph for the "a" character (character matching is case sensitive)
  6. On the Glyphs tab, click Add glyph
  7. Type "a" in the Matching String column (at the moment, handling of the glyph-name attribute is not implemented)
  8. With the row selected, click Get curves from selection...
  9. Now, you will see the "a" glyph in the preview rendering if the preview text contains it. You can edit the preview text as needed to view different characters.

Repeat steps 5 through 9 for every glyph you wish to add to your font, then save the SVG file and open it in FontForge for further editing.

SVG Test Suite Compliance

As a result of last year's GSoC, there is now a rendering test framework along with a number of tests (found in the SVN repository here ). These tests can be run reasonably easily on any system (you don't need to be able to compile Inkscape) and include a large part of the W3C SVG Test Suite . See this page or this page for up-to-date rendering results. Also see TestingInkscape for information on running and creating rendering tests.

Editing Aids

Grids

Guides

Snapping

Inkscape's snapping code has undergone major changes to make it more reliable and easier to use. Snapping to objects now invokes routines from the 2geom library, which is actively maintained and less error-prone than the old livarot library.

There is a new snapping toolbar to control the snapping options and modes. Use _View > Show/Hide > Snap_ controls bar to show or hide this toolbar. The toolbar contains toggle buttons for various snapping modes (snap nodes, snap to paths, etc.) as well as a master snapping toggle that disables and reenables all activated modes.

Also, to control some of the snapping features, a Snapping tab has been created in the Inkscape Preferences dialog. The new features found on this tab are:

Other improvements are:

Inkscape can consider the following objects for snapping, depending on the toggles in the Snapping toolbar:

Other features

Spell checker

There's now a built-in spell checker. Press Ctrl+Alt+K or choose Text > Check spelling to check all visible text objects in your document (they need not be selected) in turn, going top-to-bottom and left-to-right. Once a misspelled word is found, a red frame around it is displayed, and the object with the misspelling is selected; if you are in Text tool, it also places the text cursor at the beginning of the misspelled word.

In the dialog, you can choose one of the listed suggestions and Accept it (this button is disabled unless you choose something in the list); Ignore the word for the rest of this session; or Add the word to the local dictionary.

Also, since the dialog does not lock Inkscape's window, you can simply edit the word with Text tool. Once you edit it to something acceptable to the speller, it will automatically turn off the red frame and continue checking the document.

On Linux, you need to install Aspell and its dictionaries for the languages you want to check. On Windows, for now, only the English dictionary is included with Inkscape builds.

Desktop integration improvements

Shell mode

If you run inkscape with --shell , it will enter a shell mode. In this mode, you type in commands at the prompt and Inkscape executes them, without you having to run a new copy of Inkscape for each command. This feature is mostly useful for scripting and server uses: it adds no new capabilities but allows you to improve the speed and memory requirements of any script that repeatedly calls Inkscape to perform command line tasks (such as export or conversions). Each command in shell mode must be a complete valid Inkscape command line but without the Inkscape program name, for example:

$ inkscape --shell
Inkscape 0.46+devel interactive shell mode. Type 'quit' to quit.
>file.svg --export-pdf=file.pdf
>otherfile.svg --export-png=bitmap.png
Background RRGGBBAA: ffffff00
Area 0:0:744.094:1052.36 exported to 744 x 1052 pixels (90 dpi)
Bitmap saved as: bitmap.png
>quit

Gesture-based stroke width adjustment

Similar to editing the fill or stroke colors by dragging away from the color swatch in the status bar (added in 0.46), this version allows you to drag away from the stroke width value displayed there to change the stroke width of selection. Dragging above the 45-degree line from the swatch increases the width (up to four times the original width), dragging below it decreases the width (down to zero). With this feature, quick yet precise stroke width adjustments are possible without opening any dialogs or menus.

Tool switching by input device

Tablets and other input devices that report separate hardware (e.g. pen tip and eraser on the two ends of the pen) are now recognized and current tool can be set to change (to Calligraphic Pen or Eraser) in response to the physical tool being used.

Layers

Editing bitmaps in an external editor

Linked (but not embedded) bitmaps can be edited in an external application . Right-click an image and choose Edit externally...

An image will reload when its linked file changes on disk. Both the external editor application to use and the reload behavior are configurable on the Bitmaps page of the Inkscape Preferences dialog.

Command for relinking clones

A new command, Relink Clone to Copied in Edit > Clone , allows you to relink any clone to a different original object without changing its other properties. Just copy (Ctrl+C) the object you want to be the new original, select any number of clones, and choose the Relink command. Now all selected clones are linked to the copied object.

Note that this may cause the clone to move if the new original and the old original objects are in different positions.

Automatic relinking of clones on Duplicate

If you turn on the When duplicating original+clones: Relink duplicated clones option on the Clones tab of Inkscape Preferences (default is off), duplicating a selection containing both a clone and its original (possibly in groups) will relink the duplicated clone to the duplicated original instead of the old original.

Pattern editing

When editing pattern fills:

Transform dialog: spacing out option

Previously, the Apply to each object separately checkbox had no effect for the Move tab of the Transform dialog (Ctrl+Shift+M). Now, if several objects are selected, this checkbox is on, and "Relative move" is on, each object is shifted relative to the closest selected object on the left (for X) or below (for Y).

For example, if you have a horizontal row of objects and you move them relatively by x = 5 px with "Apply to each object separately" on, the leftmost object will shift by 5px, the next one to the right by 10px, and so on; the rightmost selected object is displaced by 5*n px where n is the number of selected objects. As a result, the distance in each pair of adjacent objects will increase by 5px and the whole row will be spaced out, much like a letterspacing adjustment spaces out a text string. Moving these objects by X=-5px will, conversely, squeeze them tighter together: the leftmost will move by -5px, the next one by -10px, and so on. For Y, the effect is the same except that the move starts from the object closest to the bottom (i.e. with smallest Y coordinate).

When determining the order of shifting objects, for X, the left edges of their bounding boxes are sorted horizontally, and for Y, the bottoms of their bounding boxes are sorted vertically. The order of selecting the objects or their z-order do not matter.

Converting text to path produces a group

Converting a text or flowed text to path (Ctrl+Shift+C) now produces a group of paths , one path for each glyph of text, instead of a single monolithic path as before. Apart from easier manipulation, an additional advantage is that if your text contained styled spans (i.e. fragments with different color, opacity, or other properties), these styles will be preserved by the corresponding glyph paths after the conversion. You can still easily get a single path out of such a group by selecting it and doing Combine (Ctrl+K).

Combine works on groups

The Combine command now works transparently on groups, i.e. combines paths inside selected groups at any level of grouping.

Exclusion works on multiple paths

The Exclusion boolean operation can now operate on an arbitrary number of paths.

No more Whiteboard

The configure flag for Whiteboard has been removed since the feature was non-functional. This menu item will no longer exist in the releases until it is properly fixed to avoid any confusion.

Save As directory

On the Save tab in Inkscape Preferences, an option was added to change the behavior to our old behavior. When this option is on, the "Save as..." dialog will always open in the directory where the currently open document is. When it's off, it will open in the directory where you last saved a file using that dialog.

Packaging Improvements

Packaging for OSX and Windows has been worked on heavily and greatly improved during this release cycle. Inkscape also now has a Portable version available for Windows.

User interface

Inkscape Preferences dialog

Bitmap Copy resolution

Zoom correction factor

Interface language choice

Toolbars

Clone/original visualization

When you press Shift+D to find and select the original of the selected clone, Inkscape draws a dashed blue line between the centers of the bounding boxes of the clone and the original. This line disappears after one second.

File dialogs

Document Properties dialog

Object Properties dialog

Miscellaneous

Notable bug fixes

Known issues