Release notes/0.40

From Inkscape Wiki
Jump to navigation Jump to search

Inkscape 0.40

In brief

This release has been slow in coming, but it was worth the wait: Inkscape 0.40 brings a huge amount of new features, usability enhancements, documentation, and bugfixes. The three most important new features are:

  • Layers are almost complete in this version; this fills a major gap in functionality, making Inkscape usable for complex artwork.
  • The Potrace bitmap tracer is incorporated into Inkscape - now vectorizing bitmaps is easy and interactive. A matching command, "Create bitmap copy", converts from any object to bitmap.
  • The text-on-path implementation is complete and very flexible. Both the text and the path remain fully editable and transformable.

Many other improvements deserve a brief mention:

  • Features: new document templates, improved freehand and calligraphy tools, randomized stars, POV export, some clipboard integration, experimental flowText implementation, new command-line options, better PNG and EPS export, and more.
  • Usability: new file dialogs, current style for new objects, select under & drag selected with Alt, loads of new statusbar tips, new shape controls, better default gradients, and more.
  • Documentation: 3 new tutorials (Shapes, Tracing, Calligraphy), many translations added and updated.
  • Bugfixes: too many to mention (in total, 228 bugs closed in the tracker since 0.39), including several important SVG compatibility fixes.


New functionality

  • Support for layers is the most important new feature which is almost complete in this version:
    • The active group selector in the statusbar has revealed its true identity as the quick layer selector, complete with toggle buttons for locking and hiding the current layer. Unfortunately a proper layer dialog didn't make it into the release (we've taken long enough already), but we're going to rectify this in 0.41 by implementing a complete traditional layers dialog.
    • The new Layer menu has commands for creating, renaming, and deleting layers, as well as for moving the current layer up or down in the z-order of sibling layers (changing the z-order of an object moves it only within its parent group or layer, as before). Again, more commands will be added in 0.41.
    • Hiding and locking of objects and layers is fully implemented. Hiding is done via the display CSS property, so objects hidden in Inkscape will be hidden in any compliant SVG renderer. Locking prevents an object from being selected using any of the tools. If you select an object through other means (for example, with the Find dialog or the XML editor), you can change it as usual. Hiding or locking groups or layers applies to all objects within them.
    • Layers are implemented as SVG groups (the <g> element) with inkscape:groupmode="layer". Selection and other commands will treat them as layers rather than groups. The possibility (introduced in 0.39) to temporarily enter any group as if it were a layer remains; such a temporary layer is then shown in the layer selector and behaves the same as a normal layer with respect to selection commands. Normal (non-temporary) layers can also be nested within one another.
    • All the drawing tools as well as Paste refuse to create new objects if the current layer is locked or hidden, with an appropriate statusbar message.
    • The Ctrl+A (Select All), Tab, and Shift+Tab selection shortcuts by default work only in the current layer (not going into either parent or children layers) and ignore locked and hidden objects. This can be changed in Preferences (the Selecting tab).
    • The Find dialog can optionally limit the search to the current layer and include locked and hidden objects in the search (they are excluded by default).
    • Selecting an object makes that object's layer current. This behavior is somewhat experimental (most other vector editors do not do this), but in our testing so far, it is very convenient. Just by selecting an object you immediately get into its "local context" (i.e. its layer or sublayer) where you can add objects, select all within the layer, lock or hide the layer (e.g. to reach another layer beneath it), etc.
  • Text on path: Inkscape now provides a complete implementation of SVG <textPath> element. Select a text object and a path, shape, or offset and do the Text > Put on Path command to make the text follow the path. Both text and path remain fully editable (including kerns and letterspacing in text). Several texts can be put to one path. When you move the path, its attached texts move with it; however, you can move the text away from its path or transform it without losing the link. The Text > Put on Path command converts a text-on-path into regular text.
  • Inkscape can do bitmap tracing (Shift+Alt+B) from the GUI. The only tracer included with the program so far is Potrace (http://potrace.sf.net) but we may add other tracers in the future. Potrace works very well for black-and-white images; in its dialog, several tracing options (brightness threshold, edge detection, quantization) are available, as well as an interactive preview. See the new Tracing tutorial in Help > Tutorials for details.
  • The new command, Make a Bitmap Copy (Alt+B), exports a bitmap of the selected objects (with all other objects hidden), saves it as a PNG file in the same directory as the document, and imports it back into the document.
    • The resolution or size of the created bitmaps can be set in preferences.xml (no GUI yet). In <group id="createbitmap">, specifying minsize= gives the minimum size of the generated bitmap in pixels (regardless of the object size), while resolution= sets the constant resolution (different pixel size for different object sizes).
    • Optionally, the exported bitmap can be processed by an external filter before it is imported. One such filter included with Inkscape is inkscape-shadow.sh in share/extensions/ which makes a grayscale blurred shadow for an object (requires Imagemagick). See inkscape-shadow.README for details.
  • An SVG document can be exported in POV format for the POV-Ray raytracer (http://www.povray.org). Each shape or text is exported as a prism; color and transparency are preserved, stroke is ignored. An example file, share/examples/istest.pov, demonstrates how to import an Inkscape-exported POV and set up camera, lights, textures, etc. for rendering.
  • The new Randomization control for the Star tool lets you set the amount of random displacement of the star's tips and (for rounded stars) curve handles. (Alternatively accessible via Alt+dragging a star handle on canvas.) A little randomization makes a star less regular, more humane, often funny; strong randomization is an exciting way to obtain a variety of crazily unpredictable shapes. Unleash your imagination!
  • The old limits for the number of star tips (was 32) and spiral turns (was 20) have been increased to 1024.
  • The new command, Vacuum Defs in File menu, removes unused stuff from the document's <defs>.
  • The new command, Remove Manual Kerns in Text menu lets you quickly clear a text object (including text on path) of any horizontal or vertical kerns you've set by hand.
  • The pencil tool now draws more smoothly.
  • The calligraphic pen tool received a number of improvements that make it capable of some real calligraphy (see the new Calligraphy tutorial for details):
    • The new Thinning control tells how the width of the stroke depends on velocity. It can take values from -1 to 1; the value of 0 gives a constant width pen, values greater than 0 make fast strokes thinner, values less than 0 make fast strokes broader.
    • The new Fixation control defines how much the pen angle depends on the stroke direction. At 0, the pen is always perpendicular to the stroke (this gives uniform stroke width); at 1, the pen is fixed at the angle set in the Angle control (this gives maximum width contrast depending on stroke direction, just as with a real flat calligraphic pen). (Previously, this parameter was set to 0 and not changeable, so Angle had no effect whatsoever.)
    • You can adjust width and angle of the pen from the keyboard (left/right arrow keys for width, up/down for angle). These shortcuts work even while you draw a stroke.
  • Inkscape finally makes some use of the system clipboard (more clipboard integration to follow):
    • Copying text objects into the system clipboard (Ctrl+C), as well as pasting into the text object being edited (Ctrl+V in Text tool), now work.
    • In dropper tool, you can copy the color under cursor to the system clipboard by Ctrl+C.
  • New documents created when you start Inkscape or use File > New are now based on templates. If you want your new documents to have different initial zoom, window size, page background or border, metadata, etc., just save a document with the desired settings (it may contain some objects, too) in your share/templates directory (typically /usr/local/inkscape/share/templates on Linux, $INKSCAPE_DIR\share\templates on Windows). The file named default.svg in that directory will be the default new document on program start; other documents will be listed in the New submenu of the File menu. Inkscape comes with several example templates with different page sizes and other settings.
  • The Align dialog (renamed Layout) can now align and distribute nodes both horizontally and vertically when Inkscape has the Node tool active and some path nodes are selected.
  • The Object Properties dialog has facilities for editing per-object metadata: freeform Label (inkscape:label) as well as Title and Description (not enabled yet). The generally evil and not properly working anyway "Printable" checkbox is removed, as well as the disfunctional "Active". The "Hide" and "Lock" checkboxes are fully functional, allowing you to set sensitivity and visibility on a per-object basis.
  • There's a preliminary implementation of flowing text from SVG 1.2 (the <flowRoot> and friends, see http://www.w3.org/TR/SVG12/flow.html). This allows you to put text into a shape so that the lines are wrapped automatically when you change the text or the shape. Chained shapes (text which did not fit into one shape is continued in the next one) and exclusion shapes (text flows around an exclusion shape) are possible. There's a very basic UI allowing you to add flowed text to the selection available in the right click menu; editing the text and exclusion shapes still require manual editing of your SVG with the XML editor (see share/examples/flowtext.svg for an example). The next version will have complete flowing text support with a more convenient UI. Note that flowing text is not compatible with SVG 1.1 renderers; you'll have to convert it to path if you want to view your SVG outside of Inkscape.
  • There is preliminary support for plug-ins (loadable libraries) currently used by the new GIMP gradient plug-in that loads GIMP gradients into Inkscape. Currently plug-ins can be used for import and export into Inkscape, and integrate fully into the dialogs and menus along with other extensions.
  • Improvements in command-line PNG export allow you to easily script exporting parts from complex documents and to better integrate GUI editing with command-line use:
    • You can now specify the background opacity (--export-background-opacity or -y).
    • If no background color (-b) or background opacity (-y) specified, the values from the document (sodipodi:namedview) are used.
    • You can now export an area corresponding to a single object by specifying the ID of the object with the --export-id or -i switch, for example:
      inkscape -e mypath.png -i path966 mydoc.svg
    • When exporting with -i, you can add --export-use-hints or -t to tell Inkscape to use the filename and DPI export hints stored for that object when it was last exported from the GUI. For example,
      inkscape -i path966 -t mydoc.svg
will export path966 to the PNG file with the same filename and resolution as you used for exporting it from within Inkscape, so you don't need to specify them on the command line.
      • With -i, you can also specify -j (--export-id-only) which tells Inkscape to show only the specified object in the export and hide all others (even if they overlay the specified object).


Interface and usability

  • New open/save/import dialogs (based on GTK 2.4 but better) have a preview pane, displaying SVG and bitmap files, and a bookmarks pane allowing you to remember your project directories and visit them with a single click. The dialogs are now the same across all platforms.
  • All object-creating tools can use the current style for new objects. The current style is the style that you last applied to an object (when changing its fill, stroke, transparency, etc). For example, after you paint some object black, new shapes you create will be black too.
    • Alternatively, a tool can use its own style for new objects, which is not affected by document editing. The Preferences dialog lets you choose between using the current style (shape tools by default) and the tool's own style (text, pen, pencil, and calligraphy by default) for any tool, as well as to set the style of a tool from current selection.
    • The "Apply to" list in the Fill & Stroke dialog is removed; this dialog now always sets the style of the selection.
  • Statusbar improvements:
    • Each knot (control handle, node, node handle, etc.) displays a tip in the statusbar when hovered over by the mouse, explaining the function of the knot and its applicable keyboard modifiers.
    • Pressing Alt, Ctrl, or Shift explains the tool-specific functions of these modifiers in the statusbar.
    • Most statusbar messages use bold face to highlight key words and phrases for faster perception and better understanding.
    • Additional details and tips are added to many messages, and terminology is made consistent.
  • XML editor improvements:
    • There is now a statusbar at the bottom of the XML editor which provides tips and warning messages as you edit the tree.
    • Selecting an attribute moves keyboard focus to the attribute entry pane; pressing Ctrl+Enter in that pane sets the new value.
    • The editing areas for attribute values and text nodes now autowrap their contents, making it much easier to review and edit long values.
  • More convenient shapes (now documented in painstaking detail in the new Shapes tutorial):
    • The Rounded and Randomized fields in the star controls panel are precise, but not very convenient. Now you can round a star interactively by Shift+dragging a star handle on the canvas, or adjust a star's randomization level by Alt+dragging a handle. Correspondingly, Shift+click on a handle zeroes roundedness, Alt+click removes randomization; additionally, Ctrl+click removes any skew straightening the star's tips.
    • With spirals, dragging the outer handle now rolls/unrolls the spiral from the outside, similar to the inner handle. To roll/unroll with fixed radius, drag the outer handle with Alt; to scale or rotate the spiral, drag it with Shift. Alt+dragging the inner handle adjusts the spiral divergence; Alt+click zeroes divergence; Shift+click on the inner handle zeroes inner radius (moves the handle to the center).
    • Rectangles now have two resize handles in the opposite corners (in addition to the rounding handles in the third corner). Dragging the resize handles with Ctrl snaps the rect so that either its width, height, or proportion is preserved. Shift+clicking a rounding handle removes rounding; Ctrl+clicking makes rounding radii equal.
    • Ellipses have two additional handles at the top and left extremities for resizing the ellipse around its center. Drag them with Ctrl or Ctrl+click them to make a circle. Shift+click the arc/segment handles to make the ellipse whole.
    • The controls panels for the shape tools (Rectangle, Arc, Star, Spiral) display either New: or Change: labels depending on whether their controls will apply to a newly created object or to the currently selected object(s) of the corresponding type.
  • Double-clicking a tool button calls up the Preferences dialog open on the page of that tool.
  • The Preferences dialog remembers and reopens the page that was active the last time you used it.
  • The box selection cue is now the default on new installations.
  • For easier navigation with the grid, every fifth grid line is shown darker by default (changeable in Document Preferences).
  • Debugging output can now be redirected from console to the new Messages window (open via a command in the View menu). This redirection is on by default on Windows.
  • Select Under: in Selector, clicking with Alt selects the object at cursor which is below (in z-order) the currently selected object at cursor; if the bottom object is reached, Alt+click again selects the top object. Thus, several Alt+clicks will cycle selection through the z-order stack at the click point. Combining Alt with Ctrl ("select in groups") and Shift ("add to selection") works, too. Note that on Linux, many window managers steal Alt+click by default; reconfigure your WM so you can use Alt+click in Inkscape.
  • Drag Selected: in Selector, dragging with Alt moves the currently selected object(s) no matter where you start the drag, unlike regular drag that first selects the object under cursor. This is convenient for dragging objects that are behind other objects in z-order. On Linux, you may need to disable dragging the window with Alt in your WM if you want to use "drag selected".
  • When you switch an object to gradient fill or stroke, the new gradient is created with that object's previous fill or stroke color going from 1 to 0 opacity (instead of the hardcoded black-to-white fully opaque gradient as before). New objects do not share gradients now, except when you switch to gradient multiple selected objects with the same fill color (you can also explicitly set two or more objects to use the same gradient by selecting it in the list in the Fill and Stroke dialog, or by pasting style from one object to another). Newly created gradients are automatically garbage-collected when no longer used; however, when you edit a gradient in the Gradient Editor, it becomes sticky and can only be removed, when not in use, by the Vacuum Defs command.
  • The master opacity slider is moved from Object Properties to Fill and Stroke and can now work on multiple selected objects. It is now more convenient to adjust the transparency of objects with gradients or patterns, as well as groups (the equivalent of "group transparency" in Illustrator) and clones.
  • The four preferences that control whether or not to scale stroke widths, scale rectangle corners, transform gradient fills, and transform pattern fills with the object, are now represented by four toggle buttons in the Selector controls panel for easy access.
  • If a node has straight line path segments on one or both sides, Ctrl+Alt+dragging that node in the node tool moves it along the direction(s) of these straight line(s) and their perpendiculars. This is an easy way to change the length of a straight line without changing its angle.
  • The Text & Font dialog takes less space and is a bit more convenient to use.

Documentation, translations, examples

  • Three new tutorials added:
    • The Shapes tutorial has detailed descriptions of shape tools and shape types, as well as many examples and creative tips.
    • The Calligraphy tutorial describes in detail the capabilities of the improved Calligraphy pen tool. A brief history of the art, parameters of the tool, useful tips, and many examples from simple strokes to complete lettering projects.
    • The Tracing tutorial explains all the options and parameters of the Potrace interface for bitmap tracing, with tips and examples.
  • Updated the "Elements and Principles of Design" tutorial with new graphics and used latest features of Inkscape.
  • Updated the "Tips and Tricks" and "Basic" tutorials with several new sections.
  • Added Norwegian Nynorsk and Slovak interface translations.
  • Updated Brazilian Portuguese, French, German, Hungarian, Japanese, Russian, Slovenian and Spanish interface translations.
  • Added Norwegian Nynorsk translation of "Basic Tutorial".
  • Several new example files added to share/examples.

Important bugfixes

  • SVG compatibility:
    • fill-opacity and stroke-opacity CSS properties are no longer ignored when used with a pattern or gradient fill.
    • Gradients with sharp color boundaries now work properly.
    • Several fixes to marker orientation.
    • rotate(angle,cx,cy) syntax now works in transform attributes.
    • The display CSS property is supported (used for objects and layers visibility). Note that this way of controlling visibility is compatible with any conformant SVG renderers but not with Sodipodi which (in CVS version) uses its own extension attribute for visibility.
  • Gradients no longer behave weird when a path with gradient fill is transformed. Now gradients either transform with the object or remain unmoved, depending on the user setting (toggle button in selector controls). This setting affects grouped objects too.
  • Fixed several crashes and attempts to open error dialogs (which also result in crashes when Inkscape is run without X) in command-line operations.
  • RDF metadata is no longer written in Plain SVG format.
  • RDF keyword lists are stored more properly.
  • Though we don't yet properly support <switch>, it is now treated as a simple group instead of being silently ignored. This allows Inkscape to open SVG files exported from Adobe Illustrator.
  • Zoom with ctrl+mousewheel now works correctly.
  • The Select All command works much faster when there are many objects.
  • Several crashes that happened on copying objects with gradients or patterns are fixed.
  • Exporting text to PS/EPS without converting to curves now works reliably (including text-on-path and flowing text).

Internal progress

  • Text code has undergone a major rewrite. Each text object now holds instances of two classes: flow_src is homologic to the source XML tree, while flow_res represents the visible text flow separated into paragraphs and lines. The complex algorithm converting from flow_src to flow_res lets us use the same API for all kinds of text objects - regular text, text on path, flowed text. The monstrous SPText is now much smaller and simpler. The SPChars layer is eliminated. As one of the results, text rendering is accelerated by at least 10%.
  • Adopting the Boehm garbage collector (libgc) allowed us to simplify code in many places, and permitted more data to be shared without copying.
  • Gradient code is much simplified: gradients don't have to be in a special order in <defs> to work (thanks to the order-independent URIReference), no attempts are made to reuse orphan gradients (they are garbage-collected anyway), several old bugs are fixed.
  • Gradients that use objectBoundingBox units are converted to userSpaceOnUse when the object is transformed. This makes it possible to transform the gradient by the same matrix and thus ensure that the gradient remains in sync with its object. New gradients are created with userSpaceOnUse units.

Known issues

  • If an object has a gradient fill and a fill-opacity property less than 1.0 in its style, previously Inkscape ignored the fill-opacity. This was wrong. Now it correctly combines them, i.e. makes the gradient (more) transparent if the object using it has a fill-opacity less than 1.0. If you find out that 0.40 renders your gradients more transparent than before, simply remove fill-opacity from the style= of the objects that use semi-transparent gradients to fix them. In new files, fill-opacity is removed automatically when you apply a gradient.
  • There are two pretty serious bugs on Windows (bugs 1073459 and 1070816 in the tracker) that were reported late and could not be fixed for the release. It has been conjectured that the source of at least one of the problems is not in Inkscape but in a library we use. We're working to resolve these problems; an updated Windows build will be available as soon as they are fixed.
  • The layer selector at the bottom of the window is very limited. A "proper" layers dialog is slated for our next release.
  • You cannot put text on a rectangle or use markers with a rectangle without converting it to path first. This will be fixed in a future version.
  • Extensions that rely on external programs do not work on Windows.
  • Inkscape users running Suse 9.x may find installing either from source or the supplied RPM difficult. First, start by installing the updated GNOME 2.6 from the Suse supplementary GNOME download location. Then you will need third party gtkmm2 2.4 RPMs to support Inkscape 0.40+. The gtkmm2 packages shipped with Suse 9.1 and 9.2 are only gtkmm2 2.2.x versions, but Inkscape requires gtkmm2 2.4+. Resolving the dependencies can be a bit difficult, however using the updated gtkmm2 2.4.x RPMs from http://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.1-i386/RPMS.usr-local-bin/ will work fine. In addition, Inkscape uses libsigc++2. You are recommended to install the libsigc++2-2.0.6 RPM from the same repo.
    Optionally, you can install apt and the let it resolve your dependencies automatically. You can also try one of our semi-static builds that only require gtk 2.4 but not gtkmm, sigc++, or libgc.

Other releases