<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zeimusu</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zeimusu"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/Zeimusu"/>
	<updated>2026-04-09T06:06:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=8860</id>
		<title>Release notes/0.45</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.45&amp;diff=8860"/>
		<updated>2006-11-08T14:39:10Z</updated>

		<summary type="html">&lt;p&gt;Zeimusu: /* Bugfixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.45: overview =&lt;br /&gt;
&lt;br /&gt;
This release brings the exciting new features developed by the Google Summer of Code 2006 participants, as well as tons of other improvements across the board.&lt;br /&gt;
&lt;br /&gt;
= Gaussian blur =&lt;br /&gt;
&lt;br /&gt;
Thanks to Google's Summer of Code program, Inkscape now has basic support for [http://www.w3.org/TR/SVG11/filters.html SVG filters]. The only filter enabled so far is &amp;lt;b&amp;gt;Gaussian Blur&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
With it, you can softly and naturally blur any Inkscape objects: paths, shapes, groups, text], images. Clones inherit blurring from their original, but they can also be blurred independently from the original (you can create blurred clones with Tile Clones, too). Both the fill and stroke of an object are blurred together, creating semitransparent margins that smoothly blend into the background. &lt;br /&gt;
&lt;br /&gt;
Gaussian blur enables a wide range of photorealistic effects: arbitrarily shaped shades and lights, depth of field, drop shadows, glows, etc. Also, blurred objects can be used as masks for other objects to achieve the &amp;quot;feathered mask&amp;quot; effect.&lt;br /&gt;
&lt;br /&gt;
* To blur selected objects, open the Fill and Stroke dialog (Ctrl+Shift+F) and use the &amp;lt;b&amp;gt;Blur&amp;lt;/b&amp;gt; slider. The blur value is a percentage, with 100% corresponding to a blurring radius of 1/8 of the object's bounding box' perimeter (that is, for a square, a blur of 100% will have the radius equal to half a side). &lt;br /&gt;
&lt;br /&gt;
* The Tile Clones dialog also supports blurring. On the &amp;lt;b&amp;gt;Blur &amp;amp; opacity&amp;lt;/b&amp;gt; tab, you can set the blur percentage per row or per column of your tiling, as well as randomize blurring and make it alternate (all the same options as for Opacity).&lt;br /&gt;
&lt;br /&gt;
* The quality of on-screen blur display is controlled by the &amp;lt;b&amp;gt;Blur quality&amp;lt;/b&amp;gt; option on the new &amp;lt;b&amp;gt;Filters&amp;lt;/b&amp;gt; tab of Inkscape Preferences (Ctrl+Shift+P). The available options range from best quality/slowest display to worst quality/fastest display, the default being in the middle of the range. Any setting except the &amp;quot;best quality&amp;quot; may introduce some rendering artifacts, especially when blurring thin strokes; on the other hand, the &amp;quot;best quality&amp;quot; setting may make Inkscape extremely slow at high zooms. These settings only affect the screen display of blurred objects; bitmap export always uses the best quality.&lt;br /&gt;
&lt;br /&gt;
Here are a few tips on using blur:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Masks and clipping&amp;lt;/b&amp;gt; are applied &amp;lt;i&amp;gt;after&amp;lt;/i&amp;gt; blur. That is, if you clip an object and then blur it (or blur it first and then clip - it makes no difference), the clipped edges will remain crisp. Often, this is what you want. If, however, you want to blur the clipped/masked edges too (possibly with a different radius), you can use grouping: group the clipped object with some other object (which you can then delete from the group) and blur the group.&lt;br /&gt;
&lt;br /&gt;
* A simple &amp;lt;b&amp;gt;drop shadow&amp;lt;/b&amp;gt; is now very easy to do: just copy the object, paint the copy black, blur it, shift away a bit and lower it to the bottom. However, such a shadow does not update when you edit the foreground object. If your object is already black (or, more generally, if you want the shadow to be the same color as the object), you can clone instead of copy to make the shadow auto-updating. But what if your foreground object is not black but you need a black shadow? Here's a recipe: unset the object's fill (it becomes black); create &amp;lt;i&amp;gt;two&amp;lt;/i&amp;gt; clones of it; put one clone on top and paint any color you want; put the other clone at bottom, blur it and shift sideways. Now you can edit the unset-fill original (use Alt+click to select it) and everything will update. &lt;br /&gt;
&lt;br /&gt;
* If an object has a fill that you don't want to blur (e.g. pattern, or if it's a bitmap), but you just want to &amp;lt;b&amp;gt;feather its edges&amp;lt;/b&amp;gt;, use a blurred transparency mask. For this, copy the object; paint it white; blur it as needed; scale the blurred copy down so its blur margins are entirely within the original object; select both the original and the blurred mask; do Object &amp;gt; Mask &amp;gt; Set.&lt;br /&gt;
&lt;br /&gt;
* Transforming a blurred object transforms its blur, too. This applies to a non-uniform scaling as well, so by squeezing a blurred object you make its blur squeezed as well. So, the easiest way to blur a path horizontally more than vertically is this: stretch it upwards without blur, then apply blur and squeeze it back into the original shape. &lt;br /&gt;
&lt;br /&gt;
* You can combine &amp;lt;b&amp;gt;blurring with gradients&amp;lt;/b&amp;gt;. For example, an ellipse with elliptic opacity gradient will look much softer and more natural when blurred. An object with a horizontal linear opacity gradient, when blurred, will look like it is more blurred on its transparent side than on its opaque side.&lt;br /&gt;
&lt;br /&gt;
= Undo history =&lt;br /&gt;
&lt;br /&gt;
* Inkscape now features a &amp;lt;b&amp;gt;History Dialog&amp;lt;/b&amp;gt; accessible through [CTRL] + [SHIFT] + H or Edit→Undo History. All changes to the document since it was opened are recorded here.&lt;br /&gt;
** In the dialog, changes are listed from the oldest (top) to the newest (bottom). &lt;br /&gt;
** The type of each change is indicated by an icon and a short description.&lt;br /&gt;
** For readability, consecutive changes of the same type are placed in a collapsable branch showing a triangle marker and the number of the hidden actions in the branch.&lt;br /&gt;
** By clicking on an event event in the list, you can easily move through the undo history, i.e. undo or redo any number of actions with one click.&lt;br /&gt;
* The Undo and Redo commands in the Edit menu display the descriptions of the commands to be undone and redone, correspondingly.&lt;br /&gt;
&lt;br /&gt;
= Rendering improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interruptible display&amp;lt;/b&amp;gt;: Previously, Inkscape could not do anything until it finishes the current screen redraw. Now the redraw is made interruptible, so that Inkscape responds to mouse and keyboard input and can abort the current redraw and start over if you do some screen-changing operation. As a result, Inkscape now feels much snappier and more interactive. This interruptibility is fine-tuned for some interactive operations (such as node dragging) so that a balance is achieved between responsiveness and completeness of display.&lt;br /&gt;
&lt;br /&gt;
* Radial gradients are rendered faster by at least 10%.&lt;br /&gt;
&lt;br /&gt;
* Screen render is faster by 2-3%, up to 5% for complex drawings with transparency.&lt;br /&gt;
&lt;br /&gt;
* Display is more responsive when working at high zoom levels when using a tablet.&lt;br /&gt;
&lt;br /&gt;
* Rendering (compositing) quality has been improved. This is most visible with (partially) transparent gradients, banding is a lot less pronounced now. Speed has also been improved in some cases.&lt;br /&gt;
&lt;br /&gt;
= Tools = &lt;br /&gt;
&lt;br /&gt;
== Dropper ==&lt;br /&gt;
&lt;br /&gt;
* Instead of the confusing toggle button, now the Controls bar for the Dropper tool has two checkboxes, &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot;, which work as follows. Suppose you have an object selected and, using Dropper, click on an object which has red (#FF0000) fill and 0.5 opacity (half-transparent).&lt;br /&gt;
** If the &amp;quot;Pick alpha&amp;quot; checkbox is off, the selected object will get the fill color #800000 (i.e. faded-out red) and fill opacity will be at 1.0 (opaque). &lt;br /&gt;
** If the &amp;quot;Pick alpha&amp;quot; checkbox is on but &amp;quot;Set alpha&amp;quot; is off, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 1.0. &lt;br /&gt;
** If both &amp;quot;Pick alpha&amp;quot; and &amp;quot;Set alpha&amp;quot; are on, the selected object will get the fill color #FF0000 (red) and fill opacity will be at 0.5 (half-transparent). &lt;br /&gt;
:If you Shift+click instead of click, the same changes will be made to stroke color and stroke opacity, correspondingly. Note that in no situation can Dropper change the master opacity of the selected object(s), although it can pick it just as it does any other kind of opacity.&lt;br /&gt;
&lt;br /&gt;
== Calligraphy ==&lt;br /&gt;
&lt;br /&gt;
* A new numeric parameter, &amp;lt;b&amp;gt;Round&amp;lt;/b&amp;gt;, controls the rounding of the ends of calligraphic strokes. This parameter can range from 0.0 (flat caps) to 1.0 (approximately half-circle caps). Rounded caps much improve the look of low fixation strokes, simulating a rounded pen.  &lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Drag&amp;quot; parameter has been renamed to &amp;lt;b&amp;gt;Wiggle&amp;lt;/b&amp;gt; with a value inversion (i.e. low drag corresponds to high wiggle, and vice versa). Increase this parameter (default is 0) to make the pen waver and wiggle in curly patterns.&lt;br /&gt;
&lt;br /&gt;
= Outline mode =&lt;br /&gt;
&lt;br /&gt;
* A new menu command (&amp;lt;b&amp;gt;View &amp;gt; Display Mode &amp;gt; Toggle&amp;lt;/b&amp;gt;) and a new keyboard shortcut (&amp;lt;b&amp;gt;Ctrl+&amp;amp;lt;keypad 5&amp;amp;gt;&amp;lt;/b&amp;gt;) switch the display mode from Normal to Outline and back.&lt;br /&gt;
&lt;br /&gt;
* The window title displays &amp;quot;&amp;lt;b&amp;gt;(outline)&amp;lt;/b&amp;gt;&amp;quot; next to the file name when that editing window is in Outline mode. &lt;br /&gt;
&lt;br /&gt;
* An object with &amp;lt;b&amp;gt;mask and/or clipping path&amp;lt;/b&amp;gt;, when viewed in Outline mode, now displays both the object itself and its clipping path and mask as objects, using different outline colors. By default, &amp;lt;b&amp;gt;clippaths use green&amp;lt;/b&amp;gt; outlines, and &amp;lt;b&amp;gt;masks use blue&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Images&amp;lt;/b&amp;gt; in Outline mode are displayed as &amp;lt;b&amp;gt;red&amp;lt;/b&amp;gt; (by default) frames with two diagonals.&lt;br /&gt;
&lt;br /&gt;
* An object with no fill and no stroke, invisible and not selectable by mouse clicking in normal mode, can now be &amp;lt;b&amp;gt;picked by a mouse click&amp;lt;/b&amp;gt; in the Outline mode using its visible outline.&lt;br /&gt;
&lt;br /&gt;
* The bug whereby stroked shapes didn't change stroke width when switching to Outline mode or back is fixed.&lt;br /&gt;
&lt;br /&gt;
* All outline colors are changeable by editing the &amp;quot;wireframecolors&amp;quot; group inside &amp;quot;options&amp;quot; in the preferences file (~/.inkscape/preferences.xml). The &amp;quot;onlight&amp;quot; and &amp;quot;ondark&amp;quot; attributes set the colors of the regular object outlines on light and dark backgrounds (default black and white correspondingly); the &amp;quot;images&amp;quot;, &amp;quot;clips&amp;quot;, and &amp;quot;masks&amp;quot; attributes set the colors of images, clipping paths, and masks (defaults are red, green, and blue correspondingly). Each attribute is a decimal integer corresponding to the hex RRGGBBAA of the color.  &lt;br /&gt;
&lt;br /&gt;
* To cater for specialized uses, such as preparing input for personal media cutters, Inkscape now has an option to start in the Outline mode upon launch. To enable this, add the following line to your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
:: &amp;lt;group id=&amp;quot;startmode&amp;quot; outline=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:placing it after the &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; opening tag.&lt;br /&gt;
&lt;br /&gt;
= PDF export = &lt;br /&gt;
&lt;br /&gt;
* A new Cairo-based PDF exporter has been added to Inkscape. Inkscape 0.45 can export shapes, strokes, transparency, gradients, patterns, text, and images correctly to Cairo. While clipping paths and masks are known to be faulty or missing. Cairo will write a PDF with vector graphics when possible and fall back to raster graphics when needed. What can be exported as vectors and how much of the image will be rasterized when the fallback kicks in depends on your version of Cairo. Cairo version 1.2 with the pdf backend compiled in is the minimum requirement for any Cairo-based PDF exports.&lt;br /&gt;
&lt;br /&gt;
* The native PDF exporter introduced in Inkscape 0.44 is improved along with the new Cairo-based PDF exporter. Changes since Inkscape 0.44 include: New features: bitmap images can be embedded, pdf files can be exported from commandline. Changed behaviour: the pointless text to path question is gone. Fixed bugs: save failure is now detected, miter limits are now &amp;gt;= 1, pdfs with transparent gradient are now embeddable, eccentric elliptic gradients fixed, dash style inheritance fixed, transparency inheritance fixed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Command line =&lt;br /&gt;
&lt;br /&gt;
* The new &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; command line parameter allows exporting an SVG image to PDF from command line.&lt;br /&gt;
&lt;br /&gt;
= Keyboard profiles =&lt;br /&gt;
&lt;br /&gt;
The previous release allowed sets of keybinding to be created for Inkscape in the style of other applications.  Two more sets of keybindings have been added.  &lt;br /&gt;
&lt;br /&gt;
* Adobe Illustrator &lt;br /&gt;
* Macromedia Freehand&lt;br /&gt;
&lt;br /&gt;
Of course not every feature in these other programs has a direct match to features in Inkscape so if you can please do help us out by reporting any problems you may have or improvements you would like to request.&lt;br /&gt;
&lt;br /&gt;
Additionally, a keybinding that focuses on tablet-based illustration and drawing work has been added:&lt;br /&gt;
&lt;br /&gt;
* right-handed-illustration.xml&lt;br /&gt;
&lt;br /&gt;
This keybinding places all commonly-used commands under the left hand, so that the user's hands rarely leave the keyboard or the tablet/stylus.&lt;br /&gt;
&lt;br /&gt;
More of Inkscape's keys are implemented as actions and are therefore available for remapping via keyboard profiles. New actions include: EditSelectNext and EditSelectPrev for selecting next/previous object or node (by default, bound to Tab/Shift+Tab; as a result of becoming global actions, these keys now work in all tools and not only in Selector and Node tool as before); [].&lt;br /&gt;
&lt;br /&gt;
= Extension effects =&lt;br /&gt;
&lt;br /&gt;
* [tabs and enumerations in extension effect UI - Johan Engelen]&lt;br /&gt;
&lt;br /&gt;
* A new extension, &amp;lt;b&amp;gt;Render &amp;gt; Lorem ipsum&amp;lt;/b&amp;gt; creates the traditional Latin-like random text for design mock-ups. The number of paragraphs, the number of sentences per paragraph and the possible fluctuation of the number of sentences (for uneven paragraphs) can be adjusted. If no flowed text element is selected, a new one in a new layer is created, matching the size of the canvas.&lt;br /&gt;
&lt;br /&gt;
* In an extension's INX file, you can specify &amp;lt;effects-menu hidden=&amp;quot;yes&amp;quot;/&amp;gt; to hide that extension from the Effects menu. However, such a &amp;quot;hidden&amp;quot; extension can still be assigned a keyboard shortcut (by using its id as an &amp;quot;action&amp;quot; in your ~/.inkscape/keys/default.xml).&lt;br /&gt;
&lt;br /&gt;
= SVG output =&lt;br /&gt;
&lt;br /&gt;
For specialized uses, several aspects of Inkscape's SVG output can now be customized via editing the preferences.xml file (there's no UI for these options). A &amp;lt;group id=&amp;quot;&amp;lt;b&amp;gt;svgoutput&amp;lt;/b&amp;gt;&amp;quot;&amp;gt; inside &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt; can have the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;usenamedcolors&amp;lt;/b&amp;gt; (default is 0). If nonzero, Inkscape uses symbolic color names (such as &amp;quot;white&amp;quot; or &amp;quot;lime&amp;quot;) and three-digit color designations (such as $dfe) where appropriate; otherwise, it always uses six-digit colors (such as $d0f0e0). Note that in 0.44, the default was to use named colors, which created problems for some extension effects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;numericprecision&amp;lt;/b&amp;gt; (default is 8). This is the number of significant digits written for each number into SVG. You can lower this number to get slightly more compact SVG at the expense of precision.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;minimumexponent&amp;lt;/b&amp;gt; (default is -8). In transform= attributes, any number whose absolute value is less than 10 to the power of minimumexponent (i.e. less than 10&amp;lt;sup&amp;gt;-8&amp;lt;/sup&amp;gt; by default) is written as 0.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;indent&amp;lt;/b&amp;gt; (default is 2) controls the number of spaces that each level of nesting in SVG is shifted. Set this to 0 to disable indentation.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;inlineattrs&amp;lt;/b&amp;gt; (default is 0). If nonzero, attributes are placed on the same line as their tags; otherwise they are separated by newlines.&lt;br /&gt;
&lt;br /&gt;
= Even more improvements =&lt;br /&gt;
&lt;br /&gt;
* [Save a copy - ctrl+shift+alt+s]&lt;br /&gt;
&lt;br /&gt;
* [new cursors - scislac]&lt;br /&gt;
&lt;br /&gt;
* [axonometric grid]&lt;br /&gt;
&lt;br /&gt;
* [new Help commands]&lt;br /&gt;
&lt;br /&gt;
* [g2png]&lt;br /&gt;
&lt;br /&gt;
* Exported PNG images have the correct resolution set in the headers.&lt;br /&gt;
&lt;br /&gt;
* [expand/contract selection in node tool, sculpt profiles - bbyak]&lt;br /&gt;
&lt;br /&gt;
* Using extended input (i.e. tablet pressure and tilt) can now be disabled via Preferences (Misc tab). This is intended to be a last-resort option for those platform/hardware combinations that are not properly supported by GTK. With extended input disabled, you can still use your tablet as a mouse. &lt;br /&gt;
&lt;br /&gt;
* Simplify Path now had two modes when working with a group of paths:  the default mode, which treats all of the paths as one large object to simplify, or the new mode, which acts the same as using Simplify on each path in a group separately.  In preferences.xml, set '''options.simplifyindividualpaths''' to 1 to get the new mode.&lt;br /&gt;
&lt;br /&gt;
* For long Simplify operations (more than 20 paths at a time), Inkscape provides user feedback via the status bar as to how many paths have been simplified.  This change also prevents Inkscape from appearing to have locked up during the operation.&lt;br /&gt;
&lt;br /&gt;
* New templates added for video formats (PAL, NTSC and HDTV 1080) as well as DVD cover templates that were not installed in the previous version. This will help video and DVD authoring with Inkscape. The business card 85x54 template was not installed too.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other&amp;quot; license type was added to the metadata/license dialog so that people know that they are entering a URI to an &amp;quot;other&amp;quot; license.&lt;br /&gt;
&lt;br /&gt;
* Doxygen DoxyFile is updated.&lt;br /&gt;
&lt;br /&gt;
* Thanks to patches submitted by users, Inkscape can now be built on SGI IRIX 6.5.28, gcc 3.4.0 systems and on Tru64 systems.&lt;br /&gt;
&lt;br /&gt;
= Examples = &lt;br /&gt;
&lt;br /&gt;
* With all the recent additions - clipping, masking, and especially blur - Inkscape is now able to produce extremely photorealistic art. In the share/examples folder in Inkscape distribution, you will find two brand new, stunningly realistic images of shiny cars: &amp;lt;b&amp;gt;car.svgz&amp;lt;/b&amp;gt; by Konstantin Rotkevich and &amp;lt;b&amp;gt;gallardo.svgz&amp;lt;/b&amp;gt; by Michael Grosberg.&lt;br /&gt;
&lt;br /&gt;
* Inkscape 0.45 does not yet have gradient meshes. But with the addition of Gaussian Blur, this feature suddenly got within reach. A new example file, &amp;lt;b&amp;gt;gradient-mesh-experimental.svgz&amp;lt;/b&amp;gt;, explains the approach Inkscape will likely take to implement this feature in a fully SVG-compatible way.&lt;br /&gt;
&lt;br /&gt;
= Translations =&lt;br /&gt;
&lt;br /&gt;
* Remarkable improvements are in the '''Danish''', '''Finnish''', '''Nepalese''' and the '''Vietnamese''' translations of the user interface. They all jumped from 0 to over 90 percent in a very short timespan.&lt;br /&gt;
&lt;br /&gt;
* All people  which are familiar with '''pig latin''' are now able to use Inkscape's user interface in that language. Isthay isway oughtbray otay usway ybay away ewnay anslatortray.&lt;br /&gt;
&lt;br /&gt;
* default lituanian template was not installed. Fixed.&lt;br /&gt;
&lt;br /&gt;
* Updated '''British English''', '''Catalan''', '''Bulgarian''' and '''Thai''' translations.&lt;br /&gt;
&lt;br /&gt;
= Tutorials and Templates =&lt;br /&gt;
&lt;br /&gt;
* Added Catalan default template and elements tutorial.&lt;br /&gt;
&lt;br /&gt;
= Bugfixes =&lt;br /&gt;
&lt;br /&gt;
* When deleting a node, neighboring smooth nodes are converted to cusp.&lt;br /&gt;
&lt;br /&gt;
* Releasing the mouse button while dragging nodes using a tablet will now always release the nodes.  Before this, a race condition could occur where dragging could continue after the mouse button was released.&lt;br /&gt;
&lt;br /&gt;
* An object's mask and clipping path are now preserved after Simplify, Object/Stroke to path, or boolean operations.&lt;br /&gt;
&lt;br /&gt;
* Ungrouping a group containing clipped/masked objects might sometime break the clip/mask (move it away); fixed.&lt;br /&gt;
&lt;br /&gt;
* User-supplied templates in ~/.inkscape/templates can now be SVGZ files in addition to SVG.&lt;br /&gt;
&lt;br /&gt;
* Previously, Inkscape didn't check if there's enough free memory for its pixel buffers and could crash without warning due to insufficient memory e.g. upon zooming in. This problem became much worse after implementing Gaussian blur, because rendering blurred objects at high zooms may require a pixel buffer much bigger than the visible canvas. Now this situation is handled more gracefully: if a display operation requires more memory than available, or more than 100Mb (which corresponds to a 5000x5000 pixel buffer), it is skipped. This may result in blurred objects &amp;quot;disappearing&amp;quot; at high zooms. This is purely a display issue, however, it never corrupts data; just zoom out (or reduce blur radius) and the disappeared object will show up OK.&lt;br /&gt;
&lt;br /&gt;
* When resizing objects, scaling numbers in the statusbar are no longer overwritten by other text when pressing special keys (alt, shift, ctrl).&lt;br /&gt;
&lt;br /&gt;
* To work around problems some users have had with pressure sensitive tablets, the pressure sensitivity can be disabled from the misc tab of Inkscape preferences dialogue. The tablet can then be used, though with reduced functionality. [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1281512&amp;amp;group_id=93438&amp;amp;atid=604306 bug]&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
==== Problems with some Debian libgc-6.7 packages ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape will hang or crash when linked with the first Debian packaged version of the Boehm garbage collection library. This problem was fixed in version 1:6.7-2  of the package.  If you have libgc 6.7 on your Debian-based system, make sure that you are using that version of the package or later.&lt;br /&gt;
&lt;br /&gt;
==== Beware of defective themes on Linux ====&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem. Update: this bug appears to be fixed in newer versions of gtk-engines. If you are affected by this problem please update to a newer version of gtk-engines. If problems persist then please inform the gtk-engines maintainers of the problem. &lt;br /&gt;
&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; 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. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
=== Previous releases ===&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Zeimusu</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Preferences_subsystem&amp;diff=7258</id>
		<title>Preferences subsystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Preferences_subsystem&amp;diff=7258"/>
		<updated>2006-06-23T02:51:26Z</updated>

		<summary type="html">&lt;p&gt;Zeimusu: /* Add a UI */ The preferences now use inkscape-preferences.cpp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Where preferences are stored ==&lt;br /&gt;
&lt;br /&gt;
Preferences are stored in an XML file called &lt;br /&gt;
&lt;br /&gt;
 ~/.inkscape/preferences.xml &lt;br /&gt;
&lt;br /&gt;
on Linux or&lt;br /&gt;
&lt;br /&gt;
 Documents and Settings/'''USER'''/Application Data/Inkscape/preferences.xml&lt;br /&gt;
&lt;br /&gt;
on Windows. Note that the Windows path is supposed to be relative to Inkscape program directory. &lt;br /&gt;
&lt;br /&gt;
This file stores the hierarchy of values. Each value is in an attribute belonging to one of the elements, and elements with attributes are usually grouped together by top-level elements. Note that all elements have unique &amp;lt;tt&amp;gt;id&amp;lt;/tt&amp;gt; attributes.&lt;br /&gt;
&lt;br /&gt;
== Find a place for your value ==&lt;br /&gt;
&lt;br /&gt;
When creating a new preference value, start by examining this file and finding a logical place for the new value. For example, if I want to add a value for some option related to the selector tool, I find the &amp;lt;tt&amp;gt;group&amp;lt;/tt&amp;gt; element with &amp;lt;tt&amp;gt;id=&amp;quot;tools&amp;quot;&amp;lt;/tt&amp;gt; and inside I find &amp;lt;tt&amp;gt;&amp;lt;eventcontext id=&amp;quot;select&amp;quot;/&amp;gt;&amp;lt;/tt&amp;gt;. Now this element is empty, but I can store my value in a new attribute. If you have added a new object to the program, such as a new tool or dialog, add a new element in an appropriate top-level element. If you want to store something entirely new and not yet taken care of, you can even add a new top-level element.&lt;br /&gt;
&lt;br /&gt;
This is what I did when I decided to store a value of the nudge distance (the distance of one arrow-key jump). This value is not local to any single tool; it is used in selector and node editor and will likely be used in other tools as well. So I created a new top-level element for all such global options and put my value there like so:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;group id=&amp;quot;options&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;group id=&amp;quot;nudgedistance&amp;quot; value=&amp;quot;2.8346457&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, 2.8346457 is the distance in points that is equal to 1 mm. Note:&lt;br /&gt;
&lt;br /&gt;
* Element names actually do not matter. What matters for finding the value is the &amp;lt;tt&amp;gt;id&amp;lt;/tt&amp;gt; attribute values. So you can use &amp;lt;tt&amp;gt;group&amp;lt;/tt&amp;gt; elements or any others, whatever seems more logical.&lt;br /&gt;
&lt;br /&gt;
* Values are stored in attributes. No text within elements is allowed (except whitespace).&lt;br /&gt;
&lt;br /&gt;
== Add the value to the skeleton ==&lt;br /&gt;
&lt;br /&gt;
When no preferences file exists, a new one is created based on &amp;lt;tt&amp;gt;src/preferences-skeleton.h&amp;lt;/tt&amp;gt;. Moreover, if the preferences file lacks some values, the defaults are taken from the same file. So, I edit this file adding&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;  &amp;lt;group id=\&amp;quot;options\&amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
 &amp;quot;    &amp;lt;group id=\&amp;quot;nudgedistance\&amp;quot; value=\&amp;quot;2.8346457\&amp;quot;/&amp;gt;&amp;quot;&lt;br /&gt;
 &amp;quot;  &amp;lt;/group&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
before the closing &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;/inkscape&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
Don't forget to escape quotes. The value given in this file is the default; if the user has changed it, his/her value in &amp;lt;tt&amp;gt;preferences.xml&amp;lt;/tt&amp;gt; takes precedence over &amp;lt;tt&amp;gt;src/preferences-skeleton.h&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Now when you recompile, run, and exit Inkscape, the new elements with the default values will be added to  your local &amp;lt;tt&amp;gt;preferences.xml&amp;lt;/tt&amp;gt; (without affecting other values there).&lt;br /&gt;
&lt;br /&gt;
== Access the value in the program ==&lt;br /&gt;
&lt;br /&gt;
Now for the interesting part. If you want to access your value in the program, start by adding&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;prefs-utils.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
to the header. Now, create a variable:&lt;br /&gt;
&lt;br /&gt;
 double nudge;&lt;br /&gt;
&lt;br /&gt;
and right before it is going to be used, update it from the preferences like so:&lt;br /&gt;
&lt;br /&gt;
 nudge = prefs_get_double_attribute (&amp;quot;options.nudgedistance&amp;quot;, &amp;quot;value&amp;quot;, 2.8346457); &lt;br /&gt;
&lt;br /&gt;
What this call does is reads the value from the memory representation of &amp;lt;tt&amp;gt;preferences.xml&amp;lt;/tt&amp;gt;. This representation was created on program start, may be used or modified by changing any values in it, and will be written back into &amp;lt;tt&amp;gt;preferences.xml&amp;lt;/tt&amp;gt; when the program exits. (FIXME: do we need a menu command for saving preferences?)&lt;br /&gt;
&lt;br /&gt;
To pinpoint the value we need, you pass to this function a text string in a syntax that is vaguely reminiscent of XPath, except that it uses &amp;lt;tt&amp;gt;id&amp;lt;/tt&amp;gt; attribute values instead of element names and a dot instead of / as a separator. That is, &amp;lt;tt&amp;gt;options.nudgedistance&amp;lt;/tt&amp;gt; means, find top-level element with &amp;lt;tt&amp;gt;id=&amp;quot;options&amp;quot;&amp;lt;/tt&amp;gt; and within it, an element with &amp;lt;tt&amp;gt;id=&amp;quot;nudgedistance&amp;quot;&amp;lt;/tt&amp;gt;. The second argument to the &amp;lt;tt&amp;gt;prefs_get_double_attribute&amp;lt;/tt&amp;gt; is the name of the attribute that we are interested in. The third argument is the default value which will be returned if no such value is stored in the preferences. &lt;br /&gt;
&lt;br /&gt;
It is important that this &amp;lt;tt&amp;gt;prefs_get_double_attribute&amp;lt;/tt&amp;gt; call is done before each use of the value, and not just once upon program launch, because the preferences may be edited by the user via a dialog (see below for more on that) and we want the interface to respond to these changes immediately.&lt;br /&gt;
&lt;br /&gt;
Similarly, to write a new value back into the preferences' memory representation, use&lt;br /&gt;
&lt;br /&gt;
 prefs_set_double_attribute (&amp;quot;options.nudgedistance&amp;quot;, &amp;quot;value&amp;quot;, new_nudge); &lt;br /&gt;
&lt;br /&gt;
Instead of &amp;lt;tt&amp;gt;double&amp;lt;/tt&amp;gt; values, you can store and retrieve &amp;lt;tt&amp;gt;int&amp;lt;/tt&amp;gt;s (more precisely, &amp;lt;tt&amp;gt;gint&amp;lt;/tt&amp;gt;s) by&lt;br /&gt;
&lt;br /&gt;
 gint prefs_get_int_attribute (gchar *path, gchar *attr, default); &lt;br /&gt;
 void prefs_set_int_attribute (gchar *path, gchar *attr, new_value); &lt;br /&gt;
&lt;br /&gt;
or strings by&lt;br /&gt;
&lt;br /&gt;
 gchar const *prefs_get_string_attribute (gchar const *path, gchar const *attr);&lt;br /&gt;
 void prefs_set_string_attribute (gchar const *path, gchar const *attr, gchar const *value);&lt;br /&gt;
&lt;br /&gt;
== Guard against screw-ups ==&lt;br /&gt;
&lt;br /&gt;
Sometimes there may be very weird values stored in the preferences file, which may cause trouble to the program. It is wise to guard against them by providing min and max bounds for your value. Here's how:&lt;br /&gt;
&lt;br /&gt;
 gint prefs_get_int_attribute_limited (gchar *path, gchar *attr, gint def, gint min, gint max);&lt;br /&gt;
 double prefs_get_double_attribute_limited (gchar *path, gchar *attr, double def, double min, double max);&lt;br /&gt;
&lt;br /&gt;
These functions will return &amp;lt;tt&amp;gt;def&amp;lt;/tt&amp;gt; if the value stored in the preferences is less than min or greater than max. Be generous in setting limits, but be sure to test that with the value set to any of the limits program does not crash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Add a UI ==&lt;br /&gt;
In ui/dialogs/inkscape-preferences.cpp is the code that attaches a GUI to any given preference.  If your option doesn't already have a logical place to go, add it under the &amp;quot;Misc&amp;quot; section. For example, to add an integer-selecting spin-button (sb) you could add to inkscape-preferences.h the line&lt;br /&gt;
&lt;br /&gt;
    PrefSpinButton  _steps_arrow,&lt;br /&gt;
&lt;br /&gt;
And add to inkscape-preferences.cpp the lines:&lt;br /&gt;
&lt;br /&gt;
    _steps_arrow.init ( &amp;quot;options.nudgedistance&amp;quot;, &amp;quot;value&amp;quot;, 0.0, 3000.0, 0.01, 1.0, 2.0, false, false);&lt;br /&gt;
    _page_steps.add_line( false, _(&amp;quot;Arrow keys move by:&amp;quot;), _steps_arrow, _(&amp;quot;px&amp;quot;), &lt;br /&gt;
                          _(&amp;quot;Pressing an arrow key moves selected object(s) or node(s) by this distance (in px units)&amp;quot;), false);&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
The next section of this tutorial will be devoted to how a preference value can be edited in an options dialog. See related page: [[PreferencesDialog]].&lt;br /&gt;
&lt;br /&gt;
------&lt;br /&gt;
&lt;br /&gt;
''Discuss below:''&lt;br /&gt;
&lt;br /&gt;
I also think we should consider having a global preferences file in /etc/inkscape/preferences.xml, and similarly with markers.svg, that are installed during program installation, and merged with or  overwritten by the user's settings.  This is standard UNIX config file strategy. - bryce&lt;br /&gt;
&lt;br /&gt;
Njh wonders whether you would be better off using gconf?&lt;br /&gt;
&lt;br /&gt;
Maybe, but I'm not in a position to decide. Right now I'm interested in how I can use the existing preferences system to store and retrieve a value. -- bb&lt;br /&gt;
&lt;br /&gt;
Looking further, it appears that gconf is indeed a similar XML system, so at some point it should be easy enough to switch over. --njh&lt;br /&gt;
&lt;br /&gt;
Mental and I were discussing GConf, and he brought up the issue of Win32 compatibility.  It would be nice if we could abstract a preferences interface that would work with both the windows registry and GConf.  I think they have similar interfaces - so it shouldn't be impossible --ted&lt;br /&gt;
&lt;br /&gt;
If this is going to be done, why not also look into implementing Apple's .plist support, it's a simple xml format defined: http://www.apple.com/DTDs/PropertyList-1.0.dtd&lt;br /&gt;
These files are stored in ~/Library/Preferences/tld.&amp;lt;company&amp;gt;.&amp;lt;product&amp;gt;.plist - tom&lt;br /&gt;
&lt;br /&gt;
Well, if we're looking around at existing approaches, the discussion probably wouldn't be complete without taking a look at the [http://java.sun.com/j2se/1.4.2/docs/api/java/util/prefs/Preferences.html new Java preferences API added in 1.4]. They currently store to a dir/dir/xml tree on Linux, and to the registry on Windows, so they do that exact abstraction we're looking at. (funny thing is, for some apps, I wrote a layer to abstract that for running in Java VM's prior to 1.4 - double indirection). --jon&lt;br /&gt;
&lt;br /&gt;
* [http://developer.java.sun.com/developer/technicalArticles/releases/preferences/ A nice Sun article about them]&lt;br /&gt;
* [http://www-106.ibm.com/developerworks/java/library/j-mer1002/ An article by IBM about them]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Zeimusu</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.44&amp;diff=6210</id>
		<title>Release notes/0.44</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.44&amp;diff=6210"/>
		<updated>2006-04-21T11:56:05Z</updated>

		<summary type="html">&lt;p&gt;Zeimusu: /* Miscellaneous bugfixes */  ' -&amp;gt; ,&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inkscape 0.44: overview ==&lt;br /&gt;
&lt;br /&gt;
Bigger and better.&lt;br /&gt;
&lt;br /&gt;
* Not directly related to Inkscape, but important nevertheless: since our last release, [http://www.mozilla.com/firefox/ Firefox 1.5] was released with SVG support enabled by default. This means that you can now view any Inkscape document right in your Firefox without any conversion or plugins!&lt;br /&gt;
&lt;br /&gt;
= Performance =&lt;br /&gt;
&lt;br /&gt;
== Outline mode ==&lt;br /&gt;
&lt;br /&gt;
An Outline (&amp;quot;wireframe&amp;quot;) display mode is implemented. Use the &amp;lt;i&amp;gt;View &amp;gt; Display Mode &amp;gt; Outline&amp;lt;/i&amp;gt; to activate it. In this mode:&lt;br /&gt;
&lt;br /&gt;
* all paths and shapes are rendered as &amp;lt;b&amp;gt;inverse&amp;lt;/b&amp;gt; (black on light background and vice versa) &amp;lt;b&amp;gt;outlines&amp;lt;/b&amp;gt; of constant width (1 screen pixel regardless of zoom), without fill;&lt;br /&gt;
&lt;br /&gt;
* text is painted by inverse fill, without stroke; &lt;br /&gt;
&lt;br /&gt;
* bitmaps are shown as is;&lt;br /&gt;
&lt;br /&gt;
* any opacity and gradients are ignored.&lt;br /&gt;
&lt;br /&gt;
The outline mode is usually not drastically faster than regular mode (usually 10% to 50% faster), and in some special cases it may even be slower. However, the value of the outline mode is not only in its speed; it is a good way to get an idea of the structure and objects of your document, and it is convenient for precision node editing and for finding &amp;quot;stray objects&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
In addition to the Outline mode which makes it much easier to work with complex drawings, this version of Inkscape also provides significant speed improvements in many areas.&lt;br /&gt;
&lt;br /&gt;
* Thanks to &amp;lt;b&amp;gt;optimizations in the renderer&amp;lt;/b&amp;gt;, Inkscape's screen redraw is &amp;lt;b&amp;gt;faster by at least 10%&amp;lt;/b&amp;gt;, and in some cases (such as complex stroked/dashed paths at high zooms) &amp;lt;b&amp;gt;up to three times faster&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Optimizations in the Node tool&amp;lt;/b&amp;gt; resulted in noticeable speed gains for node editing. Thus, switching to and from the Node tool (with a path selected), as well as selecting nodes in that tool, are now &amp;lt;b&amp;gt;at least ten times faster&amp;lt;/b&amp;gt; than before. Other operations, including curve and node dragging and move/scale/rotate operations on multiple selected nodes, are much faster as well. This is especially important when working with complex paths; with these optimizations, paths containing several thousand nodes, though still slow, are much more usable.&lt;br /&gt;
&lt;br /&gt;
* An optimization in the attribute setting method made operations such as moving multiple objects with arrow keys at least &amp;lt;b&amp;gt;30% faster&amp;lt;/b&amp;gt; compared to 0.43. This is especially noticeable when you are moving clones selected together with their original (e.g. a clone tiling), in which case Inkscape now works &amp;lt;b&amp;gt;three to four times faster&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Interface icons&amp;lt;/b&amp;gt; are now rendered in the background (from SVG source in &amp;lt;code&amp;gt;share/icons/icons.svg&amp;lt;/code&amp;gt;) when Inkscape is idle, rather than waiting for all the icons in a menu to render the first time you pull it up. This eliminates the annoying delay when opening menus for the first time.&lt;br /&gt;
&lt;br /&gt;
* Previously, zooming in to view a small portion of a path (especially big and complex path), there was a very noticeable slowdown and memory use increased dramatically. We optimized the renderer to &amp;lt;b&amp;gt;only process the visible part of a path&amp;lt;/b&amp;gt;, and as a result the rendering speed is now almost the same at any zoom up to the maximum, providing up to 10-40 times speedup compared to the previous version (the closer is the zoom, the greater is the gain).&lt;br /&gt;
&lt;br /&gt;
= Interface =&lt;br /&gt;
&lt;br /&gt;
== Selected style indicator ==&lt;br /&gt;
&lt;br /&gt;
A new control in the left end of the statusbar lets you quickly view and change the &amp;lt;b&amp;gt;fill and stroke of the selected objects&amp;lt;/b&amp;gt;. When you have a text selection in Text tool or a gradient handle selected in the Gradient tool, this indicator displays and changes the style of the text fragment or gradient stop, instead of the entire object (it's the same behavior as the Fill&amp;amp;amp;Stroke dialog.)&lt;br /&gt;
&lt;br /&gt;
* The two indicators, labelled &amp;lt;b&amp;gt;F:&amp;lt;/b&amp;gt; (top) and &amp;lt;b&amp;gt;S:&amp;lt;/b&amp;gt; (bottom), display fill and stroke of the selected object(s) correspondingly. (For gradient handles, they always display the same style.)&lt;br /&gt;
&lt;br /&gt;
* Each fill/stroke indicator can display either a &amp;lt;b&amp;gt;color+opacity swatch&amp;lt;/b&amp;gt; (the opacity shown here is the fill opacity or stroke opacity, not the master opacity) or a text label specifying &amp;lt;b&amp;gt;N/A&amp;lt;/b&amp;gt; (nothing selected), &amp;lt;b&amp;gt;None&amp;lt;/b&amp;gt; (no fill/stroke), &amp;lt;b&amp;gt;Unset&amp;lt;/b&amp;gt; (unset fill/stroke), &amp;lt;b&amp;gt;L Gradient&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;R Gradient&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Pattern&amp;lt;/b&amp;gt; (corresponding fill/stroke types), or &amp;lt;b&amp;gt;Different&amp;lt;/b&amp;gt; (selected objects have different fill/stroke types).&lt;br /&gt;
&lt;br /&gt;
* Additionally, each indicator may be accompanied by one of two flags, &amp;lt;b&amp;gt;m&amp;lt;/b&amp;gt; (&amp;quot;multiple&amp;quot;, meaning there are two or more objects all with the same fill/stroke) or &amp;lt;b&amp;gt;a&amp;lt;/b&amp;gt; (&amp;quot;averaged&amp;quot;, meaning there are two or more objects with different flat colors in fill/stroke, and the indicator shows the average of these colors).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Left-click&amp;lt;/b&amp;gt; on an indicator opens or activates the Fill&amp;amp;Stroke dialog with the corresponding tab (Fill or Stroke) active.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Right-click&amp;lt;/b&amp;gt; on an indicator opens a popup menu with the following items:&lt;br /&gt;
** &amp;lt;b&amp;gt;Edit fill/stroke...&amp;lt;/b&amp;gt;: Opens or activates the Fill&amp;amp;Stroke dialog with the corresponding tab selected. (Same as left-click.)&lt;br /&gt;
** &amp;lt;b&amp;gt;Last set color&amp;lt;/b&amp;gt;: Applies to the selected objects the fill/stroke color that was last applied to anythig.&lt;br /&gt;
** &amp;lt;b&amp;gt;Last selected color&amp;lt;/b&amp;gt;: Applies to the selected objects the fill/stroke color that was last displayed in this indicator. (Allows you to easily copy fill/stroke color between objects: select source, select destination, apply &amp;quot;last selected color&amp;quot;.)&lt;br /&gt;
**  &amp;lt;b&amp;gt;Invert&amp;lt;/b&amp;gt;: Sets the fill or stroke to the inverse of the current color (does not affect opacity).&lt;br /&gt;
**  &amp;lt;b&amp;gt;White&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Black&amp;lt;/b&amp;gt;: Sets the fill or stroke to the corresponding color (fully opaque).&lt;br /&gt;
** &amp;lt;b&amp;gt;Copy color&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Paste color&amp;lt;/b&amp;gt;: Copies or pastes the fill or stroke color (when it's color) to/from the system clipboard, as text in the &amp;lt;code&amp;gt;#rrggbb&amp;lt;/code&amp;gt; hex format.&lt;br /&gt;
** &amp;lt;b&amp;gt;Swap fill and stroke&amp;lt;/b&amp;gt;: Exchanges fill and stroke (both their types and colors, if any). &lt;br /&gt;
** &amp;lt;b&amp;gt;Make fill/stroke opaque&amp;lt;/b&amp;gt;: Removes fill or stroke transparency (not master transparency!).&lt;br /&gt;
** &amp;lt;b&amp;gt;Unset fill/stroke&amp;lt;/b&amp;gt;: Unsets fill or stroke from selected objects.&lt;br /&gt;
** &amp;lt;b&amp;gt;Remove fill/stroke&amp;lt;/b&amp;gt;: Removes fill or stroke from the selected objects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Middle-click&amp;lt;/b&amp;gt; on a fill/stroke indicator removes fill/stroke from selected objects; if it is already removed (i.e. if the indicator displays &amp;quot;None&amp;quot;), it does the same as the &amp;quot;Last set color&amp;quot; command from the popup menu.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Drag and Drop&amp;lt;/b&amp;gt; of colors onto a fil/stroke indicator sets the fill and stroke of the selected object(s) correspondingly.&lt;br /&gt;
&lt;br /&gt;
* The Stroke indicator also displays the &amp;lt;b&amp;gt;stroke width&amp;lt;/b&amp;gt; of selection (averaged if there are multiple objects selected with different stroke widths), located to the right of the stroke color/transparency swatch. Left-clicking on it opens the Fill&amp;amp;Stroke dialog with the Stroke Style tab selected. Right-clicking on it opens a popup menu which allows you to choose the units for displaying the stroke width, as well as choose one of the presets to assign to selection.&lt;br /&gt;
&lt;br /&gt;
* To the right of the fill/stroke indicators, the &amp;lt;b&amp;gt;Opacity&amp;lt;/b&amp;gt; numeric field (labelled &amp;quot;O:&amp;quot;) shows and allows you to change the master opacity of the selected object (or the averaged opacity of several selected objects). &amp;lt;b&amp;gt;Right-clicking &amp;lt;/b&amp;gt; the numeric field opens a popup menu with preset opacity levels. &amp;lt;b&amp;gt;Middle-clicking&amp;lt;/b&amp;gt; on the &amp;quot;O:&amp;quot; label cycles the opacity through the values of 0 (transparent), 0.5, and 1 (opaque).&lt;br /&gt;
&lt;br /&gt;
The zoom field and the cursor coordinates indicator have been rearranged for compactness and moved to the right end of the statusbar. There's also a window resize handle added at the very end of the statusbar.&lt;br /&gt;
&lt;br /&gt;
== Docked color palette ==&lt;br /&gt;
&lt;br /&gt;
The color swatches palette has had its functionality extended.&lt;br /&gt;
&lt;br /&gt;
* The color swatches palette can be viewed embedded in the main UI.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Drag and Drop&amp;lt;/b&amp;gt; of &amp;lt;b&amp;gt;colors&amp;lt;/b&amp;gt; has been enabled.&lt;br /&gt;
** Dragging colors from a palette now includes UI feedback of the color being dragged.&lt;br /&gt;
** Drag and Drop of colors onto a fil/stroke indicator sets the fill and stroke of the selected object(s) correspondingly.&lt;br /&gt;
** Colors can be &amp;lt;b&amp;gt;dropped&amp;lt;/b&amp;gt; directly on to objects on canvas to set their &amp;lt;b&amp;gt;fill&amp;lt;/b&amp;gt;.&lt;br /&gt;
** Colors can be &amp;lt;b&amp;gt;shift+dropped&amp;lt;/b&amp;gt; on to objects on canvas to set their &amp;lt;b&amp;gt;stroke&amp;lt;/b&amp;gt;.&lt;br /&gt;
** Colors can be dragged to and from other applications.&lt;br /&gt;
&lt;br /&gt;
== Inkscape Preferences dialog ==&lt;br /&gt;
&lt;br /&gt;
Not only was the Inkscape Preferences dialog completely rewritten and redesigned, it is now also &amp;lt;b&amp;gt;fully GNOME-HIG compliant&amp;lt;/b&amp;gt;. Numerous &amp;lt;b&amp;gt;bugs&amp;lt;/b&amp;gt; were taken care of with the rewrite. As a new feature, the &amp;lt;b&amp;gt;Simplify threshold&amp;lt;/b&amp;gt; can now be set with more precision.&lt;br /&gt;
&lt;br /&gt;
== Document Properties / Metadata dialogs ==&lt;br /&gt;
&lt;br /&gt;
* The Document Preferences dialog is now named &amp;lt;b&amp;gt;Document Properties&amp;lt;/b&amp;gt;, and it was split in two: metadata were extracted into the &amp;lt;b&amp;gt;Document Metadata&amp;lt;/b&amp;gt; dialog; metadata widgets are now also spread over two pages.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;New controls&amp;lt;/b&amp;gt;: the new object snapping features required their own property widgets, and you can set the snapping sensitivity with a slider, or let it snap regardless of distance (grid only).&lt;br /&gt;
&lt;br /&gt;
* Rearrangements within &amp;lt;b&amp;gt;Document Properties&amp;lt;/b&amp;gt;: everything snapping-related was collected on one page; Grid and Guide widgets are on their own, the same page. For better HIG compliance, all widgets were categorized; especially the widgets on the Page page were completely rearranged in the General/Format/Border categories.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Bug fixes&amp;lt;/b&amp;gt;: grayed out license URI had too low contrast, so it's no longer grayed out; the proprietary license didn't clean the license URI; spinbuttons had no tooltips, and minor grid quirks were removed; data was not updated when a new file replaced another in the same window.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;HIG compliance&amp;lt;/b&amp;gt;: much work went into that, and now only a few details are missing from full Gnome-HIG compliance.&lt;br /&gt;
&lt;br /&gt;
* A button was added to easily fit the canvas to the current selection or in the case of no selection the full drawing. The button resizes the canvas and translates the drawing into place. It is now very easy to size the canvas to an illustration after the fact.&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Zoom&amp;lt;/b&amp;gt; commands in the View menu are moved to a submenu; the &amp;lt;i&amp;gt;Zoom In&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;Zoom Out&amp;lt;/i&amp;gt; commands are added to that submenu.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Clone&amp;lt;/b&amp;gt; commands are moved into a submenu in Edit menu and given more descriptive names and tips.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Pattern&amp;lt;/b&amp;gt; commands (&amp;lt;i&amp;gt;Objects to Pattern&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;Pattern to Objects&amp;lt;/i&amp;gt;) are moved into a submenu in Object menu, under the new Clip and Mask submenus.&lt;br /&gt;
&lt;br /&gt;
* The contents of the &amp;lt;b&amp;gt;Effects menu&amp;lt;/b&amp;gt; are categorized into submenus, and several effects are renamed to use more intuitive names. &lt;br /&gt;
&lt;br /&gt;
== Statusbar ==&lt;br /&gt;
&lt;br /&gt;
* In Selector, for multiple selected objects, the statusbar now reports their types. For example, if 5 groups are selected, it displays&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;5&amp;lt;/b&amp;gt; objects of type &amp;lt;b&amp;gt;Group&amp;lt;/b&amp;gt; in layer &amp;lt;b&amp;gt;LayerName&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:instead of just &amp;quot;5 objects selected&amp;quot; as before. If there are up to 3 types in the selection, they will be listed, for example:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;5&amp;lt;/b&amp;gt; objects of types &amp;lt;b&amp;gt;Group&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Path&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Rectangle&amp;lt;/b&amp;gt; in layer &amp;lt;b&amp;gt;LayerName&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:The order of the list will correspond to the order in which the objects were added to selection. If there are 4 or more types in selection, only the number of types is reported, for example:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;5&amp;lt;/b&amp;gt; objects of &amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt; types in layer &amp;lt;b&amp;gt;LayerName&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* In Selector, objects selected in groups are now identified as such, and the group ID is given, for example:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;Rectangle&amp;lt;/b&amp;gt; in group &amp;lt;i&amp;gt;g212&amp;lt;/i&amp;gt; (layer &amp;lt;b&amp;gt;content&amp;lt;/b&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
:If selected objects have different parents within one layer (for example, if one is selected in a group and another outside it), the number of parents is reported:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; objects of types &amp;lt;b&amp;gt;Rectangle&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Path&amp;lt;/b&amp;gt; in &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; parents (layer &amp;lt;b&amp;gt;content&amp;lt;/b&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
:If objects are in different layers, only the number of layers is reported since this also implies different parents:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; objects of types &amp;lt;b&amp;gt;Rectangle&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Path&amp;lt;/b&amp;gt; in &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; layers&lt;br /&gt;
&lt;br /&gt;
* The contents of the &amp;lt;b&amp;gt;statusbar message&amp;lt;/b&amp;gt; are now duplicated as a &amp;lt;b&amp;gt;tooltip&amp;lt;/b&amp;gt; that is shown when you hover the mouse over the statusbar. [TODO: need to strip markup from the tooltips.] &lt;br /&gt;
&lt;br /&gt;
* The statusbar text is now no longer just cut off if there is insufficient room, but an ellipsis (...) is inserted at the end to show there's more (only with Gtk 2.6 and newer).&lt;br /&gt;
&lt;br /&gt;
== Theme ==&lt;br /&gt;
&lt;br /&gt;
* Inkscape has a &amp;lt;b&amp;gt;new default icon set&amp;lt;/b&amp;gt; titled &amp;quot;Crispy&amp;quot; provided by Andre Sousa. The new icons are intended to add a more professional and cohesive look to our application, as well as to make the functions the icons represent more self-evident.&lt;br /&gt;
&lt;br /&gt;
* [new mouse cursors are coloured and antialiased - scislac]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Clipping and masking =&lt;br /&gt;
&lt;br /&gt;
Inkscape now provides some UI for using &amp;lt;b&amp;gt;clipping paths and masks&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* Any object can be non-destructively intersected with a path (called a &amp;lt;i&amp;gt;clipping path&amp;lt;/i&amp;gt;) so that only the intersected portion of the object is visible. &lt;br /&gt;
** &amp;lt;b&amp;gt;To apply clipping&amp;lt;/b&amp;gt;, select the objects to be clipped and the clipping path object, make sure the clipping path is above the other objects in z-order, and do &amp;lt;i&amp;gt;Object &amp;gt; Clip &amp;gt; Set&amp;lt;/i&amp;gt;.&lt;br /&gt;
** You can &amp;lt;b&amp;gt;transform, edit, or style&amp;lt;/b&amp;gt; the clipped objects as usual. The clipping remains applied and transforms together with each clipped object.&lt;br /&gt;
** To &amp;lt;b&amp;gt;remove the clipping&amp;lt;/b&amp;gt;, do &amp;lt;i&amp;gt;Object &amp;gt; Clip &amp;gt; Release&amp;lt;/i&amp;gt;. The clipping path is returned to the drawing as a regular object; it is inserted on top of the unclipped object in z-order. &lt;br /&gt;
&lt;br /&gt;
* Any object can be non-destructively masked by another object (called &amp;lt;i&amp;gt;mask&amp;lt;/i&amp;gt;) so that: the mask's black or transparent areas become fully transparent in the masked object; mask's opaque white areas become fully opaque; and all intermediate colors translate into intermediate levels of opacity in the masked object. This allows you to apply, for example, arbitrary transparency gradients to objects.&lt;br /&gt;
** To &amp;lt;b&amp;gt;apply a mask&amp;lt;/b&amp;gt;, select the objects to be masked and the mask object, make sure the mask is above the other objects in z-order, and do &amp;lt;i&amp;gt;Object &amp;gt; Mask &amp;gt; Set&amp;lt;/i&amp;gt;.&lt;br /&gt;
** You can &amp;lt;b&amp;gt;transform, edit, or style&amp;lt;/b&amp;gt; the masked objects as usual. The mask remains applied and transforms together with each masked object.&lt;br /&gt;
** To &amp;lt;b&amp;gt;remove the masking&amp;lt;/b&amp;gt;, do &amp;lt;i&amp;gt;Object &amp;gt; Mask &amp;gt; Release&amp;lt;/i&amp;gt;. The mask is returned to the drawing as a regular object; it is inserted on top of the unmasked object in z-order. &lt;br /&gt;
&lt;br /&gt;
* Objects with clippath show their bounding box intersected with the bounding box of the clippath, instead of the original unclipped bbox as before. (However, this does not apply to objects without clippath of their own which are clipped by being inside a clipped group.)&lt;br /&gt;
&lt;br /&gt;
* Clipped or masked objects display &amp;quot;&amp;lt;i&amp;gt;clipped&amp;lt;/i&amp;gt;&amp;quot; or &amp;quot;&amp;lt;i&amp;gt;masked&amp;lt;/i&amp;gt;&amp;quot;, correspondingly, in their statusbar descriptions.&lt;br /&gt;
&lt;br /&gt;
* Although Inkscape had render-only support for clipping paths and masks for quite some time, in this release we fixed a number of bugs which may affect the display of your documents using clippaths or masks.&lt;br /&gt;
** Clippaths and masks with objectBoundingBox units are now shown correctly upon loading of the document.&lt;br /&gt;
** Clippaths without fill didn't work, this is now fixed.&lt;br /&gt;
** Objects with clippaths or masks are correctly copied/pasted between documents.&lt;br /&gt;
&lt;br /&gt;
= SVG conformance =&lt;br /&gt;
&lt;br /&gt;
== Color profile support ==&lt;br /&gt;
&lt;br /&gt;
Inkscape now includes base ICC profile functionality. If compiled with LittleCMS support (if you run &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;--enable-lcms&amp;lt;/code&amp;gt; switch), Inkscape passes the [http://www.w3.org/Graphics/SVG/Test/20030813/htmlframe/full-color-prof-01-f.html ICC color profile test] by W3C. The &amp;amp;lt;color-profile&amp;amp;gt; element has been implemented along with the &amp;quot;color-profile&amp;quot; attribute for &amp;amp;lt;image&amp;amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
== &amp;amp;lt;switch&amp;amp;gt; support ==&lt;br /&gt;
&lt;br /&gt;
SVG 1.1 '''Conditional Processing Module''' rendering support is implemented, including ''switch'' element, ''requiredFeatures'', ''requiredExtensions'', ''systemLanguage'' attributes. Inkscape passes the Conditional processing tests ([http://www.w3.org/Graphics/SVG/Test/20030813/htmlframe/full-struct-cond-01-t.html] and [http://www.w3.org/Graphics/SVG/Test/20030813/htmlframe/full-struct-cond-02-t.html]) by W3C.&lt;br /&gt;
&lt;br /&gt;
== Color output ==&lt;br /&gt;
&lt;br /&gt;
* In Inkscape's SVG documents, &amp;lt;b&amp;gt;colors&amp;lt;/b&amp;gt; are now expressed by name (‘white’) or three-digit form (‘&amp;lt;tt&amp;gt;#f3c&amp;lt;/tt&amp;gt;’) when possible.&lt;br /&gt;
&lt;br /&gt;
= Transformations =&lt;br /&gt;
&lt;br /&gt;
== Transform dialog ==&lt;br /&gt;
&lt;br /&gt;
Fixes and improvements in the Transform dialog (Ctrl+Shift+M):&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Apply to each object separately&amp;lt;/b&amp;gt; checkbox is added, allowing you to scale/rotate/skew each selected object by the same amount, around that object's center. When off (by default), the selection is transformed as a whole. The status of this checkbox is remembered across sessions. (It has no effect on Move and Matrix tabs).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Clear&amp;lt;/b&amp;gt; button resets the values on the current tab to defaults.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Scale&amp;lt;/b&amp;gt; tab now allows you to specify horizontal or vertical size increments in percentage or absolute units. Also, there's a &amp;lt;b&amp;gt;Scale proportionally&amp;lt;/b&amp;gt; checkbox which ensures that scaling preserves the width/height ratio. (If you are scaling several objects proportionally with &amp;quot;Apply to each object separately&amp;quot;, you can only use the % unit to specify the scaling; otherwise each object's scale increments will have the width/height ratio of the entire selection, not of that specific object.)&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Skew&amp;lt;/b&amp;gt; tab can now specify the skew as an &amp;lt;b&amp;gt;absolute displacement&amp;lt;/b&amp;gt; (e.g. for horizontal skewing of a rectangle, that means the shift of the top rectangle side relative to the bottom), as &amp;lt;b&amp;gt;percentage displacement&amp;lt;/b&amp;gt; (e.g. a 1% horizontal skew of a rectangle means shifting the top side by 1% of the rectangle height), or as an &amp;lt;b&amp;gt;angle&amp;lt;/b&amp;gt; (e.g. horizontal skew by 15 degrees results in the sides of a rectangle being rotated to that angle, while the top and bottom remain horizontal).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Matrix&amp;lt;/b&amp;gt; tab (previously called &amp;quot;Transform&amp;quot;) can either edit the current &amp;lt;code&amp;gt;transform=&amp;lt;/code&amp;gt; matrix of an object, or post-multiply the &amp;lt;code&amp;gt;transform=&amp;lt;/code&amp;gt; with the matrix you specify, depending on the &amp;lt;b&amp;gt;Edit current matrix&amp;lt;/b&amp;gt; checkbox. (As it is now redundant, the transformation matrix in the Object Properties dialog is removed.)&lt;br /&gt;
&lt;br /&gt;
* The dialog now correctly &amp;lt;b&amp;gt;watches selection changes&amp;lt;/b&amp;gt; in the active document window and updates its values accordingly.&lt;br /&gt;
&lt;br /&gt;
* The layout of the dialog is simplified, tooltips and mnemonics added for better usability.&lt;br /&gt;
&lt;br /&gt;
* Many bugs are fixed, especially in value conversions between units.&lt;br /&gt;
&lt;br /&gt;
== Persistent rotation centers ==&lt;br /&gt;
&lt;br /&gt;
* The position of the center (axis) of rotation and skewing used by Selector is now &amp;lt;b&amp;gt;remembered&amp;lt;/b&amp;gt; for all objects and restored when you select those objects again (even after saving and reopening the document). When you move or scale an object, its rotation center is moved or scaled too, so its position relative to the object always remains the same unless you move it explicitly.&lt;br /&gt;
&lt;br /&gt;
* When you have several objects selected, they use the rotation center of the &amp;lt;b&amp;gt;first selected object&amp;lt;/b&amp;gt;. If the first object does not have center set (i.e. if it's in a default central position), then several objects will rotate around the geometric center of their common bounding box (as before).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Shift+click&amp;lt;/b&amp;gt; on the rotation center resets it back to the center of the object's box.&lt;br /&gt;
&lt;br /&gt;
* Consequently, dragging the rotation center is now &amp;lt;b&amp;gt;an undoable action&amp;lt;/b&amp;gt;; you can press Ctrl+Z to undo the drag.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Keyboard rotation&amp;lt;/b&amp;gt; by [, ] keys with various modifiers, as well as the Rotate tab in the &amp;lt;b&amp;gt;Transform dialog&amp;lt;/b&amp;gt;, work around the selected object's rotation center (for multi-object selection, the rotation center of the first selected object).&lt;br /&gt;
&lt;br /&gt;
* Rotation centers are &amp;lt;b&amp;gt;preserved&amp;lt;/b&amp;gt; when duplicating, cloning (including clone tiler), grouping/ungrouping, and converting to path.&lt;br /&gt;
&lt;br /&gt;
[TODO: &lt;br /&gt;
- make it work smartly for groups: if a group has center not set, return the center of the first object inside group with the center set&lt;br /&gt;
&lt;br /&gt;
- a separate tab in the Transform dialog, with 9 buttons in the square grid (for setting it to object's corners, sides, and center) as well as x/y fields for setting center to any position&lt;br /&gt;
&lt;br /&gt;
- make center snap to grid/guides/objects and to other centers&lt;br /&gt;
&lt;br /&gt;
- make objects snap with their center to grid/guides/objects]&lt;br /&gt;
&lt;br /&gt;
== Pasting size ==&lt;br /&gt;
&lt;br /&gt;
A number of commands are added to easily scale selected objects to match the size of the object(s) previously copied to the clipboard. They are all in the Paste Size submenu in Edit menu:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Paste Size&amp;lt;/b&amp;gt; scales the whole selection to match the overall size of the clipboard object(s).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Paste Width&amp;lt;/b&amp;gt;/&amp;lt;b&amp;gt;Paste Height&amp;lt;/b&amp;gt; scale the whole selection horizontally/vertically so that it matches the width/height of the clipboard object(s). These commands honor the scale ratio lock on the Selector controls bar (between W and H fields), so that when that lock is pressed, the other dimension of the selected object is scaled in the same proportion; otherwise the other dimension is unchanged.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Paste Size Separately&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Paste Width Separately&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Paste Height Separately&amp;lt;/b&amp;gt; work similarly to the above described commands, except that they scale &amp;lt;i&amp;gt;each selected object&amp;lt;/i&amp;gt; separately to make it match the size/width/height of the clipboard object(s).&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
&lt;br /&gt;
== Node tool ==&lt;br /&gt;
&lt;br /&gt;
* In Node tool, &amp;lt;b&amp;gt;deleting node(s)&amp;lt;/b&amp;gt; by Del/Backspace keys or by Ctrl+Alt+clicking a node now &amp;lt;b&amp;gt;tries to preserve, as much as possible, the current shape of the path&amp;lt;/b&amp;gt;. This means that the nodes adjacent to those being deleted have their handles adjusted to approximate the form that the path had before deletion. For example, if you Ctrl+Alt+click a path twice, once to add a new node and then to delete it, the path will not change at all (or change very slightly). The old deletion behavior without adjusting handles is still available via &amp;lt;b&amp;gt;Ctrl+Del&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Ctrl+Backspace&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* When you &amp;lt;b&amp;gt;switch the type&amp;lt;/b&amp;gt; of the selected node to Smooth or Symmetric by pressing Shift+S/Shift+Y, you can now &amp;lt;b&amp;gt;preserve the position&amp;lt;/b&amp;gt; of one of the two handles by hovering your mouse over it, so that only the other handle is rotated/scaled to match.&lt;br /&gt;
&lt;br /&gt;
* Similarly, when you &amp;lt;b&amp;gt;join endnodes&amp;lt;/b&amp;gt; by pressing Shift+J, you can &amp;lt;b&amp;gt;preserve the position&amp;lt;/b&amp;gt; of one of the two nodes by hovering your mouse over it, so that only the other node is moved. &lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;!&amp;lt;/b&amp;gt; key &amp;lt;b&amp;gt;inverts node selection&amp;lt;/b&amp;gt; in the current subpath(s) (i.e. subpaths with at least one selected node); &amp;lt;b&amp;gt;Alt+!&amp;lt;/b&amp;gt; inverts in the entire path. (This is similar to how these keys work in Selector, with current subpath(s) instead of the current layer.)&lt;br /&gt;
&lt;br /&gt;
== Calligraphic pen ==&lt;br /&gt;
&lt;br /&gt;
* Even when using a graphics tablet with pressure sensitivity, the Calligraphy pen's strokes often look too smooth and artificial. To enable a more natural look, the new &amp;lt;b&amp;gt;Tremor&amp;lt;/b&amp;gt; parameter is added to the Calligraphy tool in this version. Adjustable in the Controls bar from 0.0 to 1.0, it will affect your strokes producing anything from slight unevenness to wild blotches and splotches. This significantly expands the creative range of the tool.&lt;br /&gt;
&lt;br /&gt;
* In all previous versions, pen width depended on zoom in such a way that the strokes &amp;lt;i&amp;gt;appeared&amp;lt;/i&amp;gt; the same visible width at any zoom, but were in fact narrower at zoom-in and wider at zoom-out. This behavior makes sense if you want to keep the same &amp;quot;feel&amp;quot; of the pen regardless of zoom; for example, if you zoomed in to make a small fix to your drawing, it's natural that your pen becomes physically smaller but feels the same to you. So, this behavior is kept as the default, but now we also added an alternative mode where your &amp;lt;b&amp;gt;pen width is constant in absolute units&amp;lt;/b&amp;gt; regardless of zoom. To switch to this mode, use the checkbox on the tool's Preferences page (you can open it by double-clicking the tool button).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Width&amp;lt;/b&amp;gt; field in the tool's controls bar now changes &amp;lt;b&amp;gt;from 1 to 100&amp;lt;/b&amp;gt;, which corresponds to the range from 0.01 to 1.0 in the previous version. If the &amp;quot;width in absolute units&amp;quot; mode is turned on, the value in this fields gives the width of the stroke in px units. In the default mode, the value of 100 gives 100px wide strokes only at 100% zoom, and strokes are correspondingly narrower or wider at other zoom levels.&lt;br /&gt;
&lt;br /&gt;
= Connectors and automatic layout =&lt;br /&gt;
&lt;br /&gt;
* [automatic diagram layout - ?]&lt;br /&gt;
&lt;br /&gt;
* There is a new &amp;lt;b&amp;gt;Remove Overlaps&amp;lt;/b&amp;gt; button to move the selected objects enough that they don't overlap each other. This should be a significant addition to Inkscape's usability for diagramming. [Consider expanding this, comparing with existing Unclump and Distribute edge-to-edge buttons. - pjrm]&lt;br /&gt;
&lt;br /&gt;
* In Connector tool, the &amp;lt;b&amp;gt;margins around avoided shapes&amp;lt;/b&amp;gt; (used for autorouting connectors) can now be adjusted via the &amp;quot;Spacing&amp;quot; control on the controls bar.&lt;br /&gt;
&lt;br /&gt;
= Selective tracing with SIOX =&lt;br /&gt;
&lt;br /&gt;
[ishmal]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Path effects =&lt;br /&gt;
&lt;br /&gt;
[acspike]&lt;br /&gt;
&lt;br /&gt;
= Snapping =&lt;br /&gt;
&lt;br /&gt;
* [object snap - carl]&lt;br /&gt;
&lt;br /&gt;
* [highlight - mtou]&lt;br /&gt;
&lt;br /&gt;
* [only to visible gridlines - mtou]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Guidelines&amp;lt;/b&amp;gt; are made easier to pick: now you don't need to position mouse &amp;lt;i&amp;gt;exactly&amp;lt;/i&amp;gt; over a guideline to activate it, instead there's a small position tolerance (1 screen pixel on each side of the guideline).&lt;br /&gt;
&lt;br /&gt;
= Sublayers =&lt;br /&gt;
&lt;br /&gt;
Previously, it was only possible to make a group a temporary sublayer by entering that group. Now Inkscape supports creating and using true persistent sublayers within a layer.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Add layer&amp;lt;/b&amp;gt; dialog allows you to place the new layer above, below, or inside the current layer.&lt;br /&gt;
&lt;br /&gt;
* Extended &amp;quot;Select All&amp;quot; option - now there is an option for &amp;quot;Select All&amp;quot; and TAB browsing to work in current layer with it's sublayers.&lt;br /&gt;
&lt;br /&gt;
= Extensions =&lt;br /&gt;
&lt;br /&gt;
* [enabled by default?]&lt;br /&gt;
&lt;br /&gt;
* [python extensions to work out of the box on windows? - ishmal]&lt;br /&gt;
&lt;br /&gt;
* [extension manager - gouldtj]&lt;br /&gt;
&lt;br /&gt;
* A new Python effect, &amp;lt;b&amp;gt;Flatten Path&amp;lt;/b&amp;gt;, flattens paths in the current selection, approximating each path with a polyline whose segments meet the specified criteria for flatness.&lt;br /&gt;
&lt;br /&gt;
* A new Python effect, &amp;lt;b&amp;gt;Measure Path&amp;lt;/b&amp;gt;, attaches a text label to each path in the selection giving the length of that path (in px units).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Radius Randomize&amp;lt;/b&amp;gt; effect has a new parameter which enables normal distribution of random displacements instead of uniform as before, which gives a more natural feel to the randomized path.&lt;br /&gt;
&lt;br /&gt;
= Formats =&lt;br /&gt;
&lt;br /&gt;
* [save zip with images - mipmip] collects the svg file and all linked images into a zip archive for distribution.&lt;br /&gt;
&lt;br /&gt;
* An output format for &amp;lt;b&amp;gt;desktop cutting plotters&amp;lt;/b&amp;gt;, such as the Wishblade and Craftrobo, was added. This format is a very minimalist DXF file with appropriate scaling and translation applied. This output format should not be expected to operate as a generalized DXF output.&lt;br /&gt;
&lt;br /&gt;
* [xfig]&lt;br /&gt;
&lt;br /&gt;
* [odg - ishmal]&lt;br /&gt;
&lt;br /&gt;
* The new &amp;lt;b&amp;gt;XCF output extension&amp;lt;/b&amp;gt; exports all top-level elements (i.e. layers and objects directly under root) as PNGs and assembles them into an XCF for procesing in the Gimp. Requires Python, PyXML and Gimp. Gimp 2.2.x or above must be in the path and be named &amp;lt;code&amp;gt;gimp&amp;lt;/code&amp;gt;. A version of Inkscape 0.44 or above must be accessible from the path. Does not function in Windows.&lt;br /&gt;
&lt;br /&gt;
= Configurable keyboard =&lt;br /&gt;
&lt;br /&gt;
Inkscape's &amp;lt;b&amp;gt;keyboard shortcuts are now configurable!&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
At this time, not all Inkscape actions can have their shortcuts customized. However, the majority of actions, including everything you see in the menus, are already configurable, and we're working on making more actions configurable. &lt;br /&gt;
&lt;br /&gt;
On startup, Inkscape reads its keyboard shortcuts from &amp;lt;code&amp;gt;share/keys/default.xml&amp;lt;/code&amp;gt;. That file is a copy of &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt; in the same directory, which also contains keyboard emulation profiles for other vector editors:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;xara.xml&amp;lt;/code&amp;gt;: Xara X/Xara Xtreme/Xara LX keys&lt;br /&gt;
&lt;br /&gt;
You can copy any of these over default.xml to use that profile. In all profiles, those keys which are not used by the corresponding program still have their Inkscape bindings. If you can contribute a profile for some vector editor that we don't yet have, we will appreciate that. The files have a simple XML-based format described in &amp;lt;code&amp;gt;inkscape.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You can also &amp;lt;b&amp;gt;customize some of your keybindings&amp;lt;/b&amp;gt; without overwriting the main &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;. If your profile directory (&amp;lt;code&amp;gt;~/.inkscape&amp;lt;/code&amp;gt; on Linux) contains a &amp;lt;code&amp;gt;keys&amp;lt;/code&amp;gt; subdirectory with a &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; file, the keybindings from that file will overlay (i.e. add to, and override in case of a conflict) the default bindings. The format of your own &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt; is the same as that of the main &amp;lt;code&amp;gt;default.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Miscellaneous shortcuts =&lt;br /&gt;
&lt;br /&gt;
* Now you can use &amp;lt;b&amp;gt;Shift+middle button drag&amp;lt;/b&amp;gt; in any tool to zoom into an area. This works the same as simple drag in Zoom tool, but is faster because it does not require switching away from your current tool. Together with &amp;lt;b&amp;gt;middle button drag&amp;lt;/b&amp;gt; (panning), &amp;lt;b&amp;gt;middle button click&amp;lt;/b&amp;gt; (zoom in) and &amp;lt;b&amp;gt;Shift+middle button click&amp;lt;/b&amp;gt; (zoom out), this completes the set of canvas navigation shortcuts available in any tool or context.&lt;br /&gt;
&lt;br /&gt;
* In Gradient tool, &amp;lt;b&amp;gt;Shift+R reverses the gradient definition&amp;lt;/b&amp;gt; (i.e. mirrors the stop positions) without moving the gradient handles. For example, an elliptic gradient with blue center and red periphery becomes red in the center and blue in the periphery. This works on the gradient(s) of the currently selected gradient handle or, if no handle is selected, on all selected objects' gradients. (Compare with the Node tool where Shift+R reverses the direction of the selected path.) This is especially convenient for elliptic gradients which, unlike linear, you cannot simply rotate by 180 degrees for the same result.&lt;br /&gt;
&lt;br /&gt;
* By popular demand, &amp;lt;b&amp;gt;in Pen tool&amp;lt;/b&amp;gt;, if a new path is being drawn but not yet finished, &amp;lt;b&amp;gt;Ctrl+Z cancels&amp;lt;/b&amp;gt; that unfinished path (i.e. does the same as Esc), instead of undoing the previous action.&lt;br /&gt;
&lt;br /&gt;
* In Pen tool, &amp;lt;b&amp;gt;Del&amp;lt;/b&amp;gt; works the same as Backspace to delete the last created point on the unfinished path.&lt;br /&gt;
&lt;br /&gt;
* The keyboard shortcut for &amp;quot;Make selected segments curves&amp;quot; in Node tool is changed from Shift+K to &amp;lt;b&amp;gt;Shift+U&amp;lt;/b&amp;gt; for better mnemonics.&lt;br /&gt;
&lt;br /&gt;
* In Calligraphic tool, &amp;lt;b&amp;gt;Esc&amp;lt;/b&amp;gt; deselects as in most other tools.&lt;br /&gt;
&lt;br /&gt;
* In Selector, &amp;lt;b&amp;gt;Ctrl+Enter&amp;lt;/b&amp;gt; enters the selected group (making it a temporary layer). &amp;lt;b&amp;gt;Ctrl+Backspace&amp;lt;/b&amp;gt; leaves the current layer and goes one layer up in the hierarchy (but not to root).&lt;br /&gt;
&lt;br /&gt;
* [pen tool keys - bb]&lt;br /&gt;
&lt;br /&gt;
= Miscellaneous improvements =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Document templates&amp;lt;/b&amp;gt; (listed in &amp;lt;i&amp;gt;File &amp;amp;gt; New&amp;lt;/i&amp;gt;) are now first searched in the &amp;lt;code&amp;gt;templates&amp;lt;/code&amp;gt; subdirectory of the user's profile directory (on Linux it's &amp;lt;code&amp;gt;~/.inkscape/templates&amp;lt;/code&amp;gt;), then in the system-wide Inkscape templates directory. This allows you to add your own templates on top of the list of standard templates, as well as override the default template with your own one (the &amp;lt;code&amp;gt;default.svg&amp;lt;/code&amp;gt; in the profile directory has priority over the system-wide one).&lt;br /&gt;
&lt;br /&gt;
* When toggling one of the &amp;quot;transform with object&amp;quot; buttons (for stroke width, rounded rectangle corners, gradients, or patterns), a &amp;lt;b&amp;gt;message&amp;lt;/b&amp;gt; is displayed in the statusbar explaining what has changed in the program's behavior. Hopefully this will reduce the number of complaints from users who had accidentally toggled one of these and were surprised by the result.&lt;br /&gt;
&lt;br /&gt;
* Whole thousands above 2000 in the rulers are now displayed as &amp;lt;b&amp;gt;2k, 3k, 4k&amp;lt;/b&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
* In the Document Preferences dialog, the new object style for each tool is now shown as a &amp;lt;b&amp;gt;style swatch&amp;lt;/b&amp;gt; (displaying fill/stroke colors and opacity, stroke width, and master opacity), similar in design to the selected style indicator in the statusbar.&lt;br /&gt;
&lt;br /&gt;
* In the Grid Arrange dialog, row/column spacing can now be negative. &lt;br /&gt;
&lt;br /&gt;
* The installation default is now to scale the &amp;lt;b&amp;gt;rounded rectangle corners&amp;lt;/b&amp;gt; with the rectangles themselves (the previous default mode, still available as an option, was to keep rounding radii unchanged when scaling rectangles). &lt;br /&gt;
&lt;br /&gt;
* Added a new &amp;lt;code&amp;gt;--export-area-canvas&amp;lt;/code&amp;gt; command line parameter that causes the exported PNG to contain the full canvas. This option as well as &amp;lt;code&amp;gt;--export-area-drawing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--export-area&amp;lt;/code&amp;gt; can now be used along with &amp;lt;code&amp;gt;--export-id&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--export-id-only&amp;lt;/code&amp;gt; for greater flexibility.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;--query-*&amp;lt;/code&amp;gt; command line parameters now return the true SVG bounding box of the object instead of the Inkscape coordinate system bbox (with inverted Y axis). The new behavior makes more sense for scripting use of Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Individual &amp;lt;b&amp;gt;&amp;amp;lt;tspan&amp;amp;gt;s&amp;lt;/b&amp;gt; within text objects (including line tspans) can now be selected via the XML editor to view their bounding boxes (though per SVG, you cannot transform them). Also, you can use the &amp;lt;code&amp;gt;--query-*&amp;lt;/code&amp;gt; command line parameters to find out the bounding boxes of tspans from a script. (Individual strings within or between tspans are still not selectable, and they cannot have an ID for querying anyway.)&lt;br /&gt;
&lt;br /&gt;
* The placeholder image which is shown when a bitmap file was no longer accessible reads now &amp;quot;&amp;lt;b&amp;gt;Linked image not found&amp;lt;/b&amp;gt;&amp;quot; instead of the confusing &amp;quot;Broken image&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Cloning multiple selected objects&amp;lt;/b&amp;gt; now works as expected (i.e. each selected object is cloned separately, similar to the Duplicate command). Previously you could only clone a single selected object. &lt;br /&gt;
&lt;br /&gt;
* [about dialog redesign - mental]&lt;br /&gt;
&lt;br /&gt;
* [new cursors - scislac]&lt;br /&gt;
&lt;br /&gt;
* In the Transform dialog / Rotate tab, the icon was flipped horizontally to be in line with the direction of positive rotation; the change was applied to the default (now crispy) and legacy icon sets.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;scale ratio lock button&amp;lt;/b&amp;gt; on the Selector controls bar shows a closed lock when pressed and open lock otherwise (same as the layer lock in the statusbar).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Browse&amp;lt;/b&amp;gt; button on Export dialog now opens the new file chooser, same as those used by Open and Save.&lt;br /&gt;
&lt;br /&gt;
= Miscellaneous bugfixes =&lt;br /&gt;
&lt;br /&gt;
* Inkscape couldn't be compiled with libxml versions &amp;lt;= 2.6.9, and we now bumped the requirements from 2.6.0 up to &amp;lt;b&amp;gt;libxml &amp;gt;= 2.6.11&amp;lt;/b&amp;gt;, which is the earliest you can get officially, anyway.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Scaling of objects with stroke&amp;lt;/b&amp;gt; in Selector used to cause undesired shifts of the scaled object, as well as scaling it in the dimension which was intended to remain untouched (e.g. slight change in width when you scale only height). All these problems are now fixed, both for interactive scaling by mouse and for numeric scaling via the Controls bar, and for both values of the &amp;quot;Scale stroke with objects&amp;quot; option. Among other things, this means that stroked objects no longer lose snapping on scale, and that the &amp;quot;Default scale origin&amp;quot; option in the Selector tool preferences finally works as designed. Caveat: There may still be problems if you scale a selection that contains objects with different stroke widths.&lt;br /&gt;
&lt;br /&gt;
* Bounding box for text and flowed text objects did not include stroke width.&lt;br /&gt;
&lt;br /&gt;
* Stroke miterlimit on text objects was misinterpreted in absolute units instead of multiplies of stroke width (resulting in miter joins rendered as bevel). &lt;br /&gt;
&lt;br /&gt;
* Fonts on Win32 now use the native font mapper, meaning that Inkscape's font list is the same as other Windows programs, and the (potentially) very long delay experienced when using fonts for the first time in each session is gone.&lt;br /&gt;
&lt;br /&gt;
* Setting dash pattern was broken for transformed objects, and copy/paste of style with dash pattern did not apply correctly to objects with transforms.&lt;br /&gt;
&lt;br /&gt;
* An error caused a complete extra screen redraw after each zoom operation. That is, after you press &amp;quot;+&amp;quot; in a complex drawing, Inkscape redraws, but for some time after that it remains still unresponsive because it does that second redraw (invisibly for you, i.e. nothing changes on the screen). This is fixed.&lt;br /&gt;
&lt;br /&gt;
* Gradient rendering was off by one pixel, which often resulted in visibly wrong gradient rendering for small objects or in zoom-out. &lt;br /&gt;
&lt;br /&gt;
* The SVG path parser could not handle fractional numbers with the initial dot. &lt;br /&gt;
&lt;br /&gt;
* Several pattern rendering bugs are fixed, discovered by working with SVG files exported from Adobe Illustrator.&lt;br /&gt;
&lt;br /&gt;
* Inkscape on Mac OS X will now notice fonts in your ~/Library/Fonts directory, in addition to the other standard places.&lt;br /&gt;
&lt;br /&gt;
* Scaling of stroke didn't work for objects that didn't specify stroke-width and thus had the default 1px stroke.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when presented with a defect inx file for extensions.&lt;br /&gt;
&lt;br /&gt;
* There was a regression in 0.43 that caused several minor, though annoying bugs; knots and handles remained highlighted after the mouse was released, and the rubberband selection rectangle stayed visible if the selection was ended over a node while in the node tool.  This regression has been fixed.         &lt;br /&gt;
&lt;br /&gt;
* The connector routing code would previously sometimes confuse objects between multiple documents resulting in strange routing behaviour.  This has been fixed.&lt;br /&gt;
&lt;br /&gt;
* There existed a bug in 0.43's Inkboard code that allowed a malicious outsider to very easily disrupt an Inkboard session.  This has been fixed.&lt;br /&gt;
&lt;br /&gt;
* There existed a bug in 0.43's Inkboard code that would cause deadlocks in the case that two users attempted to invite each other at the same time (see bug #[https://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1352522&amp;amp;group_id=93438 1352522] for further details).  This should be fixed, although the fix has not been widely tested.&lt;br /&gt;
&lt;br /&gt;
* There existed a bug in 0.43's Inkboard code that would cause session invitations to not appear on the invitee's screen.  This was the result of a mistake in handling GDK modifier flags, and has been fixed.&lt;br /&gt;
&lt;br /&gt;
= Translations =&lt;br /&gt;
&lt;br /&gt;
* INX files (containing the UI of the external effects) now allow the user visible strings to be translated.  This means that effect dialogs, file type selections, and extension names can all be translated by translators.&lt;br /&gt;
&lt;br /&gt;
= Internal =&lt;br /&gt;
&lt;br /&gt;
* The Document Properties Dialog code was completely gtkmmified, which lead to dramatic reduction of code size due to usage of widget objects. The used widget objects should be reusable by other dialogs, too, and the code is much more readable.&lt;br /&gt;
&lt;br /&gt;
* Work on optimizing includes in all cpp files started, using the purgeincludes tool specifically written for that purpose, and ended with 40% of include lines removed!&lt;br /&gt;
&lt;br /&gt;
= Known problems =&lt;br /&gt;
&lt;br /&gt;
=== Beware: defect themes on Linux ===&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the &amp;lt;b&amp;gt;gtk2-engines-smooth / libsmooth&amp;lt;/b&amp;gt; package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem, however, but it would be nice if you as affected user would inform the gtk-engines maintainers of the problem. See especially http://bugzilla.gnome.org/show_bug.cgi?id=312115 (thanks to Thomas Wood)&lt;br /&gt;
* A similar crash happens if the &amp;lt;b&amp;gt;KDE Baghira&amp;lt;/b&amp;gt; theme or the package &amp;lt;b&amp;gt;gtk_qt_engine&amp;lt;/b&amp;gt; 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. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* ReleaseNotes043 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes043)&lt;br /&gt;
* ReleaseNotes042 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes042)&lt;br /&gt;
* ReleaseNotes041 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes041)&lt;br /&gt;
* ReleaseNotes040 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes040)&lt;br /&gt;
* ReleaseNotes039 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes039)&lt;br /&gt;
* ReleaseNotes038 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes038)&lt;br /&gt;
* ReleaseNotes037 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes037)&lt;br /&gt;
* ReleaseNotes036 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes036)&lt;br /&gt;
* ReleaseNotes035 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes035)&lt;/div&gt;</summary>
		<author><name>Zeimusu</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.44&amp;diff=6044</id>
		<title>Release notes/0.44</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.44&amp;diff=6044"/>
		<updated>2006-03-19T05:57:51Z</updated>

		<summary type="html">&lt;p&gt;Zeimusu: Make section about Theme (crispy icons). Mention cursors in comment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inkscape 0.44 =&lt;br /&gt;
&lt;br /&gt;
== In brief ==&lt;br /&gt;
&lt;br /&gt;
Bigger and better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Outline mode ==&lt;br /&gt;
&lt;br /&gt;
An Outline (&amp;quot;wireframe&amp;quot;) display mode is implemented. Use the &amp;lt;i&amp;gt;View &amp;gt; Display Mode &amp;gt; Outline&amp;lt;/i&amp;gt; to activate it. In this mode:&lt;br /&gt;
&lt;br /&gt;
* all paths and shapes are rendered as &amp;lt;b&amp;gt;inverse&amp;lt;/b&amp;gt; (black on light background and vice versa) &amp;lt;b&amp;gt;outlines&amp;lt;/b&amp;gt; of constant width (1 screen pixel regardless of zoom), without fill;&lt;br /&gt;
&lt;br /&gt;
* text is painted by inverse fill, without stroke; &lt;br /&gt;
&lt;br /&gt;
* bitmaps are shown as is;&lt;br /&gt;
&lt;br /&gt;
* any opacity and gradients are ignored.&lt;br /&gt;
&lt;br /&gt;
The outline mode is usually not drastically faster than regular mode (usually 10% to 50% faster), and in some special cases it may even be slower. However, the value of the outline mode is not only in its speed; it is a good way to get an idea of the structure and objects of your document, and it is convenient for precision node editing and for finding &amp;quot;stray objects&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
== Selected style indicator ==&lt;br /&gt;
&lt;br /&gt;
A new control in the left end of the statusbar lets you quickly view and change the &amp;lt;b&amp;gt;fill and stroke of the selected objects&amp;lt;/b&amp;gt;. When you have a text selection in Text tool or a gradient handle selected in the Gradient tool, this indicator displays and changes the style of the text fragment or gradient stop, instead of the entire object (it's the same behavior as the Fill&amp;amp;amp;Stroke dialog.)&lt;br /&gt;
&lt;br /&gt;
* The two indicators, labelled &amp;lt;b&amp;gt;F:&amp;lt;/b&amp;gt; (top) and &amp;lt;b&amp;gt;S:&amp;lt;/b&amp;gt; (bottom), display fill and stroke of the selected object(s) correspondingly. (For gradient handles, they always display the same style.)&lt;br /&gt;
&lt;br /&gt;
* Each fill/stroke indicator can display either a &amp;lt;b&amp;gt;color+opacity swatch&amp;lt;/b&amp;gt; (the opacity shown here is the fill opacity or stroke opacity, not the master opacity) or a text label specifying &amp;lt;b&amp;gt;N/A&amp;lt;/b&amp;gt; (nothing selected), &amp;lt;b&amp;gt;None&amp;lt;/b&amp;gt; (no fill/stroke), &amp;lt;b&amp;gt;Unset&amp;lt;/b&amp;gt; (unset fill/stroke), &amp;lt;b&amp;gt;L Gradient&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;R Gradient&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Pattern&amp;lt;/b&amp;gt; (corresponding fill/stroke types), or &amp;lt;b&amp;gt;Different&amp;lt;/b&amp;gt; (selected objects have different fill/stroke types).&lt;br /&gt;
&lt;br /&gt;
* Additionally, each indicator may be accompanied by one of two flags, &amp;lt;b&amp;gt;m&amp;lt;/b&amp;gt; (&amp;quot;multiple&amp;quot;, meaning there are two or more objects all with the same fill/stroke) or &amp;lt;b&amp;gt;a&amp;lt;/b&amp;gt; (&amp;quot;averaged&amp;quot;, meaning there are two or more objects with different flat colors in fill/stroke, and the indicator shows the average of these colors).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Left-click&amp;lt;/b&amp;gt; on an indicator opens or activates the Fill&amp;amp;Stroke dialog with the corresponding tab (Fill or Stroke) active.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Right-click&amp;lt;/b&amp;gt; on an indicator opens a popup menu with the following items:&lt;br /&gt;
** &amp;lt;b&amp;gt;Edit fill/stroke...&amp;lt;/b&amp;gt;: Opens or activates the Fill&amp;amp;Stroke dialog with the corresponding tab selected. (Same as left-click.)&lt;br /&gt;
** &amp;lt;b&amp;gt;Last set color&amp;lt;/b&amp;gt;: Applies to the selected objects the fill/stroke color that was last applied to anythig.&lt;br /&gt;
** &amp;lt;b&amp;gt;Last selected color&amp;lt;/b&amp;gt;: Applies to the selected objects the fill/stroke color that was last displayed in this indicator. (Allows you to easily copy fill/stroke color between objects: select source, select destination, apply &amp;quot;last selected color&amp;quot;.)&lt;br /&gt;
**  &amp;lt;b&amp;gt;Invert&amp;lt;/b&amp;gt;: Sets the fill or stroke to the inverse of the current color (does not affect opacity).&lt;br /&gt;
**  &amp;lt;b&amp;gt;White&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Black&amp;lt;/b&amp;gt;: Sets the fill or stroke to the corresponding color (fully opaque).&lt;br /&gt;
** &amp;lt;b&amp;gt;Copy color&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Paste color&amp;lt;/b&amp;gt;: Copies or pastes the fill or stroke color (when it's color) to/from the system clipboard, as text in the &amp;lt;code&amp;gt;#rrggbb&amp;lt;/code&amp;gt; hex format.&lt;br /&gt;
** &amp;lt;b&amp;gt;Swap fill and stroke&amp;lt;/b&amp;gt;: Exchanges fill and stroke (both their types and colors, if any). &lt;br /&gt;
** &amp;lt;b&amp;gt;Make fill/stroke opaque&amp;lt;/b&amp;gt;: Removes fill or stroke transparency (not master transparency!).&lt;br /&gt;
** &amp;lt;b&amp;gt;Unset fill/stroke&amp;lt;/b&amp;gt;: Unsets fill or stroke from selected objects.&lt;br /&gt;
** &amp;lt;b&amp;gt;Remove fill/stroke&amp;lt;/b&amp;gt;: Removes fill or stroke from the selected objects.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Middle-click&amp;lt;/b&amp;gt; on a fill/stroke indicator removes fill/stroke from selected objects; if it is already removed (i.e. if the indicator displays &amp;quot;None&amp;quot;), it does the same as the &amp;quot;Last set color&amp;quot; command from the popup menu.&lt;br /&gt;
&lt;br /&gt;
* The Stroke indicator also displays the &amp;lt;b&amp;gt;stroke width&amp;lt;/b&amp;gt; of selection (averaged if there are multiple objects selected with different stroke widths), located to the right of the stroke color/transparency swatch. Left-clicking on it opens the Fill&amp;amp;Stroke dialog with the Stroke Style tab selected. Right-clicking on it opens a popup menu which allows you to choose the units for displaying the stroke width, as well as choose one of the presets to assign to selection.&lt;br /&gt;
&lt;br /&gt;
* To the right of the fill/stroke indicators, the &amp;lt;b&amp;gt;Opacity&amp;lt;/b&amp;gt; numeric field (labelled &amp;quot;O:&amp;quot;) shows and allows you to change the master opacity of the selected object (or the averaged opacity of several selected objects). &amp;lt;b&amp;gt;Right-clicking &amp;lt;/b&amp;gt; the numeric field opens a popup menu with preset opacity levels. &amp;lt;b&amp;gt;Middle-clicking&amp;lt;/b&amp;gt; on the &amp;quot;O:&amp;quot; label cycles the opacity through the values of 0 (transparent), 0.5, and 1 (opaque).&lt;br /&gt;
&lt;br /&gt;
The zoom field and the cursor coordinates indicator have been rearranged for compactness and moved to the right end of the statusbar. There's also a window resize handle added at the very end of the statusbar.&lt;br /&gt;
&lt;br /&gt;
== Clipping and masking ==&lt;br /&gt;
&lt;br /&gt;
* [ui]&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Clippaths and masks with objectBoundingBox units are now shown correctly upon loading of the document.&lt;br /&gt;
&lt;br /&gt;
* Objects with clippath show the clipped bounding box, instead of the original unclipped bbox as before. (However, this does not apply to objects without clippath of their own which are clipped by being inside a clipped group.)&lt;br /&gt;
&lt;br /&gt;
* Clipped or masked objects display &amp;quot;&amp;lt;i&amp;gt;clipped&amp;lt;/i&amp;gt;&amp;quot; or &amp;quot;&amp;lt;i&amp;gt;masked&amp;lt;/i&amp;gt;&amp;quot;, correspondingly, in their statusbar descriptions.&lt;br /&gt;
&lt;br /&gt;
== Color palette ==&lt;br /&gt;
&lt;br /&gt;
[joncruz]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Transform dialog ==&lt;br /&gt;
&lt;br /&gt;
Fixes and improvements in the Transform dialog (Ctrl+Shift+M):&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Apply to each object separately&amp;lt;/b&amp;gt; checkbox is added, allowing you to scale/rotate/skew each selected object by the same amount, around that object's center. When off (by default), the selection is transformed as a whole. The status of this checkbox is remembered across sessions. (It has no effect on Move and Matrix tabs).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Clear&amp;lt;/b&amp;gt; button resets the values on the current tab to defaults.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Scale&amp;lt;/b&amp;gt; tab now allows you to specify horizontal or vertical size increments in percentage or absolute units. Also, there's a &amp;lt;b&amp;gt;Scale proportionally&amp;lt;/b&amp;gt; checkbox which ensures that scaling preserves the width/height ratio. (If you are scaling several objects proportionally with &amp;quot;Apply to each object separately&amp;quot;, you can only use the % unit to specify the scaling; otherwise each object's scale increments will have the width/height ratio of the entire selection, not of that specific object.)&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Skew&amp;lt;/b&amp;gt; tab can now specify the skew as an &amp;lt;b&amp;gt;absolute displacement&amp;lt;/b&amp;gt; (e.g. for horizontal skewing of a rectangle, that means the shift of the top rectangle side relative to the bottom), as &amp;lt;b&amp;gt;percentage displacement&amp;lt;/b&amp;gt; (e.g. a 1% horizontal skew of a rectangle means shifting the top side by 1% of the rectangle height), or as an &amp;lt;b&amp;gt;angle&amp;lt;/b&amp;gt; (e.g. horizontal skew by 15 degrees results in the sides of a rectangle being rotated to that angle, while the top and bottom remain horizontal).&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Matrix&amp;lt;/b&amp;gt; tab (previously called &amp;quot;Transform&amp;quot;) can either edit the current &amp;lt;code&amp;gt;transform=&amp;lt;/code&amp;gt; matrix of an object, or post-multiply the &amp;lt;code&amp;gt;transform=&amp;lt;/code&amp;gt; with the matrix you specify, depending on the &amp;lt;b&amp;gt;Edit current matrix&amp;lt;/b&amp;gt; checkbox. (As it is now redundant, the transformation matrix in the Object Properties dialog is removed.)&lt;br /&gt;
&lt;br /&gt;
* The dialog now correctly &amp;lt;b&amp;gt;watches selection changes&amp;lt;/b&amp;gt; in the active document window and updates its values accordingly.&lt;br /&gt;
&lt;br /&gt;
* The layout of the dialog is simplified, tooltips and mnemonics added for better usability.&lt;br /&gt;
&lt;br /&gt;
* Many bugs are fixed, especially in value conversions between units.&lt;br /&gt;
&lt;br /&gt;
== Remembering the rotation center ==&lt;br /&gt;
&lt;br /&gt;
* The position of the center (axis) of rotation and skewing used by Selector is now &amp;lt;b&amp;gt;remembered&amp;lt;/b&amp;gt; for all objects and is restored when you select those objects again (even after save and reload). When you move or scale an object, its rotation center is moved or scaled too, so its position relative to the object always remains the same.&lt;br /&gt;
&lt;br /&gt;
* When you have several objects selected, they use the rotation focus of the &amp;lt;b&amp;gt;first selected object&amp;lt;/b&amp;gt;. If the first object does not have center set (i.e. if it's in a default central position), then several objects will rotate around the center of their common bounding box.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Shift+click&amp;lt;/b&amp;gt; on the rotation center resets it back to the center of the object's box.&lt;br /&gt;
&lt;br /&gt;
* Consequently, dragging the transformation center is now an undoable action; you can press Ctrl+Z to undo the drag.&lt;br /&gt;
&lt;br /&gt;
[TODO: &lt;br /&gt;
&lt;br /&gt;
- make use of this in keyboard transforms and Transform dialog; &lt;br /&gt;
&lt;br /&gt;
- make it work smartly for groups: if a group has center not set, return the center of the first object inside group with the center set&lt;br /&gt;
&lt;br /&gt;
- a separate tab in the Transform dialog, with 9 buttons in the square grid (for setting it to object's corners, sides, and center) as well as x/y fields for setting center to any position&lt;br /&gt;
&lt;br /&gt;
- make center snap to grid/guides/objects and to other centers&lt;br /&gt;
&lt;br /&gt;
- make objects snap with their center to grid/guides/objects]&lt;br /&gt;
&lt;br /&gt;
== Align &amp;amp;amp; Distribute dialog: remove overlaps ==&lt;br /&gt;
&lt;br /&gt;
* There is a new button to move the selected objects enough that they don't overlap each other.&lt;br /&gt;
This should be a significant addition to Inkscape's usability for diagramming.&lt;br /&gt;
&lt;br /&gt;
[Consider expanding this, comparing with existing Unclump and Distribute edge-to-edge buttons.]&lt;br /&gt;
&lt;br /&gt;
== Document Properties / Metadata dialogs ==&lt;br /&gt;
&lt;br /&gt;
* The Document Preferences dialog is now named &amp;lt;b&amp;gt;Document Properties&amp;lt;/b&amp;gt;, and it was split in two: metadata were extracted into the &amp;lt;b&amp;gt;Document Metadata&amp;lt;/b&amp;gt; dialog; metadata widgets are now also spread over two pages.&lt;br /&gt;
&lt;br /&gt;
* New controls: the new object snapping features required their own property widgets, and you can set the snapping sensitivity with a slider, or let it snap regardless of distance.&lt;br /&gt;
&lt;br /&gt;
* Rearrangements within Document Properties: everything snapping related was collected on one page; Grid and Guide widgets are on their own, the same page. Due to HIG compliance, all widgets were categorized; especially the widgets on the Page page were completely rearranged in the General/Format/Border categories.&lt;br /&gt;
&lt;br /&gt;
* Bug fixes: grayed out license URI had too low contrast, so it's no longer grayed out; the proprietary license didn't clean the license uri; spinbuttons had no tooltips, and minor grid quirks were removed; data was not updated when a new file replaced another in the same window.&lt;br /&gt;
&lt;br /&gt;
* HIG compliance: much work went into, and now only a few details are missing from full Gnome-HIG compliance.&lt;br /&gt;
&lt;br /&gt;
== Keyboard profiles ==&lt;br /&gt;
&lt;br /&gt;
[mental]&lt;br /&gt;
&lt;br /&gt;
== Path effects ==&lt;br /&gt;
&lt;br /&gt;
[acspike]&lt;br /&gt;
&lt;br /&gt;
== Snapping ==&lt;br /&gt;
&lt;br /&gt;
* [object snap - carl]&lt;br /&gt;
&lt;br /&gt;
* [highlight - mtou]&lt;br /&gt;
&lt;br /&gt;
* [only to visible gridlines - mtou]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Guidelines&amp;lt;/b&amp;gt; are made easier to pick: now you don't need to position mouse &amp;lt;i&amp;gt;exactly&amp;lt;/i&amp;gt; over a guideline to activate it, instead there's a small position tolerance (1 screen pixel on each side of the guideline).&lt;br /&gt;
&lt;br /&gt;
== Connectors ==&lt;br /&gt;
&lt;br /&gt;
* [automatic diagram layout]&lt;br /&gt;
&lt;br /&gt;
* The margins around avoided shapes (used for autorouting connectors) can now be adjusted via the &amp;quot;Spacing&amp;quot; control on the Connector controls bar.&lt;br /&gt;
&lt;br /&gt;
== Sublayers ==&lt;br /&gt;
&lt;br /&gt;
Previously, it was only possible to make a group a temporary sublayer by entering that group. Now Inkscape supports creating and using true persistent sublayers within a layer.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;b&amp;gt;Add layer&amp;lt;/b&amp;gt; dialog allows you to place the new layer above, below, or inside the current layer.&lt;br /&gt;
&lt;br /&gt;
* [keyboard selection &amp;quot;with sublayers&amp;quot; option]&lt;br /&gt;
&lt;br /&gt;
== SVG Output ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Colors&amp;lt;/b&amp;gt; are now expressed by name (‘white’) or three-digit form (‘&amp;lt;tt&amp;gt;#f3c&amp;lt;/tt&amp;gt;’) when possible.&lt;br /&gt;
&lt;br /&gt;
== New formats ==&lt;br /&gt;
&lt;br /&gt;
* [save zip with images - acspike?]&lt;br /&gt;
&lt;br /&gt;
* An output format for &amp;lt;b&amp;gt;desktop cutting plotters&amp;lt;/b&amp;gt;, such as the Wishblade and Craftrobo, was added. This format is a very minimalist DXF file with appropriate scaling and translation applied. This output format should not be expected to operate as a generalized DXF output.&lt;br /&gt;
&lt;br /&gt;
* [xfig]&lt;br /&gt;
&lt;br /&gt;
== Speed ==&lt;br /&gt;
&lt;br /&gt;
* Thanks to optimizations in the renderer, Inkscape's screen redraw is &amp;lt;b&amp;gt;faster by at least 10%&amp;lt;/b&amp;gt;, and in some cases (such as complex stroked/dashed paths at high zooms) &amp;lt;b&amp;gt;up to three times faster&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
* An optimization in the attribute setting method made operations such as moving objects on the canvas at least &amp;lt;b&amp;gt;30% faster&amp;lt;/b&amp;gt; compared to 0.43. This is especially noticeable when you are moving clones selected together with their original (e.g. a clone tiling), in which case Inkscape now works &amp;lt;b&amp;gt;three to four times faster&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Mouse and keyboard ==&lt;br /&gt;
&lt;br /&gt;
* Now you can use &amp;lt;b&amp;gt;Shift+middle button drag&amp;lt;/b&amp;gt; in any tool to zoom into an area. This works the same as simple drag in Zoom tool, but is faster because it does not require switching away from your current tool. Together with &amp;lt;b&amp;gt;middle button drag&amp;lt;/b&amp;gt; (panning), &amp;lt;b&amp;gt;middle button click&amp;lt;/b&amp;gt; (zoom in) and &amp;lt;b&amp;gt;Shift+middle button click&amp;lt;/b&amp;gt; (zoom out), this completes the set of canvas navigation shortcuts available in any tool or context.&lt;br /&gt;
&lt;br /&gt;
* In Gradient tool, &amp;lt;b&amp;gt;Shift+R reverses the gradient definition&amp;lt;/b&amp;gt; (i.e. mirrors the stop positions) without moving the gradient handles. For example, an elliptic gradient with blue center and red periphery becomes red in the center and blue in the periphery. This works on the gradient(s) of the currently selected gradient handle or, if no handle is selected, on all selected objects' gradients. (Compare with the Node tool where Shift+R reverses the direction of the selected path.) This is especially convenient for elliptic gradients which, unlike linear, you cannot simply rotate by 180 degrees for the same result.&lt;br /&gt;
&lt;br /&gt;
* By popular demand, &amp;lt;b&amp;gt;in Pen tool&amp;lt;/b&amp;gt;, if a new path is being drawn but not yet finished, &amp;lt;b&amp;gt;Ctrl+Z cancels&amp;lt;/b&amp;gt; that unfinished path (i.e. does the same as Esc), instead of undoing the previous action.&lt;br /&gt;
&lt;br /&gt;
* In Pen tool, &amp;lt;b&amp;gt;Del&amp;lt;/b&amp;gt; works the same as Backspace to delete the last created point on the unfinished path.&lt;br /&gt;
&lt;br /&gt;
* In Node tool, the &amp;lt;b&amp;gt;!&amp;lt;/b&amp;gt; key &amp;lt;b&amp;gt;inverts node selection&amp;lt;/b&amp;gt; in the current subpath(s) (i.e. subpaths with at least one selected node); &amp;lt;b&amp;gt;Alt+!&amp;lt;/b&amp;gt; inverts in the entire path. (This is similar to how these keys work in Selector, with current subpath(s) instead of the current layer.)&lt;br /&gt;
&lt;br /&gt;
* The keyboard shortcut for &amp;quot;Make selected segments curves&amp;quot; in Node tool is changed from Shift+K to &amp;lt;b&amp;gt;Shift+U&amp;lt;/b&amp;gt; for better mnemonics.&lt;br /&gt;
&lt;br /&gt;
* In Calligraphic tool, &amp;lt;b&amp;gt;Esc&amp;lt;/b&amp;gt; deselects as in most other tools.&lt;br /&gt;
&lt;br /&gt;
* In Selector, &amp;lt;b&amp;gt;Ctrl+Enter&amp;lt;/b&amp;gt; enters the selected group (making it a temporary layer). &amp;lt;b&amp;gt;Ctrl+Backspace&amp;lt;/b&amp;gt; leaves the current layer and goes one layer up in the hierarchy (but not to root).&lt;br /&gt;
&lt;br /&gt;
* [pen tool keys - bb]&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
&lt;br /&gt;
* Zoom commands in the View menu are moved to a submenu; the Zoom In and Zoom Out commands are added to that submenu.&lt;br /&gt;
&lt;br /&gt;
* The contents of the &amp;lt;b&amp;gt;Effects menu&amp;lt;/b&amp;gt; are categorized into submenus, and several effects are renamed to use more intuitive names. &lt;br /&gt;
&lt;br /&gt;
== Statusbar ==&lt;br /&gt;
&lt;br /&gt;
* For multiple selected objects, the statusbar now reports their types. For example, if 5 groups are selected, it displays&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;5&amp;lt;/b&amp;gt; objects of type &amp;lt;b&amp;gt;Group&amp;lt;/b&amp;gt; in layer &amp;lt;b&amp;gt;LayerName&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:instead of just &amp;quot;5 objects selected&amp;quot; as before. If there are up to 3 types in the selection, they will be listed, for example:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;5&amp;lt;/b&amp;gt; objects of types &amp;lt;b&amp;gt;Group&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Path&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Rectangle&amp;lt;/b&amp;gt; in layer &amp;lt;b&amp;gt;LayerName&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:The order of the list will correspond to the order in which the objects were added to selection. If there are 4 or more types in selection, only the number of types is reported, for example:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;b&amp;gt;5&amp;lt;/b&amp;gt; objects of &amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt; types in layer &amp;lt;b&amp;gt;LayerName&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* The contents of the &amp;lt;b&amp;gt;statusbar message&amp;lt;/b&amp;gt; are now duplicated as a &amp;lt;b&amp;gt;tooltip&amp;lt;/b&amp;gt; that is shown when you hover the mouse over the statusbar. [TODO: need to strip markup from the tooltips.] &lt;br /&gt;
&lt;br /&gt;
* The statusbar text is now no longer just cut off if there is insufficient room, but an ellipsis (...) is inserted at the end to show there's more (only with Gtk 2.6 and newer).&lt;br /&gt;
&lt;br /&gt;
== Theme ==&lt;br /&gt;
* Inkscape has a &amp;lt;b&amp;gt;new default icon set&amp;lt;/b&amp;gt; titled &amp;quot;Crispy&amp;quot; provided by Andre Sousa. The new icons are intended to add a more professional and cohesive look to our application, as well as to make the functions the icons represent more self-evident.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * '''Mouse cursors''' are are coloured, and antialiased. --&amp;gt;&lt;br /&gt;
== Miscellaneous improvements ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Document templates&amp;lt;/b&amp;gt; (listed in &amp;lt;i&amp;gt;File &amp;amp;gt; New&amp;lt;/i&amp;gt;) are now first searched in the &amp;lt;code&amp;gt;templates&amp;lt;/code&amp;gt; subdirectory of the user's profile directory (on Linux it's &amp;lt;code&amp;gt;~/.inkscape/templates&amp;lt;/code&amp;gt;), then in the system-wide Inkscape templates directory. This allows you to add your own templates on top of the list of standard templates, as well as override the default template with your own one (the &amp;lt;code&amp;gt;default.svg&amp;lt;/code&amp;gt; in the profile directory has priority over the system-wide one).&lt;br /&gt;
&lt;br /&gt;
* When toggling one of the &amp;quot;transform with object&amp;quot; buttons (for stroke width, rounded rectangle corners, gradients, or patterns), a message is displayed in the statusbar explaining what has changed in the program's behavior. Hopefully this will reduce the number of complaints from users who had accidentally toggled one of these and were surprised by the result.&lt;br /&gt;
&lt;br /&gt;
* Whole thousands above 2000 in the rulers are now displayed as 2k, 3k, 4k etc.&lt;br /&gt;
&lt;br /&gt;
* In the Document Preferences dialog, the new object style for each tool is now shown as a style swatch (displaying fill/stroke colors and opacity, stroke width, and master opacity), similar in design to the selected style indicator in the statusbar.&lt;br /&gt;
&lt;br /&gt;
* The Simplify threshold in Inkscape Preferences can now be set with more precision.&lt;br /&gt;
&lt;br /&gt;
* In the Grid Arrange dialog, row/column spacing can now be negative. &lt;br /&gt;
&lt;br /&gt;
* The installation default is now to scale the rounded rectangle corners with the rectangles themselves (the previous default mode, still available as an option, was to keep rounding radii unchanged when scaling rectangles). &lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;--query-*&amp;lt;/code&amp;gt; command line parameters now return the true SVG bounding box of the object instead of the Inkscape coordinate system bbox (with inverted Y axis). The new behavior makes more sense for scripting use of Inkscape.&lt;br /&gt;
&lt;br /&gt;
* Individual &amp;lt;b&amp;gt;&amp;amp;lt;tspan&amp;amp;gt;s&amp;lt;/b&amp;gt; within text objects (including line tspans) can now be selected via the XML editor to view their bounding boxes (though per SVG, you cannot transform them). Also, you can use the &amp;lt;code&amp;gt;--query-*&amp;lt;/code&amp;gt; command line parameters to find out the bounding boxes of tspans from a script. (Individual strings within or between tspans are still not selectable, and they cannot have an ID for querying anyway.)&lt;br /&gt;
&lt;br /&gt;
* The placeholder image which is shown when a bitmap file was no longer accessible reads now &amp;quot;&amp;lt;b&amp;gt;Linked image not found&amp;lt;/b&amp;gt;&amp;quot; instead of the confusing &amp;quot;Broken image&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Cloning multiple selected objects&amp;lt;/b&amp;gt; now works as expected (i.e. each selected object is cloned separately, similar to the Duplicate command). Previously you could only clone a single selected object. &lt;br /&gt;
&lt;br /&gt;
* [about dialog redesign - mental]&lt;br /&gt;
&lt;br /&gt;
* [icons prerendering - joncruz, mental]&lt;br /&gt;
&lt;br /&gt;
* [extensions on windows - ishmal]&lt;br /&gt;
&lt;br /&gt;
* [python extensions to work out of the box on windows? - ishmal]&lt;br /&gt;
&lt;br /&gt;
* [new cursors - scislac]&lt;br /&gt;
&lt;br /&gt;
* In the Transform dialog / Rotate tab, the icon was flipped horizontally to be in line with the direction of positive rotation; the change was applied to the default (now crispy) and legacy icon sets.&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous bugfixes ==&lt;br /&gt;
&lt;br /&gt;
* inkscape couldn't be compiled with libxml versions &amp;lt;= 2.6.9, and we now bumped the requirements from 2.6.0 up to libxml &amp;gt;= 2.6.11, which is the earliest you can get officially, anyway.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Scaling of objects with stroke&amp;lt;/b&amp;gt; in Selector used to cause undesired shifts of the scaled object, as well as scaling it in the dimension which was intended to remain untouched (e.g. slight change in width when you scale only height). All these problems are now fixed, both for interactive scaling by mouse and for numeric scaling via the Controls bar, and for both values of the &amp;quot;Scale stroke with objects&amp;quot; option. Among other things, this means that stroked objects no longer lose snapping on scale, and that the &amp;quot;Default scale origin&amp;quot; option in the Selector tool preferences finally works as designed. Caveat: There may still be problems if you scale a selection that contains objects with different stroke widths.&lt;br /&gt;
&lt;br /&gt;
* Bounding box for text objects did not include stroke width.&lt;br /&gt;
&lt;br /&gt;
* Stroke miterlimit on text objects was misinterpreted in absolute units instead of multiplies of stroke width (resulting in miter joins rendered as bevel). &lt;br /&gt;
&lt;br /&gt;
* [win32 font backend - cyreve]&lt;br /&gt;
&lt;br /&gt;
* Setting dash pattern was broken for transformed objects, and copy/paste of style with dash pattern did not apply correctly to objects with transforms.&lt;br /&gt;
&lt;br /&gt;
* An error caused a complete extra screen redraw after each zoom operation. That is, after you press &amp;quot;+&amp;quot; in a complex drawing, Inkscape redraws, but for some time after that it remains still unresponsive because it does that second redraw (invisibly for you, i.e. nothing changes on the screen). This is fixed.&lt;br /&gt;
&lt;br /&gt;
* Gradient rendering was off by one pixel, which often resulted in visibly wrong gradient rendering for small objects or in zoom-out. &lt;br /&gt;
&lt;br /&gt;
* The SVG path parser could not handle fractional numbers with the initial dot. &lt;br /&gt;
&lt;br /&gt;
* Several pattern rendering bugs are fixed, discovered by working with SVG files exported from Adobe Illustrator.&lt;br /&gt;
&lt;br /&gt;
* Inkscape on Mac OS X will now notice fonts in your ~/Library/Fonts directory, in addition to the other standard places.&lt;br /&gt;
&lt;br /&gt;
* Scaling of stroke didn't work for objects that didn't specify stroke-width and thus had the default 1px stroke.&lt;br /&gt;
&lt;br /&gt;
* Inkscape no longer crashes when presented with a defect inx file for extensions.&lt;br /&gt;
&lt;br /&gt;
* There was a regression in 0.43 that caused several minor, though annoying bugs; knots and handles remained highlighted after the mouse was released, and the rubberband selection rectangle stayed visible if the selection was ended over a node while in the node tool.  This regression has been fixed.         &lt;br /&gt;
&lt;br /&gt;
* The connector routing code would previously sometimes confuse objects between multiple documents resulting in strange routing behaviour.  This has been fixed.&lt;br /&gt;
&lt;br /&gt;
* There existed a bug in 0.43's Inkboard code that allowed a malicious outsider to very easily disrupt an Inkboard session.  This has been fixed.&lt;br /&gt;
&lt;br /&gt;
* There existed a bug in 0.43's Inkboard code that would cause deadlocks in the case that two users attempted to invite each other at the same time (see bug #[https://sourceforge.net/tracker/?func=detail&amp;amp;atid=604306&amp;amp;aid=1352522&amp;amp;group_id=93438 1352522] for further details).  This should be fixed, although the fix has not been widely tested.&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* INX files (containing the UI of the external effects) now allow the user visible strings to be translated.  This means that effect dialogs, file type selections, and extension names can all be translated by translators.&lt;br /&gt;
&lt;br /&gt;
== Internal ==&lt;br /&gt;
&lt;br /&gt;
* The Document Properties Dialog code was completely gtkmmified, which lead to dramatic reduction of code size due to usage of widget objects. The used widget objects should be reusable by other dialogs, too, and the code is much more readable.&lt;br /&gt;
&lt;br /&gt;
* Work on optimizing includes in all cpp files started, using the purgeincludes tool specifically written for that purpose, and ended with 40% of include lines removed!&lt;br /&gt;
&lt;br /&gt;
== Known problems ==&lt;br /&gt;
&lt;br /&gt;
=== Beware: defect themes on Linux ===&lt;br /&gt;
&lt;br /&gt;
* Inkscape and other Gtk programs can crash on any Linux, when the gtk2-engines-smooth / libsmooth package is installed. We have filed a bug against libsmooth which is now in gtk-engine and part of gnome. Removing the package resolves the problem, however, but it would be nice if you as affected user would inform the gtk-engines maintainers of the problem. See especially http://bugzilla.gnome.org/show_bug.cgi?id=312115 (thanks to Thomas Wood)&lt;br /&gt;
* A similar crash happens if the KDE Baghira theme or 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. Both problems also affect older versions of Inkscape.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Previous releases ==&lt;br /&gt;
&lt;br /&gt;
* ReleaseNotes043 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes043)&lt;br /&gt;
* ReleaseNotes042 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes042)&lt;br /&gt;
* ReleaseNotes041 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes041)&lt;br /&gt;
* ReleaseNotes040 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes040)&lt;br /&gt;
* ReleaseNotes039 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes039)&lt;br /&gt;
* ReleaseNotes038 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes038)&lt;br /&gt;
* ReleaseNotes037 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes037)&lt;br /&gt;
* ReleaseNotes036 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes036)&lt;br /&gt;
* ReleaseNotes035 (http://wiki.inkscape.org/wiki/index.php/ReleaseNotes035)&lt;/div&gt;</summary>
		<author><name>Zeimusu</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Pangoification&amp;diff=5886</id>
		<title>Pangoification</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Pangoification&amp;diff=5886"/>
		<updated>2006-02-04T13:55:20Z</updated>

		<summary type="html">&lt;p&gt;Zeimusu: /* Introduction to the Inkscape 0.39 Pango Rearchitecting Effort */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction to the Inkscape 0.39 Pango Rearchitecting Effort ==&lt;br /&gt;
&lt;br /&gt;
Wondering what the heck [http://pango.org/ Pango] is, why we want it in the codebase, what&lt;br /&gt;
needs to be done, and/or what's been done so far?  Then this document is&lt;br /&gt;
for you.  We'll try to cover the basics to get you oriented, and provide&lt;br /&gt;
some links to more info.&lt;br /&gt;
&lt;br /&gt;
=== Contents ===&lt;br /&gt;
#  What does Inkscape really need for font rendering (perfect world)?&lt;br /&gt;
#  What is Pango and what does it do?&lt;br /&gt;
#  What does Inkscape currently have that it'd replace?&lt;br /&gt;
#  What will Inkscape be able to get from Pango?&lt;br /&gt;
#  How would Pango fit into Inkscape?&lt;br /&gt;
#  Who's done what so far with the old code, and with Pango?&lt;br /&gt;
#  Okay, what do we need to do?&lt;br /&gt;
# Pangoification Discussion 2004-06-05&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What does Inkscape really need for font rendering (perfect world)? ===&lt;br /&gt;
&lt;br /&gt;
What Inkscape needs from its font rendering subsystem is:&lt;br /&gt;
&lt;br /&gt;
* Regular font rendering, including a wide range of different font metrics.&lt;br /&gt;
* Extraordinarily good support for internationalized fonts (many of the bugs left from the 0.38 Bug Hunt were due to inadequacies in font handling.)&lt;br /&gt;
* Great support for generating outlines of text objects&lt;br /&gt;
* Good support for us to build text layout algorithms (like text-along-a-path) onto.&lt;br /&gt;
* Provided by a well-documented, well-supported, widely-available library that is actively maintained and extended by people other than us, who are very responsive to Inkscape's needs.  Ideally the library would add no additional dependencies on us.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is Pango and what does it do? ===&lt;br /&gt;
Pango is a library that provides layout and rendering of&lt;br /&gt;
internationalized text, that uses Unicode for its encoding and aims for&lt;br /&gt;
supporting output in all the world's major languages.&lt;br /&gt;
&lt;br /&gt;
Pango's principle use has been for internationalizing the text in Gnome&lt;br /&gt;
GUI's.  See the gallery:  http://www.pango.org/gallery.shtml&lt;br /&gt;
&lt;br /&gt;
From the Pango 1.4 release announcement:&lt;br /&gt;
&lt;br /&gt;
  Pango is designed to be modular; the core Pango layout can be used&lt;br /&gt;
  with three different font backends:&lt;br /&gt;
&lt;br /&gt;
   - Client-side fonts on X using the Xft2 library&lt;br /&gt;
   - Direct rendering of scalable fonts using the [[FreeType]] library&lt;br /&gt;
   - Native fonts on Microsoft platforms&lt;br /&gt;
&lt;br /&gt;
  Pango-1.4.0 ships with a wide selection of modules, including modules&lt;br /&gt;
  for Hebrew, Arabic, Hangul, Thai, and a number of Indic&lt;br /&gt;
  scripts. Virtually all of the world's major scripts are supported.&lt;br /&gt;
&lt;br /&gt;
  As well as the low level layout rendering routines, Pango includes&lt;br /&gt;
  [[PangoLayout]], a high level driver for laying out entire blocks of text,&lt;br /&gt;
  and routines to assist in editing internationalized text.&lt;br /&gt;
&lt;br /&gt;
  More information about Pango is available from http://www.pango.org/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In other words, Pango is a glue between platform-specific font&lt;br /&gt;
subsystems and application-specific renderers, with strong&lt;br /&gt;
internationalization support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What does Inkscape currently have that it'd replace? ===&lt;br /&gt;
&lt;br /&gt;
Inkscape currently uses a custom-written library called libnrtype for&lt;br /&gt;
doing typeface rendering.  This library provides wrappers around other&lt;br /&gt;
platform-specific font subsystems, and allows us to do things like&lt;br /&gt;
convert text to curves by getting the outlines of individual glyphs,&lt;br /&gt;
look up typeface metrics, and convert CSS style representations to&lt;br /&gt;
internal values for font weight, style, etc.&lt;br /&gt;
&lt;br /&gt;
The library includes hooks to Xft, Gnome-Print, and Win32.  It has&lt;br /&gt;
dependencies into libnr.  As part of the Inkscape&lt;br /&gt;
renderer work, livarot has also been added as a dependency for this.&lt;br /&gt;
&lt;br /&gt;
We aren't sure if anyone other than Inkscape and Sodipodi use this&lt;br /&gt;
library.  It was originally written by Lauris for Sodipodi.  We've been&lt;br /&gt;
maintaining it as things like livarot have been introduced, but the Inkscape team &lt;br /&gt;
are not actively developing it anymore.&lt;br /&gt;
&lt;br /&gt;
In other words, libnrtype is an efficient internal library that enables&lt;br /&gt;
us to work with fonted text as first-class drawing objects, but unfortunately&lt;br /&gt;
it does not have the complex support for internationalization that we need.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What will Inkscape be able to get from Pango? ===&lt;br /&gt;
&lt;br /&gt;
Pango looks like it will bring significant value to us by allowing us to&lt;br /&gt;
provide much better Internationalized font support, and in doing so,&lt;br /&gt;
enable us to close a huge chunk of old bug reports.&lt;br /&gt;
&lt;br /&gt;
It also replaces a sizeable chunk of code in Inkscape and instead of the extra &lt;br /&gt;
overhead of maintaining our own specific code we get all the benefits of sharing &lt;br /&gt;
a standard, stable, well maintained codebase that is pivotal to the Gnome desktop &lt;br /&gt;
and has many more resources being put into it.  &lt;br /&gt;
This will result in a net reduction in the size of our codebase, which is a&lt;br /&gt;
_good_ thing; less code means fewer places where bugs can appear and&lt;br /&gt;
suck our time away from more important things.  &lt;br /&gt;
&lt;br /&gt;
Specifically, beyond what we currently have, Pango gives us:&lt;br /&gt;
&lt;br /&gt;
* Internationalization support&lt;br /&gt;
* An actively maintained library (last release 16 Mar 2004)&lt;br /&gt;
* Documentation (Ref Man:  http://developer.gnome.org/doc/API/2.0/pango/)&lt;br /&gt;
* Modular system for renderers gives us a clean interface for hooking Inkscape's renderer to.&lt;br /&gt;
* A text layout system (left/right align, tab stops, etc.) - may not be powerful enough to meet our needs, though.&lt;br /&gt;
* Already exists as a dependency for Inkscape due to Gtk, so adds no additional dependencies for our users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How would Pango fit into Inkscape? ===&lt;br /&gt;
&lt;br /&gt;
While Pango provides a lot that libnrtype does not, there are some things&lt;br /&gt;
we'll need to consider:&lt;br /&gt;
&lt;br /&gt;
* Text-to-path:  Does Pango allow us to create outlines of text?&lt;br /&gt;
* Different function calls / changed API&lt;br /&gt;
* Any other unknown unknowns&lt;br /&gt;
&lt;br /&gt;
These things aside, though, it could be as simple as just switching out&lt;br /&gt;
the libnrtype calls with the corresponding ones from pango, and&lt;br /&gt;
then test the heck out of it.&lt;br /&gt;
&lt;br /&gt;
One approach to doing the conversion is to simply start going through&lt;br /&gt;
libnrtype, function by function, and changing the routines to become&lt;br /&gt;
pass-thru calls to the corresponding Pango calls, where feasible.  Then,&lt;br /&gt;
whatever is left-over we a) place in another location in Inkscape, and&lt;br /&gt;
b) package up and submit as a patch to help improve Pango in the&lt;br /&gt;
long-term.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Who's done what so far with the old code, and with Pango? ===&lt;br /&gt;
&lt;br /&gt;
Nathan has the most experience with text layout issues, and has done&lt;br /&gt;
some work on libnrtype in the past.  Several of the core developers have&lt;br /&gt;
touched on text/font areas of the code, and can provide some guidance&lt;br /&gt;
around the edges of the code.  Several team members have had some limited&lt;br /&gt;
experience with Pango via its use through the GUI interface, but we&lt;br /&gt;
don't yet have an experience base built up in it.&lt;br /&gt;
&lt;br /&gt;
Beyond that, while we all are in consensus that this work needs done,&lt;br /&gt;
that work has not begun in earnest yet.  So even someone with no&lt;br /&gt;
knowledge of fonts or Inkscape internals should be able to catch up to&lt;br /&gt;
speed with the rest of us pretty darn quick.  ;-)&lt;br /&gt;
&lt;br /&gt;
Inkscape already indirectly depends on Pango because &lt;br /&gt;
&amp;lt;a href=&amp;quot;http://sourceforge.net/mailarchive/message.php?msg_id=7809807&amp;quot; &lt;br /&gt;
title=&amp;quot;GTK depends on Pango&amp;quot;&amp;gt;Pango it is an internal dependency of GTK&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Okay, what do we need to do? ===&lt;br /&gt;
&lt;br /&gt;
For specific tasks, please refer to the Inkscape Roadmap in the wiki&lt;br /&gt;
site, but in general here is roughly what will need to be done:&lt;br /&gt;
&lt;br /&gt;
a)  Get up to speed in Pango.  Get familiar with the reference manual. [Done]&lt;br /&gt;
&lt;br /&gt;
b)  Review the libnrtype code.&lt;br /&gt;
&lt;br /&gt;
c)  Replace calls of libnrtype routines that have close analogs in Pango with their Pango equivalents.  If there are no remaining calls to the libnrtype routines, remove them from the codebase.&lt;br /&gt;
&lt;br /&gt;
d)  Analyze the remaining libnrtype routines to see if they can be refactored into Pango calls to get the equivalent behavior, or alternately examine if the calling code could be refactored to use Pango instead of libnrtype.&lt;br /&gt;
&lt;br /&gt;
e)  Re-abstract remaining libnrtype code that can't be rewritten as Pango calls and place in a new area of the codebase outside libnrtype.  E.g., &amp;quot;nr-type-pango&amp;quot;.  Consider if it would be appropriate to also submit that chunk of code back to Pango as an added feature; if so, package it as a patch and send it to the Gtk mailing list (or a &amp;lt;a href=&amp;quot;http://bugzilla.gnome.org/enter_bug.cgi?product=pango&amp;quot;&amp;gt;patch tracker&amp;lt;/a&amp;gt; if you can find one).  For example, it could be _quite_ handy to refactor out the glyph outlining and text attributes code into some adaptor objects/functions that works with Pango.&lt;br /&gt;
&lt;br /&gt;
f)  Start employing Pango for doing text layout for e.g. SPText and friends.&lt;br /&gt;
&lt;br /&gt;
For reference see &amp;lt;a href=&amp;quot;http://sourceforge.net/mailarchive/forum.php?thread_id=4172159&amp;amp;forum_id=36054&amp;quot;&amp;gt;mental's post about how to do Pango conversion&amp;lt;/a&amp;gt; from the &amp;lt;a href=&amp;quot;http://inkscape.org/mailing_lists.php&amp;quot;&amp;gt;inkscape-devel@ mailing list&amp;lt;/a&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pangoification Discussion ===&lt;br /&gt;
&lt;br /&gt;
This is a summary of a discussion between mental, bulia, fred, and bryce&lt;br /&gt;
on Jabber 2004-06-05 regarding adoption of Pango and the issues involved.&lt;br /&gt;
&lt;br /&gt;
The principle issue we are facing at this time is that while many of the&lt;br /&gt;
Pango issues we've identified seem to have doable work-arounds, it's&lt;br /&gt;
become a little unclear what our eventual goal design-wise is with it in&lt;br /&gt;
the long term.  Specifically, Pango likes to grid-fit its layouts, which&lt;br /&gt;
makes it a bit inflexible for things like getting undistorted outlines&lt;br /&gt;
and layouts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Vertical Text ====&lt;br /&gt;
&lt;br /&gt;
Pango does well with horizontal text but Fred had a question about how&lt;br /&gt;
multi-byte characters are handled.  E.g., an A with an umlaut requires&lt;br /&gt;
two bytes.  Would this render as a single character entity or as two?&lt;br /&gt;
Certainly we wouldn't want the system to resort to putting the A and&lt;br /&gt;
umlaut on separate lines.&lt;br /&gt;
&lt;br /&gt;
Mental explained that Pango provides routines for determining how many&lt;br /&gt;
&amp;quot;codepoints&amp;quot; makes up a particular character.  When you pass this&lt;br /&gt;
routine a UTF-8 string pointer, it will return the pointer advanced by&lt;br /&gt;
the next full character.  A codepoint can consist of one or more bytes.&lt;br /&gt;
one or more codepoints define a 'glyph'.  One or more glyphs define a&lt;br /&gt;
character.&lt;br /&gt;
&lt;br /&gt;
A glyph like an umlauts is an example of a &amp;quot;composing character&amp;quot;.  Fonts&lt;br /&gt;
combine these composing characters with other base characters to form&lt;br /&gt;
the various characters particular to a given language.&lt;br /&gt;
&lt;br /&gt;
It looks like pango_layout_move_cursor_visually() would be used to&lt;br /&gt;
determine the positioning of vertical text.  This won't be simple if we&lt;br /&gt;
don't use the Pango glyph positioning.  For more info see:&lt;br /&gt;
http://developer.gnome.org/doc/API/2.0/pango/pango-Layout-Objects.html#pango-layout-move-cursor-visually&lt;br /&gt;
&lt;br /&gt;
For our own work this suggests we may need to create [[PangoLayouts]] to do&lt;br /&gt;
our own specialized layout.&lt;br /&gt;
&lt;br /&gt;
UPDATE:  Fred has successfully tested it out.  He says it's only repositioning the text&lt;br /&gt;
vertically; the tricky part is to get the correct characters. &lt;br /&gt;
&lt;br /&gt;
==== Kerning Abilities ====&lt;br /&gt;
Control over font kerning is important for Inkscape yet it is uncertain&lt;br /&gt;
if Pango provides this control.  For letter spacing we need to be able&lt;br /&gt;
to:&lt;br /&gt;
&lt;br /&gt;
* Measure strings&lt;br /&gt;
* Count characters&lt;br /&gt;
* Handle pairwise kerning&lt;br /&gt;
* Glyph width (for things like text-on-path)&lt;br /&gt;
&lt;br /&gt;
Currently, sp-chars creates a [[NRArenaGlyphGroup]] for each string, tied to&lt;br /&gt;
one [[NRRasterFont]], but for things like text-on-path we'll want to have&lt;br /&gt;
unique transforms for each character.  We do not want to have to create&lt;br /&gt;
a separate [[GlyphGroup]] for each glyph though, so need a better solution&lt;br /&gt;
to this.&lt;br /&gt;
&lt;br /&gt;
The question came up about whether we can eliminate [[NRRasterFont]].  This&lt;br /&gt;
appears to be a necessary step in the pipline, because it is where the&lt;br /&gt;
transform is taken into account and where glyph caching occurs.  There&lt;br /&gt;
is a question about whether glyph caching is really necessary, or if we&lt;br /&gt;
could do direct rendering and use performance analysis to determine&lt;br /&gt;
where such optimizations are really necessary, but since text always has&lt;br /&gt;
such massive redundancy, caching is likely to prove quite necessary.&lt;br /&gt;
&lt;br /&gt;
==== Win32 Testing ====&lt;br /&gt;
We've very concerned that bugs in font handling are going to reproduce&lt;br /&gt;
quickly on different platforms unless they're closely tracked by&lt;br /&gt;
developers on those platforms.  Is adopting Pango worth enduring those&lt;br /&gt;
platform issues?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
* http://people.redhat.com/otaylor/grid-fitting/&lt;br /&gt;
* http://www.microsoft.com/typography/otfntdev/arabicot/features.htm&lt;br /&gt;
* Definition of character:  http://www.w3.org/TR/REC-xml/#dt-character&lt;br /&gt;
&lt;br /&gt;
 -- Bryce 4/16/04&lt;br /&gt;
 -- Alan 18/04/04 UTC, various minor edits&lt;/div&gt;</summary>
		<author><name>Zeimusu</name></author>
	</entry>
</feed>