Difference between revisions of "Release notes/0.47"

From Inkscape Wiki
Jump to navigation Jump to search
Line 48: Line 48:
[spiro mode, straight line mode in pen]
[spiro mode, straight line mode in pen]

[stroke shape - max]
It is now possible to automatically apply predefined vector brushes to path strokes in pen and pencil tools. This is a first step towards the following blueprint: [[http://wiki.inkscape.org/wiki/index.php/Vector-brushes]]

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 line. 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.)
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 line. 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.)

Revision as of 16:38, 2 August 2008

Inkscape 0.47

(not released yet)

Refactoring effort

[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]

- ratio of code lines and comment lines (difference with 0.46)

- number of fixme's and todo's (difference with 0.46)

- cairo

- speed improvement? (LPE? bootup?)


Node tool

  • [helper path display, flashing - johan]
  • The Node tool can now edit clipping paths and masks of objects on canvas, without releasing them. If the selected object has a clipping path and mask, the corresponding buttons on the controls bar of the tool will be enabled; pressing these buttons will display the editable paths or handles of the clippath or mask. A clipping path is stroked green, a mask is stroked blue (the same colors as those used for them in Outline mode).
  • Snapping has been improved (more details in Snapping below)
  • When dragging a node handle with Ctrl, it now snaps not only to the 15 degree increments starting from 0 and to the original handle direction, but also to the direction of the opposite handle (if it exists) or of the opposite line segment (if it is a straight line).
  • The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:
  • If a node is already cusp (diamond shaped), pressing Shift+C again on it will retract both its handles. As this works for any number of selected nodes, you can always retract all handles in all nodes by selecting all nodes and pressing Shift+C twice.
  • If a non-smooth node is next to a straight line segment, pressing Shift+S once makes it half-smooth: it now has one handle aligned with that line segment. Another press of Shift+S will expand the second handle as well turning it into a full smooth node. If a node is between two curve segments, Shift+S will expand both handles as before.
  • Pattern editing
  • The pattern origin and scale nodes now snap.
  • The pattern scaling can now be different in X and Y direction.
  • The nodes now display the outline of the unit cell, instead of only a quarter of that cell. So now, a rectangle filled with pattern will have all of the pattern knots in the corners, making it harder to manipulate them. However, the nodes can be dragged outside the rectangle by moving the pattern's origin point.

Calligraphy tool

[presets - Aubanel]

Paint Bucket tool

  • Paint Bucket is now more tightly integrated with potrace. As a result, memory and CPU usage on each fill operation have been reduced significantly.

Eraser Tool

A new eraser tool has been added. It has two main modes:

  • Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with "vector" editing.
  • Cut mode where erasing acts similar to erasing in a standard bitmap editor.

Cut mode works for both selected and not selected objects.

Pen and Pencil

[spiro mode, straight line mode in pen]

It is now possible to automatically apply predefined vector brushes to path strokes in pen and pencil tools. This is a first step towards the following blueprint: [[1]]

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 line. 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.)

Text tool

When editing multiline or flowed text, the PgUp and PgDn keys now work to move the cursor by one screen (i.e. by as many lines as fit into the screen at current zoom).

Transform dialog

Previously, the Apply to each object separately checkbox had no effect for the Move tab. 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=5px 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. Order of selecting the objects or z-order does not matter.

Live path effects

Notable bug fixes and effect changes

We try to refrain from changing the behavior of LPE's, because it will change appearance in old files when opened in Inkscape¹. But when an effect is really broken, we have to fix it.

[¹ fixme: Shouldn't the above say "it will change editing behaviour in old files" ? If it changes the appearance, then that's a bug: inkscape should always save SVG that represents the appearance, and should display according to the SVG rather than any inkscape:blah annotations. --pjrm
What is meant is the following. Files with LPEs opened in a random viewer will always look the same, regardless of Inkscape version. However, when viewed in Inkscape, the LPE is recalculated. When LPE behavior changes, the appearance will change. --johan]

  • The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.

New effects

  • Sketch: [Johan Engelen]
  • von Koch: [JF Barraud]
  • Knot: [JF Barraud]
  • Perspective paths: Draw an arbitrary path as if viewed in perspective. This is work in progress. Known limitations (among others): It can only use the first perspective that exists in the document defs, and the perspective cannot be adapted interactively yet (the effect must be removed and reapplied after modifying the perspective). [max]
  • Spiro splines are a novel way of defining curvilinear paths developed by Raph Levien. It takes some getting used to, but for certain tasks (such as lettershape design) Spiros have a clear advantage over Bezier curves. Recently, Spiro support was added to the FontForge font editor; now it is available in Inkscape too, which means you can use all the convenient Inkscape path tools (moving and transforming groups of nodes, node sculpting, etc.) on Spiro paths.
A Spiro path is defined by a sequence of points, but unlike a regular path with Bezier curves, all Spiro points lie on the path and there are no off-path handles. The curvature of the path is defined entirely by the positions of the points and their types. The path behaves very similar to a springy rod which is forced to pass through the given points and which uses the minimum possible curvature to satisfy the requirement. As such, it feels quite natural and the resulting path is very smooth - not just superficially smooth (i.e. having no cusps), but smooth at a deeper level, which you can achieve with Beziers only after a lot of laborious tweaking.
To create a Spiro path, select any path and assign the "Spiro spline" path effect to it. There are no parameters. Each node of your path becomes a point of a Spiro path, depending on the type of node:
  • Smooth nodes (those with two collinear Bezier handles; use Shift+S to make a node smooth) become smooth curve points of the Spiro path. Note that the length or direction of the Bezier handles of the source path is ignored; the only thing that matters is their collinearity.
  • Cusp nodes of the source path become corner points of the Spiro path, like free hinges on the springy rod. Between two corner points, the path is always a straight line. To make a node cusp, retract its Bezier handles by Ctrl+click, or press Shift+C and move one of the handles so they are no longer collinear.
  • Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become "left" or "right" points on the Spiro path which behave exactly the same: they sit between a straight line and a curve and enforce that these two segments join smoothly without a cusp. To create such a node, make sure one of the segments is a line (select its ends and press Shift+L), then Ctrl+drag the remaining handle to make it snap to the direction of the straight line segment on the other side, or press Shift+S to lock it to that direction.
Note that what matters is the actual collinearity of a node's handles, regardless of the node type that the node has in the Node tool; for example, if a node designated as cusp (diamond-shaped) has collinear handles, it will become a smooth curve point of the Spiro path.
Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, "The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, "sensible" plates based on real fonts usually converge." Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.
For now, to edit Spiro paths viewing the result in real time, you have to use the Node tool; it is recommended to turn off the red highlight of the source path as it is a distraction. The Pen tool does not yet allow you to preview a Spiro as you draw, although you can paste the Spiro effect on the path and see the result as soon as the path is finalized.
You can always use the Node tool to continue a Spiro path by duplicating and dragging away its end nodes. Also, when you have a Spiro path selected, you can add a new subpath to it with Pen or Pencil if you start drawing with Shift.
  • Construct Grid [johan]
  • Perpendicular bisector [max]
  • AngleBisector [max]
  • Tangent to a curve [max]
  • Circle through 3 points [max]
  • Circle with radius [max]
  • Envelope Deformation allows the user to deform an object (or a group of object) by deforming its sides. Modifications are done by deforming the 4 Path parameters : Top and Bottom, Left and Right.
  • Lattice Deformation allows the user to deform an object (or a group of object) by moving 16 control points.
  • Ruler: [max]
  • Freehand Shape: [max]
  • Interpolate Subpaths: [Johan]
  • Path Length: [max]
  • Text Label: [max]

New features

  • The Paste Path Effect command is enabled to assign the path effect of the clipboard to any number of paths, going recursively into groups if necessary.
  • A new command, Remove path effect removes any path effects from all selected objects, going recursively into groups if necessary.
  • Along with the commands to open the path effects dialog and to paste path effects, the three commands were collected in a submenu under Path menu.
  • Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).
  • The Pen and Pencil tools now correctly work with paths with LPEs: you can continue such a path or add a new subpath to it by drawing with Shift, all preserving the effect applied to it.
  • Path type parameters can now link to existing shapes and text, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!
  • Lib2geom now has an implementation for EllipticalArc. For Inkscape, this means that it is now possible to directly copy-paste ellipse shapes on path parameters (e.g. 'pattern' in Pattern along Path), without the need to convert the ellipse object to path first. [needs coding and checking]

Live Path Effects for groups

LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path or Deformations the result is more powerful : the distortion applies on the whole group.

  • You can as usual enter the group by double-clicking on it.
  • It applies recursively, this means that a LPE can be assigned to groups of groups
  • The Effect can be applied definitively with "Convert Object to path"

Live Path Effects stacking

With Live Path Effects stacking, more than one Live Path Effect can be assigned to an item. A new UI was created to control the stack.


PostScript and EPS import

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

Corel DRAW files import

Now Inkscape can import more Corel DRAW files of following types:

  • Corel DRAW Compressed Exchange files (CCX)
  • Corel DRAW 7-X4 Template files (CDT)
  • Corel DRAW Presentation Exchange files (CMX)

Text objects are not supported as of UniConvertor 1.1.1.

sK1 files import

Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.

CGM import

Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.

PDF export

With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the "Export drawing, not page" checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the "Limit export to the object with ID" field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).

The same capabilities are available from the command line by using --export-area-drawing and --export-id=ID parameters with --export-pdf (previously, they only worked for PNG export).

PDF import from the command line

Now you can use, for example,

inkscape file.pdf --export-plain-svg=file.svg

It will take the first page of the PDF and all the default import options, and save the result to SVG. (Before, it crashed because it tried to open the PDF import preferences dialog and could not do it in the command line mode.) If you try to import PDF without an --export command, it will show the prefs dialog as before and open the file in the UI.

HPGL export

Inkscape can now export to HPGL (Hewlett-Packard Graphics Language). It is a file format that is used for various cutters/plotters.

JavaFX export


DXF export

DXF export is much faster than in previous versions.


Autosave has now been added to 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 and each other. Go to Inkscape Preferences, Autosave tab, to enable this feature and specify the backup time interval, the directory, and the maximum number of saved backups (if this number is exceeded, old backups will start to be deleted).

Extension effects

New and improved effects

  • The new Arrange > Restack extension restacks the Z-order of selected objects, from left to right, top to bottom (or vice versa), with radial outward or inward or by an arbitrary angle, specifying the base point for comparison (top, left, middle, etc.).
  • The improved Modify Path > Add Nodes extension now also allows segments to be divided into a given number of subsegments.
  • The new Render > Alphabet Soup extension is a vector rework of Matt Chrisholm's GPLed script [2]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.
  • The new Render > Cartesian Grid extension plots Cartesian (square) grids that do not fill the page, but offer three levels of division, logarithmic scales (with clutter-reduction and arbitrary base) and customisable line width. All like elements (eg x-axis subminor divisions) are put into subgroups together. A proper border is also drawn, with an independent line thickness.
  • The new Render > Polar Grid extension plots a polar co-ordinate grid, with options for arbitrary-base logarithmic subdivisions, clutter-reduction around the origin, circumferential labels and custom line widths.
  • The new Text > Convert to Braille extension recodes English (or just Latin letters) text to Braille code created for visually impaired people.
  • [preset filter effects]

API changes

While the "Live preview" checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute needs-live-preview="false" in the effect element in the .inx file of the effect to suppress this checkbox for your effect.

Parameters passed to extensions (via the <param> element) now have a new boolean attribute - gui-hidden to indicate that the parameter should not be represented in the GUI. If all parameters are marked as hidden no GUI is presented for such extension.

All .inx files are now properly formatted XML files with its own namespace of: http://www.inkscape.org/namespace/inkscape/extension and a Relax NG schema to define it. More information can be found in the Extensions Article.

SVG output

Optimized CSS properties

As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before.

Also, in manually-edited SVG where a parent group has no stroke but sets some stroke properties to be inherited by its descendants, you will need to set stroke property to other than none on the group, and suppress inheritance with stroke:none on those children that don't need it.

Specifically, if stroke:none, the following properties do not get written to SVG:


Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.

If fill:none, the following properties do not get written to SVG:


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 SVG output page of Inkscape Preferences dialog, as well as the following attributes in group id="svgoutput" in your preferences.xml file:

  • allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)
  • forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)

No more explicit closing line segment

Inkscape used to always explicitly write the closing line segment to SVG for closed paths. For example: "M 0,0 L 1,0 L 1,1 L 0,1 L 0,0 z". With the improved SVG path data writing, Inkscape no longer generates this closing line segment, resulting in "M 0,0 L 1,0 L 1,1 L 0,1 z". When SVG path data input contains this explicit closing segment, it is maintained throughout transformations, but is removed after using the node edit tool.

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> support

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

Other features

Clipboard enhancements

The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.

If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.

Masks and clipping paths

[editable in node tool - johan]

Stroke width changeable by dragging


Enhanced Tablet Support

Input device tool switching

Tablets and other input devices that report separate hardware are now recognized and current tool and/or settings can be set to switch in response to the physical tool being used.

Extended input device configuration

The stock Input Devices dialog has been replaced with a completely redone version that provides a more useful representation of settings. It also contains a simple area for testing different inputs of different devices.

Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.


Show/hide other layers

The layers dialog now allows for hiding or showing all layers other than the current layer. This "solo" feature allows for faster switching between working layers and for quick checking with and without others shown.

Duplicate layer

Commands have been added to the layers menus to allow for duplicating an existing layer.

External image editing and reload

Linked bitmaps have a context menu option to launch editing in an external application. Linked images now will reload when the linked file changes on disk. Both the external editor application and the reload behavior can be controlled by user preferences.

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.

User interface

Filters can be disabled

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 its 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 the outline view and either regular or no-filters view, depending on which was used most recent.

Native file dialogs for Windows

The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.

Inkscape Preferences dialog

This dialog has been rearranged for more logical grouping of options. New pages has been added: Bitmaps (options for the new update-on-file-change and external editor features), UI (options for toolbar icon sizes), and SVG Output (options for SVG formatting, introduced in 0.46 and now editable from the dialog as well).

A new option on the Bitmaps tab, Resolution for Create Bitmap Copy, allows you to set the resolution of the bitmap created by the corresponding command (by default bound to Alt+B). The default value of 90 dpi forces the resulting bitmap to align with the default 1px-spaced grid on the canvas.

Dropper tool

The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.


Hovering over a swatch now shows the name of the swatch in the status bar. This makes it easier for tablet users to identify a swatch by name, as holding a stylus still enough to show a tool tip is difficult.


  • The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.
  • The main tools toolbar has been converted to a standard GtkToolbar, removing the problem of it pushing the main window taller. Tools that don't fit automatically flow into a popup menu.
  • When torn off, toolbars now keep the size they last had in the main window. They can be resized by docking, sizing the main window, and then undocking agin.
  • Some controls (such as the Width in Calligraphic/Tweak/Eraser tools, Tremor, Wiggle, and Mass in Calligraphic, Threshold in Paintbucket, Tolerance in Pencil) are converted from numeric editable fields into draggable sliders, with labels and values (usually in the range 0..100) displayed on top. As these values don't usually require much precision, this makes adjusting them much easier and faster.
  • [the Title and Description fields on the Object Properties dialog - sas]

Grids, guides, snapping


  • The dotted rectangular grid now shows small crosses at the intersection points of emphasis lines.


There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).


Snapping has been implemented or improved in these areas:

  • The node tool now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes. It is now also possible to snap while moving nodes along a vertical or horizontal constraint
  • Clipping paths and masks are now also snappable
  • The object snapper now also allows to snap to the page border
  • In the selector tool, snapping while skewing or constrained translating have been improved
  • When creating new shapes, all of their handle points now snap
  • In the document properties dialog, the checkbox for 'always' snap has been replaced by two radiobuttons; this should eliminate most of the confusion surrounding this option
  • Holding the shift-key now also disables snapping while dragging node-handles
  • The code relating to the snapping mechanisms has undergone major refactoring to make it more reliable and easier to use from a developer's perspective

Snap indicator

When snapping has occurred, an indicator is displayed at that specific position. For now that indicator is just a cross that disappears in a second. In the future the shape of the indicator will be related to the type of target that has been snapped to. The snapping indicator can be disabled in the Document Properties dialog.

Notable bug fixes

  • The visual bounding box (which is the default bounding box type used by Inkscape) of an object with a filter applied, now includes the expanded area of the filter. For single blur filter (such as the blur you apply with a slider in the Fill and Stroke dialog), this expands the bounding box by 2.4*radius; although theoretically, blur is infinite, this is the distance at which the opacity of the object drops below the perceptibility threshold of our renderer. For all other filters, the area is expanded by the relative amounts you specify on the "Filter general settings" tab of the Filter Effects dialog.
Only visual bounding box is affected; if you use geometric bounding box, you will notice no change in most cases. However, the Export bitmap dialog always uses the visual bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.
  • Several fixes allows Inkscape to correctly render and edit SVG files that use currentColor in objects' style (this includes files created by gnuplot).
  • No more ID clashes on import and paste: previously, importing or pasting SVG objects might sometimes distort their colors, because the imported objects referred to gradients with the same IDs as those that already exist in the document but look different. Now, IDs of all gradients in the pasted document are checked for clashes with those in the host document, and if necessary changed with all their users updated correspondingly, so such unexpected color changes will never happen.
  • Clipboard is system-wide: you can now copy/paste objects between different Inkscape instances as well as between Inkscape and other applications (which must be able to handle SVG on the clipboard to use this).
  • File dialogs remember last visited directory
  • No more garbage lines in outline mode
  • No more artifacts left by the circle cursor in Tweak tool

Previous releases