Inkscape Release Notes
----------------------
Please see the Inkscape website for the latest news about the project,
or the ChangeLog for further details about releases. This file contains 
the release notes for the current release.


                                 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.

Previous releases

     * http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes039
     * http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes038
     * http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes037
     * http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes036
     * http://inkscape.org/cgi-bin/wiki.pl?ReleaseNotes035

