Difference between revisions of "Release notes/0.44"

From Inkscape Wiki
Jump to navigation Jump to search
 
(Transclude list of other releases)
 
(529 intermediate revisions by 46 users not shown)
Line 1: Line 1:
= Inkscape 0.42 =
{{Other languages|en=Release notes/0.44}}
== In brief ==


Inkscape 0.42 is our biggest release so far by the sheer number of major and minor features, usability improvements, and bugfixes. While some of the new features simply fill long-standing functionality gaps, others are truly revolutionary. Here are the highlights:
== Inkscape 0.44.1 changes with respect to 0.44 ==
* fix a crash on Windows ("python.exe can't find msvcrt71.dll") by providing that dll in the package;
* fix hang in page size widget
* on Mac OS X, removed problems with home folder path names containing spaces;
* inkscape now finds libpng include headers on some systems where it previously failed to do so
* several changes to allow compiling on glib-2.4 systems (e.g. RHEL4);
* allow compiling on systems with incomplete boost library headers; recognize if boost is too old
* inkscape now compiles with gcc-4.2.x.
* fixed a bug where stderr output from scripts was not shown
* fixed a bug affecting the recent files menu
* resolution information is now saved in exported PNG files
* fix some ODG export bugs
* fix dia import
* fix several include issues affecting [[CompilingSunSolaris|building on Solaris]] (there are still some more problems, at least under Solaris 8, and similar ones on OpenBSD)
* added missing German version of the advanced tutorial and made corrections to the calligraphy one; added missing Czech, German, and Brazil-Portuguese tutorials to tarball; added missing German keytable to tarball
* applied changes to the German and Spanish translations of Inkscape strings
* interactivity improvements at high zooms
* fix for specifying CSS colors with percentages
* re-enabled old PDF exporter alongside the new one
* minor fixes to new PDF exporter (a major overhaul is still in the works)
* fixup for invalid "s odipodi" namespace which has become widespread in Inkscape documents
* Mac OS X packaging updates
* miscellaneous build fixes


* <b>Flowed text</b>: text objects that automatically reflow in any shape (not only rectangle)
== Inkscape 0.44: overview ==
* <b>Text selection</b>: finally you can shift+arrow or drag over part of a text and apply any style to the selected span
* <b>Gradient tool</b>: a completely redesigned and much easier to use gradient interface, with gradient handles displayed right on canvas
* <b>Effects</b> (external scripts) are now usable from within Inkscape on all platforms; this version ships with a collection of effects including path interpolation, randomization, and various fractal algorithms
* <b>Color swatches</b>: a standard facility in most graphic software, now in Inkscape too
* <b>Colored clones</b>: clones can now be painted differently from their original
* <b>Tile tracing</b>: the Tile Clones dialog can <i>trace</i> the existing image with the tiling, producing a multitude of exciting effects
* <b>Grid arrange</b>, <b>baseline align</b>, <b>unclumping</b>: new powerful ways to arrange objects
* <b>Better PS/EPS export</b>: gradient support, better text handling, a command line option for batch export
* <b>Command line SVG analysis</b>: use Inkscape from the command line to query coordinates and dimensions of objects in an SVG file
* <b>OS X support</b>: In addition to Linux and Windows, Inkscape 0.42 is available as a fully self-contained dmg package for Mac OS X


There are also dozens of smaller features and usability enhancements (especially in the Node tool and drawing tools). In this version we closed [...] bugs, some quite serious, and [...] feature requests. The level of SVG/CSS compliance has improved significantly (e.g. internal CSS stylesheets are now supported).
Inkscape 0.44 is bigger and better than ever. Some highlights:


== Text ==
* Layers dialog


* The <b>text layout engine</b> is completely rewritten to make it easier to maintain, faster, and more memory-efficient.
* Outline mode, many performance improvements


* Inkscape now features a complete support for <b>flowed text</b>:
* Native PDF export with transparency


** <b>Creation</b> of flowed text is simple. Just <b>drag</b> anywhere on canvas (except over an existing text object) using the Text tool to create a rectangular frame. After you release mouse, the frame is created and you can type text into it. (You can press <b>Esc</b> while dragging to cancel flowed text creation.)
* Clipping and masking support


** <b>Resizing</b> a frame is as simple as <b>dragging</b> the handle in the bottom right corner to change its width or height. Drag with <b>Ctrl</b> to restrict resizing to horizontal or vertical. Such resizing can be done by Text tool, Node tool, or any shape tool; however, only Text tool also highlights the frame border when a flowed text is selected.
* Configurable keyboard shortcuts, including optional Xara X compatibility


** <b>Transforming</b> a flowed text is straightforward. It is selected as a single object including both the frame and the text, and can be moved, scaled, rotated etc.
* Docked color palette in the editing window


* Dragging with the Text tool creates a regular flowed text object whose frame is <i>internal</i> (does not appear as a standalone object on canvas) and rectangular. You can, however, create a different kind of flowed text: <b>linked flowed text</b> that can use as its frame any existing shape, including non-rectangular ones. It can also use a <b>chain of frames</b>, with the text flowing from one frame to the next one in chain.
* Interactive indicator of the style of selection in the statusbar


** To create a linked flowed text, select a text object and one or more shapes or paths, then use the <b>Flow into Frame</b> command (<b>Alt+W</b>) in the Text menu. When two or more shapes or paths were selected, they become a chain  of frames for this flowed text.
* Innovative "node sculpting" and other improvements in Node tool


* Extensions are enabled by default and work on all major platforms


* Better SVG support: <switch> element, ICC color profiles for images


* Persistent rotation centers, Paste Size command


** A linked flowed text is in some ways similar to a clone. It will reflow when the frame is changed, but it is a separate object that can be moved away and transformed independently from its frame. As with a clone, when a linked flowed text is selected, you can use <b>Shift+D</b> in Selector to jump to its first frame (this is useful if the frame is invisible or locked).
* New icons, redesigned preferences dialogs, rearranged menus, many cosmetic improvements


** Statusbar description of a selected object will identify regular text, flowed text, and linked flowed text as different kinds of objects.
* Hundreds of bugfixes and smaller features


* Full <b>on-canvas editing</b> of flowed text is now possible. Just click in any flowed text object with text tool and type —­ the text will reflow automatically within its frame. Pressing <b>Enter</b> starts a new paragraph. Letterspacing and linespacing adjustments (but not manual kerns) work in flowed text as well.
* Not directly related to Inkscape, but important nevertheless: since our last release, [http://www.mozilla.com/firefox/ Firefox 1.5] was released with SVG support enabled by default. This means that you can now view any Inkscape document right in your Firefox window without any format conversions or installing any plugins!


* The <b>Unflow Text</b> command (<b>Alt+Shift+W</b>) converts a flowed text into a single-line regular text object, cutting its link to its frame.
= Performance =


* Another command, <b>Convert to Text</b>, also converts flowed text to a regular text object, but does this preserving appearance (i.e. all lines are kept where they were). The resulting object does not reflow anymore but it is still editable. It is recommended to use this command if you have flowed text in a document but want it to be viewable in SVG 1.1 renderers.
== Outline mode ==


* <b>Text selection</b> in Text tool now works. To select a text fragment:
An Outline ("wireframe") display mode is implemented. Use the <i>View > Display Mode > Outline</i> to activate it. In this mode:


** With text editing cursor active, use <b>Shift+arrows</b> to select by character, or <b>Ctrl+Shift+arrows</b> to select by word, or <b>Ctrl+A</b> to select all of the current text object.
* all paths and shapes are rendered as <b>inverse</b> (black on light background and vice versa) <b>outlines</b> of constant width (1 screen pixel regardless of zoom), without fill;


** <b>Drag</b> with mouse over any text object.
* text is painted by inverse fill, without stroke;


** <b>Double click</b> on a text to select a word, <b>triple click</b> to select a line.
* bitmaps are shown as is;


* When you have some text selected:
* any opacity and gradients are ignored.


** Pressing <b>Ctrl+B</b>/<b>Ctrl+I</b> applies bold/italic to the selection.
The outline mode is usually not drastically faster than regular mode (usually 10% to 50% faster), and in some special cases it may even be slower. However, the value of the outline mode is not only in its speed; it is a good way to get an idea of the structure and objects of your document, and it is convenient for precision node editing and for finding "stray objects".  


** The Text&amp;Font dialog applies style to the selection.
== Speed ==


** The Cut, Copy, and Paste Style commands apply only to the selection.
In addition to the Outline mode which makes it much easier to work with complex drawings, this version of Inkscape also provides significant speed improvements in many areas.


** Kerning keys (<b>Alt+arrows</b>) shift the selection leaving the rest of the text in place (i.e. insert the opposite-directed kerns at the start and the end of the selection).
* Thanks to <b>optimizations in the renderer</b>, Inkscape's screen redraw is <b>faster by at least 10%</b>, and in some cases (such as complex stroked/dashed paths at high zooms) <b>up to three times faster</b>.  


** Letterspacing keys (<b>Alt+&lt;</b>, <b>Alt+&gt;</b>) adjust letterspacing only within the selection.
* <b>Optimizations in the Node tool</b> resulted in noticeable speed gains for node editing. Thus, switching to and from the Node tool (with a path selected), as well as selecting nodes in that tool, are now <b>at least ten times faster</b> than before. Other operations, including curve and node dragging and move/scale/rotate operations on multiple selected nodes, are much faster as well. This is especially important when working with complex paths; with these optimizations, paths containing several thousand nodes, though still slow, are much more usable.


** Rotation keys (<b>Alt+[, Alt+]; Ctrl+[, Ctrl+]</b>) rotate all characters in selection.
* An optimization in the attribute setting method made operations such as moving multiple objects with arrow keys at least <b>30% faster</b> compared to 0.43. This is especially noticeable when you are moving clones selected together with their original (e.g. a clone tiling), in which case Inkscape now works <b>three to four times faster</b>.


* The Text&Font and Fill&amp;Stroke dialogs now reflect the style <b>under cursor</b> or (if there’s text selection) <b>in the selection</b>, instead of the style of the entire text object as before. If the selection contains several text spans with different styles, then the font size and spacing fields in Text&amp;Font display averaged values, and the Fill&amp;Stroke displays averaged color.  
* <b>Interface icons</b> are now rendered in the background (from SVG source in <code>share/icons/icons.svg</code>) when Inkscape is idle, rather than waiting for all the icons in a menu to render the first time you pull it up. This eliminates the annoying delay when opening menus for the first time.


* Several new text editing shortcuts:
* Previously, zooming in to view a small portion of a path (especially big and complex path), there was a very noticeable slowdown and memory use increased dramatically. We optimized the renderer to <b>only process the visible part of a path</b>, and as a result the rendering speed is now almost the same at any zoom up to the maximum, providing up to 10-40 times speedup compared to the previous version (the closer is the zoom, the greater is the gain).


** <b>Ctrl+arrows</b> move the cursor by one word forward or backward (this disables the scrolling by Ctrl+arrows while you are editing text).
* The <b>Path > Break Apart</b> command is now dozens of times (up to 100x) faster for complex paths with thousands of subpaths.


** <b>Ctrl+Home</b> and <b>Ctrl+End</b> move cursor to the start/end of the text object, correspondingly.
= SVG conformance =


** Any character or the entire selection can be <b>rotated</b> by pressing <b>Ctrl+[</b> / <b>Ctrl+]</b> (90 degrees rotation) or <b>Alt+[</b> / <b>Alt+]</b> (pixel-size rotation, zoom in for finer adjustment).
== Color profile support ==


* <b>International text support</b> is greatly improved, especially for right-to-left scripts. See the all-new example file <code>share/examples/i18n.svg</code>.
Inkscape now includes base ICC profile functionality. If compiled with LittleCMS support (if you run <code>configure</code> with <code>--enable-lcms</code> switch), Inkscape passes the [http://www.w3.org/Graphics/SVG/Test/20030813/htmlframe/full-color-prof-01-f.html ICC color profile test] by W3C. The &lt;color-profile&gt; element has been implemented along with the "color-profile" attribute for &lt;image&gt; elements.


* <b>Unicode entry</b> in Text tool now conforms to ISO 14755’s “basic method”. This means you can now type Unicode code points consisting of other than 4 hex digits. As before, press Ctrl+U in Text tool to start Unicode mode. A preview of the current character is shown in the statusbar as you type the hex digits. To complete your input, press Enter. To enter more characters without leaving the Unicode mode, press Space instead of Enter.
== &lt;switch&gt; support ==


* Several <b>usability enhancements</b> in text editing:  
Rendering support for SVG 1.1's '''Conditional Processing Module''' has been implemented, including ''switch'' element, ''requiredFeatures'', ''requiredExtensions'', ''systemLanguage'' attributes. Inkscape passes the Conditional processing tests ([http://www.w3.org/Graphics/SVG/Test/20030813/htmlframe/full-struct-cond-01-t.html] and [http://www.w3.org/Graphics/SVG/Test/20030813/htmlframe/full-struct-cond-02-t.html]) by W3C.


== SVG output ==


* In Inkscape's SVG documents, <b>colors</b> are now expressed by name (‘white’) or three-digit form (‘<tt>#f3c</tt>’) when possible.


** cursor movement is visual in RTL and mixed-direction text;
* The numeric values in <code>transform</code> attributes are written without insignificant trailing zeros, and anything less than that 1e-8 by absolute value (usually caused by rounding errors) is written as 0 to reduce clutter.


** cursor goes straight up/down rather than to the same character index in the line above;
= Interface =


** cursor goes italic (slanted) when in italic text.
== Layers dialog ==


* A text object’s <b>baseline anchor</b> — at the left end of its first character’s baseline — is visualized as a small square mark when the text object is selected. This is especially useful in combination with the new baseline alignment and distribution capabilities of the Align dialog (see below).
A Layers dialog (<b>Ctrl+Shift+L</b>) is implemented in this version. It works in parallel with the quick layer selector in the statusbar, so you can use whichever is more convenient for you.  


* Several new text styles are supported but don’t yet have a UI for setting them: text-align:justify, word-spacing, textpath startOffset, block-progression:lr.
* In the dialog, you can click on a layer to make it <b>current</b>, as well as toggle layers <b>visible/hidden</b> and <b>locked/unlocked</b>. You don't need to make a layer current to toggle its visibility or lock status.


== Gradients ==
* A hierarchical <b>tree of layers</b> is represented by a tree-like display in the dialog. You can <b>expand or collapse</b> branches of the tree to make the layer structure of a document easier to navigate.


* <b>Gradient editing on canvas</b> is now available, much more convenient and powerful than the old way of dragging gradient knots in the Fill&amp;Stroke dialog.
* At the bottom of the dialog, there are buttons for <b>adding</b> a new layer, <b>moving</b> the current layer up or down (either one step or all the way to top or bottom), and <b>deleting</b> the current layer.


** <b>Any number of selected objects</b> can simultaneously display handles and direction lines for their linear and radial gradients (in the objects’ fills or strokes). You can drag these handles directly in the drawing, to interactively adjust gradient positions.
* Below the buttons, there's a slider and a spinbutton for adjusting the <b>opacity</b> of the current layer. A layer's opacity affects all objects in that layer in the same way as opacity of a group.


** <b>Gradient handles</b> can be enabled in the Node tool, shape tools, Text tool, and Dropper tool (on by default), as well as in Selector and Zoom tools (off by default). Use the Inkscape Preferences dialog to change this.
== Selected style indicator ==


** Any gradient handle, if dragged close to a handle of another gradient, will <b>merge</b> with that handle (drag with Shift to prevent merging). Dragging such a merged handle will adjust any number of gradients attached to it. To separate merged handles, drag them away one by one with Shift.
A new control in the left end of the statusbar lets you quickly view and change the <b>fill and stroke of the selected objects</b>. When you have a text selection in Text tool or a gradient handle selected in the Gradient tool, this indicator displays and changes the style of the text fragment or gradient stop, instead of the entire object (it's the same behavior as the Fill&amp;Stroke dialog.)


** <b>Radial gradients</b> display handles in the center and at the ends of two radii, which allows you to move, rotate, squeeze, or stretch the gradient to form an arbitrary ellipse. Also, you can independently adjust the focus of the gradient; drag the central handle with Shift to separate the focus handle.
* The two indicators, labelled <b>F:</b> (top) and <b>S:</b> (bottom), display fill and stroke of the selected object(s) correspondingly. (For gradient handles, they always display the same style.)


** When dragged, handles will <b>snap to the edges</b> (and their continuations) and the <b>central axes</b> of the bounding boxes of all selected objects (drag with Shift to prevent snapping).
* Each fill/stroke indicator can display either a <b>color+opacity swatch</b> (the opacity shown here is the fill opacity or stroke opacity, not the master opacity) or a text label specifying <b>N/A</b> (nothing selected), <b>None</b> (no fill/stroke), <b>Unset</b> (unset fill/stroke), <b>L Gradient</b>, <b>R Gradient</b>, <b>Pattern</b> (corresponding fill/stroke types), or <b>Different</b> (selected objects have different fill/stroke types).


** Dragging with <b>Ctrl</b> will snap the angle of the linear or radial gradient to the user-settable angle increments (default is 15 degrees). A center of a radial gradient, dragged with Ctrl, will be constrained to horizontal and vertical movement relative to its previous position.  
* Additionally, each indicator may be accompanied by one of two flags, <b>m</b> ("multiple", meaning there are two or more objects all with the same fill/stroke) or <b>a</b> ("averaged", meaning there are two or more objects with different flat colors in fill/stroke, and the indicator shows the average of these colors).


** Dragging with <b>Ctrl+Alt</b> will move a handle along the gradient direction (for linear), radius (for radial), or their perpendiculars, allowing you e.g. to stretch or squeeze a linear gradient without disturbing its angle.
* <b>Left-click</b> on an indicator opens or activates the Fill&Stroke dialog with the corresponding tab (Fill or Stroke) active.


** Dragging with <b>Ctrl+Shift</b> will scale the entire linear or radial gradient around its center.
* <b>Right-click</b> on an indicator opens a popup menu with the following items:
** <b>Edit fill/stroke...</b>: Opens or activates the Fill&Stroke dialog with the corresponding tab selected. (Same as left-click.)
** <b>Last set color</b>: Applies to the selected objects the fill/stroke color that was last applied to anything.
** <b>Last selected color</b>: Applies to the selected objects the fill/stroke color that was last displayed in this indicator. (Allows you to easily copy fill/stroke color between objects: select source, select destination, apply "last selected color".)
**  <b>Invert</b>: Sets the fill or stroke to the inverse of the current color (does not affect opacity).
**  <b>White</b>, <b>Black</b>: Sets the fill or stroke to the corresponding color (fully opaque).
** <b>Copy color</b>, <b>Paste color</b>: Copies or pastes the fill or stroke color (when it's color) to/from the system clipboard, as text in the <code>#rrggbb</code> hex format.
** <b>Swap fill and stroke</b>: Exchanges fill and stroke (both their types and colors, if any).
** <b>Make fill/stroke opaque</b>: Removes fill or stroke transparency (not master transparency!).
** <b>Unset fill/stroke</b>: Unsets fill or stroke from selected objects.
** <b>Remove fill/stroke</b>: Removes fill or stroke from the selected objects.


** Gradient handles for each gradient are connected by blue lines for fill gradient and yellow lines for stroke gradient.
* <b>Middle-click</b> on a fill/stroke indicator removes fill/stroke from selected objects; if it is already removed (i.e. if the indicator displays "None"), it does the same as the "Last set color" command from the popup menu.


* The <b>Gradient tool</b> (<b>Ctrl+F1</b> or the <b>g</b> key) is a new convenient way to create, edit, and manage gradients:
* <b>Drag and Drop</b> of colors onto a fill/stroke indicator sets the fill and stroke of the selected object(s) correspondingly.


** Simply <b>drag</b> anywhere on canvas to create a gradient on selected objects. Existing gradients can be edited by dragging their handles (as in any tool that has on-canvas gradient editing enabled). If the selected object already had a gradient, the new gradient will use the same colors as the old one; otherwise it will go from fully opaque to fully transparent with the color of the selected object. However if you start dragging from another object, the tool will pick up the gradient or the color of that object.
* The Stroke indicator also displays the <b>stroke width</b> of selection (averaged if there are multiple objects selected with different stroke widths), located to the right of the stroke color/transparency swatch. Left-clicking on it opens the Fill&Stroke dialog with the Stroke Style tab selected. Right-clicking on it opens a popup menu which allows you to choose the units for displaying the stroke width, as well as choose one of the presets to assign to selection.


** Instead of dragging, you can <b>double-click</b> an object to create a new gradient centered within the object’s bounding box. If you have several objects selected, or if your selected object is behind another one, you can double-click with Ctrl to create gradients on selected object(s) without changing selection.  
* To the right of the fill/stroke indicators, the <b>Opacity</b> numeric field (labelled "O:") shows and allows you to change the master opacity of the selected object (or the averaged opacity of several selected objects). <b>Right-clicking </b> the numeric field opens a popup menu with preset opacity levels. <b>Middle-clicking</b> on the "O:" label cycles the opacity through the values of 0 (transparent), 0.5, and 1 (opaque).


** The tool’s controls bar lets you choose the <b>type</b> of the newly created gradients (linear or radial) and whether they will be applied to the objects’ <b>fill or stroke</b>.
The zoom field and the cursor coordinates indicator have been rearranged for compactness and moved to the right end of the statusbar. There's also a window resize handle added at the very end of the statusbar.


** The selected (blue) on-canvas gradient handle can be <b>nudged by arrow keys</b> with all the regular modifiers (Alt ro move by 1 screen pixel, Shift to move by 10 times the distance). The Tab and Shift+Tab keys let you move selection from one handle to the next or previous. Pressing Esc (or a click in empty space) deselects the selected handle; if no handles are selected, it deselects selected objects.
== Tool style indicators ==


** The selected gradient handle will intercept any color/opacity setting commands and apply them to the corresponding stop(s) of its gradient(s). This means that at least two-stop gradients can be completely edited without ever opening the Gradient Editor dialog. In particular, you can use these methods to change the color of the selected handle:
For each object-creating tool (shapes, Pen/Pencil, Calligraphic, Text), the Controls bar (above the canvas) now includes a <b>style indicator</b> on the right. This indicator shows you which style the newly created object will have.  


*** Dropper tool (for example, to blend a radial gradient onto background, select its outer handle and pick the background color with the dropper).
* The indicator correctly displays whichever style the tool is set to use - the global "last set" style or that tool's fixed style. For example, clicking on a palette swatch (even with nothing selected) changes the "last set" color and, if your tool is set to use the last set color, its indicator is updated, giving you an idea of your "brush" before you start to draw.


*** Paste style (if the pasted style contains both fill and stroke style, the stop will take the fill style).
== Controls bar for the Text tool ==


*** Fill and stroke dialog (this allows you to set the color of several gradient stops at once if their handles are merged together; both Fill and Stroke tabs work to set color on a handle).
* This version adds the beginnings of a Controls Bar for the Text tool (previously empty). Now you can select the <b>font family</b>, <b>size</b>, apply <b>bold</b> and <i>italic</i> styles, change <b>alignment</b> and <b>text orientation</b> without opening the Text and Font dialog.  


*** Swatches dialog.
* All controls are <b>instant-apply</b> and work on the entire text object (if nothing selected) or text selection. They can also apply to multiple text objects (though you would need to switch to Selector to select multiple text objects, then switch back to Text tool for its controls).  


** <b>Double-clicking</b> any gradient handle will open the Gradient Editor dialog with that handle’s gradient loaded and the corresponding stop selected in the list.
* The font-family drop-down contains names and <b>previews</b> of all fonts; unlike other programs, we didn't apply each font to its name, but added a separate preview string displayed with gray color after each font's name. This design ensures readability of font family names and provides maximum useful information in a limited space.


** For each gradient, you can choose one of the document’s <b>gradient definitions</b> (sets of color/opacity stops) from the drop-down list in the controls bar. If a handle is selected, this list displays the gradient the gradient attached to that handle; otherwise it shows the gradient of the selected object (or “Multiple gradients” if there are different gradients in selection, or if the handle is a merged handle with different gradients attached). Correspondingly, choosing a gradient definition from the list applies it to the gradient(s) of the selected handle or, if none, to all selected objects.
* We will be adding more controls (including spacing and kerning) to this bar for the next versions.


** The <b>Duplicate</b> button creates a copy of the selected gradient definition and applies it to the selected objects, which is useful when you have several objects sharing one gradient definition but want to change that. The <b>Edit...</b> button opens the gradient dialog where you can edit the gradient definition (add/move/delete stops and change colors and opacities of stops).
== Docked color palette ==


* Before, the actual direction of the linear gradient was not always perpendicular to the line connecting it handles if the bounding box of the object was not a square. This is now fixed, though the fix only works for new gradients that you create (i.e. gradients in old files are not affected).
* Previously, color swatches could only be used from a floating palette (Ctrl+Shift+W). Now the color swatches palette is embedded in the main UI, at the bottom of the window between the canvas and the statusbar. It is enabled by default; use <i>View > Show/Hide > Palette</i> to enable or disable it. The docked palette has the same functionality as the floating one; use a button in the top right corner to access the swatches menu.


* The <b>Wrap</b> option (off by default) in the swatches menu converts the palette from a single row into a frame 2 or 3 rows high, for better access to colors in large palettes.


== Clones, tiling, distributing, unclumping ==
* <b>Drag and Drop</b> of <b>colors</b> has been enabled.
** Dragging colors from a palette shows a live swatch of the color being dragged under cursor.
** Drag and Drop of colors onto the selected style indicator in the statusbar sets the fill or stroke of the selected object(s).
** Colors can be <b>dropped</b> directly on to objects on canvas to set their <b>fill</b>, or <b>shift+dropped</b> to set their <b>stroke</b>. This affects only the object you drop the color on, regardless of whether that object is selected or not.
** Colors can be dragged to and from other applications.


* <b>Unsetting paint</b> and <b>painting clones</b>: Both Fill and Stroke tabs of the Fill&Stroke dialog have a new mode button, “Unset paint” (with a question mark icon). Pressing this button removes the <code>fill</code> or <code>stroke</code> property from the style of selected objects, which has the visible effect of painting the fill black and removing the stroke. The usefulness of this is that clones of such an object can <i>redefine</i> the unset fill or stroke, which means you can have clones painted differently from their original and from each other. Just use the Fill&amp;Stroke dialog on a clone to assign it any kind of fill or stroke paint (flat color, gradient, etc.). Moreover, you can unset paint on some of the objects in a group, clone the group, and paint the clone; only those objects with unset paint will accept the paint, while others will retain their original paint.
* The new <b>Inkscape default</b> color palette was added. It contains a range of grays, standard HTML named colors, and a full range of colors sorted by their HSL values (475 colors overall). It is generated by a Python script which is available from Inkscape SVN in share/palettes.


* <b>Tile clones</b> dialog improvements:
* Several <b>specialized color palettes</b>, useful in color-coordinated projects, were created or borrowed from GIMP: Grays, Reds, Greens, Blues, Gold, Royal, Khaki, Hilite, and Topographic.


** The new <b>Color</b> tab allows you to change, randomize, or alternate the hue, saturation, and lightness of the tile color per row or per column. You can also set the initial color of the tiles to which these alterations will apply. Changing color works only if the clones’ original (or some parts of it, if the original is a group) has unset fill or stroke (use the Fill&amp;Stroke dialog to unset paint).  
* All standard sizes of the swatches (Tiny, Small, Medium, Large, Huge) are made <b>smaller</b> overall.


** The new <b>Tracing</b> tab allows you to trace the drawing under the tiling. You can set it to pick color, opacity, or any or the RGB or HLS channels in the area covered by each tile; then optionally randomize, invert, or gamma-correct the picked value; and finally apply that value to the tile’s probability of presence, size, color, or opacity (or any combinations of these).  This makes it possible to do an infinite amount of effects on drawings (both vector drawings and imported bitmaps), such as tesselated mosaics, “impressionist paint”, geometric grids, color separation lattices, and more. You can also easily control the extent and the density of your tiling by preparing a temporary shape and tracing opacity-to-presence over it, or you can “paint over” a stroke with a pattern or randomized scattering.
== Inkscape Preferences dialog ==


** The new <b>Unclump</b> button attempts to reduce local unevenness in distribution of the tiles. When you unclump a tiling, each tile tries to move to a point equidistant from its closest neighbors. If a single unclumping is not enough, you can press Unclump repeatedly, trying to achieve a balance between eliminating small-scale clumps and preserving large-scale features of the tiling. Unclumping works equally well on both randomized and regular tilings, changing them both into a characteristic texture which appears random, but not blindly random — very similar to what a human would produce if asked to evenly fill a space with random dots. As a result, properly unclumped dot tilings remind of hand-made engravings.  
Not only was the Inkscape Preferences dialog completely rewritten and redesigned, with numerous bugs fixed in the rewrite.


* The old tabbed dialog is gone; the new dialog fits much better with the [http://library.gnome.org/devel/hig-book/stable/ GNOME Human Interface Guidelines (HIG)]. 


** Instead of specifying rows and columns, you can now set the <b>size</b> of the rectangle to be filled with your tiling (convenient when you need to trace over a bitmap or drawing of certain size).
* As a new feature, the <b>Simplify threshold</b> can now be set with more precision.


** On all tabs, controls have been rearranged into a table-like layout for more convenient access. Separate controls are added for alternating values per row or per column, as well as for randomizing each value separately (e.g. now you can randomize only the horizontal shifts but not vertical).
== Document Properties / Metadata dialogs ==


** The new <b>Exponent</b> values on the Shift tab allow you to make rows or columns to exponentially converge (for values less than 1) or diverge (for values greater than 1). The default of 1 creates rows and columns spaced evenly.
* The Document Preferences dialog is now named <b>Document Properties</b>, and it was split in two: metadata were extracted into the <b>Document Metadata</b> dialog; metadata widgets are now also spread over two pages.


** The upper limits for scales and shifts are increased (from 100% to 1000% of tile size), and the precision of the input fields is higher.
* A button was added to <b>fit the page to the current selection</b> or, if there's no selection, to the entire drawing. The button resizes the page and, if necessary, moves the drawing into place. It is now very easy to size a page to an illustration after it is ready.


** There’s a mini-statusbar at the bottom of dialog which shows the number of tiled clones of the selected object.
* <b>New controls</b>: the new object snapping features required their own property widgets, and you can set the snapping sensitivity with a slider, or let it snap regardless of distance (grid only).


* Improvements in the <b>Align &amp; Distribute</b> dialog:
* Rearrangements within <b>Document Properties</b>: everything snapping-related was collected on one page; Grid and Guide widgets are on their own, the same page. For better HIG compliance, all widgets were categorized; especially the widgets on the Page page were completely rearranged in the General/Format/Border categories.


** The new <b>Randomize</b> button moves the selected objects randomly within the bounding box of the selection. To achieve the most eye-pleasing results, randomization is usually followed by one or more rounds of unclumping (see the next item).
* <b>Bug fixes</b>: grayed out license URI had too low contrast, so it's no longer grayed out; the proprietary license didn't clean the license URI; spinbuttons had no tooltips, and minor grid quirks were removed; data was not updated when a new file replaced another in the same window.


** The new <b>Unclump</b> button works the same as in the Tile Clones dialog, except that it unclumps the selected objects instead of the tiled clones of the selected object.
* <b>HIG compliance</b>: much work went into improving [http://library.gnome.org/devel/hig-book/stable/ GNOME Human Interface Guidelines (HIG)] compliance, but usability is always an ongoing process.


** Four new buttons let you align or distribute horizontally or vertically the <b>baseline anchors</b> of the selected text objects (non-texts are unaffected by these buttons). Now you can easily align or distribute lines of text in different fonts or sizes, regardless of whether they have letters with descenders (such as ‘y’ or ‘j’) or not.
* <b>Updated Creative Commons Licenses</b>: Updated CC licenses to the latest 2.5 versions by default in the license tab of the metadata dialog.


** All the icons in the dialog are redrawn in a consistent style. Buttons are rearranged for clarity. Tooltips are made shorter and easier to understand.
== Configurable keyboard ==


** Nodes can now be aligned or distributed vertically and horizontally when in node editing mode.
Inkscape's <b>keyboard shortcuts are now configurable!</b>


* With the new <b>Grid Arrange</b> dialog, Inkscape now has the ability to arrange selected objects into a grid:
There is no graphical users interface at this time, and not all Inkscape actions can have their shortcuts customized. However, if you do not mind editing a configuration file, the majority of actions, including everything you see in the menus, can already have their keys changed.  We're working on making more actions configurable.


** You can define the numbers of rows/columns in the grid. When you change one of the numbers, the other is updated automatically based on the total number of selected objects.
On startup, Inkscape reads its keyboard shortcuts from <code>share/keys/default.xml</code>. That file is a copy of <code>inkscape.xml</code> in the same directory, which also contains keyboard emulation profiles for other vector editors:


** You can make all rows/columns equal height/width, or you can make them fit the tallest/widest object in each row/column.
*<code>xara.xml</code>: Xara X/Xara Xtreme/Xara LX keys


** You can set the row/column spacing explicitly (negative values are allowed), or you can make the entire grid exactly fit the current selection’s bounding box.
You can copy any of these over default.xml to use that profile. In all profiles, those keys which are not used by the corresponding program still have their Inkscape bindings. If you can contribute a profile for some vector editor that we don't yet have, we would appreciate that. The files have a simple XML-based format described in <code>inkscape.xml</code>.


You can also <b>customize some of your keybindings</b> without overwriting the main <code>default.xml</code>. If your profile directory (<code>~/.inkscape</code> on Linux) contains a <code>keys</code> subdirectory with a <code>default.xml</code> file, the keybindings from that file will overlay (i.e. add to, and override in case of a conflict) the default bindings. The format of your own <code>default.xml</code> is the same as that of the main <code>default.xml</code>.


== Effects ==
== Menus ==


* The <b>Effects menu</b> can be made visible by checking the checkbox labeled “Enable script effects” on the “Misc” tab of the Inkscape Preferences Dialog. This menu is not on by default because of some remaining problems with the extensions, but many users report that they are already quite usable. Most extensions that ship with Inkscape require <b>Python</b> to be installed; some require <b>Perl</b>; also it is now possible to use <b>Ruby</b> for programming extensions.  
* <b>Zoom</b> commands in the View menu are moved to a submenu; the <i>Zoom In</i> and <i>Zoom Out</i> commands are added to that submenu.


* Extensions now work on <b>Windows</b> (if you have Windows versions of Python/Perl installed).
* <b>Clone</b> commands are moved into a submenu in Edit menu and given more descriptive names and tips.


* Script extensions now have GUIs to adjust their parameteres with ranges and default settings.  All preferences are stored in the preferences.xml along with all other Inkscape preferences.
* <b>Pattern</b> commands (<i>Objects to Pattern</i> and <i>Pattern to Objects</i>) are moved into a submenu in Object menu, under the new Clip and Mask submenus.


* Effects now correctly work with Undo/Redo and modifying the document changes flag for save confirmation on exit.  Effects also no longer open an additional window to display results.
* The contents of the <b>Effects menu</b> are categorized into submenus, and several effects are renamed to use more intuitive names.  


* Scripts that return error along with data on STDERR have that data displayed for the user to allow for more complete user reporting of scripting errors.
== Statusbar ==


* Added a command line parameter "--extension-directory" to allow external extension installers to find the directory which Inkscape is configured to look for extensions.
* In Selector, for multiple selected objects, the statusbar now reports their types. For example, if 5 groups are selected, it displays


* Inkscape now looks for Extensions in both the systemwide Inkscape's <code>share/extensions</code> directory and the user’s extensions directory (e.g. <code>~/.inkscape/extensions</code> on Linux).
::<b>5</b> objects of type <b>Group</b> in layer <b>LayerName</b>.


:instead of just "5 objects selected" as before. If there are up to 3 types in the selection, they will be listed, for example:


* Several new effects, written in Python, ship with Inkscape 0.42:
::<b>5</b> objects of types <b>Group</b>, <b>Path</b>, <b>Rectangle</b> in layer <b>LayerName</b>.


** <b>Connect the Dots</b>: Places a dot and a number at each node of the selected path.
:The order of the list will correspond to the order in which the objects were added to selection. If there are 4 or more types in selection, only the number of types is reported, for example:


** <b>Draw Handles</b>: Draws control handles on the nodes of the selected path.
::<b>5</b> objects of <b>4</b> types in layer <b>LayerName</b>.


** <b>FretFind</b>: This is a fretboard design tool capable of designing multiscale and microtonal fretboards for guitars.
* In Selector, objects selected in groups are now identified as such, and the group ID is given, for example:


** <b>Interpolate</b>: Blends paths and styles with a given number of steps; requires two paths to be selected.
::<b>Rectangle</b> in group <i>g212</i> (layer <b>content</b>)


** <b>Kochify</b>: A two-step fractal effect. First, select a path and do "Kochify (Load)" to store it. Then select another path and do "Kochify" to replace each segment (between the nodes) of the selected path with the stored path. For example, if the stored path is an S-like curve, the path will become "wavy"; the size of the waves will depend on how many nodes the source path has (use the "Add node" button in the Node tool to add nodes between selected nodes, or the Simplify command to remove extra nodes).
:If selected objects have different parents within one layer (for example, if one is selected in a group and another outside it), the number of parents is reported:


** <b>Lindenmayer</b>: Draws deterministic context-free Lindenmayer Systems. Creates a new path object in the 0,0 point (located off of the canvas).
::<b>2</b> objects of types <b>Rectangle</b>, <b>Path</b> in <b>2</b> parents (layer <b>content</b>)


** <b>Motion</b>: Draws isometric 3D wireframe path extrusions for selected paths.
:If objects are in different layers, only the number of layers is reported since this also implies different parents:


** <b>Radius Randomize</b>: Randomly moves path nodes, node handles, or both within the specified radius. Operates on selected paths.
::<b>2</b> objects of types <b>Rectangle</b>, <b>Path</b> in <b>2</b> layers


** <b>Random Tree</b>: Draws a random tree - a classic application of turtle geometry. Creates a new path object in the 0,0 point (located off of the canvas).
* In Node tool, if your node selection includes nodes from different subpaths, statusbar reports the number of subpaths with selection and the total number of subpaths, for example:


** <b>Segment Straightener</b>: Makes curved path segments a specified percentage straighter by either pulling control handles toward their node or toward a point a third of the distance along the destination straight line. Operates on selected paths.
::<b>2</b> of <b>195</b> nodes selected in <b>2</b> of <b>36</b> subpaths.


** <b>Wavy</b>: Converts the selected rectangle objects into appropriately sized wavy lines. Allows user to specify custom equations f(x) to use in the plotting.
* The contents of the statusbar message are now duplicated as a <b>tooltip</b> that is shown when you hover the mouse over the statusbar.  


* The statusbar text is now no longer just cut off if there is insufficient room, but an ellipsis (...) is inserted at the end to show there's more (only with Gtk 2.6 and newer).


* Apart from the effects, the <code>share/extensions</code> directory contains several helpful Python modules that you can reuse in your own extensions:
== Theme ==


** <b>bezmisc.py</b>: A few miscellaneous functions for bezier math.
* Inkscape has a <b>new default icon set</b> titled "Crispy" provided by [http://placide.home.sapo.pt Plácido André Sousa]. The new icons are intended to add a more professional and cohesive look to our application, as well as to make the functions the icons represent more self-evident.


** <b>cubicsuperpath.py</b>: An alternative path data list structure that converts all segments to cubic bezier curves and stores them as points rather than segments.
= Tools =


** <b>ffgeom.py</b>: Point and Segment geometry classes used in FretFind.
== Node tool ==


** <b>ffproc.py</b>: Functions that place strings and frets for FretFind.
=== Node sculpting ===


** <b>ffscale.py</b>: Converts ET and Scala scale descriptions into useful ratio arrays.
An entirely new way of manipulating paths in Node tool is added in this version: Node sculpting. Normally, when you have several nodes selected and you drag one of them, all selected nodes move by the same amount. Now, if you <b>Alt-drag</b> one of the selected nodes, only that node is fully displaced; other selected nodes are moved less than the full amount, so that those farthest from the drag point remain stationary. This is similar to "proportional editing" or "soft selection" in 3D editors such as Blender.


So, for example, if you select several nodes on a straight line and Alt+drag the middle selected node, the path will bend into a <b>smooth bell-like curve</b>. Nodes' handles are also adjusted correspondingly to keep the overall shape smooth and natural. (If you don't have enough nodes on a path fragment that you want to reshape in this way, just select the end nodes of that fragment and press <b>Ins</b> a few times to populate it with nodes.)


** <b>inkex.py</b>: A helper class for creating Inkscape effects.
Moreover, node sculpting is <b>pressure-sensitive</b> when you are using a tablet pen. If you press slightly, your curve will have a narrow sharp tip (i.e. the nearest neighbors of your dragged node will move only a bit); if you press hard, the curve's tip will be wide and blunt (i.e. the nearest neighbors will move almost as much as the dragged node). (Hint: to stop dragging without losing your shape, first release Alt and then lift the tip of the pen.)


** <b>pturtle.py</b>: A path turtle class for creating Inkscape extensions with turtle geometry.
There are many possible applications of the sculpting technique. To take a simple example, selecting all nodes of an ellipse-like shape and Alt+dragging one of them will smoothly and naturally stretch and skew the entire shape in any direction. Doing the same to a complex path, such as star or spiral, will twist and punch it without destroying its intricate structure - this is the way to get squashed or self-intersecting stars, eccentric spirals and other shapes not easily doable before. Selecting only part of all nodes allows you to smoothly reshape parts of the figure without disturbing the rest.


** <b>simplepath.py</b>: Unpacks SVG path data into a simple list structure that mimics the textual representation.
When applied to text converted to path, node sculpting is a fun and easy way to twist, bend and distort it, achieving effects similar to "perspective envelope" or "curvilinear envelope" in other programs - but in a more powerful and flexible way. For example, by selecting all or part of the text's nodes and Alt-dragging, you can not only make a wavy banner out of a paragraph of text, but also apply a "magnifying lens"-like effect to any word in the middle.  


** <b>simplestyle.py</b>: Unpacks SVG style attributes into a dictionary and pack them back up.
Especially useful node sculpting is for complex natural paths, such as calligraphic strokes or bitmap traces, where you often want to do large-scale pushes and bends without destroying the small-scale features. Things like making a calligraphic stroke narrower in one place and wider in another, or changing the proportions, extending the ear or flattening the nose of a head - all this is now much faster and more natural to do using sculpting. It is also a new way to <i>create</i> new paths, too - starting from en ellipse with added nodes, it takes just a few Alt+drags to tweak it into a silhouette of a head, or a map of Australia, or an Inkscape logo!


Some examples are shown on the screenshot: [http://www.inkscape.org/screenshots/gallery/inkscape-0.44-nodesculpting.png inkscape-0.44-nodesculpting.png].


== Bitmap tracing ==
=== "Show handles" toggle ===


The Controls bar for the Nodes tool now includes a toggle button which controls whether Bezier handles are shown on selected nodes (on by default). Selecting and dragging nodes on node-dense paths in zoom-out (e.g. for node sculpting) may be extremely difficult without hiding the handles, as it's hard to pick a node and not a handle when handles are shown.


* The potrace code has been updated to version 1.6, which should provide users with some noticeable benefits in performance during tracing operations.  The maximums scans are now 256. 
=== New deletion behavior ===


* A tracing progress indicator has been added so users can count the traces, 1... 2... 3...  Also, the during-trace abort feature is removed, which reduces the cpu load of polling for user interrupts. There is still a between-trace abort feature, so during long multi-pass traces, the user will be able to interrupt those. The performance enhancements for the new potrace are enough that hopefully users won't need to interrupt single pass traces as much as before.
* In Node tool, <b>deleting node(s)</b> by Del/Backspace keys or by Ctrl+Alt+clicking a node now <b>tries to preserve, as much as possible, the current shape of the path</b>. This means that the nodes adjacent to those being deleted have their handles adjusted to approximate the form that the path had before deletion. For example, if you Ctrl+Alt+click a path twice, once to add a new node and then to delete it, the path will not change at all (or change very slightly). The old deletion behavior without adjusting handles is still available via <b>Ctrl+Del</b> or <b>Ctrl+Backspace</b>.


=== Preserving positions of nodes and handles ===


== Loading, saving, export, command line ==
* When you <b>switch the type</b> of the selected node to Smooth or Symmetric by pressing Shift+S/Shift+Y, you can now <b>preserve the position</b> of one of the two handles by hovering your mouse over it, so that only the other handle is rotated/scaled to match.


* In <b>PS or EPS export</b>, Inkscape now supports <b>gradient fills</b> (both linear and radial) using PostScript Level 3 operators. Unfortunately PostScript (even in Level 3) does not support transparency, so this only works for gradients which use different opaque colors, not different levels of transparency of the same color (see Known Problems below for more limitations).
* Similarly, when you <b>join endnodes</b> by pressing Shift+J, you can <b>preserve the position</b> of one of the two nodes by hovering your mouse over it, so that only the other node is moved.  


* <b>Load from URL</b>: Inkscape now includes a configure option to link against GNOME VFS; if this option is on (which is the default if GNOME VFS is found on the system), Inkscape will be able to load SVG documents directly from URL’s.  Currently this only works when used from the commandline, i.e.
=== Miscellaneous ===
:<pre>
inkscape http://openclipart.org/clipart/food/honey.svg 
</pre>
:This feature loads the URL directly into memory rather than to a temporary file.


* When saving as <b>SVGZ</b> (compressed SVG), you can now choose between compressed Inkscape SVG and compressed plain SVG.
* The <b>!</b> key <b>inverts node selection</b> in the current subpath(s) (i.e. subpaths with at least one selected node); <b>Alt+!</b> inverts in the entire path. (This is similar to how these keys work in Selector, with current subpath(s) instead of the current layer.)


* Documents can now be <b>exported to PS or EPS from the command line</b> (<code>--export-ps</code> and <code>--export-eps</code> correspondingly). For EPS export, there are command line options for converting text to path (<code>--export-text-to-path</code>) and setting the bounding box to the page instead of the drawing (<code>--export-bbox-page</code>).
* The keyboard shortcut for "Make selected segments curves" in Node tool is changed from Shift+K to <b>Shift+U</b> for better mnemonics.


* Determining the <b>dimensions of an object</b> in an SVG document is, in general case, impossible without fully rendering the entire document. Yet this information can be very useful for various automated tasks, such as building composite SVG documents from objects in separate source documents. Now, to accomplish this, you can run Inkscape with one of the command line options <code>--query-x</code>, <code>--query-y</code>, <code>--query-width</code> or <code>--query-height</code>. The <code>--query-id</code> option specifies the ID of the object that is queried; if not set, the corresponding dimension of the entire drawing is returned. For example:
== Calligraphic pen ==


:<pre>
=== Tremor ===
  $ inkscape tutorial-basic.svg --query-height
  3998.6800
  $ inkscape tutorial-basic.svg --query-y --query-id text1555
  528.94486
</pre>


:The returned values are in px (SVG user units).
* Even when using a graphics tablet with pressure sensitivity, the Calligraphy pen's strokes often look too smooth and artificial. To enable a more natural look, the new <b>Tremor</b> parameter is added to the Calligraphy tool in this version. Adjustable in the Controls bar from 0.0 to 1.0, it will affect your strokes producing anything from slight unevenness to wild blotches and splotches. This significantly expands the creative range of the tool.


* For PNG export, the new option <code>--export-area-drawing</code> exports the entire drawing (not canvas), giving you a PNG of all visible objects without margins.
=== Pen width ===


* Inkscape can now export documents into LaTeX with <a href="http://tug.org/PSTricks/main.cgi/">PSTricks</a> macros.
* In all previous versions, pen width depended on zoom in such a way that the strokes <i>appeared</i> the same visible width at any zoom, but were in fact narrower at zoom-in and wider at zoom-out. This behavior makes sense if you want to keep the same "feel" of the pen regardless of zoom; for example, if you zoomed in to make a small fix to your drawing, it's natural that your pen becomes physically smaller but feels the same to you. So, this behavior is kept as the default, but now we also added an alternative mode where your <b>pen width is constant in absolute units</b> regardless of zoom. To switch to this mode, use the checkbox on the tool's Preferences page (you can open it by double-clicking the tool button).


* The new command line option <code>--vacuum-defs</code> performs the “Vacuum Defs” command, i.e. removes the unused definitions from the <code>&lt;defs&gt;</code> section(s) of the document. If specified with <code>--export-plain-svg</code>, it affects the exported plain SVG file; otherwise it replaces the source file and exits.
* The <b>Width</b> field in the tool's controls bar now changes <b>from 1 to 100</b>, which corresponds to the range from 0.01 to 1.0 in the previous version. If the "width in absolute units" mode is turned on, the value in this fields gives the width of the stroke in px units. In the default mode, the value of 100 gives 100px wide strokes only at 100% zoom, and strokes are correspondingly narrower or wider at other zoom levels.


=== Selection ===


== Tools improvements ==
* A new preferences option for the Calligraphic tool, <b>Keep selected</b>, controls whether the newly created object remains selected after you finish drawing it. If you turn it off (by default it's on) and set the tool to using Last Set color, you can easily choose a new color by clicking on the palette without having to worry if this will change the color of the stroke you just created. (Watch the tool style indicator at the right end of the Controls bar for the style of the next stroke you will draw.)


* All tools that were previously able to click to select (namely node, shapes, and gradient tools), can now do Shift+click (toggle selection for an object) and Alt+click (select under) in exactly the same way as the Selector tool.
* <b>Esc</b> deselects selected objects in Calligraphic, as in most other tools.


* In Selector, <b>double clicking</b> an object switches Inkscape to the corresponding tool (node tool for paths, the corresponding shape tools for shapes, text tool for text objects). Double clicking a <b>group</b> <i>enters</i> that group (i.e. makes it the temporary current layer); double clicking on an empty space returns to the parent layer.
=== Style ===


* The stroke you're drawing is now shown, while you're drawing it, with the correct color and opacity that it will eventually have, instead of always black as before.


* In the <b>Node tool</b>:
* On a new Inkscape installation, this tool now uses the last set style by default instead of the fixed black as before (this is changeable in the Inkscape Preferences for the tool).


** <b>Ctrl+click</b> on a <b>node handle</b> retracts that handle back to its node.
== Pen tool ==


** Converting a cusp node to smooth or symmetric (via Ctrl+click, Shift+S/Shift+Y, or a toolbar button) will, if necessary, convert adjacent path segments to curves and will outset the node’s handles if they were retracted.  
* While drawing a path, you can now <b>move the last node you created</b> by the same keys as in Node tool - that is, arrows, with Shift (for 10x displacement) or Alt (screen pixel displacement) modifiers.  


** If a node does not show one or both handles (i.e. they are retracted), you can <b>drag a handle out</b> by dragging away from the node <b>with Shift</b>. This is often more convenient than using the “Convert node to smooth” or “Convert segment to curve” buttons. Unlike before, dragging a node without modifiers, or with any modifiers but Shift, will always move the node itself, not its retracted handle.
* Also, you can switch the not-yet-finalized (red) segment of the path being drawn from curve to line (<b>Shift+L</b>) or back to curve (<b>Shift+U</b>), again the same shortcuts as in the Node tool.


** When <i>several</i> nodes are selected, pressing <b>&lt;</b> or <b>&gt;</b> scales, <b>[</b> or <b>]</b> rotates the selected nodes <b>as if they were an “object”</b>, around the center of that object. (This is more consistent with the arrow keys which have always moved selected nodes as a whole.) So, for example, in a single-path silhouette portrait, you can now select the nodes of the nose and rotate/scale the nose as a whole without breaking the path into pieces. Pressing <b>Alt</b> with these keys gives pixel-sized movement depending on zoom, the same as in Selector. Also, you can press <b>h</b> or <b>v</b> to flip the selected nodes horizontally or vertically.
* By popular demand, if a new path is being drawn but not yet finished, <b>Ctrl+Z cancels</b> that unfinished path (i.e. does the same as Esc), instead of undoing the previous action.


** When <i>one</i> node is selected, pressing <b>&lt;</b>, <b>&gt;</b>, <b>[</b>, <b>]</b> with left or right Ctrl or Alt now affects the handle towards the <i>visually</i> left or right adjacent node, correspondingly (and not the handle towards the previous or next node on the path, as before).  
* In Pen tool, <b>Del</b> works the same as Backspace to delete the last created point on the unfinished path.


** The <b>statusbar</b> tip for a single selected node now identifies end nodes and mentions retracted handle(s), if any. When dragging a node handle, statusbar reports the current angle and length of the handle.
= Clipping and masking =


** Pressing <b>Ctrl+A</b> with some nodes selected will select not all nodes in the path but all nodes in the subpath(s) containing the selected node(s). To select all nodes in the path unconditionally, either deselect before pressing Ctrl+A, or use <i>Select all in all subpaths</i> (<b>Ctrl+Alt+A</b>) in Node tool (same key as <i>Select all in all layers</i> in Selector). This change has no effect for paths with single subpath.
Inkscape now provides some UI for using <b>clipping paths and masks</b>.  


** Until you change a node’s type explicitly, it is presented as a smooth node if its handles were collinear, and cusp node otherwise (not always cusp as before). This means that the majority of nodes created by the Freehand tool or the Trace bitmap dialog will behave as smooth nodes in the Node tool. If you want to make some node(s) cusp, select and press Shift+C.
* Any object can be non-destructively intersected with a path (called a <i>clipping path</i>) so that only the intersected portion of the object is visible.
** <b>To apply clipping</b>, select the objects to be clipped and the clipping path object, make sure the clipping path is above the other objects in z-order, and do <i>Object > Clip > Set</i>.
** You can <b>transform, edit, or style</b> the clipped objects as usual. The clipping remains applied and transforms together with each clipped object.
** To <b>remove the clipping</b>, do <i>Object > Clip > Release</i>. The clipping path is returned to the drawing as a regular object; it is inserted on top of the unclipped object in z-order.  


* In <b>Pen and Pencil</b> tools:
* Any object can be non-destructively masked by another object (called <i>mask</i>) so that: the mask's black or transparent areas become fully transparent in the masked object; mask's opaque white areas become fully opaque; and all intermediate colors translate into intermediate levels of opacity in the masked object. This allows you to apply, for example, arbitrary transparency gradients to objects.
** To <b>apply a mask</b>, select the objects to be masked and the mask object, make sure the mask is above the other objects in z-order, and do <i>Object > Mask > Set</i>.
** You can <b>transform, edit, or style</b> the masked objects as usual. The mask remains applied and transforms together with each masked object.
** To <b>remove the masking</b>, do <i>Object > Mask > Release</i>. The mask is returned to the drawing as a regular object; it is inserted on top of the unmasked object in z-order.


** What was previously called <b>the “add mode” is now always on</b> in Pen and Pencil tools, i.e. the selected path always displays the end markers. This makes it easy to continue or close the selected path. The ‘a’ key to toggle the add more is removed.
* Objects with clippath show their bounding box intersected with the bounding box of the clippath, instead of the original unclipped bbox as before. (However, this does not apply to objects without clippath of their own which are clipped by being inside a clipped group.)


** If you start drawing outside the end markers of the selected path then, unless Shift was pressed, that path is deselected and you are drawing a new path (not a new subpath of the selected path as before). To <b>add</b> to the selected path, you have to start drawing either from one of its end markers to continue it, or in arbitrary place but with <b>Shift</b> pressed to create a new unconnected subpath.
* Clipped or masked objects display "<i>clipped</i>" or "<i>masked</i>", correspondingly, in their statusbar descriptions.


** If you start drawing from one end marker of a path and arrive at the other end marker, the path gets closed automatically (the markers disappear).
* Although Inkscape had render-only support for clipping paths and masks for quite some time, in this release we fixed a number of bugs which may affect the display of your documents using clippaths or masks.
** Clippaths and masks with objectBoundingBox units are now shown correctly upon loading of the document.
** Clippaths without fill didn't work, this is now fixed.
** Objects with clippaths or masks are correctly copied/pasted between documents.


* In the <b>Dropper tool</b>:
= Transformations =


** The “pick visible/pick with alpha” switch, previously in the tool preferences, is now moved to the Controls panel of the tool.
== Transform dialog ==


** Alt+click picks the <b>inverse</b> of the color at point (works with dragging and Shift too).
Fixes and improvements in the Transform dialog (Ctrl+Shift+M):


== Color improvements ==
* The <b>Apply to each object separately</b> checkbox is added, allowing you to scale/rotate/skew each selected object by the same amount, around that object's center. When off (by default), the selection is transformed as a whole. The status of this checkbox is remembered across sessions. (It has no effect on Move and Matrix tabs).


* Finally we have a <b>Swatches dialog</b> (<b>Ctrl+Shift+W</b>). Clicking on a color swatch sets the fill color of a selection (or a selected gradient handle), Shift+clicking sets the stroke color. The dialog has two display modes (List and Grid), several swatch size options, and comes with 3 selectable palettes (SVG, WebSafe22, and WebHex). More palettes can be added by placing palette files in GIMP format into <code>share/palettes</code>.
* The <b>Clear</b> button resets the values on the current tab to defaults.


* In the color selector widget, the HSV tab (Hue, Saturation, Value) is replaced by <b>HSL</b> (Hue, Saturation, Lightness). The HSL color space is similar to HSV but is more convenient because it better reflects the intuitive understanding of what “saturation” and “lightness” are:
* The <b>Scale</b> tab now allows you to specify horizontal or vertical size increments in percentage or absolute units. Also, there's a <b>Scale proportionally</b> checkbox which ensures that scaling preserves the width/height ratio. (If you are scaling several objects proportionally with "Apply to each object separately", you can only use the % unit to specify the scaling; otherwise each object's scale increments will have the width/height ratio of the entire selection, not of that specific object.)


** In HSL, the Saturation component always goes from fully saturated color to the equivalent gray (in HSV, with V=max, it goes from saturated color to white, which is counterintuitive).  
* The <b>Skew</b> tab can now specify the skew as an <b>absolute displacement</b> (e.g. for horizontal skewing of a rectangle, that means the shift of the top rectangle side relative to the bottom), as <b>percentage displacement</b> (e.g. a 1% horizontal skew of a rectangle means shifting the top side by 1% of the rectangle height), or as an <b>angle</b> (e.g. horizontal skew by 15 degrees results in the sides of a rectangle being rotated to that angle, while the top and bottom remain horizontal).


** The Lightness in HSL always spans the entire range from black through the chosen hue to white (in HSV, it only goes half that way, from black to the chosen hue).
* The <b>Matrix</b> tab (previously called "Transform") can either edit the current <code>transform=</code> matrix of an object, or post-multiply the <code>transform=</code> with the matrix you specify, depending on the <b>Edit current matrix</b> checkbox. (As it is now redundant, the transformation matrix in the Object Properties dialog is removed.)


* CMYK color sliders now display as 0..100 instead of 0..255.
* The dialog now correctly <b>watches selection changes</b> in the active document window and updates its values accordingly.


== Miscellaneous new functionality ==
* The layout of the dialog is simplified, tooltips and mnemonics added for better usability.


* New layer commands: <b>Move selection to layer above</b> (Shift+PgUp) and <b>Move selection to layer below</b> (Shift+PgDn) will move the selection into the layer above or below the current layer (and make that layer current).
* Many bugs are fixed, especially in value conversions between units.


* The Group command (Ctrl+G) no longer denies action when you try to group objects from different layers or groups. Now it pulls the selected objects from wherever they are in the document tree, groups them, and puts the group in the parent layer/group or the topmost (in z-order) selected object.
== Persistent rotation centers ==


* After selecting an object, you can now open the <b>Icon Preview</b> dialog (View > Icon Preview) to see how an object will look when rendered to various common icon sizes.
* The position of the center (axis) of rotation and skewing used by Selector is now <b>remembered</b> for all objects and restored when you select those objects again (even after saving and reopening the document). When you move or scale an object, its rotation center is moved or scaled too, so its position relative to the object always remains the same unless you move it explicitly.


* You can now drag and drop off of swatches onto the canvas. This is implemented using the new Previewable class.
* When you have several objects selected, they use the rotation center of the <b>first selected object</b>. If the first object does not have center set (i.e. if it's in a default central position), then several objects will rotate around the geometric center of their common bounding box (as before).


* As a debugging aid, a memory statistics dialog (Help &gt; About Memory) is now available for the morbidly curious.
* <b>Shift+click</b> on the rotation center resets it back to the center of the object's box.


* The Transformation Dialog now sports an advanced mechanism for applying arbitrary transformations on selected objects by directly entering the six numbers of the transformation matrix.
* Consequently, dragging the rotation center is now <b>an undoable action</b>; you can press Ctrl+Z to undo the drag.


== Miscellaneous usability ==
* <b>Keyboard rotation</b> by [, ] keys with various modifiers, as well as the Rotate tab in the <b>Transform dialog</b>, work around the selected object's rotation center (for multi-object selection, the rotation center of the first selected object).


* The <b>Open File</b> dialog can now select (with Shift) and open many files at once.
* Rotation centers are <b>preserved</b> when duplicating, cloning (including clone tiler), grouping/ungrouping, and converting to path.


* There are many cosmetic improvements in the <b>Fill & Stroke</b> dialog. In particular, the fill rule control is now a pair of toggle buttons with intuitive icons in the top right corner (instead of a clunky drop-down list at the bottom).
== Pasting size ==


* All controls in Fill &amp; Stroke, Object Properties, and Export dialogs now have <b>hot keys</b>.
A number of commands are added to easily scale selected objects to match the size of the object(s) previously copied to the clipboard. They are all in the Paste Size submenu in Edit menu:


* In Document Preferences, there’s a checkbox to enable or disable showing the <b>page shadow</b>. To make this change permanent for all newly created documents, change your default template (<code>share/templates/default.svg</code>).
* <b>Paste Size</b> scales the whole selection to match the overall size of the clipboard object(s).


* Grid and guide snapping improvements:
* <b>Paste Width</b>/<b>Paste Height</b> scale the whole selection horizontally/vertically so that it matches the width/height of the clipboard object(s). These commands honor the scale ratio lock on the Selector controls bar (between W and H fields), so that when that lock is pressed, the other dimension of the selected object is scaled in the same proportion; otherwise the other dimension is unchanged.


** In the “snap points” mode, a <b>text object</b> now snaps its <b>baseline anchor</b> (the left end of the baseline) to grid or guides. That anchor point is visualized as a little square mark when a text object is selected.
* <b>Paste Size Separately</b>, <b>Paste Width Separately</b> and <b>Paste Height Separately</b> work similarly to the above described commands, except that they scale <i>each selected object</i> separately to make it match the size/width/height of the clipboard object(s).


** When several objects (or a group) are selected and the “snap points” mode is active, only the outermost points or nodes will snap, instead of all points in selection.
= Connectors and automatic layout =


* When <b>skewing</b> an object, <b>Ctrl</b> will snap the skew angle to standard 15-degree increments (settable in preferences). The statusbar displays the skew angle when skewing.
* There have been numerous bugfixes and several improvements to the behaviour of <b>connectors</b> and the <b>connector tool</b>:
** Connectors moved as part of a selection will now stay attached to other objects in the selection, rather than becoming detached from them.
** By default, the Connector tool will not attach connectors to text objects.  There is a new checkbox in the connector preferences to control this setting.
** The <b>margins around avoided shapes</b> (used for autorouting connectors) can now be adjusted via the "Spacing" control on the controls bar.


* Icon theming:
* <b>Automatic Diagram Layout</b>: A new button is available in the Align and Distribute dialog that performs automatic layout of diagrams involving a network of shapes and connectors.  Layout is accomplished using force-directed graph layout based on the Kamada-Kawai algorithm. This algorithm treats edges as if they are springs such that the distance between nodes will be proportional to the path length - number of connectors - between them. Disconnected components (where not every shape is connected) will be arranged around the circumference of a circle.
** It is now possible to considerably change the look of Inkscape by using alternative icon themes. For now, only one is available; it is the work of David Christian Berg and is provided alongside the standard icons.svg file in the directory share/inkscape/icons/ under the name David_icons.svg. A very simple HOWTO resides in the same directory under the name README.icons which contains basic instructions on how to use David’s theme and how to create a new one.


* The confusing “(root)” in the layer selector in the statusbar is not shown unless the document contains no layers. The “Go to root” command is removed from the right-click menu.
* There is a new <b>Remove Overlaps</b> button to move the selected objects enough that they don't overlap each other.  A minimum spacing between the boundaries of objects can be specified. Together with the automatic layout tool, described above, this should be a significant addition to Inkscape's usability for diagramming. Removing overlaps is different from the "Unclump" button in that the former is completely deterministic and guarantees removing overlaps on the first application, but is not concerned with visual perceptive distances between objects. Unclumping, on the other hand, attempts to equalize perceptive distances between objects and can be applied repeatedly for gradual effect.


* The Gradient Editor dialog can now delete the first or last stop if there are more than 2 stops in a gradient.
= Selective tracing with SIOX =


== Packaging, documentation, examples ==
* Inkscape 0.44 has an early version of the <b>Simple Interactive Object Extraction (SIOX) algorithm</b> (see [http://www.siox.org siox.org]) implemented in its bitmap tracing code. For a quick reference on how this is used, please see  [http://inkscape.org/win32/siox/howto.svg this file]. This clever algorithm from the realm of Image Recognition allows you to select areas of similar color, with the goal of extracting a foreground area from the background. To use:
** Enable the SIOX checkbox in addition to your usual tracing options.
** Select both the bitmap and an object that covers the foreground <i>and</i> part of background, leaving only background areas of the image uncovered.
** Hit <b>OK</b>. SIOX will now analyze and attempt to pull out the foreground-colored areas you want, and trace only those parts of the image.


* The new <b>About</b> screen (Help &gt; About) for 0.42 was selected by popular vote from 42 wonderful submissions by <a href="http://inkscapers.deviantart.com">Inkscape artists</a>. The winning entry was created by <a href="http://anarres.deviantart.com/">Anarres</a>.  
* The full SIOX selection mechanism (e.g. the ability to identify foreground and background areas separately) is not implemented yet, but is planned for a future release.


* Inkscape now fully supports <b>Mac OS X</b>. The version 0.42 is available as a .dmg package for Mac OS X.  The package contains a standard app bundle which can be installed by dragging it to the Applications folder like any native OS X app.  It includes all libraries and depends only on the presence of Apple's freely available X11 user package.
= Snapping =


* All Inkscape tutorials are now in <b>DocBook XML</b> format (with SVG illustrations in separate files). From this source format, the SVG and HTML versions of the tutorials are automatically generated; other formats can be added easily. This makes tutorials much easier to maintain and translate. In addition to the Help menu access, the HTML versions of all available tutorials can now be accessed at <a href="http://inkscape.org/doc">inkscape.org/doc</a>. The DocBook sources and stylesheets are in the <a href="http://cvs.sourceforge.net/viewcvs.py/inkscape/doc-docbook/?sortby=date"><code>doc-docbook</code></a> module in our CVS.
* In addition to snapping to guides and grids, you can now <b>snap to other objects' paths and/or nodes</b>. As with grid and guide snapping, you can separately enable snapping of bboxes to objects and/or snapping of nodes to objects. Be aware, however, that this is experimental code - there may be surprises. It may also be slow in large documents with thousands of objects.  


* Inkscape now informs users of the rights granted by the <b>license</b> (GNU GPL) with the new Help menu item, “Modifying or Redistributing Inkscape”. The license is loaded from an SVG file.
* In addition to the snap sensitivity sliders in Document Preferences (which set snap distances in px), there are <b>Always snap</b> checkboxes (separately for object, grid and guide snapping) which force snapping at any distance.


* Grid snapping now applies <b>only to the visible grid lines</b>. For example, if you have zoomed out so that only every 10th grid line is visible, snapping will only apply to these visible lines. In addition, default grid snap sensitivity is set to "Always snap". This will hopefully reduce the number of "snapping does not work" complaints from users who didn't zoom in close enough to see that snapping does in fact work, but only at sub-px distances to the 1px-spaced grid. At the same time, you can still snap to finely grained distances if you zoom in. 


* The Inkscape source tree now contains the spec file for building autopackages. Anyone can build a distribution neutral package by following the instructions at CompilingAutopackage. For more information about autopackages see http://www.autopackage.org .
* <b>Guidelines</b> are made easier to pick. Now you don't need to position mouse <i>exactly</i> over a guideline to activate it; instead there's a small position tolerance (1 screen pixel on each side of the guideline).


== Translations ==
= Sublayers =


* The <b>default template</b> (<code>share/templates/default.svg</code>) is now translatable, which allows each language to have its own name of the default layer, page size, and other settings. Templates for Czech, French, German and Polish are included.
Previously, it was only possible to make a group a temporary sublayer by entering that group. Now Inkscape supports creating and using true persistent sublayers within a layer.
* The French translations of all tutorials are updated and converted to DocBook XML. The Inkscape man page and the Keys and Mouse reference are translated to French.
* The Norwegian Nynorsk translation of the Basic tutorial is similarly updated and converted to DocBook XML.
* All tutorials are translated to Spanish and converted to DocBook XML.
* The Inkscape Windows installer is translated into German, Italian, Catalan, Czech, French and Polish.
* New Czech and Dutch interface translation added.
* “Basic Tutorial” translated to Catalan.


== SVG/CSS compliance ==
* The <b>Add layer</b> dialog allows you to place the new layer above, below, or inside the current layer.


* <b>CSS stylesheets</b>: There is now basic rendering support for documents using an internal stylesheet, but no editing support, and no support for multiple stylesheets or external stylesheets. This means that Inkscape can now correctly read much more SVG documents produced by other editors (in particular Corel Draw and Adobe Illustrator) than before.
* In Preferences (Selecting tab), options are added allowing the "Select All" command and Tab key selection to work either in the current layer only or in the current layer and its sublayers.
* The <code>preserveAspectRatio</code> attribute is now supported for the <code>image</code> element.
* The <code>word-spacing</code> property is now supported for text.
* The <code>startOffset</code> attribute and <code>text-anchor</code> now work for <code>textPath</code>.
* Gradients whose stop positions do not cover the entire 0..1 range, as well as one-stop and zero-stop gradients, are now rendered according to the spec.
* Several CSS properties (stroke-linejoin, stroke-linecap, fill-rule) were not inherited properly; fixed.
* Gradient spread was not inherited from a hreffed gradient.
* Element IDs with ‘.’ or ‘:’ characters did not work for xlink:href references.
* http://inkscape.org/cgi-bin/wiki.pl?SVG_Test_Suite_Compliance documents our progress in passing the <a href="http://www.w3.org/Graphics/SVG/Test/">W3C SVG 1.1 Test Suite</a>. At 0.42, we pass 69 tests completely and 25 partially. There’s also a new tool, <b>svg_rendertest</b> available from Inkscape web site, which can automatically test SVG rendering by Inkscape and other renderers.


== Important bugfixes ==
= Markers =


* Several resource leaks are patched that caused resource exhausting and eventually freezing on Windows.
* <b>Converting stroke to path</b> now correctly processes dashed strokes. For paths with markers, this command now creates a group containing the stroke converted to path and <b>all its markers as independent objects</b> (i.e. they are not markers anymore, but instead you can easily transform them or paint them any color, as a workaround for the "markers don't take the color of the stroke" bug; to be properly fixed, this bug requires implementing some SVG 1.2 features).
* Memory leaking in the renderer has been reduced significantly.
* The annoying “menus under dialogs” bug on Mac OSX is tentatively fixed.
* Keyboard shortcuts with Latin letters now correctly work in a localized keyboard layout (e.g. Cyrillic).
* Command line export was broken in 0.41, now fixed.
* Arbitrary transformations of a clone selected together with its original now behave as expected, i.e. the selection is transformed as a whole. Previously, this only worked for translations but not scales/skews/rotates. Similarly, aligning/distributing clones along with their original now works as expected.
* Rendering of round caps and joins on strokes is improved — round caps are now actually round. Zero-length paths or dashes with round or square caps are now rendered properly.
* Invalid files with cyclic gradient references no longer cause Inkscape to crash or freeze.
* A number of bugs were fixed in i18n text (wrong kern before the last char in Hebrew, BIDI boundaries in flowed text, composite characters in Thai). A new <code>share/examples/i18n.svg</code> document demonstrates many scripts.
* The Import command properly imports documents with layers.
* Postscript output does not break up text into separate characters anymore (unless the text has non-zero kerning or letterspacing, which are preserved by outputting each character separately).
* Placement of guidelines and knots was off by one pixel vertically; fixed.
* The Cleanup command in Path menu, inherited unchanged from Sodipodi, was found to do nothing useful in some cases and outright harm in others, so it is removed.
* In several dialogs, staying on top or remembering size/position across session was broken. These dialogs are either fixed or (such as the legacy “SPObject properties” dialogs) removed.
* The Vacuum Defs command sometimes did not remove all unused definitions at the first go, and ignored all but the first <code>&lt;defs&gt;</code> section in the document; both issues are fixed now.
* With grid snapping on, the first point created with the Pen tool is now snapped.


== Internal progress ==
* The <b>DimensionIn</b> and <b>DimensionOut</b> markers are changed so that the arrow tips exactly correspond to node positions. It is now very easy to make dimension lines that correspond to drawn objects. The dimension specifications can now easily be chained by splitting a straight line at a point and assigning DimensionIn/Out markers to the resulting smaller paths whose endpoints coincide.


* Converting Inkscape code to <a href="http://gtkmm.org">gtkmm</a> has seen some progress:
* All <b>arrow markers</b> in the standard set are moved on the path so that their tips are as close as possible to the corresponding node of the path. Complete coincidence is not possible, because it would cause the blunt end of the stroke itself to be visible under the sharp tip of the arrow, distorting its shape. However, now the arrow tips are much closer to their nodes than before, and probably sufficiently close for many practical situations.  
** 10 gtkmm widgets have been created.


** A DialogManager has been introduced to handle allocation of dialogs.
* A new <b>RazorWire</b> path marker was added. By applying it as a mid-marker you can get a good approximation of a razor wire.
** A new shared dialog class Inkscape::UI::Dialog::Dialog has been introduced. Dialog management code such as transient behavior that had been scattered throughout the dialogs is now centralized here.
** A number of the dialogs have been converted from gtk to gtkmm:  Transformation, Trace, Script, Messages, Memory, and Align and Distribute.
* Adding new objects to the tree is significantly optimized; as a result, operations like creating large clone tilings are now faster by at least an order of magnitude.
* Many, many cleanups and refactorings of the XML layer.  All listener facilities are now implemented in terms of NodeObserver rather than the old system.
* Inkscape can log detailed traces of its internal document activity to a given file if the environment variable INKSCAPE_DEBUG_LOG is set
* To aid translators, we now use a mechanism allowing separate translations of identical strings in different contexts.
* The SVG versions of particular elements are now propagated to their parents, so e.g. a document that uses SVG 1.2 features can be recognized as an SVG 1.2 document simply by checking the SVG version of the root node.


== Known issues ==


* Exporting gradients to PS or EPS does not work for text (unless text is converted to path) or for stroke paint, only for fill paint of shapes or paths. Also, the <code>spread</code> property defaults to “pad”, and transparency is lost on PS or EPS export (e.g. you can’t use a gradient from an opaque blue to transparent blue; as a workaround, replace it by a gradient from opaque blue to opaque background color).
= Extension effects =
* While text support is overall much better in 0.42 than 0.41, text has a number of known areas with incorrect behaviour.  For example, manual kerning or character rotation do not work in flowed text (this is a limitation of the current SVG 1.2 draft); text-in-shape isn’t always fully inside the shape; CJK-style vertical text has a number of problems; “non-breaking” space and similar characters don’t behave correctly; and similar.


== Previous releases ==
* The <b>Effects menu is now officially on</b> and no longer an optional "experimental feature" as in past versions.  The preference setting to enable the menu has been removed. Inkscape 0.44 comes with about 30 effects that perform a variety of useful tasks, such as path blending, randomization, function plotting etc. 


* ReleaseNotes041 (http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes041)
* Python effects (which includes almost all currently available effects) <b>work on Windows out of the box</b>, using a copy of Python shipping with Inkscape. The only minor inconvenience is that when an effect is launched, you get an empty console window that stays on while the effect is doing its work.  (Don't close that window, it will disappear by itself when the effect is finished.)
* ReleaseNotes040 (http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes040)
 
* ReleaseNotes039 (http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes039)
* A new Python effect, <b>Render > LaTeX formula</b>, allows you to type in any LaTeX formula and get a vector object with the TeX rendition of this formula inserted into your document. You need to have <b>latex</b>, <b>dvips</b>, and <b>pstoedit</b> installed and in PATH for this to work.
* ReleaseNotes038 (http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes038)
 
* ReleaseNotes037 (http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes037)
* A new Python effect, <b>Flatten Path</b>, flattens paths in the current selection, approximating each path with a polyline whose segments meet the specified criteria for flatness.
* ReleaseNotes036 (http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes036)
 
* ReleaseNotes035 (http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes035)
* A new Python effect, <b>Measure Path</b>, attaches a text label to each path in the selection giving the length of that path (in px units).
 
* The <b>Radius Randomize</b> effect has a new parameter which enables <b>normal distribution</b> of random displacements instead of uniform as before, which gives a more natural feel to the randomized path.
 
* The <b>Render > L-system</b> (formerly "Fractal (Lindenmayer)") effect is improved in this version. Now you can specify different angle values for turning left and right, which makes it possible to smoothly bend some L-systems sideways. Also, you can separately randomize the step length and the angles by a given percent for more natural look (this works especially well with plant-like branching shapes). This effect can be used to create Penrose tiling, Sierpinsky triangle, Dragon curve and other famous mathematical artefacts, as well as various meanders, friezes, patterns, and trees. Some examples can be seen on this screenshot: [http://inkscape.org/screenshots/gallery/inkscape-0.44-lindenmayer.png inkscape.org/screenshots/gallery/inkscape-0.44-lindenmayer.png] as well as in the new example file <code>share/examples/l-systems.svg</code>.
 
* The <b>Interpolate Path</b>, <b>Random Tree</b>, and <b>L-system</b> effects are fixed to place their result on the current layer instead of document root and in the center of the (last-saved) document view instead of 0,0 as before.
 
* INX files now have the ability to hold more information.  This includes tooltips and descriptions of the extensions.  These are all also translatable.
 
* Thanks to keyboard configurability, it is now possible to assign keyboard shortcuts to those effects you use most often, so you can activate them without going into the menu.
 
= Formats =
 
* Inkscape's <b>PDF export</b> is now native (i.e. does not require any external applications) and <b>supports transparency</b>, including gradients with transparency. This replaced the old export extension that required Ghostscript and worked via Postscript, losing any transparency. The new PDF export is still immature; in particular it does not handle text, so you should check "Convert text to path" on the export options dialog. Other things not yet supported include: gradients on stroke; eccentric elliptic gradients; patterns, masks, and clipping paths; embedded images.
 
* You can now <b>Save as Compressed Inkscape SVG with media</b>.This save option collects the svg file and all linked images into a zip archive for distribution. Although you cannot open the resulting archive directly with inkscape, the media is linked such that after unzipping you can open the SVG file immediately.
 
* An output format for <b>desktop cutting plotters</b>, such as the Wishblade and Craftrobo, was added. This format is a very minimalist DXF file with appropriate scaling and translation applied. This output format should not be expected to operate as a generalized DXF output.
 
* Inkscape can open/import default files generated by the <b>Xfig</b> vector graphics editor. This requires that the fig2dev command (transfig) is in your PATH.
 
* Starting with this version, there is a limited ability to export Inkscape drawing shapes as <b>Open Document Format</b> drawings (.odg files).  Currently the export is limited to text, shapes, and solid fill and strokes.  This output will be improved in the coming months.  In the meantime, however, ODG output is already useful for getting your SVG drawings into the Open Document world, in particular into an office suite such as OpenOffice.org.
 
* The new <b>XCF output extension</b> exports all top-level elements (i.e. layers and objects directly under root) as PNGs and assembles them into an XCF for procesing in GIMP. Requires Python, PyXML and GIMP. GIMP 2.2.x or above must be in the path and be named <code>gimp</code>. A version of Inkscape 0.44 or above must be accessible from the path. Does not function in Windows yet.
 
= Miscellaneous shortcuts =
 
* Now you can use <b>Shift+middle button drag</b>, in any tool, to zoom into an area. This works the same as simple drag in Zoom tool, but is faster because it does not require switching away from your current tool. Together with <b>middle button drag</b> (panning), <b>middle button click</b> (zoom in) and <b>Shift+middle button click</b> (zoom out), this completes the set of canvas navigation shortcuts available in any tool or context.
 
* In Gradient tool, <b>Shift+R reverses the gradient definition</b> (i.e. mirrors the stop positions) without moving the gradient handles. For example, an elliptic gradient with blue center and red periphery becomes red in the center and blue in the periphery. This works on the gradient(s) of the currently selected gradient handle or, if no handle is selected, on all selected objects' gradients. (Compare with the Node tool where Shift+R reverses the direction of the selected path.) This is especially convenient for elliptic gradients which, unlike linear, you cannot simply rotate by 180 degrees for the same result.
 
* In Selector, <b>Ctrl+Enter</b> enters the selected group (making it a temporary layer). <b>Ctrl+Backspace</b> leaves the current layer and goes one layer up in the hierarchy (but not to root).
 
= Miscellaneous improvements =
 
* <b>Document templates</b> (listed in <i>File &gt; New</i>) are now first searched in the <code>templates</code> subdirectory of the user's profile directory (on Linux it's <code>~/.inkscape/templates</code>), then in the system-wide Inkscape templates directory. This allows you to add your own templates on top of the list of standard templates, as well as override the default template with your own one (the <code>default.svg</code> in the profile directory has priority over the system-wide one).
 
* When toggling one of the "transform with object" buttons (for stroke width, rounded rectangle corners, gradients, or patterns), a <b>message</b> is displayed in the statusbar explaining what has changed in the program's behavior. Hopefully this will reduce the number of complaints from users who had accidentally toggled one of these and were surprised by the result.
 
* Whole thousands above 2000 in the rulers are now displayed as <b>2k, 3k, 4k</b> etc.
 
* In the Inkscape Preferences dialog, the new object style for each tool is now shown as a <b>style swatch</b> (displaying fill/stroke colors and opacity, stroke width, and master opacity), similar in design to the selected style indicator in the statusbar.
 
* In the Grid Arrange dialog, row/column spacing can now be negative.
 
* The installation default is now to scale the <b>rounded rectangle corners</b> with the rectangles themselves (the previous default mode, still available as an option, was to keep rounding radii unchanged when scaling rectangles).
 
* Added a new <code>--export-area-canvas</code> command line parameter that causes the exported PNG to contain the full canvas. This option as well as <code>--export-area-drawing</code> and <code>--export-area</code> can now be used along with <code>--export-id</code> and <code>--export-id-only</code> for greater flexibility.
 
* The <code>--query-*</code> command line parameters now return the true SVG bounding box of the object instead of the Inkscape coordinate system bbox (with inverted Y axis). The new behavior makes more sense for scripting use of Inkscape.
 
* The <b>dpi</b> value in the Export dialog has had its range extended; now possible values are from 0.01 to 100000.
 
* Individual <b>&lt;tspan&gt;s</b> within text objects (including line tspans) can now be selected via the XML editor to view their bounding boxes (though per SVG, you cannot transform them). Also, you can use the <code>--query-*</code> command line parameters to find out the bounding boxes of tspans from a script. (Individual strings within or between tspans are still not selectable, and they cannot have an ID for querying anyway.)
 
* The placeholder image which is shown when a bitmap file was no longer accessible reads now "<b>Linked image not found</b>" instead of the confusing "Broken image".
 
* <b>Cloning multiple selected objects</b> now works as expected (i.e. each selected object is cloned separately, similar to the Duplicate command). Previously you could only clone a single selected object.
 
* The separate "license" and "contributors" dialogs have been merged into tabs  on the About dialog.  The about dialog now correctly sizes itself to fit the size of the splash SVG (while remaining resizable), and the rendering area is now cropped to the correct aspect ratio when the dialog is resized.  The dialog also now displays the build information in the upper right corner.
 
* In the Transform dialog / Rotate tab, the icon was flipped horizontally to be in line with the direction of positive rotation; the change was applied to the default (now crispy) and legacy icon sets.
 
* The <b>scale ratio lock button</b> on the Selector controls bar shows a closed lock when pressed and open lock otherwise (same as the layer lock in the statusbar).
 
* The <b>Browse</b> button on Export dialog now opens the new file chooser, same as those used by Open and Save.
 
= Miscellaneous bugfixes =
 
* Reading a document with an <b>incorrect namespace URI</b> not only did not cause Inkscape to complain, but could also "pollute" Inkscape's internal namespace table, resulting in an "infection" of subsequently saved documents by the incorrect namespace. This is now fixed, but as a result, documents with incorrect namespace URIs will no longer load. You will have to edit them in a text editor to fix the namespaces.
 
* With newer versions of GTK, <b>dragging with graphics tablet pen</b> did not work in some tools and contexts (in particular, in Node and Rectangle tools). This is fixed.
 
* <b>Scaling of objects with stroke</b> in Selector used to cause undesired shifts of the scaled object, as well as scaling it in the dimension which was intended to remain untouched (e.g. slight change in width when you scale only height). All these problems are now fixed, both for interactive scaling by mouse and for numeric scaling via the Controls bar, and for both values of the "Scale stroke with objects" option. Among other things, this means that stroked objects no longer lose snapping on scale, and that the "Default scale origin" option in the Selector tool preferences finally works as designed. Caveat: There may still be problems if you scale a selection that contains objects with different stroke widths.
 
* Scaling of stroke now works for objects that didn't specify stroke-width; before, they always ended up with the default 1px stroke.
 
* The bounding box for text and flowed text objects did not include stroke width.  This has been fixed.
 
* Stroke miterlimit on text objects was misinterpreted in absolute units instead of multiplies of stroke width (resulting in miter joins rendered as bevel).
 
* The unfinished path in Pen tool is now cancelled, not finalized, when you switch away from the Pen tool. Apart from being more intuitively correct, this also fixes a crash when you quit Inkscape with the unfinished path in Pen tool.
 
* Fonts on Win32 now use the native font mapper, meaning that Inkscape's font list is the same as other Windows programs, and the (potentially) very long delay experienced when using fonts for the first time in each session is gone.
 
* Setting dash pattern was broken for transformed objects, and copy/paste of style with dash pattern did not apply correctly to objects with transforms.
 
* An error caused a complete extra screen redraw after each zoom operation. That is, after you press "+" in a complex drawing, Inkscape redraws, but for some time after that it remains still unresponsive because it does that second redraw (invisibly for you, i.e. nothing changes on the screen). This is fixed.
 
* Gradient rendering was off by one pixel, which often resulted in visibly wrong gradient rendering for small objects or in zoom-out.
 
* The SVG path parser could not handle fractional numbers with the initial dot.
 
* Several pattern rendering bugs are fixed, discovered by working with SVG files exported from Adobe Illustrator.
 
* Inkscape on Mac OS X will now notice fonts in your ~/Library/Fonts directory, in addition to the other standard places.
 
* Inkscape couldn't be compiled with libxml versions <= 2.6.9, and we now bumped the requirements from 2.6.0 up to <b>libxml >= 2.6.11</b>, which is the earliest you can get officially, anyway.
 
* Inkscape no longer crashes when presented with a defective inx file for extensions.
 
* More document memory is now freed when documents are closed.
 
* EPS output now correctly includes an %%EOF footer.
 
* There was a regression in 0.43 that caused several minor, though annoying bugs; knots and handles remained highlighted after the mouse was released, and the rubberband selection rectangle stayed visible if the selection was ended over a node while in the node tool.  This regression has been fixed.       
 
* The connector routing code would previously sometimes confuse objects between multiple documents resulting in strange routing behaviour.  This has been fixed.
 
* There existed a bug in 0.43's Inkboard code that allowed a malicious outsider to very easily disrupt an Inkboard session.  This has been fixed.
 
* There existed a bug in 0.43's Inkboard code that would cause deadlocks in the case that two users attempted to invite each other at the same time (see bug #[https://sourceforge.net/tracker/?func=detail&atid=604306&aid=1352522&group_id=93438 1352522] for further details).  This should be fixed, although the fix has not been widely tested.
 
* There existed a bug in 0.43's Inkboard code that would cause session invitations to not appear on the invitee's screen.  This was the result of a mistake in handling GDK modifier flags, and has been fixed.
 
= Translations =
 
* INX files (containing the UI of the external effects) now allow the user visible strings to be translated.  This means that effect dialogs, file type selections, and extension names can all be translated by translators.
 
* Inkscape is now significantly translated to 18 languages: Basque, Catalan, Czech, French, German, Hungarian, Italian, Lithuanian, Norwegian (Bokmål dialect), Polish, Russian, Serbian (Cyrillic and Latin), Simplified Chinese, Slovenian, Spanish, Traditional Chinese, and Vietnamese. Additionally, 21 more languages have some level of translation. Average translation ratio has increased from 49% to 61% in this release.
 
* Some new translations of tutorials have been brought by contributors: Czech, Portuguese (Brazilian) and Russian.
 
= Internal =
 
* The Document Properties Dialog code was completely gtkmmified, which lead to dramatic reduction of code size due to usage of widget objects. The used widget objects should be reusable by other dialogs, too, and the code is much more readable.
 
* Work on optimizing includes in all cpp files started, using the purgeincludes tool specifically written for that purpose, and ended with 40% of include lines removed!
 
= Known problems =
=== SVG files saved using previous version don't display font correctly ===
 
* You may find that fonts don't correctly display when opening a file from a previous version (eg 0.43). This can be fixed by simply reapplying the font. However, bringing up the font dialog doesn't acquire the font size from the document and so the actual size may be lost. If you select the text, then check using the XML viewer what the original font and size were you can then input this via the font dialog and restore your document to it's original glory! [ pbhj ]
 
=== Problems with some Debian libgc-6.7 packages ===
 
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.
 
=== Problems with "Composite" option of X.org ===
 
* Some prereleases of inkscape-0.44 could crash if the "Composite" option were enabled in X.org's configuration.  This is not a problem in the final release.
 
=== Namespaces may need fixing ===
 
* Previous versions of inkscape sometimes silently saved documents with <b>wrong namespace URIs</b>.  This has been fixed, but such corrupted documents will no longer load successfully.  Such documents may require their namespace declarations to be fixed by hand.  Correct namespace URLs are as follows, with typical namespace prefixes given in parenthesis:
**  [http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd '''Sodipodi''']
**  [http://www.inkscape.org/namespaces/inkscape '''Inkscape''']
**  [http://www.w3.org/1999/xlink '''XLink''']
**  [http://www.w3.org/2000/svg '''SVG''']
**  [http://www.w3.org/1999/02/22-rdf-syntax-ns# '''RDF''']
**  [http://web.resource.org/cc/ '''Creative Commons''']
**  [http://purl.org/dc/elements/1.1/ '''Dublin Core Metadata''']
 
=== Beware of defective themes on Linux ===
 
* Inkscape and other Gtk programs can crash on any Linux, when the <b>gtk2-engines-smooth / libsmooth</b> package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem.
 
* A similar crash happens if the <b>KDE Baghira</b> theme or the package <b>gtk_qt_engine</b> are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.
 
=== Make sure to remove menus.xml if you have it ===
 
* If you were using certain CVS/SVN builds from autumn of 2005, you may have the file <code>menus.xml</code> hanging around in your profile directory (e.g. <code>~/.inkscape</code> on Linux). In that case you will see many errors about verbs that cannot be found, and some commands in menus will be disabled. Make sure to delete <code>menus.xml</code> to fix this.
 
== Other releases ==
 
{{:Release notes}}

Latest revision as of 21:12, 2 May 2021

Other languages: العربية Català Česky Deutsch English Español Français Italiano 日本語 한국어 Polski Português Português do Brasil Русский Slovenčina 中文

Inkscape 0.44.1 changes with respect to 0.44

  • fix a crash on Windows ("python.exe can't find msvcrt71.dll") by providing that dll in the package;
  • fix hang in page size widget
  • on Mac OS X, removed problems with home folder path names containing spaces;
  • inkscape now finds libpng include headers on some systems where it previously failed to do so
  • several changes to allow compiling on glib-2.4 systems (e.g. RHEL4);
  • allow compiling on systems with incomplete boost library headers; recognize if boost is too old
  • inkscape now compiles with gcc-4.2.x.
  • fixed a bug where stderr output from scripts was not shown
  • fixed a bug affecting the recent files menu
  • resolution information is now saved in exported PNG files
  • fix some ODG export bugs
  • fix dia import
  • fix several include issues affecting building on Solaris (there are still some more problems, at least under Solaris 8, and similar ones on OpenBSD)
  • added missing German version of the advanced tutorial and made corrections to the calligraphy one; added missing Czech, German, and Brazil-Portuguese tutorials to tarball; added missing German keytable to tarball
  • applied changes to the German and Spanish translations of Inkscape strings
  • interactivity improvements at high zooms
  • fix for specifying CSS colors with percentages
  • re-enabled old PDF exporter alongside the new one
  • minor fixes to new PDF exporter (a major overhaul is still in the works)
  • fixup for invalid "s odipodi" namespace which has become widespread in Inkscape documents
  • Mac OS X packaging updates
  • miscellaneous build fixes

Inkscape 0.44: overview

Inkscape 0.44 is bigger and better than ever. Some highlights:

  • Layers dialog
  • Outline mode, many performance improvements
  • Native PDF export with transparency
  • Clipping and masking support
  • Configurable keyboard shortcuts, including optional Xara X compatibility
  • Docked color palette in the editing window
  • Interactive indicator of the style of selection in the statusbar
  • Innovative "node sculpting" and other improvements in Node tool
  • Extensions are enabled by default and work on all major platforms
  • Better SVG support: <switch> element, ICC color profiles for images
  • Persistent rotation centers, Paste Size command
  • New icons, redesigned preferences dialogs, rearranged menus, many cosmetic improvements
  • Hundreds of bugfixes and smaller features
  • Not directly related to Inkscape, but important nevertheless: since our last release, Firefox 1.5 was released with SVG support enabled by default. This means that you can now view any Inkscape document right in your Firefox window without any format conversions or installing any plugins!

Performance

Outline mode

An Outline ("wireframe") display mode is implemented. Use the View > Display Mode > Outline to activate it. In this mode:

  • all paths and shapes are rendered as inverse (black on light background and vice versa) outlines of constant width (1 screen pixel regardless of zoom), without fill;
  • text is painted by inverse fill, without stroke;
  • bitmaps are shown as is;
  • any opacity and gradients are ignored.

The outline mode is usually not drastically faster than regular mode (usually 10% to 50% faster), and in some special cases it may even be slower. However, the value of the outline mode is not only in its speed; it is a good way to get an idea of the structure and objects of your document, and it is convenient for precision node editing and for finding "stray objects".

Speed

In addition to the Outline mode which makes it much easier to work with complex drawings, this version of Inkscape also provides significant speed improvements in many areas.

  • Thanks to optimizations in the renderer, Inkscape's screen redraw is faster by at least 10%, and in some cases (such as complex stroked/dashed paths at high zooms) up to three times faster.
  • Optimizations in the Node tool resulted in noticeable speed gains for node editing. Thus, switching to and from the Node tool (with a path selected), as well as selecting nodes in that tool, are now at least ten times faster than before. Other operations, including curve and node dragging and move/scale/rotate operations on multiple selected nodes, are much faster as well. This is especially important when working with complex paths; with these optimizations, paths containing several thousand nodes, though still slow, are much more usable.
  • An optimization in the attribute setting method made operations such as moving multiple objects with arrow keys at least 30% faster compared to 0.43. This is especially noticeable when you are moving clones selected together with their original (e.g. a clone tiling), in which case Inkscape now works three to four times faster.
  • Interface icons are now rendered in the background (from SVG source in share/icons/icons.svg) when Inkscape is idle, rather than waiting for all the icons in a menu to render the first time you pull it up. This eliminates the annoying delay when opening menus for the first time.
  • Previously, zooming in to view a small portion of a path (especially big and complex path), there was a very noticeable slowdown and memory use increased dramatically. We optimized the renderer to only process the visible part of a path, and as a result the rendering speed is now almost the same at any zoom up to the maximum, providing up to 10-40 times speedup compared to the previous version (the closer is the zoom, the greater is the gain).
  • The Path > Break Apart command is now dozens of times (up to 100x) faster for complex paths with thousands of subpaths.

SVG conformance

Color profile support

Inkscape now includes base ICC profile functionality. If compiled with LittleCMS support (if you run configure with --enable-lcms switch), Inkscape passes the ICC color profile test by W3C. The <color-profile> element has been implemented along with the "color-profile" attribute for <image> elements.

<switch> support

Rendering support for SVG 1.1's Conditional Processing Module has been implemented, including switch element, requiredFeatures, requiredExtensions, systemLanguage attributes. Inkscape passes the Conditional processing tests ([1] and [2]) by W3C.

SVG output

  • In Inkscape's SVG documents, colors are now expressed by name (‘white’) or three-digit form (‘#f3c’) when possible.
  • The numeric values in transform attributes are written without insignificant trailing zeros, and anything less than that 1e-8 by absolute value (usually caused by rounding errors) is written as 0 to reduce clutter.

Interface

Layers dialog

A Layers dialog (Ctrl+Shift+L) is implemented in this version. It works in parallel with the quick layer selector in the statusbar, so you can use whichever is more convenient for you.

  • In the dialog, you can click on a layer to make it current, as well as toggle layers visible/hidden and locked/unlocked. You don't need to make a layer current to toggle its visibility or lock status.
  • A hierarchical tree of layers is represented by a tree-like display in the dialog. You can expand or collapse branches of the tree to make the layer structure of a document easier to navigate.
  • At the bottom of the dialog, there are buttons for adding a new layer, moving the current layer up or down (either one step or all the way to top or bottom), and deleting the current layer.
  • Below the buttons, there's a slider and a spinbutton for adjusting the opacity of the current layer. A layer's opacity affects all objects in that layer in the same way as opacity of a group.

Selected style indicator

A new control in the left end of the statusbar lets you quickly view and change the fill and stroke of the selected objects. When you have a text selection in Text tool or a gradient handle selected in the Gradient tool, this indicator displays and changes the style of the text fragment or gradient stop, instead of the entire object (it's the same behavior as the Fill&Stroke dialog.)

  • The two indicators, labelled F: (top) and S: (bottom), display fill and stroke of the selected object(s) correspondingly. (For gradient handles, they always display the same style.)
  • Each fill/stroke indicator can display either a color+opacity swatch (the opacity shown here is the fill opacity or stroke opacity, not the master opacity) or a text label specifying N/A (nothing selected), None (no fill/stroke), Unset (unset fill/stroke), L Gradient, R Gradient, Pattern (corresponding fill/stroke types), or Different (selected objects have different fill/stroke types).
  • Additionally, each indicator may be accompanied by one of two flags, m ("multiple", meaning there are two or more objects all with the same fill/stroke) or a ("averaged", meaning there are two or more objects with different flat colors in fill/stroke, and the indicator shows the average of these colors).
  • Left-click on an indicator opens or activates the Fill&Stroke dialog with the corresponding tab (Fill or Stroke) active.
  • Right-click on an indicator opens a popup menu with the following items:
    • Edit fill/stroke...: Opens or activates the Fill&Stroke dialog with the corresponding tab selected. (Same as left-click.)
    • Last set color: Applies to the selected objects the fill/stroke color that was last applied to anything.
    • Last selected color: Applies to the selected objects the fill/stroke color that was last displayed in this indicator. (Allows you to easily copy fill/stroke color between objects: select source, select destination, apply "last selected color".)
    • Invert: Sets the fill or stroke to the inverse of the current color (does not affect opacity).
    • White, Black: Sets the fill or stroke to the corresponding color (fully opaque).
    • Copy color, Paste color: Copies or pastes the fill or stroke color (when it's color) to/from the system clipboard, as text in the #rrggbb hex format.
    • Swap fill and stroke: Exchanges fill and stroke (both their types and colors, if any).
    • Make fill/stroke opaque: Removes fill or stroke transparency (not master transparency!).
    • Unset fill/stroke: Unsets fill or stroke from selected objects.
    • Remove fill/stroke: Removes fill or stroke from the selected objects.
  • Middle-click on a fill/stroke indicator removes fill/stroke from selected objects; if it is already removed (i.e. if the indicator displays "None"), it does the same as the "Last set color" command from the popup menu.
  • Drag and Drop of colors onto a fill/stroke indicator sets the fill and stroke of the selected object(s) correspondingly.
  • The Stroke indicator also displays the stroke width of selection (averaged if there are multiple objects selected with different stroke widths), located to the right of the stroke color/transparency swatch. Left-clicking on it opens the Fill&Stroke dialog with the Stroke Style tab selected. Right-clicking on it opens a popup menu which allows you to choose the units for displaying the stroke width, as well as choose one of the presets to assign to selection.
  • To the right of the fill/stroke indicators, the Opacity numeric field (labelled "O:") shows and allows you to change the master opacity of the selected object (or the averaged opacity of several selected objects). Right-clicking the numeric field opens a popup menu with preset opacity levels. Middle-clicking on the "O:" label cycles the opacity through the values of 0 (transparent), 0.5, and 1 (opaque).

The zoom field and the cursor coordinates indicator have been rearranged for compactness and moved to the right end of the statusbar. There's also a window resize handle added at the very end of the statusbar.

Tool style indicators

For each object-creating tool (shapes, Pen/Pencil, Calligraphic, Text), the Controls bar (above the canvas) now includes a style indicator on the right. This indicator shows you which style the newly created object will have.

  • The indicator correctly displays whichever style the tool is set to use - the global "last set" style or that tool's fixed style. For example, clicking on a palette swatch (even with nothing selected) changes the "last set" color and, if your tool is set to use the last set color, its indicator is updated, giving you an idea of your "brush" before you start to draw.

Controls bar for the Text tool

  • This version adds the beginnings of a Controls Bar for the Text tool (previously empty). Now you can select the font family, size, apply bold and italic styles, change alignment and text orientation without opening the Text and Font dialog.
  • All controls are instant-apply and work on the entire text object (if nothing selected) or text selection. They can also apply to multiple text objects (though you would need to switch to Selector to select multiple text objects, then switch back to Text tool for its controls).
  • The font-family drop-down contains names and previews of all fonts; unlike other programs, we didn't apply each font to its name, but added a separate preview string displayed with gray color after each font's name. This design ensures readability of font family names and provides maximum useful information in a limited space.
  • We will be adding more controls (including spacing and kerning) to this bar for the next versions.

Docked color palette

  • Previously, color swatches could only be used from a floating palette (Ctrl+Shift+W). Now the color swatches palette is embedded in the main UI, at the bottom of the window between the canvas and the statusbar. It is enabled by default; use View > Show/Hide > Palette to enable or disable it. The docked palette has the same functionality as the floating one; use a button in the top right corner to access the swatches menu.
  • The Wrap option (off by default) in the swatches menu converts the palette from a single row into a frame 2 or 3 rows high, for better access to colors in large palettes.
  • Drag and Drop of colors has been enabled.
    • Dragging colors from a palette shows a live swatch of the color being dragged under cursor.
    • Drag and Drop of colors onto the selected style indicator in the statusbar sets the fill or stroke of the selected object(s).
    • Colors can be dropped directly on to objects on canvas to set their fill, or shift+dropped to set their stroke. This affects only the object you drop the color on, regardless of whether that object is selected or not.
    • Colors can be dragged to and from other applications.
  • The new Inkscape default color palette was added. It contains a range of grays, standard HTML named colors, and a full range of colors sorted by their HSL values (475 colors overall). It is generated by a Python script which is available from Inkscape SVN in share/palettes.
  • Several specialized color palettes, useful in color-coordinated projects, were created or borrowed from GIMP: Grays, Reds, Greens, Blues, Gold, Royal, Khaki, Hilite, and Topographic.
  • All standard sizes of the swatches (Tiny, Small, Medium, Large, Huge) are made smaller overall.

Inkscape Preferences dialog

Not only was the Inkscape Preferences dialog completely rewritten and redesigned, with numerous bugs fixed in the rewrite.

  • As a new feature, the Simplify threshold can now be set with more precision.

Document Properties / Metadata dialogs

  • The Document Preferences dialog is now named Document Properties, and it was split in two: metadata were extracted into the Document Metadata dialog; metadata widgets are now also spread over two pages.
  • A button was added to fit the page to the current selection or, if there's no selection, to the entire drawing. The button resizes the page and, if necessary, moves the drawing into place. It is now very easy to size a page to an illustration after it is ready.
  • New controls: the new object snapping features required their own property widgets, and you can set the snapping sensitivity with a slider, or let it snap regardless of distance (grid only).
  • Rearrangements within Document Properties: everything snapping-related was collected on one page; Grid and Guide widgets are on their own, the same page. For better HIG compliance, all widgets were categorized; especially the widgets on the Page page were completely rearranged in the General/Format/Border categories.
  • Bug fixes: grayed out license URI had too low contrast, so it's no longer grayed out; the proprietary license didn't clean the license URI; spinbuttons had no tooltips, and minor grid quirks were removed; data was not updated when a new file replaced another in the same window.
  • Updated Creative Commons Licenses: Updated CC licenses to the latest 2.5 versions by default in the license tab of the metadata dialog.

Configurable keyboard

Inkscape's keyboard shortcuts are now configurable!

There is no graphical users interface at this time, and not all Inkscape actions can have their shortcuts customized. However, if you do not mind editing a configuration file, the majority of actions, including everything you see in the menus, can already have their keys changed. We're working on making more actions configurable.

On startup, Inkscape reads its keyboard shortcuts from share/keys/default.xml. That file is a copy of inkscape.xml in the same directory, which also contains keyboard emulation profiles for other vector editors:

  • xara.xml: Xara X/Xara Xtreme/Xara LX keys

You can copy any of these over default.xml to use that profile. In all profiles, those keys which are not used by the corresponding program still have their Inkscape bindings. If you can contribute a profile for some vector editor that we don't yet have, we would appreciate that. The files have a simple XML-based format described in inkscape.xml.

You can also customize some of your keybindings without overwriting the main default.xml. If your profile directory (~/.inkscape on Linux) contains a keys subdirectory with a default.xml file, the keybindings from that file will overlay (i.e. add to, and override in case of a conflict) the default bindings. The format of your own default.xml is the same as that of the main default.xml.

Menus

  • Zoom commands in the View menu are moved to a submenu; the Zoom In and Zoom Out commands are added to that submenu.
  • Clone commands are moved into a submenu in Edit menu and given more descriptive names and tips.
  • Pattern commands (Objects to Pattern and Pattern to Objects) are moved into a submenu in Object menu, under the new Clip and Mask submenus.
  • The contents of the Effects menu are categorized into submenus, and several effects are renamed to use more intuitive names.

Statusbar

  • In Selector, for multiple selected objects, the statusbar now reports their types. For example, if 5 groups are selected, it displays
5 objects of type Group in layer LayerName.
instead of just "5 objects selected" as before. If there are up to 3 types in the selection, they will be listed, for example:
5 objects of types Group, Path, Rectangle in layer LayerName.
The order of the list will correspond to the order in which the objects were added to selection. If there are 4 or more types in selection, only the number of types is reported, for example:
5 objects of 4 types in layer LayerName.
  • In Selector, objects selected in groups are now identified as such, and the group ID is given, for example:
Rectangle in group g212 (layer content)
If selected objects have different parents within one layer (for example, if one is selected in a group and another outside it), the number of parents is reported:
2 objects of types Rectangle, Path in 2 parents (layer content)
If objects are in different layers, only the number of layers is reported since this also implies different parents:
2 objects of types Rectangle, Path in 2 layers
  • In Node tool, if your node selection includes nodes from different subpaths, statusbar reports the number of subpaths with selection and the total number of subpaths, for example:
2 of 195 nodes selected in 2 of 36 subpaths.
  • The contents of the statusbar message are now duplicated as a tooltip that is shown when you hover the mouse over the statusbar.
  • The statusbar text is now no longer just cut off if there is insufficient room, but an ellipsis (...) is inserted at the end to show there's more (only with Gtk 2.6 and newer).

Theme

  • Inkscape has a new default icon set titled "Crispy" provided by Plácido André Sousa. The new icons are intended to add a more professional and cohesive look to our application, as well as to make the functions the icons represent more self-evident.

Tools

Node tool

Node sculpting

An entirely new way of manipulating paths in Node tool is added in this version: Node sculpting. Normally, when you have several nodes selected and you drag one of them, all selected nodes move by the same amount. Now, if you Alt-drag one of the selected nodes, only that node is fully displaced; other selected nodes are moved less than the full amount, so that those farthest from the drag point remain stationary. This is similar to "proportional editing" or "soft selection" in 3D editors such as Blender.

So, for example, if you select several nodes on a straight line and Alt+drag the middle selected node, the path will bend into a smooth bell-like curve. Nodes' handles are also adjusted correspondingly to keep the overall shape smooth and natural. (If you don't have enough nodes on a path fragment that you want to reshape in this way, just select the end nodes of that fragment and press Ins a few times to populate it with nodes.)

Moreover, node sculpting is pressure-sensitive when you are using a tablet pen. If you press slightly, your curve will have a narrow sharp tip (i.e. the nearest neighbors of your dragged node will move only a bit); if you press hard, the curve's tip will be wide and blunt (i.e. the nearest neighbors will move almost as much as the dragged node). (Hint: to stop dragging without losing your shape, first release Alt and then lift the tip of the pen.)

There are many possible applications of the sculpting technique. To take a simple example, selecting all nodes of an ellipse-like shape and Alt+dragging one of them will smoothly and naturally stretch and skew the entire shape in any direction. Doing the same to a complex path, such as star or spiral, will twist and punch it without destroying its intricate structure - this is the way to get squashed or self-intersecting stars, eccentric spirals and other shapes not easily doable before. Selecting only part of all nodes allows you to smoothly reshape parts of the figure without disturbing the rest.

When applied to text converted to path, node sculpting is a fun and easy way to twist, bend and distort it, achieving effects similar to "perspective envelope" or "curvilinear envelope" in other programs - but in a more powerful and flexible way. For example, by selecting all or part of the text's nodes and Alt-dragging, you can not only make a wavy banner out of a paragraph of text, but also apply a "magnifying lens"-like effect to any word in the middle.

Especially useful node sculpting is for complex natural paths, such as calligraphic strokes or bitmap traces, where you often want to do large-scale pushes and bends without destroying the small-scale features. Things like making a calligraphic stroke narrower in one place and wider in another, or changing the proportions, extending the ear or flattening the nose of a head - all this is now much faster and more natural to do using sculpting. It is also a new way to create new paths, too - starting from en ellipse with added nodes, it takes just a few Alt+drags to tweak it into a silhouette of a head, or a map of Australia, or an Inkscape logo!

Some examples are shown on the screenshot: inkscape-0.44-nodesculpting.png.

"Show handles" toggle

The Controls bar for the Nodes tool now includes a toggle button which controls whether Bezier handles are shown on selected nodes (on by default). Selecting and dragging nodes on node-dense paths in zoom-out (e.g. for node sculpting) may be extremely difficult without hiding the handles, as it's hard to pick a node and not a handle when handles are shown.

New deletion behavior

  • In Node tool, deleting node(s) by Del/Backspace keys or by Ctrl+Alt+clicking a node now tries to preserve, as much as possible, the current shape of the path. This means that the nodes adjacent to those being deleted have their handles adjusted to approximate the form that the path had before deletion. For example, if you Ctrl+Alt+click a path twice, once to add a new node and then to delete it, the path will not change at all (or change very slightly). The old deletion behavior without adjusting handles is still available via Ctrl+Del or Ctrl+Backspace.

Preserving positions of nodes and handles

  • When you switch the type of the selected node to Smooth or Symmetric by pressing Shift+S/Shift+Y, you can now preserve the position of one of the two handles by hovering your mouse over it, so that only the other handle is rotated/scaled to match.
  • Similarly, when you join endnodes by pressing Shift+J, you can preserve the position of one of the two nodes by hovering your mouse over it, so that only the other node is moved.

Miscellaneous

  • The ! key inverts node selection in the current subpath(s) (i.e. subpaths with at least one selected node); Alt+! inverts in the entire path. (This is similar to how these keys work in Selector, with current subpath(s) instead of the current layer.)
  • The keyboard shortcut for "Make selected segments curves" in Node tool is changed from Shift+K to Shift+U for better mnemonics.

Calligraphic pen

Tremor

  • Even when using a graphics tablet with pressure sensitivity, the Calligraphy pen's strokes often look too smooth and artificial. To enable a more natural look, the new Tremor parameter is added to the Calligraphy tool in this version. Adjustable in the Controls bar from 0.0 to 1.0, it will affect your strokes producing anything from slight unevenness to wild blotches and splotches. This significantly expands the creative range of the tool.

Pen width

  • In all previous versions, pen width depended on zoom in such a way that the strokes appeared the same visible width at any zoom, but were in fact narrower at zoom-in and wider at zoom-out. This behavior makes sense if you want to keep the same "feel" of the pen regardless of zoom; for example, if you zoomed in to make a small fix to your drawing, it's natural that your pen becomes physically smaller but feels the same to you. So, this behavior is kept as the default, but now we also added an alternative mode where your pen width is constant in absolute units regardless of zoom. To switch to this mode, use the checkbox on the tool's Preferences page (you can open it by double-clicking the tool button).
  • The Width field in the tool's controls bar now changes from 1 to 100, which corresponds to the range from 0.01 to 1.0 in the previous version. If the "width in absolute units" mode is turned on, the value in this fields gives the width of the stroke in px units. In the default mode, the value of 100 gives 100px wide strokes only at 100% zoom, and strokes are correspondingly narrower or wider at other zoom levels.

Selection

  • A new preferences option for the Calligraphic tool, Keep selected, controls whether the newly created object remains selected after you finish drawing it. If you turn it off (by default it's on) and set the tool to using Last Set color, you can easily choose a new color by clicking on the palette without having to worry if this will change the color of the stroke you just created. (Watch the tool style indicator at the right end of the Controls bar for the style of the next stroke you will draw.)
  • Esc deselects selected objects in Calligraphic, as in most other tools.

Style

  • The stroke you're drawing is now shown, while you're drawing it, with the correct color and opacity that it will eventually have, instead of always black as before.
  • On a new Inkscape installation, this tool now uses the last set style by default instead of the fixed black as before (this is changeable in the Inkscape Preferences for the tool).

Pen tool

  • While drawing a path, you can now move the last node you created by the same keys as in Node tool - that is, arrows, with Shift (for 10x displacement) or Alt (screen pixel displacement) modifiers.
  • Also, you can switch the not-yet-finalized (red) segment of the path being drawn from curve to line (Shift+L) or back to curve (Shift+U), again the same shortcuts as in the Node tool.
  • By popular demand, if a new path is being drawn but not yet finished, Ctrl+Z cancels that unfinished path (i.e. does the same as Esc), instead of undoing the previous action.
  • In Pen tool, Del works the same as Backspace to delete the last created point on the unfinished path.

Clipping and masking

Inkscape now provides some UI for using clipping paths and masks.

  • Any object can be non-destructively intersected with a path (called a clipping path) so that only the intersected portion of the object is visible.
    • To apply clipping, select the objects to be clipped and the clipping path object, make sure the clipping path is above the other objects in z-order, and do Object > Clip > Set.
    • You can transform, edit, or style the clipped objects as usual. The clipping remains applied and transforms together with each clipped object.
    • To remove the clipping, do Object > Clip > Release. The clipping path is returned to the drawing as a regular object; it is inserted on top of the unclipped object in z-order.
  • Any object can be non-destructively masked by another object (called mask) so that: the mask's black or transparent areas become fully transparent in the masked object; mask's opaque white areas become fully opaque; and all intermediate colors translate into intermediate levels of opacity in the masked object. This allows you to apply, for example, arbitrary transparency gradients to objects.
    • To apply a mask, select the objects to be masked and the mask object, make sure the mask is above the other objects in z-order, and do Object > Mask > Set.
    • You can transform, edit, or style the masked objects as usual. The mask remains applied and transforms together with each masked object.
    • To remove the masking, do Object > Mask > Release. The mask is returned to the drawing as a regular object; it is inserted on top of the unmasked object in z-order.
  • Objects with clippath show their bounding box intersected with the bounding box of the clippath, instead of the original unclipped bbox as before. (However, this does not apply to objects without clippath of their own which are clipped by being inside a clipped group.)
  • Clipped or masked objects display "clipped" or "masked", correspondingly, in their statusbar descriptions.
  • Although Inkscape had render-only support for clipping paths and masks for quite some time, in this release we fixed a number of bugs which may affect the display of your documents using clippaths or masks.
    • Clippaths and masks with objectBoundingBox units are now shown correctly upon loading of the document.
    • Clippaths without fill didn't work, this is now fixed.
    • Objects with clippaths or masks are correctly copied/pasted between documents.

Transformations

Transform dialog

Fixes and improvements in the Transform dialog (Ctrl+Shift+M):

  • The Apply to each object separately checkbox is added, allowing you to scale/rotate/skew each selected object by the same amount, around that object's center. When off (by default), the selection is transformed as a whole. The status of this checkbox is remembered across sessions. (It has no effect on Move and Matrix tabs).
  • The Clear button resets the values on the current tab to defaults.
  • The Scale tab now allows you to specify horizontal or vertical size increments in percentage or absolute units. Also, there's a Scale proportionally checkbox which ensures that scaling preserves the width/height ratio. (If you are scaling several objects proportionally with "Apply to each object separately", you can only use the % unit to specify the scaling; otherwise each object's scale increments will have the width/height ratio of the entire selection, not of that specific object.)
  • The Skew tab can now specify the skew as an absolute displacement (e.g. for horizontal skewing of a rectangle, that means the shift of the top rectangle side relative to the bottom), as percentage displacement (e.g. a 1% horizontal skew of a rectangle means shifting the top side by 1% of the rectangle height), or as an angle (e.g. horizontal skew by 15 degrees results in the sides of a rectangle being rotated to that angle, while the top and bottom remain horizontal).
  • The Matrix tab (previously called "Transform") can either edit the current transform= matrix of an object, or post-multiply the transform= with the matrix you specify, depending on the Edit current matrix checkbox. (As it is now redundant, the transformation matrix in the Object Properties dialog is removed.)
  • The dialog now correctly watches selection changes in the active document window and updates its values accordingly.
  • The layout of the dialog is simplified, tooltips and mnemonics added for better usability.
  • Many bugs are fixed, especially in value conversions between units.

Persistent rotation centers

  • The position of the center (axis) of rotation and skewing used by Selector is now remembered for all objects and restored when you select those objects again (even after saving and reopening the document). When you move or scale an object, its rotation center is moved or scaled too, so its position relative to the object always remains the same unless you move it explicitly.
  • When you have several objects selected, they use the rotation center of the first selected object. If the first object does not have center set (i.e. if it's in a default central position), then several objects will rotate around the geometric center of their common bounding box (as before).
  • Shift+click on the rotation center resets it back to the center of the object's box.
  • Consequently, dragging the rotation center is now an undoable action; you can press Ctrl+Z to undo the drag.
  • Keyboard rotation by [, ] keys with various modifiers, as well as the Rotate tab in the Transform dialog, work around the selected object's rotation center (for multi-object selection, the rotation center of the first selected object).
  • Rotation centers are preserved when duplicating, cloning (including clone tiler), grouping/ungrouping, and converting to path.

Pasting size

A number of commands are added to easily scale selected objects to match the size of the object(s) previously copied to the clipboard. They are all in the Paste Size submenu in Edit menu:

  • Paste Size scales the whole selection to match the overall size of the clipboard object(s).
  • Paste Width/Paste Height scale the whole selection horizontally/vertically so that it matches the width/height of the clipboard object(s). These commands honor the scale ratio lock on the Selector controls bar (between W and H fields), so that when that lock is pressed, the other dimension of the selected object is scaled in the same proportion; otherwise the other dimension is unchanged.
  • Paste Size Separately, Paste Width Separately and Paste Height Separately work similarly to the above described commands, except that they scale each selected object separately to make it match the size/width/height of the clipboard object(s).

Connectors and automatic layout

  • There have been numerous bugfixes and several improvements to the behaviour of connectors and the connector tool:
    • Connectors moved as part of a selection will now stay attached to other objects in the selection, rather than becoming detached from them.
    • By default, the Connector tool will not attach connectors to text objects. There is a new checkbox in the connector preferences to control this setting.
    • The margins around avoided shapes (used for autorouting connectors) can now be adjusted via the "Spacing" control on the controls bar.
  • Automatic Diagram Layout: A new button is available in the Align and Distribute dialog that performs automatic layout of diagrams involving a network of shapes and connectors. Layout is accomplished using force-directed graph layout based on the Kamada-Kawai algorithm. This algorithm treats edges as if they are springs such that the distance between nodes will be proportional to the path length - number of connectors - between them. Disconnected components (where not every shape is connected) will be arranged around the circumference of a circle.
  • There is a new Remove Overlaps button to move the selected objects enough that they don't overlap each other. A minimum spacing between the boundaries of objects can be specified. Together with the automatic layout tool, described above, this should be a significant addition to Inkscape's usability for diagramming. Removing overlaps is different from the "Unclump" button in that the former is completely deterministic and guarantees removing overlaps on the first application, but is not concerned with visual perceptive distances between objects. Unclumping, on the other hand, attempts to equalize perceptive distances between objects and can be applied repeatedly for gradual effect.

Selective tracing with SIOX

  • Inkscape 0.44 has an early version of the Simple Interactive Object Extraction (SIOX) algorithm (see siox.org) implemented in its bitmap tracing code. For a quick reference on how this is used, please see this file. This clever algorithm from the realm of Image Recognition allows you to select areas of similar color, with the goal of extracting a foreground area from the background. To use:
    • Enable the SIOX checkbox in addition to your usual tracing options.
    • Select both the bitmap and an object that covers the foreground and part of background, leaving only background areas of the image uncovered.
    • Hit OK. SIOX will now analyze and attempt to pull out the foreground-colored areas you want, and trace only those parts of the image.
  • The full SIOX selection mechanism (e.g. the ability to identify foreground and background areas separately) is not implemented yet, but is planned for a future release.

Snapping

  • In addition to snapping to guides and grids, you can now snap to other objects' paths and/or nodes. As with grid and guide snapping, you can separately enable snapping of bboxes to objects and/or snapping of nodes to objects. Be aware, however, that this is experimental code - there may be surprises. It may also be slow in large documents with thousands of objects.
  • In addition to the snap sensitivity sliders in Document Preferences (which set snap distances in px), there are Always snap checkboxes (separately for object, grid and guide snapping) which force snapping at any distance.
  • Grid snapping now applies only to the visible grid lines. For example, if you have zoomed out so that only every 10th grid line is visible, snapping will only apply to these visible lines. In addition, default grid snap sensitivity is set to "Always snap". This will hopefully reduce the number of "snapping does not work" complaints from users who didn't zoom in close enough to see that snapping does in fact work, but only at sub-px distances to the 1px-spaced grid. At the same time, you can still snap to finely grained distances if you zoom in.
  • Guidelines are made easier to pick. Now you don't need to position mouse exactly over a guideline to activate it; instead there's a small position tolerance (1 screen pixel on each side of the guideline).

Sublayers

Previously, it was only possible to make a group a temporary sublayer by entering that group. Now Inkscape supports creating and using true persistent sublayers within a layer.

  • The Add layer dialog allows you to place the new layer above, below, or inside the current layer.
  • In Preferences (Selecting tab), options are added allowing the "Select All" command and Tab key selection to work either in the current layer only or in the current layer and its sublayers.

Markers

  • Converting stroke to path now correctly processes dashed strokes. For paths with markers, this command now creates a group containing the stroke converted to path and all its markers as independent objects (i.e. they are not markers anymore, but instead you can easily transform them or paint them any color, as a workaround for the "markers don't take the color of the stroke" bug; to be properly fixed, this bug requires implementing some SVG 1.2 features).
  • The DimensionIn and DimensionOut markers are changed so that the arrow tips exactly correspond to node positions. It is now very easy to make dimension lines that correspond to drawn objects. The dimension specifications can now easily be chained by splitting a straight line at a point and assigning DimensionIn/Out markers to the resulting smaller paths whose endpoints coincide.
  • All arrow markers in the standard set are moved on the path so that their tips are as close as possible to the corresponding node of the path. Complete coincidence is not possible, because it would cause the blunt end of the stroke itself to be visible under the sharp tip of the arrow, distorting its shape. However, now the arrow tips are much closer to their nodes than before, and probably sufficiently close for many practical situations.
  • A new RazorWire path marker was added. By applying it as a mid-marker you can get a good approximation of a razor wire.


Extension effects

  • The Effects menu is now officially on and no longer an optional "experimental feature" as in past versions. The preference setting to enable the menu has been removed. Inkscape 0.44 comes with about 30 effects that perform a variety of useful tasks, such as path blending, randomization, function plotting etc.
  • Python effects (which includes almost all currently available effects) work on Windows out of the box, using a copy of Python shipping with Inkscape. The only minor inconvenience is that when an effect is launched, you get an empty console window that stays on while the effect is doing its work. (Don't close that window, it will disappear by itself when the effect is finished.)
  • A new Python effect, Render > LaTeX formula, allows you to type in any LaTeX formula and get a vector object with the TeX rendition of this formula inserted into your document. You need to have latex, dvips, and pstoedit installed and in PATH for this to work.
  • A new Python effect, Flatten Path, flattens paths in the current selection, approximating each path with a polyline whose segments meet the specified criteria for flatness.
  • A new Python effect, Measure Path, attaches a text label to each path in the selection giving the length of that path (in px units).
  • The Radius Randomize effect has a new parameter which enables normal distribution of random displacements instead of uniform as before, which gives a more natural feel to the randomized path.
  • The Render > L-system (formerly "Fractal (Lindenmayer)") effect is improved in this version. Now you can specify different angle values for turning left and right, which makes it possible to smoothly bend some L-systems sideways. Also, you can separately randomize the step length and the angles by a given percent for more natural look (this works especially well with plant-like branching shapes). This effect can be used to create Penrose tiling, Sierpinsky triangle, Dragon curve and other famous mathematical artefacts, as well as various meanders, friezes, patterns, and trees. Some examples can be seen on this screenshot: inkscape.org/screenshots/gallery/inkscape-0.44-lindenmayer.png as well as in the new example file share/examples/l-systems.svg.
  • The Interpolate Path, Random Tree, and L-system effects are fixed to place their result on the current layer instead of document root and in the center of the (last-saved) document view instead of 0,0 as before.
  • INX files now have the ability to hold more information. This includes tooltips and descriptions of the extensions. These are all also translatable.
  • Thanks to keyboard configurability, it is now possible to assign keyboard shortcuts to those effects you use most often, so you can activate them without going into the menu.

Formats

  • Inkscape's PDF export is now native (i.e. does not require any external applications) and supports transparency, including gradients with transparency. This replaced the old export extension that required Ghostscript and worked via Postscript, losing any transparency. The new PDF export is still immature; in particular it does not handle text, so you should check "Convert text to path" on the export options dialog. Other things not yet supported include: gradients on stroke; eccentric elliptic gradients; patterns, masks, and clipping paths; embedded images.
  • You can now Save as Compressed Inkscape SVG with media.This save option collects the svg file and all linked images into a zip archive for distribution. Although you cannot open the resulting archive directly with inkscape, the media is linked such that after unzipping you can open the SVG file immediately.
  • An output format for desktop cutting plotters, such as the Wishblade and Craftrobo, was added. This format is a very minimalist DXF file with appropriate scaling and translation applied. This output format should not be expected to operate as a generalized DXF output.
  • Inkscape can open/import default files generated by the Xfig vector graphics editor. This requires that the fig2dev command (transfig) is in your PATH.
  • Starting with this version, there is a limited ability to export Inkscape drawing shapes as Open Document Format drawings (.odg files). Currently the export is limited to text, shapes, and solid fill and strokes. This output will be improved in the coming months. In the meantime, however, ODG output is already useful for getting your SVG drawings into the Open Document world, in particular into an office suite such as OpenOffice.org.
  • The new XCF output extension exports all top-level elements (i.e. layers and objects directly under root) as PNGs and assembles them into an XCF for procesing in GIMP. Requires Python, PyXML and GIMP. GIMP 2.2.x or above must be in the path and be named gimp. A version of Inkscape 0.44 or above must be accessible from the path. Does not function in Windows yet.

Miscellaneous shortcuts

  • Now you can use Shift+middle button drag, in any tool, to zoom into an area. This works the same as simple drag in Zoom tool, but is faster because it does not require switching away from your current tool. Together with middle button drag (panning), middle button click (zoom in) and Shift+middle button click (zoom out), this completes the set of canvas navigation shortcuts available in any tool or context.
  • In Gradient tool, Shift+R reverses the gradient definition (i.e. mirrors the stop positions) without moving the gradient handles. For example, an elliptic gradient with blue center and red periphery becomes red in the center and blue in the periphery. This works on the gradient(s) of the currently selected gradient handle or, if no handle is selected, on all selected objects' gradients. (Compare with the Node tool where Shift+R reverses the direction of the selected path.) This is especially convenient for elliptic gradients which, unlike linear, you cannot simply rotate by 180 degrees for the same result.
  • In Selector, Ctrl+Enter enters the selected group (making it a temporary layer). Ctrl+Backspace leaves the current layer and goes one layer up in the hierarchy (but not to root).

Miscellaneous improvements

  • Document templates (listed in File > New) are now first searched in the templates subdirectory of the user's profile directory (on Linux it's ~/.inkscape/templates), then in the system-wide Inkscape templates directory. This allows you to add your own templates on top of the list of standard templates, as well as override the default template with your own one (the default.svg in the profile directory has priority over the system-wide one).
  • When toggling one of the "transform with object" buttons (for stroke width, rounded rectangle corners, gradients, or patterns), a message is displayed in the statusbar explaining what has changed in the program's behavior. Hopefully this will reduce the number of complaints from users who had accidentally toggled one of these and were surprised by the result.
  • Whole thousands above 2000 in the rulers are now displayed as 2k, 3k, 4k etc.
  • In the Inkscape Preferences dialog, the new object style for each tool is now shown as a style swatch (displaying fill/stroke colors and opacity, stroke width, and master opacity), similar in design to the selected style indicator in the statusbar.
  • In the Grid Arrange dialog, row/column spacing can now be negative.
  • The installation default is now to scale the rounded rectangle corners with the rectangles themselves (the previous default mode, still available as an option, was to keep rounding radii unchanged when scaling rectangles).
  • Added a new --export-area-canvas command line parameter that causes the exported PNG to contain the full canvas. This option as well as --export-area-drawing and --export-area can now be used along with --export-id and --export-id-only for greater flexibility.
  • The --query-* command line parameters now return the true SVG bounding box of the object instead of the Inkscape coordinate system bbox (with inverted Y axis). The new behavior makes more sense for scripting use of Inkscape.
  • The dpi value in the Export dialog has had its range extended; now possible values are from 0.01 to 100000.
  • Individual <tspan>s within text objects (including line tspans) can now be selected via the XML editor to view their bounding boxes (though per SVG, you cannot transform them). Also, you can use the --query-* command line parameters to find out the bounding boxes of tspans from a script. (Individual strings within or between tspans are still not selectable, and they cannot have an ID for querying anyway.)
  • The placeholder image which is shown when a bitmap file was no longer accessible reads now "Linked image not found" instead of the confusing "Broken image".
  • Cloning multiple selected objects now works as expected (i.e. each selected object is cloned separately, similar to the Duplicate command). Previously you could only clone a single selected object.
  • The separate "license" and "contributors" dialogs have been merged into tabs on the About dialog. The about dialog now correctly sizes itself to fit the size of the splash SVG (while remaining resizable), and the rendering area is now cropped to the correct aspect ratio when the dialog is resized. The dialog also now displays the build information in the upper right corner.
  • In the Transform dialog / Rotate tab, the icon was flipped horizontally to be in line with the direction of positive rotation; the change was applied to the default (now crispy) and legacy icon sets.
  • The scale ratio lock button on the Selector controls bar shows a closed lock when pressed and open lock otherwise (same as the layer lock in the statusbar).
  • The Browse button on Export dialog now opens the new file chooser, same as those used by Open and Save.

Miscellaneous bugfixes

  • Reading a document with an incorrect namespace URI not only did not cause Inkscape to complain, but could also "pollute" Inkscape's internal namespace table, resulting in an "infection" of subsequently saved documents by the incorrect namespace. This is now fixed, but as a result, documents with incorrect namespace URIs will no longer load. You will have to edit them in a text editor to fix the namespaces.
  • With newer versions of GTK, dragging with graphics tablet pen did not work in some tools and contexts (in particular, in Node and Rectangle tools). This is fixed.
  • Scaling of objects with stroke in Selector used to cause undesired shifts of the scaled object, as well as scaling it in the dimension which was intended to remain untouched (e.g. slight change in width when you scale only height). All these problems are now fixed, both for interactive scaling by mouse and for numeric scaling via the Controls bar, and for both values of the "Scale stroke with objects" option. Among other things, this means that stroked objects no longer lose snapping on scale, and that the "Default scale origin" option in the Selector tool preferences finally works as designed. Caveat: There may still be problems if you scale a selection that contains objects with different stroke widths.
  • Scaling of stroke now works for objects that didn't specify stroke-width; before, they always ended up with the default 1px stroke.
  • The bounding box for text and flowed text objects did not include stroke width. This has been fixed.
  • Stroke miterlimit on text objects was misinterpreted in absolute units instead of multiplies of stroke width (resulting in miter joins rendered as bevel).
  • The unfinished path in Pen tool is now cancelled, not finalized, when you switch away from the Pen tool. Apart from being more intuitively correct, this also fixes a crash when you quit Inkscape with the unfinished path in Pen tool.
  • Fonts on Win32 now use the native font mapper, meaning that Inkscape's font list is the same as other Windows programs, and the (potentially) very long delay experienced when using fonts for the first time in each session is gone.
  • Setting dash pattern was broken for transformed objects, and copy/paste of style with dash pattern did not apply correctly to objects with transforms.
  • An error caused a complete extra screen redraw after each zoom operation. That is, after you press "+" in a complex drawing, Inkscape redraws, but for some time after that it remains still unresponsive because it does that second redraw (invisibly for you, i.e. nothing changes on the screen). This is fixed.
  • Gradient rendering was off by one pixel, which often resulted in visibly wrong gradient rendering for small objects or in zoom-out.
  • The SVG path parser could not handle fractional numbers with the initial dot.
  • Several pattern rendering bugs are fixed, discovered by working with SVG files exported from Adobe Illustrator.
  • Inkscape on Mac OS X will now notice fonts in your ~/Library/Fonts directory, in addition to the other standard places.
  • Inkscape couldn't be compiled with libxml versions <= 2.6.9, and we now bumped the requirements from 2.6.0 up to libxml >= 2.6.11, which is the earliest you can get officially, anyway.
  • Inkscape no longer crashes when presented with a defective inx file for extensions.
  • More document memory is now freed when documents are closed.
  • EPS output now correctly includes an %%EOF footer.
  • There was a regression in 0.43 that caused several minor, though annoying bugs; knots and handles remained highlighted after the mouse was released, and the rubberband selection rectangle stayed visible if the selection was ended over a node while in the node tool. This regression has been fixed.
  • The connector routing code would previously sometimes confuse objects between multiple documents resulting in strange routing behaviour. This has been fixed.
  • There existed a bug in 0.43's Inkboard code that allowed a malicious outsider to very easily disrupt an Inkboard session. This has been fixed.
  • There existed a bug in 0.43's Inkboard code that would cause deadlocks in the case that two users attempted to invite each other at the same time (see bug #1352522 for further details). This should be fixed, although the fix has not been widely tested.
  • There existed a bug in 0.43's Inkboard code that would cause session invitations to not appear on the invitee's screen. This was the result of a mistake in handling GDK modifier flags, and has been fixed.

Translations

  • INX files (containing the UI of the external effects) now allow the user visible strings to be translated. This means that effect dialogs, file type selections, and extension names can all be translated by translators.
  • Inkscape is now significantly translated to 18 languages: Basque, Catalan, Czech, French, German, Hungarian, Italian, Lithuanian, Norwegian (Bokmål dialect), Polish, Russian, Serbian (Cyrillic and Latin), Simplified Chinese, Slovenian, Spanish, Traditional Chinese, and Vietnamese. Additionally, 21 more languages have some level of translation. Average translation ratio has increased from 49% to 61% in this release.
  • Some new translations of tutorials have been brought by contributors: Czech, Portuguese (Brazilian) and Russian.

Internal

  • The Document Properties Dialog code was completely gtkmmified, which lead to dramatic reduction of code size due to usage of widget objects. The used widget objects should be reusable by other dialogs, too, and the code is much more readable.
  • Work on optimizing includes in all cpp files started, using the purgeincludes tool specifically written for that purpose, and ended with 40% of include lines removed!

Known problems

SVG files saved using previous version don't display font correctly

  • You may find that fonts don't correctly display when opening a file from a previous version (eg 0.43). This can be fixed by simply reapplying the font. However, bringing up the font dialog doesn't acquire the font size from the document and so the actual size may be lost. If you select the text, then check using the XML viewer what the original font and size were you can then input this via the font dialog and restore your document to it's original glory! [ pbhj ]

Problems with some Debian libgc-6.7 packages

  • Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2 of the package. If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.

Problems with "Composite" option of X.org

  • Some prereleases of inkscape-0.44 could crash if the "Composite" option were enabled in X.org's configuration. This is not a problem in the final release.

Namespaces may need fixing

  • Previous versions of inkscape sometimes silently saved documents with wrong namespace URIs. This has been fixed, but such corrupted documents will no longer load successfully. Such documents may require their namespace declarations to be fixed by hand. Correct namespace URLs are as follows, with typical namespace prefixes given in parenthesis:

Beware of defective themes on Linux

  • Inkscape and other Gtk programs can crash on any Linux, when the gtk2-engines-smooth / libsmooth package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem.
  • A similar crash happens if the KDE Baghira theme or the package gtk_qt_engine are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system. Both problems also affect older versions of Inkscape.

Make sure to remove menus.xml if you have it

  • If you were using certain CVS/SVN builds from autumn of 2005, you may have the file menus.xml hanging around in your profile directory (e.g. ~/.inkscape on Linux). In that case you will see many errors about verbs that cannot be found, and some commands in menus will be disabled. Make sure to delete menus.xml to fix this.

Other releases