Release notes/0.42

From Inkscape Wiki
Jump to: navigation, search

Inkscape 0.42

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:

  • Flowed text: text objects that automatically reflow in any shape (not only rectangle).
  • Text selection: finally you can shift+arrow or drag over part of a text and apply any style to the selected span.
  • Gradient tool: a completely redesigned and much easier to use gradient interface, with gradient handles displayed right on canvas.
  • Effects 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.
  • Color swatches: a standard facility in most graphic software, now in Inkscape too.
  • Colored clones: clones can now be painted differently from their original.
  • Tile tracing: the Tile Clones dialog can trace the existing image with the tiling, producing a multitude of exciting effects.
  • Grid arrange, baseline align, unclumping: new powerful ways to arrange objects.
  • Better PS/EPS export: gradient support, better text handling, a command line option for batch export.
  • Command line SVG analysis: use Inkscape from the command line to query coordinates and dimensions of objects in an SVG file.
  • Better SVG/CSS compliance: notably, internal CSS stylesheets are now supported (read-only).
  • OS X support: 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 Fill & Stroke dialog, Node tool, and drawing tools). In this version we closed 404 bugs, some quite serious, and 165 feature requests. Overall, we're really excited about this version and heartily recommend upgrading.

Text

  • The text layout engine is completely rewritten to make it easier to maintain, faster, and more memory-efficient.
  • Inkscape now features a complete support for flowed text:
    • Creation of flowed text is simple. Just drag 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 Esc while dragging to cancel flowed text creation.)
    • Resizing a frame is as simple as dragging the handle in the bottom right corner to change its width or height. Drag with Ctrl 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.
    • Transforming 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.
  • Dragging with the Text tool creates a regular flowed text object whose frame is internal (does not appear as a standalone object on canvas) and rectangular. You can, however, create a different kind of flowed text: linked flowed text that can use as its frame any existing shape, including non-rectangular ones. It can also use a chain of frames, with the text flowing from one frame to the next one in chain.
    • To create a linked flowed text, select a text object and one or more shapes or paths, then use the Flow into Frame command (Alt+W) in the Text menu. When two or more shapes or paths were selected, they become a chain of frames for this flowed text.
    • 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 Shift+D in Selector to jump to its first frame (this is useful if the frame is invisible or locked).
    • Statusbar description of a selected object will identify regular text, flowed text, and linked flowed text as different kinds of objects.
  • Full on-canvas editing 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 Enter starts a new paragraph. Letterspacing and linespacing adjustments (but not manual kerns) work in flowed text as well.
  • The Unflow Text command (Alt+Shift+W) converts a flowed text into a single-line regular text object, cutting its link to its frame.
  • Another command, Convert to Text, also converts flowed text to a regular text object, but fully preserves 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.
  • Text selection in Text tool now works. To select a text fragment:
    • With text editing cursor active, use Shift+arrows to select by character, or Ctrl+Shift+arrows to select by word, or Ctrl+A to select all of the current text object.
    • Drag with mouse over any text object.
    • Double click on a text to select one word, triple click to select one line.
  • When you have some text selected:
    • Pressing Ctrl+B/Ctrl+I applies bold/italic to the selection.
    • The Text&Font dialog applies style to the selection.
    • The Cut, Copy, and Paste Style commands apply only to the selection.
    • Kerning keys (Alt+arrows) 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).
    • Letterspacing keys (Alt+<, Alt+>) adjust letterspacing only within the selection.
    • Rotation keys (Alt+[, Alt+]; Ctrl+[, Ctrl+]) rotate all characters in selection.
  • The Text&Font and Fill&Stroke dialogs now reflect the style under cursor or (if there’s text selection) in the selection, 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&Font display averaged values, and the Fill&Stroke displays averaged color.
  • Several new text editing shortcuts:
    • Ctrl+arrows move the cursor by one word forward or backward (this disables the scrolling by Ctrl+arrows while you are editing text).
    • Ctrl+Home and Ctrl+End move cursor to the start/end of the text object, correspondingly.
    • Any character or the entire selection can be rotated by pressing Ctrl+[ / Ctrl+] (90 degrees rotation) or Alt+[ / Alt+] (pixel-size rotation, zoom in for finer adjustment).
  • International text support is greatly improved, especially for right-to-left scripts. See the all-new example file share/examples/i18n.svg.
  • Unicode entry 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.
  • Several usability enhancements in text editing:
    • cursor movement is visual in RTL and mixed-direction text;
    • cursor goes straight up/down rather than to the same character index in the line above;
    • cursor becomes italic (slanted) when in italic text.
  • A text object’s baseline anchor — 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 when doing baseline snapping, alignment, or distribution (see below).
  • 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.

Gradients

  • Gradient editing on canvas is now available, much more convenient and powerful than the old way of dragging gradient knots in the Fill&Stroke dialog.
    • Any number of selected objects can simultaneously display handles and direction lines for the linear and radial gradients in their fills or strokes. You can drag these handles directly in the drawing, to interactively adjust gradient positions.
    • Gradient handles 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.
    • Any gradient handle, if dragged close to a handle of another gradient, will merge 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.
    • Radial gradients 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.
    • When dragged, handles will snap to the edges (and their continuations) and the central axes of the bounding boxes of all selected objects (drag with Shift to prevent snapping).
    • Dragging with Ctrl 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.
    • Dragging with Ctrl+Alt 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.
    • Dragging with Ctrl+Shift will scale the entire linear or radial gradient around its center.
    • Gradient handles for each gradient are connected by blue lines for fill gradient and yellow lines for stroke gradient.
  • The Gradient tool (Ctrl+F1 or the g key) is a new convenient way to create, edit, and manage gradients:
    • Simply drag anywhere on canvas to create a gradient on selected objects. Existing gradients can be edited by dragging their handles (not only in Gradient tool, but 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.
    • Instead of dragging, you can double-click 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.
    • The tool’s controls bar lets you choose the type of the newly created gradients (linear or radial) and whether they will be applied to the objects’ fill or stroke.
    • The selected (blue) on-canvas gradient handle can be nudged by arrow keys with all the regular modifiers (Alt to 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.
    • 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 two-stop gradients can be completely edited without ever opening the Gradient Editor dialog. In particular, you can use the following methods to change the color/opacity of the selected handle:
      • Dropper tool (for example, to blend a radial gradient onto background, select its outer handle and pick the background color with the dropper).
      • Paste style (if the pasted style contains both fill and stroke style, the stop will take the fill style).
      • 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 of the dialog work to set color on a handle).
      • Swatches dialog.
    • Double-clicking any gradient handle will open the Gradient Editor dialog with that handle’s gradient loaded and the corresponding stop selected in the list.
    • For each gradient, you can choose one of the document’s gradient definitions (sets of color/opacity stops) from the drop-down list in the controls bar. If a handle is selected, this list displays 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.
    • The Duplicate button creates a copy of the selected gradient definition and applies it to the selected objects; use that when you have several objects sharing one gradient definition but want to change that. The Edit... button opens the gradient dialog where you can edit the gradient definition (add/move/delete stops and change colors and opacities of stops).
  • 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).
  • The Gradient Editor dialog can now delete the first or last stop if there are more than 2 stops in a gradient.

Clones, tiling, distributing, unclumping

  • 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 fill or stroke 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 redefine the unset fill or stroke, which means you can have clones painted differently from their original and from each other. Just use the Fill&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.
  • In Selector, arbitrary transformations of clone(s) selected together with their original(s) 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.
  • Tile clones dialog improvements:
    • The new Color 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&Stroke dialog to unset paint).
    • The new Tracing tab allows you to trace the drawing under the tiling. You can use 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 variety of effects on drawings (both vector drawings and imported bitmaps), such as tessellated mosaics, “impressionist paint”, geometric grids, color separation lattices, and more (see the [[1]] page on our site). Also, you can use this feature to control the extent and the density of your tiling by preparing a temporary shape and tracing opacity-to-presence over it, or to emulate “object brush” by tiling over a stroke with a pattern or randomized scattering.
    • The new Unclump button attempts to reduce the 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 can be applied to 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.
    • Instead of specifying the numbers of rows and columns, you can now set the size of the rectangle to be filled with your tiling (convenient when you need to trace over a bitmap or drawing of certain size).
    • 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 horizontal shifts but not vertical).
    • The new Exponent 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 upper limits for scales and shifts are increased (from 100% to 1000% of tile size), and the precision of the input fields is higher.
    • There’s a mini-statusbar at the bottom of dialog which shows the number of tiled clones of the selected object.
  • Improvements in the Align & Distribute dialog:
    • The new Randomize button moves the selected objects randomly within the bounding box of the selection. To achieve the most eye-pleasing results, randomization can be followed by one or more rounds of unclumping (see the next item).
    • The new Unclump 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.
    • Four new buttons let you align or distribute horizontally or vertically the baseline anchors 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.
    • 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.
    • Nodes can now be aligned or distributed vertically and horizontally when in node editing mode.
  • With the new Grid Arrange dialog (from Object menu), Inkscape now has the ability to arrange selected objects into a regular grid:
    • 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.
    • You can make all rows/columns equal height/width, or you can make them fit the tallest/widest object in each row/column.
    • You can set the vertical and horizontal alignment of objects in rows and columns correspondingly.
    • You can set the row/column spacing explicitly (negative values are allowed), or you can make the entire grid squeeze or stretch to exactly fit the current selection’s bounding box.

Effects

  • The Effects menu can be made visible by 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 Python to be installed; some require Perl; also it is now possible to use Ruby for programming extensions.
  • Extensions now work on Windows (if you have Windows versions of Python/Perl installed).
  • Script extensions can have GUIs to adjust their parameters within specified ranges and with specified default values. All parameters are remembered and restored across sessions (via the preferences.xml file where all other Inkscape preferences are stored).
  • Effects now correctly work with Undo/Redo and modify the "document changed" flag for save confirmation on exit. Effects no longer open an additional window to display results.
  • Scripts that return error along with data on STDERR have that data displayed to the user, to allow for more complete reporting of scripting errors.
  • A new command line parameter --extension-directory allows external extension installers to find the directory in which Inkscape is configured to look for extensions.
  • Inkscape now looks for Extensions in both the systemwide Inkscape's share/extensions directory and the user’s extensions directory (e.g. ~/.inkscape/extensions on Linux).
  • Several new effects, written in Python, ship with Inkscape 0.42:
    • Connect the Dots: Places a dot and a number at each node of the selected path.
    • Draw Handles: Draws control handles on the nodes of the selected path.
    • FretFind: This is a fretboard design tool capable of designing multiscale and microtonal fretboards for guitars.
    • Interpolate: Blends paths and styles (flat color fills only) with a given number of steps; requires two paths to be selected.
    • Kochify: 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).
    • Lindenmayer: Draws deterministic context-free Lindenmayer Systems. Creates a new path object in the 0,0 point (located off of the canvas).
    • Motion: Draws isometric 3D wireframe path extrusions for selected paths.
    • Radius Randomize: Randomly moves path nodes, node handles, or both within the specified radius. Operates on selected paths.
    • Random Tree: 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).
    • Segment Straightener: 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.
    • Wavy: Converts the selected rectangle objects into appropriately sized wavy lines. Allows user to specify custom equations f(x) to use in the plotting.


  • Apart from the effects, the share/extensions directory contains several helpful Python modules that you can reuse in your own extensions:
    • bezmisc.py: A few miscellaneous functions for Bezier math.
    • cubicsuperpath.py: An alternative path data list structure that converts all segments to cubic Bezier curves and stores them as points rather than segments.
    • ffgeom.py: Point and Segment geometry classes used in FretFind.
    • ffproc.py: Functions that place strings and frets for FretFind.
    • ffscale.py: Converts ET and Scala scale descriptions into useful ratio arrays.
    • inkex.py: A helper class for creating Inkscape effects.
    • pturtle.py: A path turtle class for creating Inkscape extensions with turtle geometry.
    • simplepath.py: Unpacks SVG path data into a simple list structure that mimics the textual representation.
    • simplestyle.py: Unpacks SVG style attributes into a dictionary and pack them back up.


Bitmap tracing

  • The code of potrace (Inkscape's built-in tracer) has been updated to version 1.6 which works noticeably faster. The maximum number of scans is now 256.
  • A tracing progress indicator has been added. 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. With the performance enhancements of the new potrace version, however, users hopefully won't need to interrupt single pass traces as much as before.


Loading, saving, export, command line

  • In PS or EPS export, Inkscape now supports gradient fills (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 some more limitations).
  • Load from URL: 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 URLs. Currently this only works when used from the command line, e.g.

inkscape http://openclipart.org/clipart/food/honey.svg

This feature loads the URL directly into memory rather than to a temporary file.
  • When saving as SVGZ (compressed SVG), you can now choose between compressed Inkscape SVG and compressed plain SVG.
  • Documents can now be exported to PS or EPS from the command line (--export-ps and --export-eps correspondingly). For EPS export, there are command line options for converting text to path (--export-text-to-path) and setting the bounding box to the page instead of the drawing (--export-bbox-page).
  • Determining the dimensions of an object 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 --query-x, --query-y, --query-width or --query-height. The --query-id option specifies the ID of the object that is queried; if not given, the corresponding dimension of the entire drawing is returned. For example:
 $ inkscape tutorial-basic.svg --query-height
 3998.6800
 $ inkscape tutorial-basic.svg --query-y --query-id text1555
 528.94486
The returned values are in px (SVG user units).
  • For PNG export, the new option --export-area-drawing exports the entire drawing (not canvas), giving you a PNG of all visible objects without margins.
  • Inkscape can now export documents into LaTeX with PSTricks macros.
  • The new command line option --vacuum-defs performs the “Vacuum Defs” command, i.e. removes the unused definitions from the <defs> section(s) of the document. If specified with --export-plain-svg, it affects the exported plain SVG file; otherwise it replaces the source file and exits.

Tools improvements

  • 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.
  • In Selector, doubleclicking an object switches Inkscape to the corresponding tool (Node tool for paths, the corresponding shape tools for shapes, Text tool for text objects). Doubleclicking a group enters that group (i.e. makes it the temporary current layer); doubleclicking on an empty space returns to the parent layer.


  • In the Node tool:
    • Ctrl+click on a node handle retracts that handle back to its node.
    • 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.
    • If a node does not show one or both handles (i.e. they are retracted), you can drag a handle out by dragging away from the node with Shift. 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.
    • When several nodes are selected, pressing < or > scales, [ or ] rotates the selected nodes as if they were an “object”, 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 Alt with these keys gives pixel-sized movement depending on zoom, the same as in Selector. Also, you can press h or v to flip the selected nodes horizontally or vertically.
    • When one node is selected, pressing <, >, [, ] with left or right Ctrl or Alt now affects the handle towards the visually left or right adjacent node, correspondingly (and not the handle towards the previous or next node on the path, as before).
    • The statusbar 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.
    • Pressing Ctrl+A 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 any nodes before pressing Ctrl+A, or use Select all in all subpaths (Ctrl+Alt+A) in Node tool (same key as Select all in all layers in Selector). This change has no effect for paths with single subpath.
    • 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.
  • In Pen and Pencil tools:
    • What was previously called the “add mode” is now always on in Pen and Pencil tools, i.e. the selected path always displays the end marks. This makes it easy to continue or close the selected path. The ‘a’ key to toggle the add mode is removed.
    • If you start drawing outside the end marks 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 add to the selected path, you have to start drawing either from one of its end marks to continue it, or in arbitrary place but with Shift pressed to create a new unconnected subpath.
    • If you start drawing from one end mark of a path and arrive at the other end mark, the path gets closed automatically (the end marks disappear).
  • In the Dropper tool:
    • The “pick visible/pick with alpha” switch, previously in the tool preferences, is now moved to the Controls panel of the tool.
    • Alt+click picks the inverse of the color at point (works with dragging and Shift too).

Color improvements

  • Finally we have a Swatches dialog (Ctrl+Shift+W). 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 share/palettes.
  • In the color selector widget, the HSV tab (Hue, Saturation, Value) is replaced by HSL (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:
    • 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 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 numeric entry fields for CMYK channels now work in the range 0..100 instead of 0..255.

Miscellaneous new functionality

  • New layer commands: Move selection to layer above (Shift+PgUp) and Move selection to layer below (Shift+PgDn) will move the selection into the layer above or below the current layer (and make that layer current).
  • 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.
  • After selecting an object, you can now open the Icon Preview dialog (View > Icon Preview) to see how an object will look when rendered to various common icon sizes.
  • As a debugging aid, a memory statistics dialog (Help > About Memory) is now available for the morbidly curious.
  • The Transformation Dialog now allows numerically setting the skew on selected objects (previously you could only move, rotate, and scale numerically).

Miscellaneous usability

  • The Open File dialog can now select (with Shift) and open many files at once.
  • There are many cosmetic improvements in the Fill & Stroke 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).
  • All controls in Fill & Stroke, Object Properties, and Export dialogs now have hot keys.
  • In Document Preferences, there’s a checkbox to enable or disable showing the page shadow. To make this change permanent for all newly created documents, change your default template (share/templates/default.svg).
  • Grid and guide snapping improvements:
    • In the “snap points” mode, a text object now snaps its baseline anchor (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.
    • 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.
  • When skewing an object, Ctrl will snap the skew angle to standard 15-degree increments (settable in preferences). The statusbar displays the skew angle when skewing.
  • 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.

Packaging, documentation, examples

  • The new About screen (Help > About) for 0.42 was selected by popular vote from 42 wonderful submissions by Inkscape artists.
  • Inkscape now fully supports Mac OS X. 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.
  • All Inkscape tutorials are now in DocBook XML format (with SVG illustrations in separate files). From this single 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 inkscape.org/doc. The DocBook sources and stylesheets are in the doc-docbook module in our CVS.
  • Inkscape now informs users of the rights granted by the license (GNU GPL) with the new Help menu item, “Modifying or Redistributing Inkscape”. The license is loaded from an SVG file.
  • 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 autopackage.org.

Translations

  • The default template (share/templates/default.svg) 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.
  • 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.
  • There are new Japanese translations of Basic, Advanced, and Shapes tutorials (in DocBook XML).
  • “Basic Tutorial” translated to Catalan.
  • The Inkscape Windows installer is translated into Catalan, Czech, French, German, Italian and Polish.
  • New Czech, Dutch, Polish and Swedish interface translation added.

SVG/CSS compliance

  • CSS stylesheets: 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.
  • The preserveAspectRatio attribute is now supported for the image element.
  • The word-spacing property is now supported for text.
  • The startOffset attribute and text-anchor now work for textPath.
  • 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.
  • SVG_Test_Suite_Compliance documents our progress in passing the W3C SVG 1.1 Test Suite. At 0.42, we pass 69 tests completely and 25 partially. There’s also a new tool, svg_rendertest available from the Inkscape web site, which can automatically test SVG rendering by Inkscape and other renderers.

Important bugfixes

  • Several resource leaks are patched that caused resource exhausting and eventually freezing on Windows.
  • Memory leaking in the renderer has been reduced significantly.
  • The annoying “menus under dialogs” bug on Mac OSX is 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.
  • 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 share/examples/i18n.svg 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 <defs> 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

  • Converting Inkscape code to gtkmm has seen some progress:
    • 10 gtkmm widgets have been created.
    • A DialogManager has been introduced to handle allocation of dialogs.
    • 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 spread 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).
  • 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); CJK-style vertical text has a number of problems; “non-breaking” space and similar characters don’t behave correctly; and similar.
  • In Gnome, dialogs are hidden behind the document window when you go into full screen mode (this is presumed to be a Gnome problem).

Previous releases