Release notes/0.39

From Inkscape Wiki
Jump to navigation Jump to search

Inkscape 0.39

In brief

Inkscape 0.39 is a Development Release, which means we focused on architecture changes and adding new features. The official goal for the release was switching to the Pango library for text and font handling. But in addition to that, we've got loads of new and exciting stuff - here are only a few highlights:

  • Pango: smoother text display, auto kerning, better i18n (automatic font substitution, right-to-left text, bi-directional text), less platform dependence
  • New SVG features: markers (aka arrowheads), clones (svg:use), pattern tiles, RDF metadata; many SVG compliance bugfixes
  • New dialogs: Preferences, Find, Metadata
  • Pure convenience: usable dropper, scale switches, Commands bar, more tool controls (including rounded stars), more import formats, more paper sizes, Revert command, edit inside group, better selection cues, spell checking, window layout configurable, streamlined Fill & Stroke, snapping improvements, better rounded corners in rects, path reversing, persistent rotation crosshair, per-object export hints, and much more
  • Internals: speedups, more C++ification, garbage collection, SigC++ signals, wider use of new data structures, extensive cleanup
  • Plus: new documentation, new translations, lots of assorted bugfixes

New functionality

  • Thanks to the Pango library, Inkscape 0.39 supports:
    • Auto kerning: kerning pairs stored in the font now work;
    • Automatic font substitution: you can type in any language using any font, and any glyphs will be displayed automatically, fetched from a substitute font if missing on the current font;
    • Correct editing and display of right-to-left (Hebrew, Arabic) and mixed bidirectional text;
    • Smoother text display: no ugly autohinting gaps, no jumps when adjusting letterspacing or converting to paths.
  • The new Inkscape Preferences dialog (Shift+Ctrl+P) gives access to lots of previously "hidden" options to configure various aspects of the program's behavior.
  • You can now use the drawing tools within existing groups by selecting "Edit group" from the group's context (right click) menu. "Edit root" takes you back out to the top level.
  • Path markers are fully supported. This is an SVG feature that allows to you to attach arbitrary shapes (arrowheads, bullets, faces, whatever) to the start, end, or middle nodes of a path. Inkscape comes with a library of several dozen predefined markers, and you can create your own.
  • The dashed strokes feature is fixed to support arbitrary dash lengths. There are many new dash patterns added to the Stroke Style tab of the Fill & Stroke dialog.
  • The stroke-miterlimit CSS property, setting the maximum length of the miter, is now supported; it can also be adjusted on the Stroke Style tab.
  • The "Scale stroke width" preference is implemented (see the Transforms tab of the Inkscape Preferences dialog). When it's off, scaling objects preserves their stroke widths unchanged; when it's on (the default), stroke widths are scaled by the same proportion.
  • The new Clone command (Alt+D) creates a copy of an object which can be moved, scaled, rotated, or skewed independently, but which updates its shape, fill, stroke, and other properties from the original object when that is changed. The Unlink Clone command (Shift+Alt+D) cuts the link between the clone and its original, while Select Original (Shift+D) lets you find out which object this clone is linked to. Via Inkscape Preferences, you can control the behavior of clones when their original is moved or deleted.
  • The new Tile command (Alt+I) creates a rectangle with tiled pattern fill out of the selection. After that you can resize or reshape the rect, or you can Paste Style (including the pattern) from it to any other object. The Fill and Stroke dialog also lets you select one of the document's patterns for any object. This is an easy way to change the shape of the imported bitmap: Tile it and reshape it using the node tool (also you can set a user preference to always import bitmaps as pattern fills). To extract the tile from a pattern fill, use Untile (Shift+Alt+I).
  • The new Find dialog (Ctrl+F) selects objects by their text content, ID, style, attribute name, or object type (shapes, texts, groups, etc.). The search terms can be combined. You can search either in the entire document or in the current selection (search descends into groups). An exact match is attempted first; if it fails, partial matches are selected if found (e.g. searching for "ff0000" in Style will select all objects that have this color anywhere in their style attribute).
  • The Import command supports all of the bitmap formats that are covered with GdkPixbuf (PNG, JPEG, TIFF, TGA, BMP and more), as well as Skencil/Sketch and Dia (you'll need these programs to be installed for import to work). AI, PS and EPS import has been improved in this version. Still more formats, both bitmap and vector, can be added using the scripting system.
  • The new Revert command in the File menu reloads a document from its last saved copy.
  • In the Document Preferences dialog, you can now select one of the many standard paper sizes in Portrait or Landscape orientations.
  • The text editing box in the Text and Font dialog performs as-you-type spell checking (requires GtkSpell,
  • Gradients, patterns, and markers are culled from the document automatically when no longer needed (but hand-created objects will be spared). This results in leaner, cleaner SVG.
  • You can reverse the direction of selected path(s) either via Path > Reverse or by pressing 'r' in node tool (useful for markers and combining paths).
  • A wild variety of central-symmetric curvilinear shapes, including softly rounded stars and polygons, can be created using the new Roundedness control on the Tool Controls bar for the star tool.
  • Viewing and editing of an SVG image's metadata (Title, Author, License, etc) is possible through the Document properties dialog. This is done via embedded Dublin Core RDF within the SVG.

Interface, usability, bugfixes

  • The per-object selection cues can now be displayed in any tool, so that you can see what is selected at all times. You can switch these cues on or off for each tool separately in the Preferences dialog (the default is on for all tools). Also, the cues can now be displayed either as dashed bounding boxes or as inverse diamond marks in the object's top left corner.
  • The dropper tool now works always (previously it only worked in conjunction with the Fill and Stroke dialog). Click to set the fill color of selection, Shift+click to set the stroke color. Also, dropper can pick either the visible color (without transparency) or the actual object color (including transparency), depending on a preference setting. It also displays the color under cursor in the status bar.
  • A newly opened document is placed in the same window, if the window contains an unchanged empty document.
  • The new Commands bar, between the menu and the Tool Controls bar, has buttons for most frequently used non-tool-specific commands such as Open, Undo, Group, opening dialogs, etc. (It can be hidden if you don't want it, see the next item.)
  • The document window layout is completely configurable. Via the View menu commands, you can show or hide the menu, Commands bar, Tool Controls bar, toolbox, rulers, scrollbars, and the statusbar. These settings are saved across sessions, separately for normal and fullscreen modes.
  • In the selector controls, the W and H fields can now be interlocked so that the selection preserves its height/width ratio when resized. Also, percent (%) is added to the unit menu, so you can easily resize or move your selection by a relative value.
  • The calligraphic and ellipse/arc tools have all their controls in the tool controls bar.
  • The rectangle controls now allow you to set the horizontal and vertical rounded corner radii in absolute units (pt, mm, etc) instead of the radius/halfwidth and radius/halfheight ratios as before. By default, these radii are preserved when you transform the rectangle (controlled by a user preference). In rectangle tool, the selected rectangle has a new handle in the bottom right corner which allows you to resize the selected rectangle without switching to selector. The handles for rounding corners are moved to the top right corner.
  • For a more task oriented menu structure, the Dialogs menu commands are distributed to other menus, and the Dialogs menu is removed.
  • All menu items display their explanations in the statusbar when selected.
  • The Fill and Stroke dialog is made simpler and more usable by removing some obsolete options, shortening labels, using smaller and more descriptive icons, and adding mnemonic hotkeys and tooltips.
    • The dialog now remembers and reactivates the color selector tab you were using last.
    • The channel entry fields are switched from the 0..1 range to 0..255 range for increased precision (but you still can type in a value between 0 and 1 exclusive, and it will be converted to the 0..255 range when you press Enter).
    • Stroke Width can also use the % unit for relative stroke width changes. When several objects are selected, using the percent unit changes the stroke width of each one relative to its previous value (unlike absolute units which assign an average width to all objects).
  • Various improvements to snapping behaviour:
    • When grid snapping is on:
      • The bezier tool's initial point will now snap to the grid as expected.
      • Pasting from clipboard places selection at the same offset relative to the grid as that of the copied object(s).
      • You can drag objects and nodes with Shift pressed to temporarily avoid snapping.
    • You can now snap to either an object's nodes or its bounding box (or both).
    • The origin to use for scaling can be set to either object nodes or bounding box.
    • Various other fixes to snapping behaviour.
  • Improvements in file open/save dialog:
    • Unique filename is proposed for a file's first save.
    • The "Autodetect" format on save disables the "Append filename extension" checkbox.
    • When switching formats on save, the filenames will change automatically.
    • Save/open paths are saved in preferences. Will default to user's home directory.
  • Export dialog improvements:
    • Each object exported separately (via Selection export) remembers the output filename and resolution, and these hints are filled in when you export it next time. In the absence of the saved hints, default output filename is constructed from the object's id attribute.
    • A new option, Custom, is added to the dialog allowing you to specify arbitrary export area.
  • The initial value of the sticky zoom in a new window can now be set in Preferences. The sticky zoom button is moved above the right scrollbar.
  • The zoom field (in the lower left corner of the window) can now be activated by Alt+Z.
  • Input/output extensions can now save their preferences. Thus, the printer command you used last time in the Print dialog is remembered.
  • The rotation/skew axis crosshair in selector remains where you put it for as long as you have the object(s) selected; to reset it to the center, deselect and reselect. Also the crosshair is only displayed in rotate mode, not in scale mode - this makes it easier to drag small objects.
  • In node tool, the first Escape or empty-space click deselects any selected nodes, the second one deselects the selected object removing the node display.
  • Three handles have been added to allow on-canvas translation, rotation and scaling of pattern fills.
  • Object handles no longer accidentally "snag" on the mouse.
  • In Document Preferences, grid units are correctly recalculated with the unit base changes.
  • The infamous "freeze when dragging outside of window" bug on Windows is gone.

Clipart, documentation, translations

  • The small clipart collection that was shipped with Inkscape 0.38 is removed; instead you are encouraged to use (and contribute to) the much larger collection of vector clipart at
  • Localizations of the interface now work on the Windows platform.
  • There's a small tutorial at share/tutorials/making_markers.svg which will guide you through creating your own markers.
  • Updated Brazilian Portuguese, Catalan, German, Serbian, Serbian in Latin script, Slovenian and Spanish interface translations.
  • Added French translation of "Basic Tutorial" and "Advanced Tutorial".
  • Added Slovenian translation of "Keys and Mouse", "Basic Tutorial", "Advanced Tutorial", "Elements and Principles of Design" and "Tips and Tricks".

Internal progress

  • 133 KB of old, messy, platform-tied C code in libnrtype/ were replaced by 80 KB of much cleaner C++ code using Pango.
  • The preserve/optimize transformation switch, formerly in selector tool options, is made global. Now all object transformations honor this setting, regardless of command or tool that caused them. This setting controls whether object transforms are only stored in transform= attributes in SVG or they can affect other attributes too.
  • Internal support for layers is essentially complete (and is utilized by the "Edit group" feature)
  • Many of the signals are changed from GObject signals to SigC++ signals.
  • The 7 or more different flavours of Rect are being condensed into NR::Rect and NR::IRect, similarly for Points.
  • Delibartation: All references to libart have been removed in preparation for switching entirely to the livarot rendering system.
  • The medicinal maggots have excised copious quantities of senescent code.
  • All the display code has migrated into display/, away from helper/.
  • Orphans (those objects having no URI references pointing to them or their descendants) will be automatically culled if they have inkscape:collect="always" set.
  • SPObjects now track the total hrefcount of their descendants, for orphan collection purposes.

Known issues

  • Stroke, patterns, gradients, and rect corners are always shown as scaled when you transform them by mouse drag in selector with "Show objects" mode, regardless of the status of the corresponding switches. The proper display is restored, however, as soon as you release mouse.
  • Support for inkscape:groupmode has been temporarily removed, as part of the layers work; it will be re-introduced in 0.40.
  • Orphan objects that were created or edited by the user are currently not garbage-collected (only automatically added helper objects are). In a future version we'll add an explicit Cleanup command to remove any unused objects. Also, garbage collection is not immediate (usually it happens upon the next change of the document) because NRArenaShape holds on to an SPStyle for too long (it should not use SPStyle directly at all).
  • The preferences file of version 0.39 is not compatible with 0.38 due to a bug in 0.38. If you ever want to downgrade to 0.38 or an earlier version (why?!) you'll need to delete your ~/.inkscape/preferences.xml to avoid crashes.
  • Due to a bug in earlier versions, linked offsets with added transform could be rendered incorrectly (displaced) in third-party SVG renderers. To fix that using 0.39, do some no-op change to the linked offset (e.g. nudge it forth and back) and save.
  • The direction of end markers was incorrect in 0.38. If you used that version to create drawings with end markers, you will have to flip them now.
  • Windows builds have limited import/export capabilities compared to Linux builds.

Other releases