The focus of this release is on the exciting new features sponsored by Google via their Summer of Code program. However, we have quite a bunch of other stuff too. Here are the highlights:
- Connectors: A new Connector tool implements creation, editing, and autorouting (object-avoiding) of connector lines between objects. Indispensable for diagramming. (A Google SoC project.)
- Inkboard collaborative editing: You can now connect to other Inkscape users over the Net and edit a shared document together, watching others' changes and making yours! (A Google SoC project.)
- Pressure and tilt sensitivity: the Calligraphy tool can now use a tablet pen with pressure/tilt support to vary the width and angle of the calligraphic stroke.
- Better node editing: You can freely drag/bend/stretch a Bezier curve by any point (not only by a node), as well as add a new node at any point on the curve.
- New extensions for envelope distortion, whirling, and adding nodes.
- Improved precision, expanded limits, many usability improvements and bugfixes.
Tavmjong Bah has updated his online book, <a href="http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php">A Guide to Inkscape</a>, to cover the Inkscape 0.43 features. This guide is not included with the Inkscape release. Users are encouraged to read the guide in addition to these release notes and the help included with Inkscape.
- Inkscape now includes preliminary support for connectors. Connectors are lines drawn between objects, that stay connected to the objects as these objects are manipulated. Any object may have a "connector-avoid" property, which, when set, causes connectors to automatically route around the object.
- The Connector tool (Ctrl+F2 or the o key) is a new way of creating and rerouting connectors, as well as marking objects "avoided" for the purpose of routing connectors.
- A new connector can be drawn by clicking and dragging from any point on the canvas. The connector is finalized when the mouse is released. Connectors can also be created with two clicks, rather than click-and-drag, if this is preferred. In this case, click once on an empty point on the canvas to begin drawing the connector, then move the mouse to the new connector's target point and then click again to finalize the connector. Single clicking on a canvas object selects/deselects that object, just as in other tools.
- Connection point handles are shown while the mouse cursor is hovering over a non-connector object in the connector tool. Currently they are shown only at the center of objects. When creating a connector, if the connector is started or ended over a connection point then the connector will be attached to that object. From then on the connector will be automatically rerouted whenever the attached object is moved.
- Connectors attached to objects are currently drawn to the bounding box of those objects. It is planned that they will be drawn instead to the edges of objects.
- A selected connector will show two endpoint handles. By clicking and dragging these, the connector can be rerouted and attached/detached from objects.
- The Make connectors avoid selected objects button marks all objects in the selection as "avoided", causing all current and future connectors to automatically avoid these objects.
- The Make connectors ignore selected objects button marks all objects in the selection as "ignored", causing all current and future connectors to completely ignore these objects. This is the default for all canvas items, i.e., no objects are automatically routed around by default.
A first release of the Inkboard collaborative editing system (also known as a "white board") is present in this version of Inkscape.
- Inkboard must be enabled at compile time by passing
configurescript: Inkboard has known bugs, and may present security issues.
- Inkboard uses the XMPP protocol (used by Jabber) to link together Inkscape clients in a shared document session. Therefore, if you have a Jabber account, you can use Inkboard. (There are some exceptions, which are listed below in the "Known issues" section.) Inkboard uses the Loudmouth library for Jabber connectivity; versions 0.17.2 and above of the Loudmouth library are known to work.
- Inkboard sessions may occur between two users or a group of users in a chatroom setting.
- You must first connect to a Jabber server before sharing a document. To do this, go to Whiteboard -> Connect to Jabber server. You will be prompted to enter a server name, your username, and password. You may specify a specific port to connect on, and whether or not you would like to connect via SSL.
- After connecting, you may establish a session with another user or a chatroom. To connect to another user, go to Whiteboard -> Share with user. Inkboard can import your Jabber contact list, and will present a list of online contacts to you. You may select any contact in the contact list, or enter a Jabber ID to connect to.
- Similarly, you can establish a connection with a chatroom by going to Whiteboard -> Share with chatroom.
- If you are contacted by another user, Inkscape will present a dialog telling you that you have received an invitation. The dialog contains the Jabber ID of the user contacting you, and offers you three choices: decline the invitation, accept the invitation, or accept the invitation in a new window.
- Inkboard can record a session's contents for playback at a later time.
- If you are establishing a session, click the Write session file checkbox in the share with user dialog to enable session recording. You will need to provide the name of a file to which the session contents can be written.
- If you are accepting a session invitation, click the Write session file checkbox in the invitation dialog to enable session recording. You will need to provide the name of a file to which the session contents can be written.
- To play back a session, go to Whiteboard -> Open session file.
- The Whiteboard -> Dump XML tracker menu item is intended for debugging purposes only.
Pressure and tilt sensitivity
Support for extended input devices has been added.
- The Calligraphy tool now has optional pressure and tilt support from an input device such as a tablet. Pressure can be used to alter the width of the pen and tilt can be used to alter the angle of the pen's nib.
- A standard input device dialog has been added (in File menu). Input device settings are saved to and loaded from the preferences.
- Clicking on a selected path selects the two nodes closest to the click point. Shift+click adds or removes these two nodes to the node selection (when only one path is selected; otherwise Shift+click works as in Selector).
- Double click or Ctrl+Alt+click anywhere on the selected path (even if it is under other objects) creates a new node at the click point, without changing the shape of the path. (Previously, you could only add a node in the middle of a segment by using a toolbar button.)
- You can now edit the selected path (even if it's under other objects) by dragging any curve point, not only node(s) as before. In many cases it's a much more convenient way to reshape paths than anything available before. When you drag a curve close enough to one of the nodes, only that node's handle(s) are affected; if you drag a point midway between two nodes, both nodes' handles are adjusted.
- When mouse is over a draggable path, the cursor is changed to include a hand.
- As in Selector, if you press Shift before starting to drag, you always get a node selection rubberband rectangle (even if you start on a path [but not a node!]).
- After duplicating (Shift+D) an endnode, the selected node is always the new endnode, so you can move it at once.
- Selected nodes are displayed a little larger than non-selected ones.
- Add Nodes: Adds nodes to the selected paths. Each segment of the selected path is subdivided into ceil(Length/Max) equal length segments. Lengths are measured in SVG User Units calculated from the path data and does not take into account any transforms.
- Whirl: Twists the selected paths around the specified center point.
- Summer's Night: Linearly distorts a path into the destination quadrilateral. The destination quadrilateral is specified by a four node path (closed or not). To use, draw and position a four node path. Select the four node path first and then add to selection the path you wish to distort. The original position of the four nodes is considered to be clockwise around the bounding box of the path to distort beginning in the upper left corner.
- The Wavy extension is renamed to Function Plotter and got many fixes and improvements. Importantly, now you don't have to provide an analytic formula for the derivative; instead, check the "Calculate the first derivative numerically" checkbox and it will itself calculate the angle at each node. In the function/derivative formulas, you can use functions from the <a href="http://docs.python.org/lib/module-math.html">math</a> and <a href="http://docs.python.org/lib/module-random.html">random</a> Python modules. As before, you need to have a rectangle selected before calling this extension.
- Development continues on SVGSlice but it has not yet been fully integrated into Inkscape. Please visit <a href="http://www.digitalunleashed.com/giving.php">Digital Unleashed</a> for details and downloads.
More new functionality
- A separate project, the Open Clip Art Library Browser provides an easy way to browse local and remote clipart collections and insert clipart into Inkscape. Please visit http://www.python.org/pypi/clipartbrowser/0.41 for details and downloads. (A Google SoC project.)
- A separate utility has been developed to convert between DXF and SVG formats. Please visit http://sourceforge.net/projects/dxf-svg-convert for details and downloads. (A Google SoC project.)
- Improved support for viewBox: If the root <svg> element of your document has width/height attributes set in percentage units and there's a viewBox on that element, then:
- The canvas size is set to the value of the viewBox attribute.
- Changing the canvas size in Document Preferences sets the viewBox, without touching the width/height values.
- This does not affect regular documents created in Inkscape, but makes it easier to edit other SVG files that use viewBox.
- The new command line parameter,
--export-area-snap, used with bitmap export to snap the export area outwards to the nearest integer SVG user unit (px) values. If you are using the default export resolution of 90dpi and your graphics are pixel-snapped to minimize antialiasing, this switch allows you to preserve this alignment even if you are exporting an area (for example, with --export-id or --export-area-drawing) which is itself not pixel-aligned.
- When saving as Postscript, you now have the option to convert or not convert texts to paths (previously only available for EPS export).
Interface and usability
- The Icon Preview dialog has been improved. A toggle has been added to switch between previewing the entire document or just the current selection. A larger 128x128 size has been added to the defaults. The sizes are now read from the preferences file and can be customized.
- Rectangles and ellipses now use different handle shapes, so it's much easier to see which handle does what. The two square handles change the size of the object, while the two round handles adjust the rounding corners (in rectangles) and arc/segment ends (in ellipses).
- The controls for the Rectangle tool now include W and H fields for setting the width/height of selected rectangle(s) numerically.
- In the controls of Rectangle and Ellipse tools, the "Not rounded" and "Make whole" buttons are now grayed out when the selected object cannot use the corresponding function (i.e. when a rectangle is already not rounded and the ellipse is already whole, which are the defaults).
- When editing text with the Text tool, the keypad + and - keys type the corresponding characters if NumLock is on (otherwise they zoom in and out as before). [Still does not work on Windows.]
- In the Text tool, Ctrl+Up and Ctrl+Down now move one paragraph up or down correspondingly.
- The Calligraphic tool, in addition to the Ctrl+F6 shortcut, has a new one-letter shortcut, `c'.
- The Pen, Pencil, and Calligraphy tools finally have mouse cursors of their own.
- The canvas width/height fields in Document Preferences are never grayed out. Instead, the menu of the canvas sizes scrolls itself to "Custom" or to an appropriate standard size as you edit width/height.
- Rectangle editing handles now snap to grid/guides [snapping for other shapes' handles is expected to come in subsequent releases].
- The pattern move handle is restricted to horizontal/vertical when Ctrl is pressed.
- In the Selector, dragging the rotation center handle snaps to the edges and central axes of the selection's bounding box.
- In the Pen tool, while you are drawing a path, the statusbar displays the distance and angle of the current mouse point from the last created node of the path. This makes it easy to create a path from the given lengths and angles of linear segments. When you are dragging to create a curve handle, the statusbar also displays the length and the angle of the handle.
- A new preference option, Compass-like angle display (in the Steps tab), allows you to have absolute angles specified in a compass notation (0 at north, 0 to 360 range, increasing clockwise) instead of the default trigonometric notation (0 at east, -180 to 180 range, increasing counterclockwise). This affects the statusbar angle display for path segments and the handles in Pen and Node tools.
- The Pen and Pencil tools now display helpful statusbar hints when the mouse is over one of the end anchors of the selected path.
- The precision of most editable length fields is increased from 0.01 to 0.001.
- The minimum zoom is extended from 4% to 1%.
- Work has begun on menu sensitivity and configurability, but has been disabled in the release.
Packaging, documentation, examples
- The windows installer has now a modular structure that allows the selection of separate features such as examples, tutorials, or translations. All options are supported for a silent installation.
- Windows packages now contain the release notes (NEWS file), authors and translators lists, the README file, the GPL and the LGPL license files.
- The Inkscape man page is updated with additional examples.
- The About dialog now more closely resembles the stock Gtk About dialog. A full list of authors and translators, as well as the license are now viewable.
- The MacOS X package now includes interface translations and reads the user language setting, as specified in System Preferences, to use the corresponding translation language.
- Many interface and tutorial translations have been updated.
- A systematic error when scaling objects with stroke via the Selector controls panel (W and H fields) is fixed.
- In stroke dash patterns in CSS, comma separators were erroneously replaced by spaces upon writing the document. For now, Inkscape will still be capable of reading both space-separated and comma-separated lists (for compatibility with old files), but it now always writes correct comma-separated lists on output.
- Due to a bug, Inkscape tended to replace relative paths to embedded images by absolute, which made them fail after moving a document to another computer; this is fixed.
- The precision of most boolean operations and offsets is improved, especially noticeably for small paths.
- In text on path, in some cases letters were distributed unevenly along a curve; this is now fixed.
- Searching by text in the Find dialog (Ctrl+F) was broken, now fixed.
- Some of the stock markers were missing in the marker menus in the Fill & Stroke dialog.
- The bounding box of a stroke with markers now includes the markers.
- Source documentation: the big goal is to have a brief description for classes and most functions in every source file; this now holds for more than 100 files of the 1350 files in the source code. The doxygen index file now shows many useful links to external documentation and a categorization of main directory files which should be useful for beginners in particular.
- Removed trailing fractional zeros in SVG for cleaner and more compact markup.
- C++ Encapsulation: the View class hierarchy has been reimplemented in C++, after separating the widget classes from each class. The number of dependencies on the central file desktop.h (about 100) was reduced by half.
Windows 95/98/ME support
- Due to issues in GTK 2.8 beyond our control this version of Inkscape will not work on Windows 95/98/ME. Please do not send us crash reports from those platforms. We hope to be able to resume support for these platforms in the future, but no specific committments can be made at this point.
Problems on Linux under KDE
- SuSE, Fedora Core 4: Inkscape and other GTK programs are known to crash if the KDE Baghira theme and the package gtk_qt_engine are installed. If you experience Inkscape crashes on KDE, please try to install a different theme from Baghira, or uninstall the gtk_qt_engine package from your system.
- Kubuntu: For similar reasons, Inkscape can crash on Kubuntu Breezy when, at the same time, the gtk2-engines-smooth package is installed. Removing it resolves the problem. Both problems also affect older versions of Inkscape.
Pressure and tilt sensitivity
- Pressure and tilt sensitivity do not currently work on MacOS X, due to a limitation of the MacOS X version of X11.
- There are known issues with the current version of the X.org server not releasing events on extended devices that use pressure sensitivity. What that translates to is you can start a stroke, but when you lift your pen, the stroke won't end (and will just continue when you put your pen back on the tablet). This seem to be linked to the usage of /dev/psaux for the mouse instead of /dev/input/mouseXX, see http://linuxwacom.sourceforge.net/index.php/howto/mouse1)
- The current version of GTK for Windows has a bug that affects tilt sensitivity.
- Imported bitmaps are not transmitted to other users in a whiteboard session.
- At present, Inkboard relies on Loudmouth to provide Jabber connectivity, which means that it is limited to Linux builds of Inkscape. Inkboard is currently being redesigned to use a cross-platform Jabber client; this redesign will be present in a future release.
- Inkboard cannot yet connect to Google Talk clients. This will be remedied in a future release. (The reason is because it expects the "server" portion of a Jabber ID to be the same as the server that it contacts, which is not the case for the Google Talk network.)
- Inkboard's handling of concurrent modifications is still very rough. Future releases will make this more robust.
See http://sourceforge.net/tracker/?group_id=93438&atid=604306 for a full list of known issues. If you find a bug not listed here, then please report the bug: see instructions at http://inkscape.org/report_bugs.php (the Report Bugs link from http://inkscape.org/).