Difference between revisions of "Release notes/1.2"

From Inkscape Wiki
Jump to navigation Jump to search
(Undo revision 122556 by Adambelis (talk))
Tag: Undo
 
(329 intermediate revisions by 10 users not shown)
Line 1: Line 1:
<languages />


<!-- {{Box| '''These Release Notes are in Draft Status.'''


{{Box| '''These Release Notes are in Draft Status.'''
Note: Not all animations work, due to Wiki bugs with resizing images. Release notes will be transferred to website, there animations will be working.


Important Links:
Important Links:
Line 12: Line 14:
{{Box| Pending questions:
{{Box| Pending questions:


* …
List:
}}
 
}} -->




<translate>


== Release highlights ==
== Release highlights == <!--T:251-->


'''Definitely not released yet.'''
<!--T:252-->
'''Released on May 16, 2022 '''
<!--'''Definitely not released yet.'''-->


<!--T:253-->
* Inkscape documents can now hold '''multiple pages''', which are managed by the new '''[[#Page_tool|Page tool]]'''
* Inkscape documents can now hold '''multiple pages''', which are managed by the new '''[[#Page_tool|Page tool]]'''
* '''Editable [[#Markers|markers]] and [[#Custom_Dash_patterns|dash patterns]]'''
* '''Editable [[#Markers|markers]]''' and [[#Custom_Dash_patterns|'''dash patterns''']]
* '''[[#Layers_and_Objects_dialog|Layers and objects dialog merged]]'''
* '''[[#Layers_and_Objects_dialog|Layers and objects dialog merged]]'''
* '''[[#Alignment_and_Distribution_snapping|On-canvas alignment snapping]]'''
* '''[[#Alignment_and_Distribution_snapping|On-canvas alignment snapping]]''' and '''[[#Snapping|Snap settings redesign]]'''
* '''[[#Selector_Tool|Selectable object origin for numerical scaling and moving]]'''
* '''[[#Tiling|New 'Tiling' Live Path Effect]]'''
* '''[[#Align_and_distribute|All alignment options in a single dialog]]'''
* [[#Export|'''Redesigned Export dialog''']] with preview and ability to select objects/layers/pages and even multiple file formats to export to
* [[#New_Extensions|'''Import SVG images from Open Clipart, Wikimedia Commons and other online sources''']]
* [[#Selector_Tool|'''Selectable object origin''' for numerical scaling and moving]]
* '''[[#Align_and_Distribute|All alignment options in a single dialog]]'''
* '''[[#Gradient_Editor_is_back|Gradient editing in the Fill and Stroke dialog]]'''
* '''[[#Gradient_Editor_is_back|Gradient editing in the Fill and Stroke dialog]]'''
* '''[[#Export Dialog|Redesigned Export dialog with preview and ability to select objects/layers/pages and even multiple file formats to export to]]'''
* '''[[#Dithering|Gradient dithering]]'''
* '''[[#Snapping|Snap settings refactored]]'''
* [[#SVG Font Editor|'''SVG Font Editor''' updated]]
* '''[[#Customization_.2F_Theming|Configurable Tool bar''', '''continuous icon scaling''' and '''many more new customization options]]'''
* '''[[#Text_Tool|Flowing text around shapes and text padding]]'''
* '''Performance improvements''' for many parts of the interface and many different functions
* '''[[#Path_Operations|Convenience Boolean operation for splitting paths]]'''
* '''[[#Notable_bugfixes|Many crash & bug fixes]]'''
* '''[[#Customization_.2F_Theming|Configurable Tool bar''', '''continuous icon scaling''' and many more new customization options]]
 
* '''Performance gains''' for many parts of the interface and many different functions
== General user interface ==
* '''Lots of improvements to the user interface'''
* '''Numerous crash & bug fixes''' in [[#Notable_bugfixes|the main Inkscape program]] and in [[#Bugs_fixed|in the stock extensions]]
* '''and so much more!'''


== General user interface == <!--T:254-->


=== Color palette ===
=== Color palette === <!--T:255-->


<!--T:256-->
The overall look and options of the Color palette and the Swatches dialog got a massive overhaul ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2881 MR #2881]):
The overall look and options of the Color palette and the Swatches dialog got a massive overhaul ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2881 MR #2881]):


* When switching the color palette, the switcher shows a colorful preview line for each palette
<!--T:257-->
* Between 1 and 5 palette rows that can be displayed all at once, or scrolled through vertically / using the arrow buttons
* When switching the color palette, the switcher shows a '''colorful preview line''' for each palette
* Improved and reliably working settings for padding, tile size and tile shape / auto-stretching
* Between 1 and 5 '''palette rows''' that can be displayed all at once, or scrolled through vertically / using the arrow buttons
* Improved and reliably working settings for '''padding, tile size and tile shape / auto-stretching'''


<!--T:258-->
[[File:Color pallet demo.gif|frame|center|Color palette layout options]]
[[File:Color pallet demo.gif|frame|center|Color palette layout options]]


[TODO: add autostretch to demo animation?]


=== Context menus === <!--T:259-->


=== Status Bar ===
<!--T:260-->
* Context menus '''no longer contain functionality that is not available''' for the selected object (no greyed-out items anymore), making it easier to find what you're looking for. This also helps find objects you've hidden, as the option to unhide objects under the cursor only appears if there are hidden objects in that location ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3800 MR #3800]).
* The '''Extract image''' command has been improved and works with multiple images now. You can now enter a base filename; if none is entered, the ids of the selected images are used as filename. You can also choose whether the embedded image data should be replaced by a link to the exported file ([https://gitlab.com/inkscape/extensions/-/merge_requests/461 MR extensions#461], [https://gitlab.com/inkscape/extensions/-/issues/167 Bug extensions#167]).


* The layer selection dropdown has been replaced by a layer indicator. Clicking on the indicator opens the new [[#Layers_and_Objects_dialog|Layers and object dialog]]. This change improves Inkscape's performance for documents with many layers ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3648 MR #3648]).
=== Dithering === <!--T:261-->
* The status bar contents is now configurable, see [[#Bars_.2F_Toolbars|Customization section]].


<!--T:262-->
Inkscape's gradients sometimes suffered from visible steps between colors, a phenomenon also known as '''gradient banding'''. Gradient banding is caused by the difference between how many different colors are available for the selected image file format and how many colors a human eye can discern. The effect becomes especially prominent when exporting a gradient that only spans a small color range to a high-resolution image. There just aren't enough colors available for a smooth transition.


=== Tool bar ===
<!--T:263-->
'''Dithering''' softens these steps '''by scattering pixels''' of the different adjacent colors along the gradient, a little bit like a blur.


* The tool bar width can now be resized by dragging edge and wraps into multiple columns
<!--T:264-->
* You can customize which tools will be part of the tool bar in the preferences, see [[#Bars_.2F_Toolbars|Customization section]]
Dithering is now used both for '''Export of raster images''' as well as for '''displaying gradients on canvas''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3812 MR #3812]). This functionality requires a special version of Cairo, our rendering engine. This means that it will '''only be available in the pre-packaged builds''' (for '''macOS''', '''Windows''' and for the '''Linux AppImage''').  


=== Command bar ===
<!--T:265-->
We returned zoom commands back to the command bar
Dithering can be turned off (better performance / smaller exported file size for raster images) in <code>Preferences → Rendering → Use dithering</code>.


=== Dithering ===
<!--T:266-->
'''Note:'''
* ''Dithering does not work for mesh gradients!''
* ''For standard Linux package formats (deb, rpm, …), it depends upon your Linux distribution maintainers whether they will patch up the version of Cairo they want to distribute. We hope that this change will one day also be included in the official Cairo packages ([https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/24 Link to ongoing discussion]).''


<!--T:267-->
[[File:Dithering_comparison.png|frame|center|Top: Gradient banding, bottom: dithered, smooth gradient]]


[REVIEW before release with regards to available formats]
[TODO: add nicer/more obvious comparison image]


Inkscape's gradients sometimes suffered from visible steps between colors, a phenomenon also known as '''gradient banding'''. Gradient banding is caused by the difference between how many different colors are available for the selected image file format and how many colors a human eye can discern. The effect becomes especially prominent when exporting a gradient that only spans a small color range to a high-resolution image. There just aren't enough colors available for a smooth transition.
=== Menu === <!--T:268-->
 
<!--T:269-->
* The option '''<code>View → Custom</code>''' was removed, as the difference was the location of the snap controls bar, and that [[#Snap_popover|is gone now]] ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3647 MR #3647]).
* After installing a new extension with the Extensions Manager, the menu now '''updates without the need to restart Inkscape''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3611/diffs?commit_id=0bb51adf076ead63d8aa149ad2547d8f96833761 Commit #0bb51a])
 
 
=== Performance === <!--T:270-->
 
<!--T:271-->
* Various performance improvements for rendering while panning and zooming ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3838 MR 3838])
* Improved performance on macOS
 
 
=== Settings === <!--T:272-->


'''Dithering''' softens these steps '''by scattering pixels''' of the different adjacent colors along the gradient, a little bit like a blur.
<!--T:273-->
Some '''default settings''' have been changed to make Inkscape easier to use for new users:


Dithering is now used both for '''Export of raster images''' as well as for '''displaying gradients on canvas'''([https://gitlab.com/inkscape/inkscape/-/merge_requests/3812 MR #3812]). This functionality requires a special version of Cairo, our rendering engine. This means that it will '''only be available in the pre-packaged builds''' (for '''macOS''', '''Windows''' and for the '''Linux AppImage''').
<!--T:274-->
* Rotation is now locked by default
* The default handle size has been increased (to 4)
* The default number of autosave files has been increased (to 50)


For standard Linux package formats (deb, rpm, …), it depends upon your Linux distribution maintainers whether they will patch up the version of Cairo they want to distribute. We hope that this change will one day also be included in the official Cairo packages ([https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/24 Link to ongoing discussion]).
=== Status Bar === <!--T:275-->


[[File:Dithering_comparison.png|frame|center|Top: Gradient banding, bottom: dithered, smooth gradient]]
<!--T:276-->
* The layer selection drop-down has been replaced by a '''layer indicator'''. Clicking on the indicator opens the new [[#Layers_and_Objects_dialog|Layers and object dialog]]. This change improves Inkscape's performance for documents with many layers ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3648 MR #3648]).
* The '''layer lock and hide icons''' now come after the layer indicator, which is more logical ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3856 MR #3856], [https://gitlab.com/inkscape/inkscape/-/issues/3104 Bug #3104])
* The status bar '''contents are now configurable''' from <code>Edit → Preferences → Interface: Status bar</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3445 MR #3445])
* When your document has more than one page, the status bar shows the '''page navigation''' to the right of the message area, allowing you to leaf through the pages or to select a specific page directly


<!--T:277-->
<gallery mode="packed" heights=350px>
File:Page navigation.png|Page navigation in status bar
File:Status bar items toggle.gif|Toggling visibility of items in the status bar (click to see animation)
</gallery>


== Canvas ==


=== Tool Bar === <!--T:278-->


[[File:Page shadow.png|thumb|823x823px|Page shadow ]]
<!--T:279-->
* The Tool bar '''width can now be adjusted''' by dragging its edge. The tool icons will wrap into '''multiple columns''', separated by tool category, depending upon the width.
* You can now '''hide tools''' from the tool bar at <code>Edit → Preferences → Interface → Toolbars: Toolbars</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3515 MR #3515])


=== Page ===
<!--T:280-->
[[File:X5pWfteMzW.gif|frame|center|Toggling tool visibility for the tool bar]]


* The page shadow now has a more realistic, blurry, fade-out look ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3128 MR #3128]).
== Canvas == <!--T:281-->
* Settings for the page background / decoration were refactored, see [[#Document_Properties|section about Document properties dialog]].
* Inkscape documents can now hold multiple pages! Learn more in the [[#Page_tool|section about the new Page tool]].


=== Page === <!--T:282-->


=== Snapping ===
<!--T:283-->
* Inkscape documents can now hold '''multiple pages'''! Learn more in the [[#Page_tool|'''section about the new Page tool''']].
* '''Page shadows''' now have a '''more realistic''', blurry, fade-out look ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3128 MR #3128]).
* '''Settings for the page background / decoration''' (shadow, border) were refactored, see [[#Document_Properties|section about Document properties dialog]].
* The page's '''default color''' is white, and the default desk color is set to light gray. This way, it is easier to differentiate what is '''on''' the page(s) and what is '''outside''' of the page(s).


<!--T:284-->
[[File:Page shadow.png|center|thumb|800x400px|Page shadow comparison. Left: Inkscape 1.1, right: Inkscape 1.2]]


==== Snap bar is now Snap popover ====
=== Snapping === <!--T:285-->


<!--T:286-->
[[File:Snapping popover .gif|frame|right|New snap settings layout]]
[[File:Snapping popover .gif|frame|right|New snap settings layout]]


The snap bar has been replaced with a new 'popover'-type dialog, which will unfold when you click on the little arrow symbol in the top right corner, next to the snap symbol.
==== Snap popover ==== <!--T:287-->
Snap options now have always-visible descriptions, to make them easier to understand ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3323 MR #3323]).
 
<!--T:288-->
The snap bar has been replaced with a new ''''popover'-type dialog''', which will '''unfold''' when you click on the little arrow symbol in the top right corner, next to the snap symbol.
Snap options now have '''always-visible descriptions''', to make them easier to understand ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3323 MR #3323]).


<!--T:289-->
To activate / deactivate snapping globally, click on the snap symbol in the top right corner or press '''<kbd>%</kbd>'''.
To activate / deactivate snapping globally, click on the snap symbol in the top right corner or press '''<kbd>%</kbd>'''.


<!--T:290-->
The popover dialog has two different modes:
The popover dialog has two different modes:
* Simple: Only 3 options: snap bounding boxes and paths, activate / deactivate the new alignment snapping). This provides a simple preset for many use cases.
* '''Simple''': Only 3 options: snap bounding boxes and paths, activate / deactivate the new alignment snapping). This provides simple presets for many use cases.
* Advanced: Gives the familiar granular control over every snapping option. Switching from 'Advanced' back to 'Simple' is not merely a visual change, but will reset snap settings to defaults.
* '''Advanced''': Gives the familiar granular control over every snapping option.  


<!--T:291-->
'''''Note:''' Switching from 'Advanced' back to 'Simple' is not merely a visual change, but will reset snap settings to defaults.''


==== Snapping preferences globalized ====


Snap settings are no longer saved with the document, but are set globally for all documents in the preferences and in the snap popover dialog.
==== Alignment and Distribution snapping ==== <!--T:292-->
The option for enabling snapping in new documents has been removed, as it no longer makes sense.


The options for snapping perpendicularly and tangentially to paths or guide lines have been moved from the document preferences to the snap popover to make them more discoverable.
<!--T:293-->
The other snap options from the document settings dialog were removed. [TODO: check whether this is still true at the time of release]<!-- mostly moved into the global user preferences, and are now available in their Snapping section under <code>Edit → Preferences → Behavior → Snapping</code> -->
During Google Summer of Code 2021, GSOC student '''[https://gitlab.com/ParthPant Parth Pant]''' worked on adding '''on-canvas alignment and distribution snapping''', with the support of his mentors Thomas Holder and Marc Jeanmougin.  
As a result, '''two new modes of on-canvas snapping''' have been added. These new modes make aligning and distributing objects a '''very easy drag-and-drop operation''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3294 MR #3294])..


<!--T:294-->
* When '''on-canvas alignment''' is active (option '''Alignment'''), Inkscape will display horizontal or vertical temporary guide lines that indicate when the selected object can be aligned relative to another object on the canvas. It connects the points of the objects that are in alignment. With the option '''Nodes in same path''', alignment snapping is also available for nodes while editing a path with the node tool.
* With '''distribution snapping''' (option '''Same distances'''), multiple objects close by are taken into account, making it possible to align objects in a grid with very little effort.


==== Alignment and Distribution snapping  ====
<!--T:295-->
The '''temporary guide lines''' only appear while editing / moving objects on the canvas. Once a guide shows up, the movement of the selection is loosely constrained in the direction of the guide.


[[File:Snap-toolbar.png|frame|right|New alignment snapping options]]
<!--T:296-->
Alignment and Distribution snapping guide lines can '''display the distance(s)''' between objects as a little label. This can be enabled from <code>Edit → Preferences → Snapping: Show snap distance in case of alignment or distribution snap</code>.


During Google Summer of Code 2021, GSOC student Parth Pant worked on adding on-canvas alignment and distribution snapping, with support of the mentors Thomas Holder and Marc Jeanmougin.  
<!--T:297-->
As a result, three new modes of on-canvas snapping have been added. These new modes make aligning and distributing objects a very easy drag-and-drop operation ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3294 MR #3294])..
The 'Simple' mode of the snapping popover dialog allows you to simply activate or deactivate Alignment snapping.  
The 'Advanced' mode gives you additional control by allowing you to en-/disable:


When on-canvas alignment is active, Inkscape will display horizontal or vertical temporary guide lines that indicate when the selected object can be aligned relative to another object on the canvas. It connects the points of the objects that are in alignment.
==== Other Changes to Snapping ==== <!--T:298-->
With distribution snapping, multiple objects close by are taken into account, making it possible to align objects in a grid, with very little effort.


The temporary guide lines only appear while editing / moving objects on the canvas. Once a guide shows up, the movement of the selection is loosely constrained in the direction of the guide.
<!--T:299-->
* Snap settings are '''no longer saved with the document''', but are set '''globally for all documents''' in the preferences and in the snap popover dialog.
* The option for '''enabling snapping in new documents''' has been '''removed''', as it no longer makes sense ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3580 MR #3580])
* The options for '''snapping perpendicularly''' and '''tangentially''' to paths or guide lines have been '''moved''' from the document preferences to the snap popover to make them more discoverable.
* The options to '''configure snap tolerances''' per snap target type that previously could be set in the document preferences have been '''removed''' to simplify snapping for users.


<!-- Alignment and distribution snapping also have their separately configurable snap tolerances which can be adjusted in <code>Document Properties → Snap</code> [TODO: this option has not been moved to global preferences and is not available!]-->
Alignment and Distribution snapping guide lines display the distance(s) between objects as a little label per default. This can be disabled from <code>Edit → Preferences → Snapping: Show snap distance in case of alignment or distribution snap</code>.


The 'Simple' mode of the snapping popover dialog allows you to simply activate or deactivate Alignment snapping.
<!--T:300-->
The 'Advanced' mode gives you additional control by allowing you to en-/disable:
<gallery mode="packed" heights="350px">
File:Self snapping.gif|Snapping nodes in the same path
File:Aligment and distribution snapping exemple.gif|Demo of alignment and distribution snapping
</gallery>


'''Available additional options:'''
=== Guides and Grids === <!--T:301-->
* '''Alignment Snapping''':  Tools and objects snap to position of other objects
*'''Self snapping''':  Alignment snapping for nodes in the same path while editing nodes or node handles.
* '''Distribution snapping''': Objects snap to same gap size as their neighbours
[[File:Self snapping.gif|frame|center|Snapping nodes in the same path]]
[[File:Aligment and distribution snapping exemple.gif|frame|center|Demo of alignment and distribution snapping]]


=== Guides ===
<!--T:302-->
* The '''size of the guide handles''' is now '''adjustable''' via the existing setting <code>Edit → Preferences → Interface → Handle size</code>. Nonetheless, the guide handles react to this setting at half the rate of other handles; at large settings, the effective size of a guide handle is about half the size of an auto-smooth node. At the same time, a minimum size is enforced, equal to the previously hard-coded size. As a result of this mechanism, the handle is only enlarged when the <code>Handle size</code> preference is set to a value of 7 or larger. Since the default value is 3, the size of guide handles does not change on new installs or for users on default settings ([https://gitlab.com/inkscape/inkscape/-/issues/3111 Bug #3111], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3870 MR #3870])
* Larger '''handles can now easily be grabbed''' with the mouse, because the handles themselves are now 'grabb-able', not only the guide lines below ([https://gitlab.com/inkscape/inkscape/-/issues/3111 Bug #3111], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3870 MR #3870])
* Handles '''now take on the guide's color'''. Only when the guide is locked, its handle turns grey (and changes the shape to an "x", as before) ([https://gitlab.com/inkscape/inkscape/-/issues/3111 Bug #3111], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3870 MR #3870])
* The '''default color''' of guides and grids was changed to a '''softer shade of blue''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4012 MR #4012])


* The size of the handles is now adjustable in the Preferences via the existing setting <code>Interface → Handle size</code>. Nonetheless, the guide handles react to this setting at half the rate of other handles; at large settings, the effective size of a guide handle is about half the size of an auto-smooth node. At the same time, a minimum size is enforced, equal to the previously hard-coded size. As a result of this mechanism, the handle is only enlarged when the <code>Handle size</code> preference is set to a value of 7 or larger. Since the default value is 3, the size of guide handles does not change on new installs or for users on default settings.
<!--T:303-->
* The handle now has a hitbox and reacts to mouse events in the same way as the guide line itself. This makes it easier to interact with the guide. Taken together, these two changes address [[/inkscape/inkscape/-/issues/3111|#3111 (closed)]].
[[File:Guide changes.png|frame|center|New guide appearance (enlarged for better visibility, and thus pixelated)]]
* The colour of the handle is now the same as the colour of the guide, except when the guide is locked.
* When a guide is locked, its handle turns gray (and changes the shape to an "x", as before).
* The handle is always correctly centered on the guide line. This change also fixes a similar positioning error that affected node handles.


Fixes [[/inkscape/inkscape/-/issues/2022|#2022 (closed)]]; Fixes [[/inkscape/inkscape/-/issues/2604|#2604 (closed)]]; Fixes [[/inkscape/inkscape/-/issues/3111|#3111 (closed)]];
== Tools == <!--T:304-->


MR #[https://gitlab.com/inkscape/inkscape/-/merge_requests/3870 3870]
=== Tool settings === <!--T:305-->


=== Performance ===
<!--T:306-->
Canvas rendering got significate refracturing and should be faster to render while panning and zooming
* The '''Pen, Pencil, Text and Tweak tool''' now use the ''''last used style' by default''', and will not constantly reset to black fill / stroke respectively for new users with default preferences ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3533 MR #3533]).
* The default ''''Mass' value''' of the '''Eraser tool''' has been '''increased''', so the result is now much smoother ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3440 MR #3440], [https://gitlab.com/inkscape/ux/-/issues/107 Bug UX#107])
* The '''default 'Smoothing' value''' for the '''Pencil tool''' has been increased, so first-time users' first drawings will look less squiggly ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3966 MR #3966])
* The '''default font unit''' for the '''Text tool''' is pt.


[https://gitlab.com/inkscape/inkscape/-/merge_requests/3838 MR 3838]
=== Gradient Tool === <!--T:307-->


== Tools ==
<!--T:308-->
To allow you to keep gradients, even when the last object that was using it has been deleted, we added a setting for '''automatically removing unused gradients''' at <code>Preferences → Gradient Tool → Auto delete gradients that are not used</code>. This is turned on by default, which corresponds to the behavior of the previous Inkscape version, but you can now turn it off ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3897 MR #3897]).


=== Node tool === <!--T:309-->


=== Page tool ===
<!--T:310-->
* The box (lasso) selection mode gained two new features: '''node deselection''' and '''inverted node selection''':
** to '''deselect''' some of the selected nodes, drag a box around those nodes while holding <kbd>Shift + Ctrl</kbd>.
** to '''select all nodes but those that end up within the box''', hold <kbd>Ctrl</kbd> while dragging the box around the nodes.
* When '''clicking on a path segment while holding <kbd>Ctrl</kbd>''', the path segment becomes a '''straight line'''
* When '''double-clicking on a path segment while holding <kbd>Ctrl</kbd>''', the path segment is '''removed'''
[[File:Inkscape FYXaPj0jjw.gif|border|none|thumb]]
[[File:Inkscape FekqUR7B43.gif|none|thumb]]
[[File:Inkscape LWkJXrBQvg.gif|none|thumb]]
[[File:Inkscape bgUVcBaXny.gif|none|thumb|CTRL+  DoubleClick  remove segment]]


=== Page tool ===  <!--T:311-->
[[File:Page tool context menu.png|frame|right|Context menu for the Page tool]]
The new Page tool (lowest button in the tool bar) allows you to create multi-page Inkscape documents, and to import as well as export multi-page PDF documents. ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3486 MR #3486], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3785 MR #3785], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3821 MR #3821]). It supports overlapping pages and pages of different sizes in a single document.
The new Page tool (lowest button in the tool bar) allows you to create multi-page Inkscape documents, and to import as well as export multi-page PDF documents. ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3486 MR #3486], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3785 MR #3785], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3821 MR #3821]). It supports overlapping pages and pages of different sizes in a single document.


==== Importing (Merge) / Exporting (Split) ==== <!--T:312-->
Multi-page documents can be imported with their pages appended as new pages in the existing document. Select the correct option in the window that pops up to append pages rather than import shapes as usual. This can be used to merge multiple pdf files.
<!--T:313-->
Exporting multiple pages can be done in the new export dialog in batch mode. As well as each individual page in the Single export tab. Use this to split into single page svg or pdf documents. ''Note: it's not yet possible to select a sub-selection of multiple pages to export yet.''
<!--T:314-->
'''Tool usage:'''
'''Tool usage:'''
* To '''create a new page''' either:
* To '''create a new page''' either:
Line 181: Line 275:
** '''a selected object''': first select the object(s) with the selection tool, then switch to the Page tool, click on a page to select it, then press the the button 'Fit page to drawing or selection' in the tool controls
** '''a selected object''': first select the object(s) with the selection tool, then switch to the Page tool, click on a page to select it, then press the the button 'Fit page to drawing or selection' in the tool controls
* To '''add a label''' to your page, select the page by clicking on it, then enter a name or label for it into the text field in the page tool's tool controls. Labels are always visible, no matter which tool is currently selected.
* To '''add a label''' to your page, select the page by clicking on it, then enter a name or label for it into the text field in the page tool's tool controls. Labels are always visible, no matter which tool is currently selected.
* To '''export a multi-page PDF''' file, use <code>File → Save a copy … → PDF</code>. This will automatically include all pages.
* To '''export a multi-page PDF''' file, use <code>File → Save a copy … → PDF</code>. This will automatically include all pages. If you only want to export a certain page, or a selection of pages, the updated  [[#Export_Dialog|<code>File → Export</code> dialog]]'s batch export tab can help you get that done (one file per page).
* To '''open or import a multi-page PDF or (pdf-based) AI''' file, use <code>File → Open/Import → select file name → choose to import 'All' pages</code> [Known issue: 'import' moves content of some pages to some far out place in the drawing]
* To '''open or import a multi-page PDF or AI (pdf-based)''' file, use <code>File → Open/Import → select file name → choose to import 'All' pages</code> [Known issue: 'import' moves content of some pages to some far out place in the drawing]
*You can navigate pages with  page navigator on that will show up in right down corner of status bar


<!--T:315-->
''Note: Multi-page SVG files are an Inkscape-specific concept. Web browsers will only display the first page of your document, which corresponds to the 'viewbox' area of the SVG file.''
''Note: Multi-page SVG files are an Inkscape-specific concept. Web browsers will only display the first page of your document, which corresponds to the 'viewbox' area of the SVG file.''


[TODO: needs gif!]
<!--T:316-->
<gallery mode="packed" heights=450px>
File:Page Tool-New Pages.gif|Creating a page using the tool controls
File:Page Tool-Navigate-Pages-from-Status-bar.gif|Navigating pages from the status bar
File:Page Tool-Moving-Objects-with-Pages.gif|Moving objects along with the page
File:Page Tool-Label Pages.gif|Labelling pages
File:Page Tool-Delete Pages.gif|Deleting pages and their contents
</gallery>


=== Selector Tool ===
=== Selector Tool === <!--T:317-->


The tool now allows to '''set the origin of the selection''' for precise numerical positioning:
<!--T:318-->
The tool now allows to '''set the origin of the selection''' for precise numerical positioning to one out of 8 possible positions:


# '''Click''' on one of the 9 object handles to select your desired origin for the scaling, '''or select and then drag''' the middle handle to the desired position
<!--T:319-->
# A '''small red circle with lines''' now indicates the new origin and the '''x/y position''' in the tool controls will adjust to the new origin.
# If no handle is selected, the '''default origin is the top left corner''' of the bounding box.
# To change, '''click''' on '''one of the other 7 outside object handles''' to select your desired origin for the scaling.
# The selected handle is now highlighted in blue and the '''x/y position''' in the tool controls will adjust to the new origin.
# Now '''edit the x, y, width or height values''' to move and scale your object using the new origin ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2700 MR #2700])
# Now '''edit the x, y, width or height values''' to move and scale your object using the new origin ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2700 MR #2700])
#Shift click on origin reset original position of origin
# To '''reset''' the transformation origin, <kbd>Shift + Click</kbd> on the highlighted handle.


<gallery style="border: 1px solid #c8ccd1;padding: 3px;background-color: #f8f9fa;" mode="packed" heights=350px>
<!--T:320-->
<gallery mode="packed" heights=450px widths=450px perrow=2>
File:Change origin of selection.gif|Changing the origin for scaling numerically
File:Change origin of selection.gif|Changing the origin for scaling numerically
File:Change origin to TOP right.gif|Changing the origin to move one corner to a specified coordinate
File:Change origin to TOP right.gif|Changing the origin to move one corner to a specified coordinate
</gallery>
</gallery>


 
=== Text Tool === <!--T:321-->
=== Text Tool ===
[[File:Kerning popover.png|frame|right|Text spacing/kerning options in a popover dialog]]
 
* '''Kerning options''' are now symbolized by a '''button''' between the subscript and text direction selectors. Clicking on it will open a so-called pop-over, where all previously available options can be found. This change saves space in the Text tool's toolbar.
* '''Kerning options''' are now symbolized by a '''button''' between the subscript and text direction selectors. Clicking on it will open a so-called pop-over, where all previously available options can be found. This change saves space in the Text tool's toolbar.
* '''Negative kerning''' values can now be as little as <code>-1000</code> (previously -100), making them symmetrical to their positive counterparts ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2569 MR #2569], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3434 MR #3434])
* '''Negative kerning''' values can now take on values as small as <code>-1000</code> (previously -100), making them symmetrical to their positive counterparts ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2569 MR #2569], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3434 MR #3434])
* '''Padding''': Text that is flowed into a shape and standard flowed text now have an '''additional square-shaped handle''' in the top right corner. Move the handle to adjust the text padding inside the frame ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2769 MR #2769]) <span style="color:red;">'''[Currently broken]'''</span>
* '''Padding''': Text that is flowed into a shape and standard flowed text now has an '''additional square-shaped handle''' in the top right corner. Move the handle to adjust the text padding inside the frame ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2769 MR #2769])
* '''Exclusion zones''': Text can now '''flow around one or more movable objects''' <span style="color:red;">'''[Currently broken]'''</span>:  
* '''Exclusion zones''': Text can now '''flow around one or more movable objects''':  
*# Select all object(s) (use only shapes and paths on the same object hierarchy level as the text; no groups / clones / images supported) and the text.
*# Select all object(s) (use only shapes and paths on the same object hierarchy level as the text; no groups / clones / images supported) and the text.
*# Set the exclusion zone by going to <code>Text → Set subtraction frames</code>.
*# Set the exclusion zone by going to <code>Text → Set subtraction frames</code>.
*# Now you can move the exclusion objects around or edit their shape, and the text will adjust automatically.
*# Now you can move the exclusion objects around or edit their shape, and the text will adjust automatically.
*# If you want to change the exclusion zones again at a later point, repeat the process with all objects that the text should flow around.
*# If you want to change the exclusion zones again at a later point, repeat the process with all objects that the text should flow around.<br/>''Background info:''<br/>''SVG 2.0 flowed text allows for <code>shape-padding</code> and <code>shape-subtract</code> attributes. <code>shape-padding</code> lets the text flow into a shape and leave some space between its edges and w where the text will start to flow. <code>shape-subtract</code> subtracts shapes with margin, so text can flow around other objects in the scene. These attributes were supported in Inkscape 1.0, but not exposed to the user. This version of Inkscape includes both an adjustable on-canvas knot for changing the padding as well as a Text menu item for setting text subtraction properties with a further knot to adjust it's margins.''
Background info:  
''SVG 2.0 flowed text allows for <code>shape-padding</code> and <code>shape-subtract</code> attributes. <code>shape-padding</code> lets the text flow into a shape and leave some space between its edges and w where the text will start to flow. <code>shape-subtract</code> subtracts shapes with margin, so text can flow around other objects in the scene. These attributes were supported in Inkscape 1.0, but not exposed to the user. This version of Inkscape includes both an adjustable on-canvas knot for changing the padding as well as a Text menu item for setting text subtraction properties with a further knot to adjust it's margins.''


[See merge request for animated gifs to add here]
<!--T:322-->
[[File:Text-subtract opt.gif|frame|center|Text flowing around a shape and then text padding being adjusted]]


=== Gradient Tool ===
== Path Operations == <!--T:323-->
We Added New control in to  <code>'''Preferences → Gradient Tool'''</code>. <code>Auto delete gradients that are not used</code> This is turned on my default. This setting  prevents gradients that are not used on any object to stay in gradient library  and this prevents gradients to fill up library. This is not a new behavior  we just added ability to turn it off .


== Path Operations ==
<!--T:324-->
With <code>'''Path → Split path'''</code>, Inkscape now has functionality to separate a path object that consists of multiple subpaths into a set of path objects that 'belong together'. This means that parts of a path that have holes in them are kept as whole objects. The function works by splitting up a path into non-intersecting bits, keeping intersecting bits together.


* New '''Split path''' operation, available from <code>'''Path → Split path'''</code>:<br />The function separates a path object that consists of multiple subpaths into a set of path objects that 'belong together'. This means that parts of a path that have holes in them are kept as whole objects. The function works by splitting up a path into non-intersecting bits, keeping intersecting bits together.<br />''Example'': A path that consists of a word, like 'Inkscape' will be split into 8 parts, one for each letter. With the familiar 'Break apart' function, there would be 12 parts, because of the holes in the letters that would be split off as their own objects, too  ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3738 MR #3738]).[TODO: add animation]
<!--T:325-->
<!-- * On-Canvas Boolean operations [TODO: fill in if merged, seems to have low probability, lots of work to be done] https://gitlab.com/inkscape/inkscape/-/merge_requests/3357 Osama Ahmad with mentors Thomas Holder, Marc Jeanmougin, Martin Owens -->
''Example'': A path that consists of a word, like 'Inkscape' will be split into 8 parts, one for each letter. With the familiar 'Break apart' function, there would be 12 parts, because of the holes in the letters that would be split off as their own objects, too  ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3738 MR #3738]).


== Dialogs ==
<!--T:326-->
[[File:Split.gif|center|frame|Top: Break path function separates all subpaths into single objects (not new)<br/>Bottom: Splitting a text into letters with the new 'Split path' operation]]


<!--T:327-->
<!-- == Masking / Clipping ==


[[File:Inkscape PyFNUY7fCi.gif|thumb|511x511px]]
<!--T:328-->
* A new option to '''preserve clips / masks when ungrouping''' objects has been added (<code>Edit → Preferences → Behavior → Clippaths and Masks: When ungroup, clip/mask is preserved in childrens</code>). The option is active by default. This means that when you now ungroup a group that has been clipped, the elements inside it will inherit the clip. Previously, the clip was removed and everything became un-clipped. To go back to previous default behavior, deactivate this new option. ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3564 MR #3564]) -->


=== General ===
== Dialogs == <!--T:329-->


* A mini-menu (downward pointing arrow symbol) was added into the title bar of every multi-dialog panel (also called 'notebook'). You can use it to close the current tab, to undock it, or to close the whole panel. It also shows a list of available dialogs, sorted by purpose, allowing you to open them with a click (([https://gitlab.com/inkscape/inkscape/-/merge_requests/3728 MR #3728]) [TODO: screenshot ]
 
* Open dialogs are now less costly for performance, because they do not update when it's not needed ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3369 MR #3369]), or when they are hidden ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3761 MR #3761])
<!--T:330-->
* Docking zones now expand and flash slowly when a dialog is dragged close to them. This makes it easier to see where docking is possible ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3729 MR #3729])
[[File:Inkscape PyFNUY7fCi.gif|frame|right|Close current tab or open any dialog directly from a dialog dock/window]]
 
=== General Dialog Changes === <!--T:331-->
 
<!--T:332-->
* A '''mini-menu''' (downward pointing arrow symbol) was added into the title bar of every multi-dialog panel (also called 'notebook'). You can use it to close the current tab, to undock it, or to close the whole panel. It also shows a list of available dialogs, sorted by purpose, allowing you to open them with a click (([https://gitlab.com/inkscape/inkscape/-/merge_requests/3728 MR #3728])
* The '''right-click menu for tabs''' now contains a '''list of all open dialogs'''.
* Open dialogs are now '''less costly for performance''', because they do not update when it's not needed ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3369 MR #3369]), or when they are hidden ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3761 MR #3761])
* '''Docking zones now expand and flash slowly''' when a dialog is dragged close to them. This makes it easier to see where docking is possible ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3729 MR #3729])
* The text labels of docked dialogs are now more responsive to the width of dialog ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3627 MR #3627])
* The text labels of docked dialogs are now more responsive to the width of dialog ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3627 MR #3627])
* A new '''option for text labels''' for docked dialogs has been added. <code>Edit → Preferences → Windows: Dialogs settings : Labels Behavior : Active</code> reduces all except the active tabs' labels to icons. The option is no longer available from the right-click menu of the tabs ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3644 MR #3644])
=== About Screen === <!--T:333-->


<!--T:334-->
The 'About Inkscape' dialog uses [https://inkscape.org/news/2022/03/22/new-discoveries-await-upcoming-inkscape-12-about/ the winner art from our Inkscape 1.2 About Screen Contest], '''"New discoveries await..." by Chris Hildenbrand'''.


=== Align and distribute ===
=== Align and Distribute === <!--T:335-->


<!--T:336-->
* The formerly separate <code>Arrange</code> dialog is now '''integrated''' with the <code>Align and Distribute</code> dialog. With its '''three tabs''', more '''user-friendly names''' and some '''small visual tweaks''', the dialog now holds everything that is needed for aligning, distributing and arranging objects in your drawing ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3382 MR #3382], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3667 MR #3667]).
* The formerly separate <code>Arrange</code> dialog is now '''integrated''' with the <code>Align and Distribute</code> dialog. With its '''three tabs''', more '''user-friendly names''' and some '''small visual tweaks''', the dialog now holds everything that is needed for aligning, distributing and arranging objects in your drawing ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3382 MR #3382], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3667 MR #3667]).
* The icons inside this dialog are now smaller.  
* The icons inside this dialog are now smaller.  
* Node  alignment and distribution is no longer shown on first run Just when you use node editing tool
[[File:Inkscape R6cB6sFN07.gif|center|frame|All alignment and distribution options in a single dialog]]
 
=== Document Properties === <!--T:337-->
 
<!--T:338-->
[[File:Document Properties.png|alt=Document Properties|thumb|right|First tab of the Document Properties dialog]]
 
<!--T:339-->
* The ''''Snapping' tab was removed''' in favor of a global snapping preference, see [[#Snapping|Snapping section]].
* The '''first tab''' of the Document properties dialog was '''refactored''' thoroughly to make it easier to use ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3700 MR #3700]):
** It's now labelled 'Display' instead of 'Page'.
** The long list of different document formats is now available from a dropdown.
** There is a preview available of the page format and colors.
** The '''page area(s)''' in a document can now have a '''different color''' than the underlying ''''desk' area'''.
** The other options have been rearranged to look tidier.
** ''Note: The option to '''add margins''' to a document when resizing it is '''currently unavailable'''''
* Grid precision has been reduced to 3 decimal places ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2941 MR #2941])
<div style="clear:both;">&nbsp;</div>
 
=== Export === <!--T:340-->
 
<!--T:341-->
The former <code>Export PNG image</code> dialog was updated to a general <code>Export</code> dialog by '''[https://gist.github.com/SlayerAnsh/bc932d86c8f846b9c2042a0255231563 2021 GSOC student Anshudhar Kumar Singh]''' with the mentors Michael Kowalski, Ted Gould and Tavmjong Bah, and finished by Martin Owens ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3825 MR #3825]).
 
<!--T:342-->
The new name reflects the increased range of functionality of the dialog.


[[File:Align and distribute dialog with 3 tabs.gif|frame|center|All alignment and distribution options in a single dialog]]
==== General Export Dialog Changes ==== <!--T:343-->
[TODO: needs re record with small icons]


=== Document Properties ===
<!--T:344-->
* the '''confusing number entry fields''' for export area coordinates have been '''hidden from all but the 'Custom' tab'''
* the dialog now features a '''preview''' that allows you to see what is going to be in the exported file(s). The preview can also be turned off when you do not need one, or in case performance suffers.


The 'Snapping' tab was removed in favor of a global snapping preference, see [[#Snapping|Snapping section]].
==== Available Export File Formats ==== <!--T:345-->


The first tab of the Document properties dialog was refactored thoroughly to make it easier to use:
<!--T:346-->
* by default, the dialog allows you to export images to multiple raster and vector formats: – '''PNG, Optimized PNG, JPEG, WebP, Tiff, SVG, Inkscape SVG, PDF'''
* by activating <code>Edit → Preferences → Input/Output → Show all outputs in Export dialog</code>, even '''more export formats''', provided by Inkscape extensions, will become accessible from the dialog. By default, this includes a long list almost as high as your Inkscape window - ranging from 'Compressed Inkscape SVG with media' and .dxf to 'Scribus CMYK pdf' and 'Windows Metafile (.wmf)'.
* '''third-party Inkscape Python extensions''' can be added to '''extend the dialog's functionality''' even further


* It's now labelled 'Display' instead of 'Page'
==== Batch Export ==== <!--T:347-->
* The long list of different document formats is now available from a dropdown
* There is a preview available of the page format and colors [TODO: needs screenshot]
* The page area(s) in a document can now have a different color than the underlying 'desk' area [TODO: mention in highlights?]
* The other options have been rearranged to look tidier
* The option to add margins to a document when resizing it is currently unavailable [TODO: hopefully get that back before the release]


([https://gitlab.com/inkscape/inkscape/-/merge_requests/3700 MR #3700]).
<!--T:348-->
In addition to exporting single images, one at a time, or simple batch export of objects in the selection to separate files, the dialog has gained the ability to:


([https://gitlab.com/inkscape/inkscape/-/merge_requests/3400/ MR #3400], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3403 MR #3403])
<!--T:349-->
* also batch export '''top level layers''' and '''pages'''
* to export to '''multiple image resolutions at once''', by setting a different DPI value for each export format/size
* to export to '''multiple file formats at once'''
* to '''select''' objects, pages or top level layers to export (with preview)
* '''file names''' are constructed as <code><filename>_<object id>_<suffix>.<extension></code>, where each export file format/size can have '''its own suffix'''


<!--T:350-->
This functionality lives in the dialog's '''new second tab'''. To add another export file format or size, click on <code>'''Add export'''</code>, and a new line with selectable suffix, file format and dpi value settings becomes available. Layer export will include '''all objects in the layer''' (i.e. crop to content).


=== Fill and Stroke dialog ===
<!--T:351-->
''Hint: If you need a background for export that is the same over all layers (e.g. for a presentation or slideshow, or for an animation), you can move that background object into the root of the SVG file, by dragging it out of a layer and placing it below all layers with the Layers/Objects dialog in Objects mode. To have all layers exported at the same size, you'd still need an (invisible) object in each layer with the desired size.''


Watch this video tutorial to see batch export in action ([https://activdesign.eu/blog/inkscape-12-export-en-masse fr : export en masse] | [https://activdesign.eu/blog/inkscape-12-new-batch-export en : batch export])


<!--T:352-->
<gallery widths=650px heights=500px perrow=2>
File:Export single.png|Exporting a single page with preview
File:Export selection single.png|Exporting a single file from a selected object
File:Export selection batch multiformat.png|Exporting multiple selected objects to multiple formats and sizes at the same time
File:Export selection batch multiformat result.png|Resulting list of files in image viewer (does not show pdf)
</gallery>
=== Fill and Stroke dialog === <!--T:353-->
==== Color selector ====
==== Color selector ====


[[File:HSLuv_color_picker.png|thumb|200px|HSLuv color picker mode]]
<!--T:354-->
* The more intuitive HSL mode (hue, saturation, lightness) is now the default mode of the color selector.  
[[File:HSLuv_color_picker.png|thumb|200px|HSLuv color picker mode with color wheel]]
* All color selection modes (e.g. HSL, HSV, RGB, CMYK, color wheel, CMS) have been moved into drop-down menu, with icons. You can get the old, tabbed look back by disabling the option in <code>Edit → Preferences → Interface: Use compact color selector mode switch</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3443 MR #3443]).
 
<!--T:355-->
* The more intuitive '''HSL mode''' (hue, saturation, lightness) is now the '''default mode''' of the color selector.  
* All color selection modes (e.g. HSL, HSV, RGB, CMYK, CMS, HSLuv) have been moved into a '''drop-down menu''', with icons. You can get the old, tabbed look back by disabling the option in <code>Edit → Preferences → Interface: Use compact color selector mode switch</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3443 MR #3443]).
* New: '''HSLuv mode''' added for color picker. This mode lets you more intuitively select optically similar saturation of different hues ([https://en.wikipedia.org/wiki/HSLuv Wikipedia]).
* New: '''HSLuv mode''' added for color picker. This mode lets you more intuitively select optically similar saturation of different hues ([https://en.wikipedia.org/wiki/HSLuv Wikipedia]).
* A '''color wheel''' can now be used for '''HSL, HSV and HSLuv''' color selection modes (in previous Inkscape versions, it was its own mode). Activate it by clicking on 'Color Wheel' above the color sliders area.


==== Gradient Editor is back ==== <!--T:356-->


==== Gradient Editor is back ====
<!--T:357-->
 
A replacement for the [https://wiki.inkscape.org/wiki/index.php?title=Release_notes/1.1#Legacy_Gradient_Editor_dialog_removed|lost gradient editor] was added to the 'Fill and Stroke' dialog ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2688 MR #2688], [https://gitlab.com/inkscape/ux/-/issues/67 Bug UX#67]).
A replacement for the [https://wiki.inkscape.org/wiki/index.php?title=Release_notes/1.1#Legacy_Gradient_Editor_dialog_removed|lost gradient editor] was added to the Fill and Stroke dialog ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2688 MR #2688], [https://gitlab.com/inkscape/ux/-/issues/67 Bug ux#67]).


<!--T:358-->
This allows you to add, edit and delete gradient stops directly in the 'Fill and Stroke' dialog again:
This allows you to add, edit and delete gradient stops directly in the 'Fill and Stroke' dialog again:


<!--T:359-->
* to '''add''' a new stop, '''double click''' on the gradient preview
* to '''add''' a new stop, '''double click''' on the gradient preview
* to '''move''' a stop, '''click and drag''' it along the gradient preview or enter the stop offset numerically for more precision
* to '''move''' a stop, '''click and drag''' it along the gradient preview or '''enter the stop offset value numerically''' for more precision after selecting one stop
* to '''remove''' a stop, click on it to '''select it, then press the <code>Del</code> or <code>Backspace</code> key'''
* to '''remove''' a stop, click on it to '''select it, then press the <code>Del</code> or <code>Backspace</code> key'''
* The Gradient tool toolbar options `repeat mode`, `reverse gradient direction`, a gradient selection library and a list of all stops have been added here, too, so all the options pertaining to gradients are in easy reach.
* The Gradient tool's options `repeat mode`, `reverse gradient direction`, a '''gradient selection library''' and a '''list of all stops''' have been added here, too, so all the options pertaining to gradients are in easy reach.
*we added a preference to auto delete non used gradients. previously, inkscape deletes the non used gradients automatically. now, we made this optional so that, users can preserve those gradients in SVG file. https://gitlab.com/inkscape/inkscape/-/merge_requests/3897


<div><ul>  
<!--T:360-->
<li style="display: inline-block;">[[File:Gradient editor adding stops.gif|frame|Changing gradient stop color, moving it, adding a new stop]]</li>
<gallery  widths=650px heights=500px perrow=2>
<li style="display: inline-block;">[[File:Gradient editor - repete.gif|frame|Inverting the gradient's direction and changing its repeat mode]]</li>
File:Gradient editor adding stops.gif|frame|Changing gradient stop color, moving it, adding a new stop
<li style="display: inline-block;">[[File:Adding and removing stops in to list.gif|frame|Another way to add, edit and delete single stops is to use the list of gradient stops. Users can add stops by clicking on the <code>+</code> button, and can delete them by clicking on the <code>-</code> button.]]</li>
File:Gradient editor - repete.gif|frame|Inverting the gradient's direction and changing its repeat mode
<li style="display: inline-block;">[[File:Gradients Library.gif|frame|With the new gradient selection dropdown, users can duplicate gradients by clicking on the <code>+</code> button.]]</li>
File:Adding and removing stops in to list.gif|frame|Another way to add, edit and delete single stops is to use the list of gradient stops. Users can add stops by clicking on the <code>+</code> button, and can delete them by clicking on the <code>-</code> button.
<li style="display: inline-block;">[[File:First and last node offset.gif|frame|Users can offset (move) the first and last stops of a gradient. The color beyond the last/first gradient stop is uniformly that of the last/first stop.]]</li>
File:Gradients Library.gif|frame|With the new gradient selection dropdown, users can duplicate gradients by clicking on the <code>+</code> button.
</ul></div>
File:First and last node offset.gif|frame|Users can offset (move) the first and last stops of a gradient. The color beyond the last/first gradient stop is uniformly that of the last/first stop.
</gallery>


[https://activdesign.eu/blog/precise-gradients-in-inkscape en : demo video of gradient editor] | [https://activdesign.eu/blog/creer-des-degrades-precisement-dans-inkscape fr : video demo de l’éditeur de dégradé]


==== Markers ====
==== Markers ==== <!--T:361-->


The markers drop down list has been replaced by a little dialog that displays all available markers in a grid, and even allows you to edit the selected marker! This project was undertaken by GSOC student Rachana Podaralla with the mentors Michael Kowalski, Marc Jeanmougin and Martin Owens ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3394 MR #3394], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3420 MR #3420]).
<!--T:362-->
[[File:Fun markers.png|thumb|right|Some new markers to play with – the pencil automatically takes on the stroke color]]


When clicking on the drop down for the start, middle or end markers, you will see the following:
<!--T:363-->
* a list of markers used in the current document at the top
The markers drop down list has been replaced by a little dialog that displays '''all available markers in a grid''', and even allows you to '''edit the selected marker's size, distance from the line and orientation'''! This project was undertaken by '''[https://gitlab.com/inkscape/devel/mentoring/-/issues/2 GSOC student Rachana Podaralla]''' with the mentors Michael Kowalski, Marc Jeanmougin and Martin Owens ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3394 MR #3394], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3420 MR #3420]).
* below that, a list of all available markers, which also contains some fun new markers!
* at the bottom, the 'Edit' section, with:
** a preview of how the marker will look
** some number fields to change the size of the marker (keep the lock on to scale proportionally)
** an option to scale the markers when the stroke width is changed
** options for changing the marker direction
** the option to change the marker's angle and to have that angle fixed
** marker offsetting options
** a button to enable editing of markers (rotate, scale, move) on the canvas


<div><ul>
<!--T:364-->
<li style="display: inline-block;">[[File:Working with new markers.gif|frame|Adding and editing markers with the new dialog]]</li>
When clicking on the drop down for choosing the start, middle or end markers, you will see the following:
<li style="display: inline-block;">[[File:Edit markers on canvas.gif|frame|Editing markers directly on the canvas]]</li>
* a '''list of markers''' used in the current document at the top
* below that, a '''list of all default markers''', which also contains some '''fun new markers'''!
* at the bottom, the ''''Edit' section''', with:
** A '''preview''' of how the marker will look
** some '''number fields''' to change the '''size''' of the marker (keep the lock on to scale proportionally)
** an option to '''scale the markers when the stroke width is changed'''
** options for '''switching the marker direction'''
** the option to '''change the marker's angle and to have that angle fixed'''
** marker '''offsetting options'''
** a button to '''enable editing of markers''' (rotate, scale, move) '''on the canvas'''


TODO: record new animation where rotation is also presented
</ul></div>


<!--T:365-->
[[File:Working with new markers.gif|center|frame|Adding and editing markers with the new dialog]]
[[File:Edit markers on canvas.gif|center|frame|Editing markers directly on the canvas]]


==== Custom Dash patterns ====
[https://activdesign.eu/blog/set-markers-in-inkscape en : video of new markers in action] | [https://activdesign.eu/blog/adapter-les-fleches-dans-inkscape fr : video sur les nouvelles flèches en action]


To '''choose your own dash pattern''', select '''Custom''' in the dash pattern drop-down menu. This will make '''a new text field''' show up where you can add your new custom dash pattern '''by typing in numbers'''. Each number corresponds to the length of a dash or a gap. It always starts with a dash, and when it reaches the end, it will continue with the first number again, for the next gap or dash. So if you enter an even number of numbers, e.g. '1 1 4.5 4.5' the pattern will be 'dot - short gap - dash - long gap' and then repeat again, and for an uneven number of numbers, the pattern will be inverted when the first 'set' ends.
==== Custom Dash patterns ==== <!--T:366-->


On the canvas, you can watch how your object changes when you change the custom dash pattern numbers.
<!--T:367-->
Inkscape comes with a big choice of dash patterns by default - from tightly spaced dots to widely spaced lines, and many options and combinations in between.
Now it includes an option to '''make your own dash pattern''', in addition to the stock patterns.  


[TODO: needs gif]
<!--T:368-->
To create one:


<!--T:369-->
* Select '''Custom''' in the dash pattern drop-down menu. This will make '''a new text field''' show up where you can add your new custom dash pattern.
* The field accepts '''numbers and spaces'''. Each number corresponds to the length of a dash or a gap. It always starts with a dash, and when it reaches the end, it will continue with the first number again, for the next gap or dash. So if you enter an even number of numbers, e.g. '1 1 4.5 4.5' the pattern will be 'dot - short gap - dash - long gap' and then repeat again, and for an uneven number of numbers, the pattern will be inverted when the first 'set' ends.


==== Other small changes ====
<!--T:370-->
On the canvas, you can watch how your object changes while you change the custom dash pattern numbers.


Line cap and line join order buttons have been reordered, so they match vertically ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3402 MR #3402]).
<!--T:371-->
[[File:Inkscape yrHv1frJlF.gif|center|frame|Adjusting the dash pattern in a drawing]]


[https://activdesign.eu/blog/custom-dashes-in-inkscape en : custom dash use case video] | [https://activdesign.eu/blog/creer-des-pointilles-personnalises-dans-inkscape-12 fr : video de cas d’utilisation de pointillés personnalisés]


=== Layers and Objects dialog ===
==== Other small changes ==== <!--T:372-->


A new dialog was created that merges the functionality of the familiar 'Layers' and 'Objects' dialogs, with better performance ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2466 MR #2466], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3635 MR #3635], [https://gitlab.com/inkscape/inkscape/-/merge_requests/2466 MR #2466], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3741 MR #3741], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3597 MR #3597], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3645 MR #3645]).
<!--T:373-->
Line cap and line join order buttons have been reordered, so they match vertically ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3402 MR #3402]).
[[File:Before after caps.png|frame|left|339x339px|New, more logical ordering of line cap and line join buttons]]
<div style="clear:both;">&nbsp;</div>


It is available from both the 'Layers' and the 'Objects' menu and offers the following functionality:
=== Layers and Objects dialog === <!--T:374-->


* a button to toggle between 'Layers' and 'Objects' view
<!--T:375-->
* a list of all layers and objects in the drawing, featuring new icons for the different object types
[[File:Layers and objects.png|thumb|right|The new 'Layers and Objects' dialog in 'Objects' mode]]
* 8 alternating default colors for layers and the objects in them:
** these colors are used for drawing the paths in the respective layers
** the colors can be set (in case they clash with your theme, or you cannot see the paths that you draw) in the file <code>style.css</code> in your Inkscape preferences directory
* layer and object colors can be customized for each layer/object on its own, by clicking on the vertical color bar at the end of each line
* tiny mask and scissor symbols indicate that a clip or mask is applied to an object
* object and layer names (label, not id) can be changed after a double-click on the current name
* icons for locking and hiding a layer/object light up when you hover over the layer's row:
** click to hide/unhide, lock/unlock, Shift+click to hide/lock other items [TODO: check whether 'on same level' would apply, doesn't work currently]
* holding Alt while hovering over an object in the dialog will highlight that object on canvas
* layers as well as objects can be multi-selected
* the context (right-click) menu for layers provides options to move, delete, rename the current layer, to lock/hide all/other/the current layers, to add a new layer and to convert a layer to a group
* the context menu for objects provides the same options as it would when you right-click on the object on canvas


Note:
<!--T:376-->
A new dialog was created that '''merges the functionality of the familiar 'Layers' and 'Objects' dialogs''', with better performance ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2466 MR #2466], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3635 MR #3635], [https://gitlab.com/inkscape/inkscape/-/merge_requests/2466 MR #2466], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3741 MR #3741], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3597 MR #3597], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3645 MR #3645]).


* the (partially hidden) setting for path colors in the preferences file is no longer respected. Adjust the style.css file as a workaround.
<!--T:377-->
* the dialog no longer offers the options to change opacity, blur or blend mode. Use the Fill and Stroke dialog as a workaround.
It is available from both the 'Layers' and the 'Objects' menu and offers the following functionality:
* the type-forward search to filter for objects is no longer available. For objects, use the Search and Replace dialog as a workaround, for layers there is currently no replacement.


[TODO: needs a picture]
<!--T:378-->
* a button to '''toggle between 'Layers' and 'Objects' view'''
* buttons to move objects '''up and down in the stack'''.
* a '''list of all layers and objects''' in the drawing, featuring new icons for the different object types
* '''8 alternating default colors''' for layers and the objects in them:
** these colors are '''used for drawing the paths''' in the respective layers
** the colors '''can be set''' (in case they clash with your theme, or you cannot see the paths that you draw) in the file <code>share/inkscape/ui/highlight-colors.css</code> in your Inkscape directory
* layer and object '''colors can be customized for each layer/object on its own''', by clicking on the vertical color bar at the end of each line
* tiny '''mask and scissor symbols''' indicate that a clip or mask is applied to an object
* object and layer '''names''' (label, not id) can be changed after a '''double-click on the current name'''
* icons for '''locking and hiding''' a layer/object light up when you hover over the layer's row (when not locked or hidden):
** <kbd>click</kbd> to '''hide/unhide''' or '''lock/unlock''', <kbd>Shift+click</kbd> to '''hide/lock other items'''
* holding <kbd>Alt</kbd> while '''hovering over an object in the dialog''' will '''highlight that object on canvas'''
* layers as well as objects can be '''multi-selected'''
* the '''context (right-click) menu for layers''' provides options '''to move, delete, rename the current layer, to lock/hide all/other/the current layers, to add a new layer and to convert a layer to a group'''
* the '''context menu for objects''' provides the same options as it would when you right-click on the object on canvas directly


<!--T:379-->
''Note:''


=== Preferences ===
<!--T:380-->
* ''the (hidden) setting for path colors in the preferences file and the path outline color (available in Node tool preferences section) are no longer respected. If you used those previously, adjust the style.css file as a workaround (see above).''
* ''the dialog no longer offers the options to change opacity, blur or blend mode. Use the Fill and Stroke dialog as a workaround.''
* ''the type-forward search to filter for objects is no longer available. For objects, use the Search and Replace dialog as a workaround, for layers there is currently no replacement.''
* ''the buttons to move objects or layers to the bottom or to the top have been removed to improve the user interface. For both objects and layers, as a workaround you can use the buttons in the selector tool's tool controls. <kbd>Home</kbd> and <kbd>End</kbd> navigate in the dialog instead of changing positions, if the dialog has focus.''


* The preferences zoom ruler now respects your theme's look ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3450 MR #3450])
=== Preferences === <!--T:381-->
* An option to make '''<code>Select same</code>''' behave like <code>Select all</code> with respect to whether it selects objects only in the current layer or in all layers was added to <code>Edit → Preferences → Behavior → Selecting</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2832 MR #2832])
[[File:Require restart.png|frame|Restart Inkscape when you changed an option with this icon]]


<!--T:382-->
* The preferences '''zoom ruler now respects your theme's look''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3450 MR #3450])
* An option to make '''<code>Select same</code>''' behave like <code>Select all</code> with respect to whether it '''selects objects only in the current layer or in all layers''' was added to <code>Edit → Preferences → Behavior → Selecting</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2832 MR #2832])
* Preferences options that '''require restarting Inkscape''' to take effect now '''display an icon''' next to them
* A set of options to '''tweak rendering performance''' and to '''test run different render settings''' has been added to the <code>Rendering</code> section. It becomes visible when you activate <code>Enable developer mode</code>


=== SVG Font Editor ===
=== SVG Font Editor === <!--T:383-->


With lots of user feedback, the Font Editor workflow has been updated with better previews, better performance and a higher degree of organization.
<!--T:384-->
With lots of user feedback, the '''Font Editor workflow has been updated''' with '''better previews''', '''better performance''' and a '''higher degree of organization''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3381 MR #3381], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3396 MR #3396], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3552 MR #3552], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3628 MR #3628] [https://gitlab.com/inkscape/inkscape/-/merge_requests/3916 3916]).


<!--T:385-->
These changes result in a new recommended workflow:
These changes result in a new recommended workflow:


# Open the typography template from <code>File > New from Template</code> or use <code>Extensions > Typography > 1 - Setup Typography canvas</code> to load a suitable template into Inkscape.
<!--T:386-->
# Open the SVG Font Editor dialog
# Open the '''SVG Font Editor dialog'''
# Select a name for your new font, using the + icon in the top right corner of the dialog
# '''Select a name''' for your new font, using the <code>+</code> icon in the top right corner of the dialog
# Adjust the horizontal advance and the major font metrics to your liking
# Adjust the '''horizontal advance''' and the major '''font metrics''' to your liking
# '''Click on''' <code>Setup Canvas</code> to change the document format to the font size and get some guides that help you draw your letters
# Switch to the <code>Glyphs</code> tab of the dialog
# Switch to the <code>Glyphs</code> tab of the dialog
# Click <code>+</code> to add your first letter/glyph/character to the list. You can also click the button repeatedly to automatically create a list of commonly used font characters, from <code>Space</code> to common special characters, numbers and then upper case and lower case letters A to Z, and then even more special characters after that.
# Click <code>+</code> to '''add your first letter/glyph/character''' to the list. You can also '''click the button repeatedly to automatically create a list of commonly used font characters''', from <code>Space</code> to common special characters, numbers and then upper case and lower case letters A to Z, and then even more special characters after that.
# If you like to, switch from list preview to grid preview in the bottom right corner.
# If you like to, '''switch from list preview to grid preview''' in the bottom right corner.
# Select one of the lines / blocks in the glyphs list.
# '''Select one''' of the lines / blocks in the glyphs list.
# Click on <code>Edit</code>. This will:  
# Click on <code>Edit</code>. This will:  
#* Create a new layer for the selected glyph (if there isn't one yet) and activate that layer.
#* '''Create a new layer''' for the selected glyph (if there isn't one yet) and activate that layer.
#* Hide all other layers
#* '''Hide all other layers'''
# Now draw your letter/number/… in the new layer
# Now '''draw''' your letter/number/… in the new layer
# Make sure it's a single path (e.g. do <code>Path > Union</code>)
# Make sure it's '''a single path''' (e.g. do <code>Path > Union</code>)
# Keep it selected, and click on <code>Get curves</code>.
# Keep it selected, and '''click on''' <code>Get curves</code>.
# Continue selecting glyphs from the list, adding / editing them and turning them into SVG font characters until your font is complete.
# '''Continue''' selecting glyphs from the list, adding / editing them and turning them into SVG font characters until your font is complete.
# In the last tab, <code>Kerning</code>, you can select two different glyphs from the two dropdown lists, to adjust the default distance between them.  
# In the last tab, <code>Kerning</code>, you can select two different glyphs from the two dropdown lists, to '''adjust the default distance''' between them.  
## After you've selected them, click on <code>Add pair</code>.
## After you've selected them, '''click on''' <code>Add pair</code>.
## Now adjust the distance between them. In addition to the preview that shows just these two glyphs, you can also make use of the sample text to see how it will look in a sentence.
## Now '''adjust the distance''' between them. In addition to the preview that shows just these two glyphs, you can also make use of the '''sample text''' to see how it will look in a sentence.
## Continue adjusting letter distances until you're happy with the result.
## '''Continue''' adjusting letter distances until you're happy with the result.
# Save your file as Inkscape SVG, and open it with another program (e.g. FontForge) to be able to convert that SVG font into a ttf or otf font.
# Save your file as '''Inkscape SVG''', and open it with another program (e.g. FontForge) to be able to '''convert that SVG font into a ttf or otf font'''.
 


<!--T:387-->
The workflow is based upon the following SVG Font Editor dialog improvements:
The workflow is based upon the following SVG Font Editor dialog improvements:


<!--T:388-->
* '''speed improvements''': Inkscape can now handle fonts with thousands of glyphs!
* '''speed improvements''': Inkscape can now handle fonts with thousands of glyphs!
* '''automatic glyph generation''': adding a new glyph creates a new entry and populates its unicode string, based upon the previously defined glyph (next in unicode order)
* '''automatic glyph generation''': adding a new glyph creates a new entry and populates its unicode string, based upon the previously defined glyph (next in unicode order)
Line 407: Line 612:
* '''grid glyph view''': offers a larger preview than a list
* '''grid glyph view''': offers a larger preview than a list


[TODO: needs screenshot]
<!--T:389-->
([https://gitlab.com/inkscape/inkscape/-/merge_requests/3396 MR #3396], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3552 MR #3552], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3628 MR #3628])
<gallery mode="packed" heights="450">
File:Svg font editor tab 1.png|First tab of refactored SVG Font Editor dialog
File:Svg font editor tab 2 list.png|Second tab of SVG Font Editor, list view
File:Svg font editor tab 2 grid.png|Second tab, grid view
</gallery>


=== Swatches ===
=== Swatches === <!--T:390-->


The Swatches dialog uses the same improved settings as [[#Color_palette|the color palette]].
<!--T:391-->
The '''Swatches dialog''' (<code>View → Swatches</code>) uses the same improved settings as [[#Color_palette|the color palette]] (without the 'rows' setting).
[[File:Inkscape GK3kLW1E2O.gif|none|frame|Updated Swatches dialog settings]]


=== Text and Font dialog === <!--T:392-->


=== Text and Font dialog ===
<!--T:393-->
The dialog's '''width has been reduced''', so it won't take up excessive amounts of space when docked ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3314 MR #3314]).


The dialog's width has been reduced, so it won't take up excessive amounts of space when docked ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3314 MR #3314]).
=== Trace Bitmap === <!--T:394-->


<!--T:395-->
The '''Trace Bitmap''' dialog received a new, shiny interface ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3405 MR #3405]):


=== Trace Bitmap ===
<!--T:396-->
* The tabs list and options have been detangled a bit, so you now have the following three tabs: '''Single scan, Multicolor, Pixel art'''
* The '''preview auto-updates''' more reliably and shows a better preview image.
* The '''preview location''' now adjusts to the dialog's format: if it is wider than tall, it moves to the right side, and if it is taller than wide, the preview appears at the bottom of the dialog.
* The number entry fields are now accompanied by '''draggable sliders''' for easier tweaking of values.


The '''Trace Bitmap''' dialog received a few updates and some more polish ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3405 MR #3405]):
<!--T:397-->
<gallery  widths=650px heights=500px perrow=2>
File:Inkscape haeFSZbdHk.gif|Draggable sliders
File:Ezgif.com-gif-maker (24).gif|Self-adjusting preview location
</gallery>


* The '''preview auto-updates''' more reliably and shows a better preview image.
=== Transform dialog === <!--T:398-->
* The '''preview location''' now adjusts to the dialog's format: if it is wider than tall, it moves to the right side, and if it is taller than wide, the preview appears at the bottom of the dialog.
* The number entry fields are now accompanied by '''draggable sliders'''.


<!--T:399-->
The buttons for applying or resetting the transformation have been moved to the center, the dialog's width has been reduced, and a small visual explanation for matrix transformations has been added ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3363 MR #3363]).


=== Transform dialog ===
=== Welcome dialog === <!--T:400-->


We cleaned up this dialog, reduced width and added explanation for metric transformations ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3381 MR #3381])
<!--T:401-->
* The images have been updated with '''images from the [https://inkscape.org/gallery/=about-screen-contest/contest-for-12/ About Screen Contest for Inkscape 1.2]'''.
* A set of '''new icons for the web links''' in the second tab will hopefully help encourage user contributions to the project ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4309 MR #4309])
* There is a ''''Close' button''' now in the top right corner of the dialog.
* An option to 'Browse for other files' has been added to the dialog, so you can finally '''open any file''' (not just templates and recent files) from the dialog ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4112 MR #4112])


<!--T:402-->
<!-- == Filters == -->


== Filters ==
== Live path effects == <!--T:403-->
[[File:Select satelit.png|right|Select path with LPE that is responsible for the existence of this object|thumb|448x448px]]


=== Select Path Effect Parent Object === <!--T:404-->


== Live path effects ==
<!--T:405-->
If you have an object selected that was created by the Live Path Effect of another object, you can now quickly '''find the responsible LPE object''' by clicking on '''the new button''' at the bottom of the 'Path Effects' dialog. This is very useful for all Live Path effects that create dependent objects which can be selected independently, like the new <code>Copies LPE</code>, the <code>Boolean Operations LPE</code>, the <code>Rotate Copies LPE</code> and many more ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3479 MR #3479]).


=== Boolean Operations === <!--T:406-->


[[File:Select satelit.png|frame|right|Select path with LPE that is responsible for the existence of this object]]
<!--T:407-->
If you have an object selected that was created by the Live Path Effect of another object, you can now quickly '''find the responsible LPE object''' by clicking on '''the new button''' at the bottom of the Live Path Effects dialog. This is very useful for all Live Path effects that create dependent objects which can be selected independently, like the new <code>Copies LPE</code>, the <code>Boolean Operations LPE</code>, the <code>Rotate Copies LPE</code> and many more ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3479 MR #3479]).
* The mode ''''division both'''' has been added. Its result only becomes visible when you convert the resulting object to a path, where then both objects will be cut along their intersection lines.


=== Offset === <!--T:408-->


=== Copies LPE ===
<!--T:409-->
* '''Improved performance''' while editing an offset by mouse


[[File:Copie LPE.gif|frame|right|The new Copies LPE]]
=== Rotate copies === <!--T:410-->


Internally, we call this the ''\'Tiled Clones dialog on steroids\''' - interactive tiling, using a huge range of different tiling types, setting the distance between objects numerically, changing scale, location, rotation per row / column, add more rows and columns on the fly. This can be used to quickly copy large numbers of objects non destructively and to create interesting grids and patterns and variations quickly ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3814 MR #3814]).
<!--T:411-->
* New option to '''link styles''' for the case when you want a gradient or a pattern extend over all objects


Features:
=== Tiling === <!--T:412-->


* Cloning of objects in rows and columns
<!--T:413-->
* Offset of rows and columns
[[File:Copie LPE.gif|right|The new Tiling LPE|thumb]]
* 16 different mirroring modes
* Linear scaling (4 modes + mirroring)
* Linear rotation change (4 modes + mirroring)
* Custom gap controls, with units
* Custom styling of clones


== Import / Export ==
<!--T:414-->
Internally, we call this the ''\'Tiled Clones dialog on steroids\'''. This new LPE allows for interactive tiling, using a '''huge range of different tiling types''', setting the '''distance''' between objects numerically, changing '''scale''', '''location''', '''rotation''' per row / column or '''adding more rows and columns''' on the fly. This can be used to '''quickly copy large numbers of objects''' non-destructively and to '''create interesting grids and patterns''' and variations quickly ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3814 MR #3814]).


=== Export Dialog ===
<!--T:415-->
[TODO:fill in ]
Features:


Anshudhar Kumar Singh with mentors Michael Kowalski, Ted Gould, Tavmjong Bah  and finished By Martin Owens
<!--T:416-->
* Create '''identical copies of objects in a grid''' by indicating the number of rows and columns
* '''Change the horizontal and vertical spacing''' between copies by mouse or numerically, and choose the unit of those distances
* The '''gap size''' can also be '''randomized'''
* '''Offset every other row or column''' by a specified percentage of object width / height
* '''16 different mirroring modes''' (requires the setting <code>Edit → Preferences → Behavior → Live Path Effects (LPE) → Tiling → Add advanced tiling options</code> to be active!)
* '''Scale interpolation''' (5 modes):
** '''Uniform''' scaling (no interpolation)
** Blend size from '''top to bottom'''
** Blend size from '''left to right'''
** Blend size '''diagonally''' (top left: original size – bottom right: new size)
** '''Random scaling'''
* '''Rotation interpolation''' with the same 5 modes
* Option to '''automatically minimize gaps''' between copies of different sizes (does not work with rotation or diagonal mode)
* Option to allow for '''independently styling and moving''' each copy ('Split elements', moving works when the object is grouped as a 1 object group)
* Option to '''link styles''' for the case when you want '''a gradient or a pattern extend over all objects'''


We re-named This dialog from <code>Export PNG image</code> to <code>'''Export'''</code>  to reflect new abilities of this dialog.
[https://activdesign.eu/blog/tiling-repeat-with-inkscape en : Tiling video demo] | [https://activdesign.eu/blog/repeter-un-objet-par-pavage-dans-inkscape fr : video demo du pavage]


Features:
== Import / Export == <!--T:417-->


* Ability to export images in to multiple Raster formats: '''PNG, Jpeg, WebP, Tiff''' but also Vector formates:'''Svg, Inkscape SVG, PDF'''
<!--T:418-->
* The export dialog can export to *'''any'''* raster extension marked as a raster extension in it's INX file.  THEN if you check the extra setting in the preferences <code>Edit → Preferences → Input/Output → show all outputs in Export dialog</code> , It will show all extensions, raster and not. So you may export to DXF, LaTex or whatever else you have available.
[[File:Linked image not found.png|thumb|right|New placeholder for images that cannot be found]]
* Single Image has 4 modes:
# '''Document''' - will export all objects in the documents (basically ignores page)
# '''Page''' - will export what is exactly in a active page (with exact size of page)
# '''Selection''' -  will export area of objects that are selected (use checkbox export selection only if you wan just selected objects)
# '''Custom''' - You can manually define are  you want to export from top left corner to bottom right corner
* Bach export that allows you to export parts of the document in to separate files formats and sizes
* Bach export will use names of the objects as a names of files
* Bach export has 4 modes:
# '''Selection''' - will export objects (pro tip: group object that belong in to single file)
# '''Layers''' - will export  all layers
# '''Pages''' - will export content o pages (new feature )
* You can add multiple formats/ versions by clicking button <code>'''Add export'''</code>. this is useful because you can export many files with single click.
* Changing '''DPI''' control size of images (pixel resolution) (90 is default if you want 2x resolution set it to 180 etc)
* '''Suffix''' adds text at the end of the file name
*You can remove objects from selection you un-checking the object in a preview list
* Checkbox <code>'''export selection only'''</code> if you want export just selected objects (ei: not object under or over objects). This is useful for exporting game assets or parts of the designs for website
* Interactive Preview of export
* Cleaned UP and simplified UI
[TODO: Add images / Videos]


MR [https://gitlab.com/inkscape/inkscape/-/merge_requests/3825 3825]
=== SVG Import === <!--T:419-->


== Customization / Theming ==
<!--T:420-->
When importing an SVG document, you can now also choose to '''open it in a new window''' ('Open SVG image directly using its path'). This option makes sense when using '''drag and drop''' to get Inkscape to open a new file ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4034 MR #4034])


=== Import Formats === <!--T:421-->


=== General User Interface ===
<!--T:422-->
* The '''DXF Import''' now supports '''more DXF features''' ([https://gitlab.com/inkscape/extensions/-/merge_requests/357 MR extensions#357]).


* The font size in the user interface can be adjusted at <code>Edit → Preferences → Interface → Theming: Font scale</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3690 MR #3690])
=== Linked Images === <!--T:423-->
* The <code>+</code>/<code>-</code> buttons for number entry fields are now smaller. If you prefer the old, wider buttons, they can be turned on again by disabling <code>'''Preferences → Interface :  Use narrow number entry boxes''' </code>. ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3358 MR #3358])


<!--T:424-->
* The design of the '''placeholder for linked images''' was changed ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3842 MR #3842])


=== Bars / Toolbars ===
=== Export Formats === <!--T:425-->


* You can now hide elements from the status bar (style indicator, layer indicator, mouse coordinates, canvas rotation) at <code>Edit → Preferences → Interface: Status bar</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3445 MR #3445])
<!--T:426-->
* You can now hide tools from the tool bar at <code>Edit → Preferences → Interface → Toolbars: Toolbars</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3515 MR #3515])
* The file format of the '''Synfig Export''' has been '''updated to &gt; 1.4.0''' ([https://gitlab.com/inkscape/extensions/-/merge_requests/299 MR extensions#299]).
[[File:X5pWfteMzW.gif|border]]


== Customization / Theming == <!--T:427-->




=== Cursors ===
=== Customizing the User Interface === <!--T:428-->


* The drop shadow is now optional for mouse cursors. You can turn it off in <code>Edit → Preferences → Interface → Mouse cursors: Show drop shadow</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3352 MR #3352]).
<!--T:429-->
* The '''overall font size''' of the user interface can be adjusted at <code>Edit → Preferences → Interface → Theming: Font scale</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3690 MR #3690])
* The <code>+</code>/<code>-</code> '''buttons for number entry fields''' are now '''smaller'''. If you prefer the old, wider buttons, they can be turned on again by disabling <code>Preferences → Interface :  Use narrow number entry boxes</code>. ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3358 MR #3358])
* Tool bar '''icon sizes''' can now be scaled on a '''continuous scale''' from 100% to 300% size in <code>Edit → Preferences → Interface → Toolbars: Toolbox icon size / Control bar icon size</code>. Changing the size '''no longer requires a restart'''.


=== Cursors === <!--T:430-->


=== Icons ===
<!--T:431-->
* The '''drop shadow is now optional''' for mouse cursors. You can turn it off in <code>Edit → Preferences → Interface → Mouse cursors: Show drop shadow</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3352 MR #3352]).


* Multiple icons in the Multicolor icons set got small retouches and other improvements to readability or contrast, e.g. the green color is now a little brighter when using a dark theme, to improve contrast.
=== Icon Sets === <!--T:432-->
*  Cursors and icons in Multicolor icon theme for the Bézier tool and the Calligraphy tool in the tool bar now use the same imagery
* <code>Align and distribute</code> icons are now smaller, some were redesigned to fit in to 16x16 grid.
* The icon sizes for the tool bar and the control / tool controls bar can now be adjusted smoothly on a continuous scale from from 100% to 300% in <code>Edit → Preferences → Interface → Toolbars: Toolbox icon size / Control bar icon size</code>. Changing the size no longer requires a restart.


<!--T:433-->
* Multiple icons in the '''Multicolor icons set''' were tweaked to improve readability or contrast, e.g. the green color is now a little brighter when using a dark theme.
* '''Cursors and tool bar icons''' for the Bézier tool and the Calligraphy tool in the Multicolor icon theme '''now use the same imagery'''.


=== Themes ===
=== Themes === <!--T:434-->


* A contrast slider was added for fine tuning the selected theme's colors at <code>Edit → Preferences → Interface → Theming: Contrast</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/906 MR #906])
<!--T:435-->
* The suggested '''default theme''' is now using the multicolor icons set ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4043 MR #4043])
* A '''contrast slider''' was added for fine tuning the selected theme's colors at <code>Edit → Preferences → Interface → Theming: Contrast</code> ([https://gitlab.com/inkscape/inkscape/-/merge_requests/906 MR #906])


<!--T:436-->
<gallery mode=packed heights=550px>
<gallery mode=packed heights=550px>
File:Contrast slider.gif|The contrast slider allows to fine-tune the theme's colors
File:Contrast slider.gif|The contrast slider allows to fine-tune the theme's colors
</gallery>
</gallery>


== Other == <!--T:437-->
<!--T:438-->
* The '''number of possible autosave files''' has been increased to 10000 (was 100) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3582 MR #3582])


== macOS-specific Changes ==
== macOS-specific Changes == <!--T:439-->


The minimum operating system version supported is now macOS 10.13. (The prior version, Inkscape 1.1.x, supported macOS 10.11 and newer.)
<!--T:440-->
* The '''minimum operating system version''' supported is now '''macOS 10.13'''. (The prior version, Inkscape 1.1.x, supported macOS 10.11 and newer.)
* All '''special menu items''' in the application menu have been enabled and hidden from other menus, so Inkscape '''feels more integrated''' with macOS ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3767 MR #3767])
* Inkscape now provides a '''.dmg file for arm64''' (M1) Apple computers


On macOS, enable all special menu items in the application menu and hide them from other menus ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3767 MR #3767])
== Windows-specific Changes == <!--T:441-->


<!--T:442-->
* Modifier keys now work with graphics tablet stylus input ([https://gitlab.com/freedesktop-sdk/mirrors/gnome/gtk/-/commit/46c12b2c922d5592cedd29624cbf3be6b4411084 Commit #46c12b])
* The Extension Manager is now an optional component in the installer for Windows ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3106 MR #3106])


== Windows-specific Changes ==
== Extensions == <!--T:443-->


Modifier keys now work with pen input ([https://gitlab.com/freedesktop-sdk/mirrors/gnome/gtk/-/commit/46c12b2c922d5592cedd29624cbf3be6b4411084 Commit #46c12b])
=== Features === <!--T:444-->


==== General Extension Changes ==== <!--T:445-->


== Extensions ==
<!--T:446-->
Complete as of 2022/02/10.  
* Extensions now better support documents with CSS styles and inherited styles.  


TODO: If the renaming of extensions for 1.2 goes through, change the names in the text below.
==== New Extensions ==== <!--T:447-->


=== Features added ===
<!--T:448-->
* The '''Clipart Importer''' extension allows to search and download SVG resources from the Wikimedia, OpenClipart & other online sources. It is available from <code>File → Import Web Image</code>. It helps you with licensing your work correctly by giving information on each image's license and its requirements for derivative works. ([https://gitlab.com/inkscape/extensions/-/merge_requests/441 MR extensions#441]).
* The <code>Document → Process Illustrator SVG...</code> extension assists with '''importing Adobe Illustrator documents with layers and the correct scale''' ([https://gitlab.com/inkscape/extensions/-/merge_requests/351 MR extensions#351], [https://gitlab.com/inkscape/extensions/-/merge_requests/414 MR extensions#414]).


==== All extensions ====
<!--T:449-->
<gallery heights="400px" widths="400px">
File:Import web image.png|Import an image from the Inkscape website
File:Import web image sources.png|Currently available sources for importing SVG images
</gallery>


* Extension have now better support for documents with CSS styles and inherited styles. This functionality is enabled for all bundled extensions. If you want to use this functionality in an extension you maintain, see [[Updating your Extension for 1.2#New Style API|New Style API]].
==== Particular extensions ==== <!--T:450-->
*Allow export extensions to specify that they are only to be listed in &quot;Export as&quot; ([https://gitlab.com/inkscape/extensions/-/merge_requests/371 MR extensions#371], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3600 MR#3600]).
*Color extensions can now process in RGBA space, previously only separate processing of color and opacity was possible (MR [https://gitlab.com/inkscape/extensions/-/merge_requests/392 extensions#392]).
*The path conversion for arcs and stars have been added, so when extensions create these objects, they are rendered in a browser as well and can be processed further by the same extension. ([https://gitlab.com/inkscape/extensions/-/merge_requests/387 MR extensions#387], [https://gitlab.com/inkscape/extensions/-/issues/240 Issue extensions#240]).
*API functions for the new [[Release notes/1.2#Page tool|multipage feature]] have been added ([https://gitlab.com/inkscape/extensions/-/merge_requests/399 MR extensions#499]).


==== Particular extensions ====
<!--T:451-->
[[File:Modes of the Extrude extension.png|right|thumb|400x400px|The modes of the Extrude extension. A new mode, "Snug", has been added for Inkscape 1.2.]]


<!--T:452-->
* In the '''Add nodes''' extension, you can now choose the unit of the segment length ([https://gitlab.com/inkscape/extensions/-/merge_requests/346 MR extensions#346], [https://gitlab.com/inkscape/extensions/-/issues/127 Issue extensions#127]).
* In the '''Add nodes''' extension, you can now choose the unit of the segment length ([https://gitlab.com/inkscape/extensions/-/merge_requests/346 MR extensions#346], [https://gitlab.com/inkscape/extensions/-/issues/127 Issue extensions#127]).
*The Color tab of the '''Calendar''' now uses the color widget instead of asking for Hex values ([https://gitlab.com/inkscape/extensions/-/merge_requests/355 MR extensions#355], [https://gitlab.com/inkscape/extensions/-/issues/396 Issue extensions#396]).
* The Color tab of the '''Calendar''' now uses a color chooser widget instead of asking for Hex values ([https://gitlab.com/inkscape/extensions/-/merge_requests/355 MR extensions#355], [https://gitlab.com/inkscape/extensions/-/issues/396 Issue extensions#396]).
*The new '''Document > Process Illustrator SVG...''' extension assists with importing Adobe Illustrator documents with layers and the correct scale ([https://gitlab.com/inkscape/extensions/-/merge_requests/351 MR extensions#351], [https://gitlab.com/inkscape/extensions/-/merge_requests/414 MR extensions#414]).
* The '''Extrude''' extension has been rewritten ([https://gitlab.com/inkscape/extensions/-/merge_requests/386 MR extensions#386]). It includes a new mode, &quot;Snug&quot;, where the boundary of the extruded rectangle follows the source paths. 'Extrude' now handles paths with multiple subpaths and doesn't require conversion of rectangles or circles to path anymore ([https://gitlab.com/inkscape/extensions/-/issues/190 Issue extensions#190]). The extruded shapes are inserted in between the two selected elements in stacking order, which is more useful than the previous behavior (inserting after the first selected element).
*The '''Extrude''' extension has been rewritten ([https://gitlab.com/inkscape/extensions/-/merge_requests/386 MR extensions#386]). It includes a new mode, &quot;Snug&quot;, where The boundary of the extruded rectangle follows the source paths. Extrude now handles paths with multiple subpaths and doesn't require conversion of rects, circles to path anymore ([https://gitlab.com/inkscape/extensions/-/issues/190 Issue extensions#190]). The extruded shapes are inserted in between the two selected elements, which is more useful in practice than the previous behavior, i.e. inserting after the first selected element.[[File:Modes of the Extrude extension.png|center|thumb|400x400px|The modes of the Extrude extension. A new mode, "Snug", has been added for Inkscape 1.2.]]
* The '''Formula (pdflatex)''' equation has been made more user-friendly. It now features a font size selector, a field to specify preamble contents, better support for scaled documents and better error messages on compile errors ([https://gitlab.com/inkscape/extensions/-/merge_requests/453 MR extensions#453]).  
* A large portion of the '''DXF Import''' extension has been rewritten to support more DXF features ([https://gitlab.com/inkscape/extensions/-/merge_requests/357 MR extensions#357]).
* The '''Frame''' extension has been rewritten and now supports additional options, such as elliptical frames, offset frame and putting the fill below the object ([https://gitlab.com/inkscape/extensions/-/merge_requests/430 MR extensions#430], [https://gitlab.com/inkscape/extensions/-/issues/214 Issue extensions#214]).
*The '''Guides Creator''' extension, apart from supporting multi-page documents, now also features an option that suppresses duplicated guides and alternating margins for even and odd pages ([https://gitlab.com/inkscape/extensions/-/merge_requests/424 MR extensions#424]) .
* The '''Motion''' extension now has an option to take the extrusion color and opacity from the selected path ([https://gitlab.com/inkscape/extensions/-/merge_requests/317 MR extensions#317]).
*The '''Motion''' extension now has an option to take the extrude color and opacity from the selected path ([https://gitlab.com/inkscape/extensions/-/merge_requests/317 MR extensions#317]).
* Document Info ([https://gitlab.com/inkscape/extensions/-/merge_requests/401 MR extensions#401]) and Guides creator ([https://gitlab.com/inkscape/extensions/-/merge_requests/424 MR extensions#424]) extensions were adjusted to work with '''multi-page documents'''
*The following extensions now adapt to '''multi-page documents''': Document Info ([https://gitlab.com/inkscape/extensions/-/merge_requests/401 MR extensions#401]), Guides creator ([https://gitlab.com/inkscape/extensions/-/merge_requests/424 MR extensions#424]) '''.'''
* The '''Guides Creator''' extension, now also features an option that avoids creating duplicate guides, and an option for alternating margins for even and odd pages ([https://gitlab.com/inkscape/extensions/-/merge_requests/424 MR extensions#424]) .
*The '''Split text''' extension has been rewritten and now supports manual kerning ([https://gitlab.com/inkscape/extensions/-/issues/142 Issue extensions#142]) and SVG2 flowed text ([https://gitlab.com/inkscape/extensions/-/issues/257 Issue extensions#257]) ([https://gitlab.com/inkscape/extensions/-/merge_requests/326 MR extensions#326]).
* The '''Split text''' extension has been rewritten and now supports manual kerning ([https://gitlab.com/inkscape/extensions/-/issues/142 Issue extensions#142]) and SVG2 flowed text ([https://gitlab.com/inkscape/extensions/-/issues/257 Issue extensions#257]) ([https://gitlab.com/inkscape/extensions/-/merge_requests/326 MR extensions#326]).
*The fileformat of '''Synfig Export''' has been updated to &gt; 1.4.0 ([https://gitlab.com/inkscape/extensions/-/merge_requests/299 MR extensions#299]).
* '''QRCodes''' with a maximum size of 177x177 can now be created, which allows to encode up to about 2 standard pages of text. Instead of the well-known black rectangular tiles, the extension can now also tile clones of a selected object ([https://gitlab.com/inkscape/extensions/-/merge_requests/394 MR extensions#394], [https://gitlab.com/inkscape/extensions/-/issues/150 Issue extensions#150]).
*'''QRCodes''' with a maximum size of 177x177 can now be created, which allows to encode up to about 2 standard pages of text. Instead of the well-known black rectangular tiles, the extension can now also tile clones of a selected object ([https://gitlab.com/inkscape/extensions/-/merge_requests/394 MR extensions#394], [https://gitlab.com/inkscape/extensions/-/issues/150 Issue extensions#150]).


=== Bugs fixed ===
=== Bugs fixed === <!--T:453-->


==== All extensions ====
==== All extensions ==== <!--T:454-->


<!--T:455-->
* Unit conversions are more consistent now ([https://gitlab.com/inkscape/extensions/-/merge_requests/329 MR extensions#329]), and several bugs pertaining to misinterpretation of units have been fixed.
* Unit conversions are more consistent now ([https://gitlab.com/inkscape/extensions/-/merge_requests/329 MR extensions#329]), and several bugs pertaining to misinterpretation of units have been fixed.
* When extensions set an element to "insensitive", this change is honored by Inkscape (see [https://gitlab.com/inkscape/extensions/-/commit/d5282bd2341d24bc53cec02aed81e2f3ee6c6050 commit extensions#d5282bd2])  
* Extensions that query properties of paths with multiple subpaths now get more correct results if that path uses relative path commands ([https://gitlab.com/inkscape/extensions/-/merge_requests/438 MR extensions#438], [https://gitlab.com/inkscape/extensions/-/issues/450 Issue extensions#450]).
* The defaults of parameters are now identical in inx files and in the command line interface of the extensions. (see [https://gitlab.com/inkscape/extensions/-/merge_requests/325 MR extensions#325])
* When extensions set an element to "insensitive" (locked), this change is honored by Inkscape ([https://gitlab.com/inkscape/extensions/-/commit/d5282bd2341d24bc53cec02aed81e2f3ee6c6050 commit extensions#d5282bd2])
* The defaults of parameters are now identical in inx files and in the command line interface of the extensions ([https://gitlab.com/inkscape/extensions/-/merge_requests/325 MR extensions#325])
* Gradients whose stop positions are given in percentages are now handled ([https://gitlab.com/inkscape/extensions/-/merge_requests/374 MR extensions#374])
* Gradients whose stop positions are given in percentages are now handled ([https://gitlab.com/inkscape/extensions/-/merge_requests/374 MR extensions#374])
* Hide the console window on Windows when calling external utilities: ([https://gitlab.com/inkscape/extensions/-/merge_requests/407 MR extensions#407], [https://gitlab.com/inkscape/extensions/-/issues/244 Issue extensions#244])
* Hide the console window on Windows when calling external utilities ([https://gitlab.com/inkscape/extensions/-/merge_requests/407 MR extensions#407], [https://gitlab.com/inkscape/extensions/-/issues/244 Issue extensions#244])
*The <code>BaseElement.duplicate()</code> function now makes sure that the duplicated element and its children have unique IDs ([https://gitlab.com/inkscape/extensions/-/merge_requests/426 MR extensions#426], [https://gitlab.com/inkscape/extensions/-/issues/379 Issue extensions#379]).
* The <code>BaseElement.duplicate()</code> function now makes sure that the duplicated element and its children have unique IDs ([https://gitlab.com/inkscape/extensions/-/merge_requests/426 MR extensions#426], [https://gitlab.com/inkscape/extensions/-/issues/379 Issue extensions#379]).
*The "Reverse Path" method now returns correct results for paths with multiple subpaths ([https://gitlab.com/inkscape/extensions/-/merge_requests/427 MR extension#427], [https://gitlab.com/inkscape/extensions/-/issues/445 Issue extensions#445]).
* The "Reverse Path" method now returns correct results for paths with multiple subpaths ([https://gitlab.com/inkscape/extensions/-/merge_requests/427 MR extension#427], [https://gitlab.com/inkscape/extensions/-/issues/445 Issue extensions#445]).
* A bug parsing color components of 1 (1.0, 100%) has been fixed. <code>"1.0"</code>, <code>1.0</code> and <code>"100%"</code> are treated as <code>255</code>, while <code>"1"</code> and <code>1</code> are treated as <code>1</code> ([https://gitlab.com/inkscape/extensions/-/merge_requests/456 MR extensions#456], [https://gitlab.com/inkscape/extensions/-/issues/402 Issue extensions#402]).
* Several small fixes that make working with paths and clones more predictable and robust ([https://gitlab.com/inkscape/extensions/-/merge_requests/433 MR extensions#433])
* Small changes improving parameter description ([https://gitlab.com/inkscape/extensions/-/merge_requests/452 MR extensions#452], [https://gitlab.com/inkscape/extensions/-/issues/452 Issue extensions#452])
 
==== Particular extensions ==== <!--T:456-->
 
<!--T:457-->
* In the '''Add nodes''' extension, closed paths were previously changed to open paths, and an erroneous node was added. Other and third-party extension will probably profit from the underlying bugfix as well ([https://gitlab.com/inkscape/extensions/-/merge_requests/336 MR extensions#336], [https://gitlab.com/inkscape/extensions/-/issues/209 Issue extensions#209]).
* The live preview of the '''Calendar''' extension now works ([https://gitlab.com/inkscape/extensions/-/merge_requests/394 MR extensions#394]).
* Multiple bugs in the '''DXF import''' extension were fixed, such as a loss of layering information ([https://gitlab.com/inkscape/extensions/-/merge_requests/410 MR extensions#410], [https://gitlab.com/inkscape/extensions/-/issues/377 Issue extensions#377]), and import of inserted blocks that have been rotated and flipped ([https://gitlab.com/inkscape/extensions/-/merge_requests/411 MR extensions#411]), extruded elements and multiline text ([https://gitlab.com/inkscape/extensions/-/merge_requests/432 MR extension#432], [https://gitlab.com/inkscape/extensions/-/issues/286 Issue extensions#286]). An incorrect unit in the documentation has been exchanged ([https://gitlab.com/inkscape/extensions/-/merge_requests/358 MR extensions #358]).
* When using the '''DXF Outline (R12)''' export, elements in nested groups are now exported correctly ([https://gitlab.com/inkscape/extensions/-/merge_requests/347/ MR extensions#347], [https://gitlab.com/inkscape/extensions/-/issues/382 Issue extensions#382]). It also doesn't include (invisible) paths contained in clips and masks anymore ([https://gitlab.com/inkscape/extensions/-/merge_requests/440 MR extensions#440], [https://gitlab.com/inkscape/extensions/-/issues/381 Issue extensions#381]) and documents are exported with the correct scale when scale is different than 1 ([https://gitlab.com/inkscape/extensions/-/merge_requests/466 MR extensions#466], [https://gitlab.com/inkscape/extensions/-/issues/443 Issue extensions#443])
* The '''DXF14 export''' now shows a better error message in case of a very, very deeply nested SVG document ([https://gitlab.com/inkscape/extensions/-/merge_requests/442 MR extensions#442], [https://gitlab.com/inkscape/extensions/-/issues/360 Issue extensions#360]). Also a warning message regarding the Robo-Master spline option has been added ([https://gitlab.com/inkscape/extensions/-/merge_requests/439 MR extensions#439], [https://gitlab.com/inkscape/extensions/-/issues/225 Issue extensions#225]).
* A crash in the '''Embed image''' extension has been fixed, in which images were erroneously determined as missing by the extension ([https://gitlab.com/inkscape/extensions/-/merge_requests/461 MR extensions#461], [https://gitlab.com/inkscape/extensions/-/issues/441 Issue extensions#441]).
* The '''Extensions Manager''' is now shipped with Inkscape and doesn't download itself automatically anymore ([https://gitlab.com/inkscape/extensions/-/merge_requests/421 MR extensions#421]).
* On Windows, the '''Extract image''' extension now correctly links the extracted files ([https://gitlab.com/inkscape/extensions/-/merge_requests/461 MR extensions#461]).
* The slicing positions in the '''Guillotine''' extension are now correct, they were previously off following the flip of the y axis in Inkscape 1.0 ([https://gitlab.com/inkscape/extensions/-/merge_requests/334 MR extensions#334], [https://gitlab.com/inkscape/extensions/-/issues/269 Issue extensions#269]).
* In '''GCodetools''', multiple crashes have been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/335 MR extensions#335], [https://gitlab.com/inkscape/extensions/-/issues/312 Issue extensions#312]; [https://gitlab.com/inkscape/extensions/-/merge_requests/307 MR extensions#307], [https://gitlab.com/inkscape/extensions/-/issues/322 Issue extensions#322]; [https://gitlab.com/inkscape/extensions/-/merge_requests/388 MR extensions#388], [https://gitlab.com/inkscape/extensions/-/issues/276 Issue extensions#276]), however this module is currently unmaintained and in need of attention. '''Contributions are highly welcome!''' For this reason, the module has been given it's own repository ([https://gitlab.com/inkscape/extensions/-/merge_requests/402 MR extensions#402]).
* The Hue Level in the '''HSL Adjust''' extension now has a range of 360 ([https://gitlab.com/inkscape/extensions/-/merge_requests/400 MR extensions#400])
* The '''HTML5 canvas export''' now works better with non-Inkscape SVG documents ([https://gitlab.com/inkscape/extensions/-/merge_requests/467 MR extensions#467]). Exported files also now have correct output for closed paths and objects with transparency ([https://gitlab.com/inkscape/extensions/-/merge_requests/345 MR extensions#345], [https://gitlab.com/inkscape/extensions/-/issues/332 Issue extensions#332]).
* The '''Interpolate extensions''' (Interpolate and interpolate attribute) have been completely rewritten and multiple issues have been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/240 MR extensions#240]).
* The '''JPEG export''' previously converted a transparent background to black ([https://gitlab.com/inkscape/extensions/-/issues/366 Issue extensions#366]). Now, the document background color is used ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3994 MR #3994]). This also affects the other Raster export extensions. Additionally, the JPEG export now works with even larger resolutions ([https://gitlab.com/inkscape/inbox/-/issues/6522 Issue inbox#6522], [https://gitlab.com/inkscape/extensions/-/merge_requests/445 MR extensions#445]).
* Several bugs in the '''Formula (pdflatex)''' extension have been fixed,  such as incorrect insertion position ([https://gitlab.com/inkscape/extensions/-/issues/339 Issue extensions#339]) and random character substitution in documents with many formulae ([https://gitlab.com/inkscape/extensions/-/merge_requests/453 MR extensions#453]). The extension now also works on Windows if the user name is longer than 8 characters ([https://gitlab.com/inkscape/extensions/-/merge_requests/448 MR extensions#448], [https://gitlab.com/inkscape/extensions/-/issues/287 Issue extensions#287]).
* A bug in the rotation sense of the '''Lindenmayer''' extension has been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/437 MR extensions#437], [https://bugs.launchpad.net/inkscape/+bug/1094627 LP issue 1094627])
* The '''Motion''' extension now gives better results for paths with multiple closed subpaths ([https://gitlab.com/inkscape/extensions/-/issues/266 Issue extensions#266]) and when the selected element is part of a transformed group. ([https://gitlab.com/inkscape/extensions/-/merge_requests/317 MR extensions#317]).
* The '''Optimized PNG export''' doesn't crash anymore when running it with default parameters ([https://gitlab.com/inkscape/extensions/-/merge_requests/463 MR extensions#463], [https://gitlab.com/inkscape/extensions/-/issues/395 Issue extensions#395])
* A useless warning message when using '''Optimized SVG''' output was removed ([https://gitlab.com/inkscape/extensions/-/merge_requests/368 MR extensions#368] , [https://gitlab.com/inkscape/extensions/-/issues/428 Issue extensions#428])
* The '''Pixel snap''' extension now aligns objects to the coordinate system starting at the top left of the page. The previous behavior, snapping them to a grid aligned with the page bottom, can be activated in the settings ([https://gitlab.com/inkscape/extensions/-/merge_requests/429 MR extensions#429], [https://gitlab.com/inkscape/extensions/-/issues/264 Issue extensions#264]). A bug related to inconsistent unit conversion has been fixed as well.
* Several bugs in the '''PostScript (PS) / EPS import''' have been adressed: It now handles file names with non-latin characters ([https://gitlab.com/inkscape/extensions/-/merge_requests/408 MR extensions#408], [https://gitlab.com/inkscape/extensions/-/issues/281 Issue extensions#281]) on Windows and doesn't rotate the image anymore if the majority of the text is not oriented left-to-right ([https://gitlab.com/inkscape/extensions/-/merge_requests/457 MR extensions#457] and [https://gitlab.com/inkscape/extensions/-/issues/258 Issue extensions#258]). Also a clearer error message is shown for invalid PS/EPS files ([https://gitlab.com/inkscape/extensions/-/merge_requests/454 MR extensions#454], [https://gitlab.com/inkscape/extensions/-/issues/404 Issue extensions#404])
* In the '''Randomize Colors''' extension, shapes with unset opacity are not ignored anymore ([https://gitlab.com/inkscape/extensions/-/merge_requests/331 MR extensions#331] [https://gitlab.com/inkscape/extensions/-/issues/236 Issue extensions#236]).
* A crash in the '''Render Polyhedron''' extension when attempting to render a custom object defined by its edges has been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/390 MR extensions#390] , [https://gitlab.com/inkscape/extensions/-/issues/408 Issue extensions#408]).
* The '''Replace Color''' extension now processes colors in RGBA space ([https://gitlab.com/inkscape/extensions/-/merge_requests/392 Issue extensions#392], [https://gitlab.com/inkscape/extensions/-/issues/419 Issue extensions#419]).
* The "Tangential Offset" parameter of the '''Scatter''' extension is now a percentage of the pattern width, and an issue with nested groups has been resolved ([https://gitlab.com/inkscape/extensions/-/merge_requests/327 MR extensions#327]). Another issue where the spacing was off when using the "stretch" mode has also been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/327 MR extensions#327]).
* The '''Synfig export''' now exports objects that are not paths (such as rectangles, texts, circles) correctly again ([https://gitlab.com/inkscape/extensions/-/issues/198 Issue extensions#198]); and paths with multiple subpaths are converted correctly ([https://gitlab.com/inkscape/extensions/-/issues/197 Issue extensions#197]) ([https://gitlab.com/inkscape/extensions/-/merge_requests/462 MR extensions#462]).
* The '''TIFF export''' now also works on Linux ([https://gitlab.com/inkscape/extensions/-/merge_requests/458 MR extensions#458], [https://gitlab.com/inkscape/extensions/-/issues/422 Issue extensions#422])
* In the '''Visualize Path''' extensions '''Measure Path''' and '''Number Nodes''', the results are now correct also when the parent of the selected object is transformed ([https://gitlab.com/inkscape/extensions/-/merge_requests/314 MR extensions#314], [https://gitlab.com/inkscape/extensions/-/issues/171 Issue extensions#171]).
* A crash in the '''Voronoi Diagram''' extension when applied to non-Inkscape documents has been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/313 MR extensions#313], [https://gitlab.com/inkscape/extensions/-/issues/222 Issue extensions#222]), and the output is now correct independent of the document unit ([https://gitlab.com/inkscape/extensions/-/issues/403 Issue extensions#403], [https://gitlab.com/inkscape/extensions/-/merge_requests/382 MR extensions#382]).
* The '''Webslicer''' extension now correctly cleans up its temporary files ([https://gitlab.com/inkscape/extensions/-/merge_requests/436 MR extensions#436])
 
=== Extension Development === <!--T:458-->


==== Particular extensions ====
==== API Changes for Third-Party Extension Developers ==== <!--T:459-->


* In the '''Add nodes''' extension, closed paths were previously changed to open paths, and an erroneous node was added ([https://gitlab.com/inkscape/extensions/-/merge_requests/336 MR extensions#336], [https://gitlab.com/inkscape/extensions/-/issues/209 Issue extensions#209]). Other and third-party extension will probably profit from the underlying bugfix as well.
<!--T:460-->
*The live preview of the '''Calendar''' extension now works ([https://gitlab.com/inkscape/extensions/-/merge_requests/394 MR extensions#394]).
''Main Article: [https://inkscape.gitlab.io/extensions/documentation/authors/update1.2.html Updating your Extension for 1.2]''
*Multiple bugs in the '''DXF import''' extension were fixed, such as a loss of layering information ([https://gitlab.com/inkscape/extensions/-/merge_requests/410 MR extensions#410], [https://gitlab.com/inkscape/extensions/-/issues/377 Issue extensions#377]), and import of inserted blocks that have been rotated and flipped ([https://gitlab.com/inkscape/extensions/-/merge_requests/411 MR extensions#411]). An incorrect unit in the documentation has been exchanged ([https://gitlab.com/inkscape/extensions/-/merge_requests/358 MR extensions #358]).
* When using the '''DXF Outline (R12)''' export, elements in nested groups are now exported correctly ([https://gitlab.com/inkscape/extensions/-/merge_requests/347/ MR extensions#347], [https://gitlab.com/inkscape/extensions/-/issues/382 Issue extensions#382]).
*The slicing positions in the '''Guillotine''' extension are now correct, they were previously off following the flip of the y axis in Inkscape 1.0 ([https://gitlab.com/inkscape/extensions/-/merge_requests/334 MR extensions#334], [https://gitlab.com/inkscape/extensions/-/issues/269 Issue extensions#269]).
*In '''GCodetools''', multiple crashes have been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/335 MR extensions#335], [https://gitlab.com/inkscape/extensions/-/issues/312 Issue extensions#312]; [https://gitlab.com/inkscape/extensions/-/merge_requests/307 MR extensions#307], [https://gitlab.com/inkscape/extensions/-/issues/322 Issue extensions#322]; [https://gitlab.com/inkscape/extensions/-/merge_requests/388 MR extensions#388], [https://gitlab.com/inkscape/extensions/-/issues/276 Issue extensions#276]), however this module is currently unmaintained and in need of attention. Contributions are highly welcome! For this reason, the module has been given it's own repository ([https://gitlab.com/inkscape/extensions/-/merge_requests/402 MR extensions#402]).
*The Hue Level in the '''HSL Adjust''' extension how has a range of 360 ([https://gitlab.com/inkscape/extensions/-/merge_requests/400 MR extensions#400])
*The '''HTML5 Canvas''' export now has correct output for closed paths and objects with transparency ([https://gitlab.com/inkscape/extensions/-/merge_requests/345 MR extensions#345], [https://gitlab.com/inkscape/extensions/-/issues/332 Issue extensions#332]).
*The '''Interpolate extensions''' (Interpolate and interpolate attribute) have been completely rewritten and multiple issues have been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/240 MR extensions#240]).
*The '''JPEG export''' previously converted a transparent background to black ([https://gitlab.com/inkscape/extensions/-/issues/366 Issue extensions#366]). Now, the document background color is used ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3994 MR #3994]). This also affects the other Raster export extensions.
*The '''Motion''' extension now gives better results for paths with multiple closed subpaths ([https://gitlab.com/inkscape/extensions/-/issues/266 Issue extensions#266]) and when the selected element is part of a transformed group. ([https://gitlab.com/inkscape/extensions/-/merge_requests/317 MR extensions#317]).
*A useless warning message when using '''Optimized SVG''' output was removed ([https://gitlab.com/inkscape/extensions/-/merge_requests/368 MR extensions#368] , [https://gitlab.com/inkscape/extensions/-/issues/428 Issue extensions#428])
*The '''Pixel snap''' extension now aligns objects to the coordinate system starting at the top left of the page. The previous behavior, snapping them to a grid aligned with the page bottom, can be activated in the settings ([https://gitlab.com/inkscape/extensions/-/merge_requests/429 MR extensions#429], [https://gitlab.com/inkscape/extensions/-/issues/264 Issue extensions#264]). A bug related to inconsistent unit conversion has been fixed as well.
*On Windows, '''PostScript (PS) / EPS import''' now handles file names with non-latin characters ([https://gitlab.com/inkscape/extensions/-/merge_requests/408 MR extensions#408], [https://gitlab.com/inkscape/extensions/-/issues/281 Issue extensions#281]).
*In the '''Randomize Colors''', shapes with unset opacity are not ignored anymore ([https://gitlab.com/inkscape/extensions/-/merge_requests/331 MR extensions#331] [https://gitlab.com/inkscape/extensions/-/issues/236 Issue extensions#236]).
*A crash in the '''Render Polyhedron''' extension when attempting to render a custom object defined by its edges has been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/390 MR extensions#390] , [https://gitlab.com/inkscape/extensions/-/issues/408 Issue extensions#408]).


* The '''Replace Color''' extension now processes colors in RGBA space ([https://gitlab.com/inkscape/extensions/-/merge_requests/392 Issue extensions#392], [https://gitlab.com/inkscape/extensions/-/issues/419 Issue extensions#419]).
<!--T:461-->
*The "Tangential Offset" parameter of the '''Scatter''' extension is now a percentage of the pattern width, and an issue with nested groups has been resolved ([https://gitlab.com/inkscape/extensions/-/merge_requests/327 MR extensions#327]). Another issue where the spacing was off when using the "stretch" mode has also been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/327 MR extensions#327]).
A lot of additional features have been added to inkex, including a new Style API, a new Units API, support for multipage documents and more.
*In the '''Visualize Path''' extensions '''Measure Path''' and '''Number Nodes''', the results are now correct also when the parent of the selected object is transformed ([https://gitlab.com/inkscape/extensions/-/merge_requests/314 MR extensions#314], [https://gitlab.com/inkscape/extensions/-/issues/171 Issue extensions#171]).
Although there are no breaking changes in this release, some methods have been deprecated.
*A crash in the '''Voronoi Diagram''' extension when applied to non-Inkscape documents has been fixed ([https://gitlab.com/inkscape/extensions/-/merge_requests/313 MR extensions#313], [https://gitlab.com/inkscape/extensions/-/issues/222 Issue extensions#222]), and the output is now correct independent of the document unit ([https://gitlab.com/inkscape/extensions/-/issues/403 Issue extensions#403], [https://gitlab.com/inkscape/extensions/-/merge_requests/382 MR extensions#382]).
 
<!--T:462-->
* The improved CSS style and style inheritance handling is enabled for all bundled extensions. If you want to use this functionality in an extension you maintain, see [https://inkscape.gitlab.io/extensions/documentation/authors/update1.2.html#new-style-api New Style API].
* A GUI API (based on [https://pypi.org/project/gtkme/ gtkme]) has been added, so extensions can now ship GTK-based user interfaces ([https://gitlab.com/inkscape/extensions/-/merge_requests/421 MR extensions#421], [https://gitlab.com/inkscape/extensions/-/merge_requests/450 MR extensions#450], [https://gitlab.com/inkscape/extensions/-/merge_requests/465 MR extensions#465]).
* Export extensions can specify that they are only to be listed in &quot;Export as&quot; ([https://gitlab.com/inkscape/extensions/-/merge_requests/371 MR extensions#371], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3600 MR#3600]).
* Color extensions can now process in RGBA space, previously only separate processing of color and opacity was possible (MR [https://gitlab.com/inkscape/extensions/-/merge_requests/392 extensions#392]).
* The path conversion for arcs and stars have been added, so when extensions create these objects, they are rendered in a browser as well and can be processed further by the same extension. ([https://gitlab.com/inkscape/extensions/-/merge_requests/387 MR extensions#387], [https://gitlab.com/inkscape/extensions/-/issues/240 Issue extensions#240]).
* API functions for the new [[Release notes/1.2#Page tool|multipage feature]] have been added ([https://gitlab.com/inkscape/extensions/-/merge_requests/399 MR extensions#499]).
 
==== Extension Development Documentation ==== <!--T:463-->


=== Documentation ===
<!--T:464-->
* All the documentation from the Wiki and the Gitlab project wiki has been '''[https://inkscape.gitlab.io/extensions/documentation/ compiled in a single place]'''. ([https://gitlab.com/inkscape/extensions/-/merge_requests/443 MR extensions#443], [https://gitlab.com/inkscape/extensions/-/merge_requests/451 MR extensions#451])
* The '''tutorials for extension authors''' have been improved. ([https://gitlab.com/inkscape/extensions/-/merge_requests/443 MR extensions#443])
* '''Versioning information''' is now contained in the documentation. This shows extensions authors in which Inkscape version new API functionality was added or deprecated. ([https://gitlab.com/inkscape/extensions/-/merge_requests/443 MR extensions#443])
* The API documentation has been updated into the familiar ReadTheDocs layout ([https://gitlab.com/inkscape/extensions/-/merge_requests/310 MR extensions#310]) and is now generated with a newer version of Sphinx ([https://gitlab.com/inkscape/extensions/-/commit/edf232209494107c9f33ccc6f101726a7fd73adb Commit extensions#edf23220]).
* The API documentation has been updated into the familiar ReadTheDocs layout ([https://gitlab.com/inkscape/extensions/-/merge_requests/310 MR extensions#310]) and is now generated with a newer version of Sphinx ([https://gitlab.com/inkscape/extensions/-/commit/edf232209494107c9f33ccc6f101726a7fd73adb Commit extensions#edf23220]).
*Fix errors in the documentation [https://gitlab.com/inkscape/extensions/-/merge_requests/324 MR extensions#324]
* Fix some small mistakes in the documentation ([https://gitlab.com/inkscape/extensions/-/merge_requests/324 MR extensions#324])
=== Behind the curtains ===
* Various upgrades to the testing library [https://gitlab.com/inkscape/extensions/-/merge_requests/332 MR extensions#332], [https://gitlab.com/inkscape/extensions/-/merge_requests/383 MR extensions#383] now make it easier to test extensions automatically. Our test suite is now continuously running on Python 3.7-3.10 ([https://gitlab.com/inkscape/extensions/-/merge_requests/370 MR extensions#370]) on Linux as well as Python 3.8 on Windows ([https://gitlab.com/inkscape/extensions/-/merge_requests/404 MR extensions#404]).
*Added issue template ([https://gitlab.com/inkscape/extensions/-/merge_requests/377 MR extensions#377]) and merge request template ([https://gitlab.com/inkscape/extensions/-/merge_requests/416 MR extensions#416]) to communicate more effectively.
*inkex can be installed via <code>pip</code> by providing the url of a pipeline artifact, even in forks ([https://gitlab.com/inkscape/extensions/-/merge_requests/353 MR extensions#353]).
*Added Python <code>appdirs</code> dependency ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3568 MR #3568]) [Is this a bug fix?]
*The code formatting of the extensions repository has been made consistent ([https://gitlab.com/inkscape/extensions/-/merge_requests/418 MR extensions#418]). This enables contributors to think less about formatting and more about what matters.
*Improvements to code quality ([https://gitlab.com/inkscape/extensions/-/merge_requests/419 MR extensions#419], [https://gitlab.com/inkscape/extensions/-/merge_requests/423 MR extensions#423], [https://gitlab.com/inkscape/extensions/-/merge_requests/428 MR extensions#428]) and clearer communication of it ([https://gitlab.com/inkscape/extensions/-/merge_requests/420 MR extensions#420])
*The localization of the extensions has been improved ([https://gitlab.com/inkscape/extensions/-/merge_requests/425 MR extensions#425]).
== Command line ==


* 'verbs' have been removed. All verbs are available as 'actions' now (see [[#Behind_the_curtains|below]] for more context)([https://gitlab.com/inkscape/inkscape/-/merge_requests/3884 MR #3884], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3880 MR #3880], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3874 MR #3874]).
==== Under the hood ==== <!--T:465-->
* A new action for scaling by a factor has been added, it replaces the previous one, which is now called 'grow' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3880 MR #3880]).


<!--T:466-->
* Various upgrades to the testing library [https://gitlab.com/inkscape/extensions/-/merge_requests/332 MR extensions#332], [https://gitlab.com/inkscape/extensions/-/merge_requests/383 MR extensions#383] now make it easier to test extensions automatically. Our test suite is now continuously running on Python 3.7-3.10 ([https://gitlab.com/inkscape/extensions/-/merge_requests/370 MR extensions#370]) on Linux as well as Python 3.8 on Windows ([https://gitlab.com/inkscape/extensions/-/merge_requests/404 MR extensions#404]).
* Added issue template ([https://gitlab.com/inkscape/extensions/-/merge_requests/377 MR extensions#377]) and merge request template ([https://gitlab.com/inkscape/extensions/-/merge_requests/416 MR extensions#416]) to communicate more effectively.
* inkex can be installed via <code>pip</code> by providing the url of a pipeline artifact, even in forks ([https://gitlab.com/inkscape/extensions/-/merge_requests/353 MR extensions#353]).
* The code formatting of the extensions repository has been made consistent ([https://gitlab.com/inkscape/extensions/-/merge_requests/418 MR extensions#418]). This enables contributors to think less about formatting and more about what matters.
* Improvements to code quality ([https://gitlab.com/inkscape/extensions/-/merge_requests/419 MR extensions#419], [https://gitlab.com/inkscape/extensions/-/merge_requests/422 MR extensions#422], [https://gitlab.com/inkscape/extensions/-/merge_requests/423 MR extensions#423], [https://gitlab.com/inkscape/extensions/-/merge_requests/428 MR extensions#428]) and clearer communication of it ([https://gitlab.com/inkscape/extensions/-/merge_requests/420 MR extensions#420]).
* A dependency management system, [https://python-poetry.org/ poetry], has been introduced ([https://gitlab.com/inkscape/extensions/-/merge_requests/446 MR extensions#446]). This provides packagers with the necessary information which versions of python modules the extensions are currently tested against.
* The deprecated <code>inkex.py</code> file has been removed ([https://gitlab.com/inkscape/extensions/-/merge_requests/460 MR extensions#460]) since it's interfering with the new dependency manager.
* The localization of the extensions has been improved ([https://gitlab.com/inkscape/extensions/-/merge_requests/425 MR extensions#425]).
* It is now possible to use ngettext and pgettext in extensions for better translations ([https://gitlab.com/inkscape/extensions/-/merge_requests/459 MR extensions#459]).


== Behind the curtains ==
== Command line == <!--T:467-->


* '''Gio::Actions''': The old 'verbs' were converted to 'actions'. This work was done to prepare for migrating to Gtk4. It also makes it possible to reach them all '''from the commands palette''', to assign keyboard shortcuts them and to use them on the command line. A big part of this work was done by Google Summer of Code student SUSHANT A.A. with the mentors Alexander Valavanis, Ted Gould and Tavmjong Bah.
<!--T:468-->
* ''''verbs' have been removed'''. All verbs are available as 'actions' now (see [[#Behind_the_curtains|below]] for more context) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3884 MR #3884], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3880 MR #3880], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3874 MR #3874]).
* A new action for '''scaling by a factor''' has been added, it replaces the previous one, which is now called 'grow' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3880 MR #3880]).


== Behind the curtains == <!--T:469-->


=== Symbols ===
<!--T:470-->
Add support for x, y, width and height SVG2 attributes on <symbol>.
* '''Gio::Actions''': The old 'verbs' were converted to 'actions'. This work was done to prepare for migrating to Gtk4. It also makes it possible to reach them all '''from the commands palette''', to assign keyboard shortcuts them and to use them on the command line. A big part of this work was done by '''[https://wiki.inkscape.org/wiki/index.php?title=GSoC_2021_Verbs_to_Gio::Actions Google Summer of Code student SUSHANT A.A.]''' with the mentors Alexander Valavanis, Ted Gould and Tavmjong Bah.
Follows logic of <svg> element, which already supported these attributes ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3828 MR #3828])
* Support for x, y, width and height SVG2 attributes on <code><symbol></code> has been added. It follows the logic of the <svg> element, which already supported these attributes ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3828 MR #3828])
* '''Continuous integration''' has been improved and maintained
* A whole lot of '''code cleanup and refactoring''' has been done to improve maintainability
* Many '''new tests''' were written to be able to detect breakages early


== Notable bugfixes == <!--T:471-->


== Notable bugfixes ==


=== Crash fixes === <!--T:472-->


=== Crash fixes ===
<!--T:473-->
Fixed a crash that occurred …


* Check knot still exists before updating ([https://gitlab.com/inkscape/inkscape/-/merge_requests/717 MR #717])
<!--T:474-->
* Masive collection of crash fixes related to number of LPE (copy, stampe, duplicate) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3479 MR #3479])
* when closing Inkscape while drawing a '''3D box''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4018 MR #4018], [https://gitlab.com/inkscape/inkscape/-/issues/2390 Bug #2390])
* Action after grouping 3D boxes crash Fix ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3698 MR #3698])
* when flipping a grouped '''3D box''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3698 MR #3698])
* Fix for crashing of inkscape while Quitting ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3681 MR #3681])
* when using Undo after switching from the '''3D box''' tool to another tool ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4192 MR #4192], [https://gitlab.com/inkscape/inkscape/-/issues/2854 Bug #2854])
* Fix crash due to invalid or malformed direct-action string ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3663 MR #3663])
* when pressing <kbd>Backspace</kbd> while using the '''Bézier tool''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3715 MR #3715], [https://gitlab.com/inkscape/inkscape/-/issues/2764 But #2764])
* Bezier curve tool Backspace crash ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3715 MR #3715])
* when hatching with the '''Calligraphy tool''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3927 MR #3972], [https://gitlab.com/inkscape/inkscape/-/issues/3173 Bug #3173])
* Fix crash scrolling across line height units ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3541 MR #3541])
* using '''Document Properties''' dialog ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3400/ MR #3400])
* Fix adding a path effect to symbol causes crash ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3520 MR #3520])
* when '''dragging and dropping''' SVG files from klatexformula into Inkscape ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3710 MR #3710])
* Fix drag-and-drop svgs, stops crash ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3710 MR #3710])
* when using the '''Eraser tool''' (five different crashes fixed) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4079 MR #4079], [https://gitlab.com/inkscape/inkscape/-/merge_requests/4008 MR #4008])
* Handle two items in spray tool's single path mode ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3470 MR #3470])
* when drawing a rectangle after closing the '''Icon Preview dialog''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3439 MR #3439])
* Icon preview crash ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3439 MR #3439])
* when copying/cutting/stamping various '''Live Path Effects''' (multiple crash and bug fixes) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3479 MR #3479])
* Prevents crashing during 3D box import ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3592 MR #3592])
* when copying a path with the 'Attach path' '''Live Path Effect''' ([https://gitlab.com/nathanal/inkscape/-/commit/8fd705fbc3ec31bffd51ffaa7e3a8a1efcf49a36 Commit 8fd705], [https://gitlab.com/inkscape/inkscape/-/issues/626 Bug #626])
* Fill between Paths LPE crash on selecting ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3801 MR #3801])
* when selecting an object with the 'Power Stroke' '''Live Path Effect''' after reopening a file ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3546 MR #3546], [https://gitlab.com/inkscape/inkscape/-/issues/2716 Bug #2716])
* when editing a shape with an inverse mask applied to it with the '''Node tool''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4080 MR #4080], [https://gitlab.com/inkscape/inkscape/-/issues/3286 Bug #3286])
* when trying to '''open''' an SVG file with invalid CSS pseudoclasses ([https://gitlab.com/inkscape/inkscape/-/issues/3358 Bug #3358], [https://gitlab.com/inkscape/inkscape/-/merge_requests/4219 MR #4219])
* when changing the pattern back in the '''Paint Servers dialog''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4139], [https://gitlab.com/inkscape/inkscape/-/issues/3327 Bug #3327])
* when '''quitting''' Inkscape ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3681 MR #3681])
* when using the '''Spray tool''' to spray multiple items in single path mode ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3470 MR #3470])
* when clicking on a color after reopening the '''Swatches dialog''' ([https://gitlab.com/inkscape/inkscape/-/issues/3221 Bug #3221], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3991 MR #3991])
* when trying to add a Live Path Effect to a '''symbol''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3520 MR #3520])
* when scrolling quickly through line height units in the the '''Text tool''''s tool controls bar ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3541 MR #3541])


=== Other bug fixes === <!--T:475-->


=== Other bug fixes ===
<!--T:476-->
* The '''Align and Distribute dialog''' no longer starts out with node alignment options, this is strictly limited to when the Node tool is in use.
* Improved '''Boolean Operation''' algorithm ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3724 MR #3724])
* The '''Calligraphy tool''' no longer inverts the tilt direction ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3782 MR #3782], [https://gitlab.com/inkscape/inkscape/-/issues/1692 Bug #1692])
* the '''Calligraphy tool''' no longer leaves any blots on locked layers when trying to draw on them ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3882 MR #3882], [https://gitlab.com/inkscape/inkscape/-/issues/3154 Bug #3154])
* There's no longer a grey line present that starts on the top left page corner when holding Ctrl and drawing with the '''Calligraphy tool''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3174 MR #3174], [https://gitlab.com/inkscape/inkscape/-/issues/2203 Bug #2203])
* Cloning objects that do not have an ID works now ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3180 MR #3180], [https://gitlab.com/inkscape/inkscape/-/issues/2389 Bug #2389])
* macOS users can now '''close''' Inkscape from the Welcome screen ([https://gitlab.com/inkscape/inkscape/-/issues/2762 MR #2762])
* The Zoom buttons are back in the '''Commands bar''': <code>Zoom to fit selection in window</code>, <code>Zoom to fit drawing in window</code>, <code>Zoom to fit page in window</code> and <code>Center page in window</code> ([https://gitlab.com/inkscape/inkscape/-/issues/1910 Bug #1910], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3638 MR #3638])
* The search results in the '''Commands palette''' are now ordered in a more helpful way ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2834])
* '''Copy-pasting''' groups using CSS classes for objects inside them no longer turns them all black ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3656 MR #3656])
* '''Dialogs''' that have just been opened receive focus again, so they can be used with a keyboard, too ([https://gitlab.com/inkscape/inkscape/-/issues/3482 Bug #3482], [https://gitlab.com/inkscape/inkscape/-/merge_requests/4381 MR #4381])
* When the canvas has the focus, open '''dialogs''' do not steal keyboard shortcuts from it anymore ([https://gitlab.com/inkscape/inkscape/-/issues/2409 Bug #2409], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3176 MR #3176])
* '''Document properties dialog and menu''' agree about whether guides are visible and/or locked now ([https://gitlab.com/inkscape/inkscape/-/issues/663 Bug #663], [https://gitlab.com/inkscape/inkscape/-/merge_requests/4346 MR #4346])
* Inkscape no longer slows down when '''using grids and having the Document Properties dialog open''' on macOS
* Units in the '''Document Properties dialog''' now adjust properly when scaling the document ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3403 MR #3403])
* For files without a viewbox, the '''Document properties dialog''' no longer refuses to change the Display unit ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3866 MR #3866], [https://gitlab.com/inkscape/inkscape/-/issues/872 Bug #872])
* The '''Eraser tool''' no longer leaves red traces when it cannot erase ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4079 MR #4079], [https://gitlab.com/inkscape/inkscape/-/issues/540 Bug #540])
* The '''Eraser tool''' now even cuts paths with only two nodes or arcs and clones (unlinking them) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4079], [https://gitlab.com/inkscape/inkscape/-/merge_requests/4008 MR #4008])
* '''Export file names''' are now saved relative to the file's location (previously, we were saving absolute paths in the SVG document) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4166 MR #4166], [https://gitlab.com/inkscape/inkscape/-/issues/804 Bug #804])
* '''Exported raster images''' without alpha layer (no transparency) such as RGB and Greyscale PNGs, or JPG now use the page background color for export instead of black ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3994 MR #3994], [https://gitlab.com/inkscape/inkscape/-/issues/1357 Bug #1357])
* running '''extensions''' no longer fails when you've run them many times already ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3871 MR #3871], [https://gitlab.com/inkscape/inkscape/-/issues/2861 Bug #2861])
* the '''Extension Manager''' now works on macOS ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3579 MR #3579])
* Scaling a stroke by percentage in the '''Fill and Stroke dialog''' no longer changes the stroke pattern and no longer shrinks instead of growing ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4198 MR #4189], [https://gitlab.com/inkscape/inkscape/-/issues/792 Bugs #792], [https://gitlab.com/inkscape/inkscape/-/issues/793 #793], [https://gitlab.com/inkscape/inkscape/-/issues/1238 #1238])
* The long lost 'Burnt Edges' '''filter''' has returned ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3576 MR #3567])
* It is no longer possible to create invalid filters using a non-existing feComposite operator ([https://gitlab.com/inkscape/inkscape/-/issues/1647 Bug #1647], [https://gitlab.com/inkscape/inkscape/-/merge_requests/2766 MR #2766])
* The default value for 'saturate' in the color matrix '''filter''' has been fixed ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3626 MR #3626])
* '''Find and Replace''' now works better if a text has a description and nested tspans ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3551 MR #3551])
* '''Find and Replace''' now more reliably finds all occurrances of a string ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2999 MR #2999], [https://gitlab.com/inkscape/inkscape/-/merge_requests/4352 MR #4352])
* Editing fonts with the '''Font Editor dialog''' now also works for SVG fonts without a label (as created by FontForge)
* '''Guides''' do not move around anymore when resizing the document ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4127 MR #4127], [https://gitlab.com/inkscape/inkscape/-/issues/1230 Bug #1230])
* '''Guide handles''' are always correctly centered on the guide line. This change also fixes a similar positioning error that affected node handles ([https://gitlab.com/inkscape/inkscape/-/issues/2022 Bug #2022], [https://gitlab.com/inkscape/inkscape/-/issues/2604 Bug #2604], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3870 MR #3870]).
* When a linked '''image''' can not be found, Inkscape now no longer uses (and saves the file with) altered image sizes ([https://gitlab.com/inkscape/inkscape/-/issues/3115 Bug #3115], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3842 MR #3842])
* Imported '''images''' are now rotated according to their metadata ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3587 MR #3587], [https://gitlab.com/inkscape/inbox/-/issues/4235 Bug inbox#4235])
* Embedded SVG '''images''' with markers or their own CSS styles are now displayed properly ([https://gitlab.com/inkscape/inkscape/-/issues/1757 Bug #1757], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3147 MR #3147])
* '''Imported''' .cdr files will now use correct measurements ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3879 MR #3879], [https://gitlab.com/inkscape/inkscape/-/issues/2983 Bug #2983])
* The '''Measure tool''' handles angles close to 180° better now ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2918 MR #2918])
* '''Node tool''' handles for smooth and symmetrical nodes now scale along with the other handles, according to the preferences setting ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3679 MR #3679], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3699 MR #3699])
* '''Opening''' a file without a file extension now only gives a warning when the file contents is not valid SVG ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3500 MR #3500])]
* '''Perspective/envelope LPE''' now works on objects with 0 width or height . (edge cases for single line stroke) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2712 MR #2712])
* The '''Preferences''' option to 'enable dynamic relayout for incomplete sections' has been removed, because it has started to break the interface ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3887 MR #3887])
* The '''Preferences''' options for the dockbar style have been removed as they were no longer in use ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3360 MR #3660])
* When a search term can not be found in the '''Preferences''', the whole Preferences tree stays available now ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2636 MR #2636])
* '''Preferences''' now store more exact numbers, and these numbers are also more exact when given to extensions ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3340 MR #3340])
* SVG files can now be '''saved''' without file extension again ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3500 MR #3500])
* '''Saving to .odg''' format works again ([https://gitlab.com/inkscape/inkscape/-/issues/3385 Bug #3385], [https://gitlab.com/inkscape/inkscape/-/merge_requests/4316 MR #4316])
* When scaling and snapping with the '''Selector tool''', the snapping now uses the correct location when geometrical bounding box is being used ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3990 MR #3990], [https://gitlab.com/inkscape/inkscape/-/issues/2212 Bug #2212])
* When clicking and dragging an object with the '''Selector tool''', the correct object is now always dragged (affected Windows) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3735 MR #3735])
* Improvements to '''snapping''' with the node tool (performance, add useful snap targets, remove useless snap targets) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3890 MR #3890], more info in [https://gitlab.com/inkscape/inkscape/-/merge_requests/3889 MR #3889])
* Text tool is more verbose again in the '''status bar''' when editing flowed texts ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4201 MR #4201], [https://gitlab.com/inkscape/inbox/-/issues/4449 Bug inbox#4449])
* Transform handle keyboard shortcuts are now displayed in the '''status bar''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3809 MR #3809])
* A small margin was added on the right end of the '''status bar''', to prevent canvas rotation when the user's intention was to resize the Inkscape window ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3824 MR #3824], [https://gitlab.com/inkscape/inkscape/-/issues/918 Bug #918])
* '''Symbols''' from custom symbol libraries created with Inkscape are now inserted in the correct size ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4228 MR #4228], [https://gitlab.com/inkscape/inkscape/-/issues/1319 Bug #1319])
* The last line in a flowed '''text''' paragraph is not justified anymore ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3780 MR #3780])
* When moving a flowed '''text''' and its flow shape together, the flowed text now stays where it belongs ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3695 MR #3695])
* Multiline vertical '''texts''' in legacy Inkscape documents that have been edited in current Inkscape now are placed correctly in browsers ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3537 MR #3537])
* The preview in the '''Text and Font''' dialog no longer contains tofu (ugly placeholder character) where there is a linebreak ([https://gitlab.com/inkscape/inkscape/-/issues/2577 Bug #2577], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3359 MR #3359])
* '''Tracing''' Pixel Art can now warn users again when the image they're trying to trace is too large ([https://gitlab.com/inkscape/inkscape/-/issues/2455 Bug #2455], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3306 MR #3306])
* '''Zoom''' shortcuts from the numpad work again ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3773 MR #3773])


* Inkscape no longer slows down when using grids and havign the Document Properties dialog open on macOS
<!--T:477-->
* Calligraphy tool: use correct tool tilt direction ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3782 MR #3782], [https://gitlab.com/inkscape/inkscape/-/issues/1692 Bug #1692])
* Multiple '''memory leak''' fixes and reductions ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3508 MR #3508], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3058 MR #3058], [https://gitlab.com/inkscape/inkscape/-/commit/51f3bb43774e2a208bfb3b80c62621bc58de8855 Commit 51f3bb4], [https://gitlab.com/inkscape/inkscape/-/commit/74bfe1555d3f9d4ed97c2e58f96d5f5b4eca303d Commit 74bfe1], and many more)
* duplicated gradeint does not get deleted ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3361 MR #3361])
* Lots of '''spelling, phrasing and translatability''' fixes
* Last line in paragraph is not justified anymore ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3780 MR #3780])
* Lots of large or small '''performance improvements''' (e.g. [https://gitlab.com/inkscape/inkscape/-/merge_requests/3838 MR #3838])
* Fix #1034 - Recursively flatten css style when copying ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3656 MR #3656])
* new boolean operation algorithm ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3724 MR #3724])
* Respect mouse down before mouse move coordinates (WIN) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3735 MR #3735])
* Remove mandatory break from end of paragraphs, added in Pango 1.49 ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3630 MR #3630])
* Fix: Subsequent font changes to words in the same textbox now apply ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3631 MR #3631])
* Fix numpad input for unimode in text tool ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3689 MR #3689])
* Restore refresh of units trackers ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3665 MR #3665])
* Fix find and replace if text has description, nested tspans ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3551 MR #3551])
* all canvas knots should have same size and be controlled form preferences ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3679 MR #3679], [https://gitlab.com/inkscape/inkscape/-/merge_requests/3699 MR #3699])
* Fix multiline vertical text positioning in browsers ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3537 MR #3537])
* Stop changing line height when units change ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3544 MR #3544])
* Fix Clone Tiler menu item, action mismatch ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3650 MR #3650])
* fix: Cannot quit Inkscape on macOS Big Sur from welcome screen (MAC) ([https://gitlab.com/inkscape/inkscape/-/issues/2762 MR #2762])
* Fix: Position of flowed text no longer applies extra transforms on text ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3695 MR #3695])
* Fix default value for saturate in color matrix filter ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3626 MR #3626])
* nodes widget no longer appears on startup in align and distribute dialog ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3677 MR #3677])
* fixes #2621. Clicking on fill/stroke in the status bar now reopens the dialog if it is hidden ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3754 MR #3754])
* Fix KP_2,4,6,8 shortcuts for rect tool ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3773 MR #3773])
* Transform handle modifiers are now displayed on status bar ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3809 MR #3809])
* Perspective/envelope LPE now works on objects with 0 width or height . (edge cases for single line stroke) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2712 MR #2712])


=== Even more bug fixes === <!--T:478-->


=== Even more bug fixes ===
<!--T:479-->
 
There were even more issues fixed than those listed above, but these probably only affect a small portion of users, or are relevant for development and packaging only.
There were even more issues fixed than those listed above, but these probably only affect a small portion of users, or are relevant for development and packaging only.


<!--T:480-->
For a complete list, visit [https://gitlab.com/inkscape/inkscape/-/issues?milestone_title=Inkscape+1.2 our GitLab issue tracker] and see the [https://gitlab.com/inkscape/inkscape/-/commits/1.2.x commit history].
For a complete list, visit [https://gitlab.com/inkscape/inkscape/-/issues?milestone_title=Inkscape+1.2 our GitLab issue tracker] and see the [https://gitlab.com/inkscape/inkscape/-/commits/1.2.x commit history].


== Translations == <!--T:481-->


== Translations ==
<!--T:482-->
 
The following UI translations received updates:
The following UI translations received updates:


*
<!--T:483-->
* Brazilian Portuguese
* Catalan
* Croatian
* Czech
* Dutch
* Farsi
* French
* German
* Hebrew
* Hungarian
* Icelandic
* Irish
* Italian
* Japanese
* Korean
* Polish
* Portuguese
* Romanian
* Russian
* Simplified Chinese
* Slovenian
* Spanish
* Traditional Chinese
* Turkish
* Ukrainian


The Windows installer translation was updated for [2021-03-03]:
<!--T:484-->
<!-- The Windows installer translation was updated for [2021-03-03]:


* …
<!--T:485-->
* … -->


<!--T:486-->
The following documentation translations received updates:
The following documentation translations received updates:


*
<!--T:487-->
* German
* Simplified Chinese




=== Contributing to interface translations ===
=== Contributing to interface translations === <!--T:488-->


<!--T:489-->
Want to help with translations? [https://inkscape.org/contribute/translations/ Learn how to help!]
Want to help with translations? [https://inkscape.org/contribute/translations/ Learn how to help!]


== Documentation == <!--T:490-->


== Documentation ==
<!--T:491-->
 
* Adjusted font sizes for Eastern languages ([https://gitlab.com/inkscape/inkscape-docs/documentation/-/merge_requests/269 MR docs#269], [https://gitlab.com/inkscape/inkscape-docs/documentation/-/issues/59 Bug docs#59])
*
* Updated keyboard shortcut list with new node tool shortcuts ([https://gitlab.com/inkscape/inkscape-docs/documentation/-/commit/03541f3d970042a2075cb9be403a1c8aef626432 Commit docs#03541f])




=== Contributing to documentation and documentation translation ===
=== Contributing to documentation and documentation translation === <!--T:492-->
Contributions to the documentation translations, as well as improvements to its contents, are welcome at [https://gitlab.com/inkscape/inkscape-docs/documentation the inkscape-docs repository].
Contributions to the documentation translations, as well as improvements to its contents, are welcome at [https://gitlab.com/inkscape/inkscape-docs/documentation the inkscape-docs repository].


== Website == <!--T:493-->


== Website ==
<!--T:494-->
The inkscape.org website was updated from Django 1.1 to Django 2.x by '''[https://pulsar17.me/2021/08/gsoc-work Google Summer of Code student Ishaan Arora]''' with the mentors Thomas Holder and Martin Owens. This was in preparation for the goal of updating Django to 3.x, which Ishaan Arora is currently working on.


[TODO: update if merged]
== Important changes for packagers == <!--T:495-->
Ishaan Arora with mentors Thomas Holder, Martin Owens
 
 
== Important changes for packagers ==


<!--T:496-->
* Dithering for gradients (see [[#Dithering|Dithering section]]) is available with a build flag (<code>-DWITH_INTERNAL_CAIRO=ON</code>), which causes Cairo to be patched for dithering during the build process. Please find more information in [https://gitlab.com/inkscape/inkscape/-/merge_requests/3812 MR #3812].
* New dependency on <code>python-cssselect</code> added which is required for usage of Inkscape extensions ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3239 MR #3239])
* New dependency on <code>python-cssselect</code> added which is required for usage of Inkscape extensions ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3239 MR #3239])
* Added Python <code>appdirs</code> dependency ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3568 MR #3568])
* As Python <code>distutils</code> are now deprecated, they have been replaced by <code>python3-packaging</code> ([https://gitlab.com/inkscape/extensions/-/merge_requests/368 MR extensions#368])
* As Python <code>distutils</code> are now deprecated, they have been replaced by <code>python3-packaging</code> ([https://gitlab.com/inkscape/extensions/-/merge_requests/368 MR extensions#368])
* Dithering for gradients (see [[#Dithering|Dithering section]]) is available with a build flag (<code>-DWITH_INTERNAL_CAIRO=ON</code>), which causes Cairo to be patched for dithering during the build process. Please find more information in [https://gitlab.com/inkscape/inkscape/-/merge_requests/3812 MR #3812].
* The extension that imports images from the internet requires the Python <code>cachecontrol</code> module
 
* gcodetools (<code>gcodetools</code>), extension manager (<code>inkman</code>) and clipart importer (<code>clipart</code>) are now all submodules of the extensions submodule. Make sure to update submodules recursively with <code>--recurse-submodules</code> when updating your git branches!
== Important changes for extension authors ==
* Inkscape now builds without X11 (cmake option) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3208 MR #3208])
''Main Article: [[Updating your Extension for 1.2]]''
 
A lot of additional features have been added to inkex, including a new Style API, a new Units API, support for multipage documents and more.


Although there are no breaking changes in this release, some methods have been deprecated.
== Known issues == <!--T:497-->


== Known issues ==
<!--T:498-->
 
* Please '''check your command line scripts'''. It is probable that they need to be updated after all verbs have been converted to actions.
* Gradient editing [as of 2022-01-24]:
* Some '''custom keyboard shortcuts''' that were set with older Inkscape versions may cease to work and need to be set again when their functionality has been touched in the conversion from 'verb' to 'action'.
* Gradient editing:
** If you convert your gradient to swatch, the gradient editor cannot be used for editing it anymore.
** If you convert your gradient to swatch, the gradient editor cannot be used for editing it anymore.
** Canvas stops and gradient editor stops highlighting will stop working in some cases.
** Canvas stops and gradient editor stops highlighting will stop working in some cases.
** Inkscape crashes on close, and creates a backup file. Preferences are saved properly.
* If you want to '''print a specific range of pages / a specific page''', you can select page numbers in the print dialog. However, this only prints the first page currently.
** Outline overlay mode does not work within page area.
* The option to '''specify a margin''' when resizing the page to the selection is currently not available (formerly available in Document Properties dialog, in the future planned for the Page tool).
* '''Spellchecking''' is not available on '''macOS'''
* Menus on '''M1 (ARM)''' architecture Apple computers '''do not display arrows for expandable menu items'''
* The ''''Render LaTeX'''' extension is disabled in the '''snap packages''' of Inkscape 1.2
* '''Circles''' that were resized and then the action was reverted with 'Undo' may sometimes lose their radius and can't be copy-pasted anymore, files don't show up correctly in browsers (also the case in 1.1.2 - [https://gitlab.com/inkscape/inkscape/-/issues/2879 Bug #2879])
* '''Clipart Import''' and '''Extension Manager''' do not work in the Linux AppImage package ([https://gitlab.com/inkscape/inbox/-/issues/6787 Bug inbox#6787])


== Other releases == <!--T:499-->


== Other releases ==
<!--T:500-->
{{:Release notes}}


{{:Release notes}}
</translate>

Latest revision as of 14:30, 28 September 2023

Other languages:
English



Release highlights

Released on May 16, 2022

General user interface

Color palette

The overall look and options of the Color palette and the Swatches dialog got a massive overhaul (MR #2881):

  • When switching the color palette, the switcher shows a colorful preview line for each palette
  • Between 1 and 5 palette rows that can be displayed all at once, or scrolled through vertically / using the arrow buttons
  • Improved and reliably working settings for padding, tile size and tile shape / auto-stretching
Color palette layout options


Context menus

  • Context menus no longer contain functionality that is not available for the selected object (no greyed-out items anymore), making it easier to find what you're looking for. This also helps find objects you've hidden, as the option to unhide objects under the cursor only appears if there are hidden objects in that location (MR #3800).
  • The Extract image command has been improved and works with multiple images now. You can now enter a base filename; if none is entered, the ids of the selected images are used as filename. You can also choose whether the embedded image data should be replaced by a link to the exported file (MR extensions#461, Bug extensions#167).

Dithering

Inkscape's gradients sometimes suffered from visible steps between colors, a phenomenon also known as gradient banding. Gradient banding is caused by the difference between how many different colors are available for the selected image file format and how many colors a human eye can discern. The effect becomes especially prominent when exporting a gradient that only spans a small color range to a high-resolution image. There just aren't enough colors available for a smooth transition.

Dithering softens these steps by scattering pixels of the different adjacent colors along the gradient, a little bit like a blur.

Dithering is now used both for Export of raster images as well as for displaying gradients on canvas (MR #3812). This functionality requires a special version of Cairo, our rendering engine. This means that it will only be available in the pre-packaged builds (for macOS, Windows and for the Linux AppImage).

Dithering can be turned off (better performance / smaller exported file size for raster images) in Preferences → Rendering → Use dithering.

Note:

  • Dithering does not work for mesh gradients!
  • For standard Linux package formats (deb, rpm, …), it depends upon your Linux distribution maintainers whether they will patch up the version of Cairo they want to distribute. We hope that this change will one day also be included in the official Cairo packages (Link to ongoing discussion).
Top: Gradient banding, bottom: dithered, smooth gradient


Menu

  • The option View → Custom was removed, as the difference was the location of the snap controls bar, and that is gone now (MR #3647).
  • After installing a new extension with the Extensions Manager, the menu now updates without the need to restart Inkscape (Commit #0bb51a)


Performance

  • Various performance improvements for rendering while panning and zooming (MR 3838)
  • Improved performance on macOS


Settings

Some default settings have been changed to make Inkscape easier to use for new users:

  • Rotation is now locked by default
  • The default handle size has been increased (to 4)
  • The default number of autosave files has been increased (to 50)

Status Bar

  • The layer selection drop-down has been replaced by a layer indicator. Clicking on the indicator opens the new Layers and object dialog. This change improves Inkscape's performance for documents with many layers (MR #3648).
  • The layer lock and hide icons now come after the layer indicator, which is more logical (MR #3856, Bug #3104)
  • The status bar contents are now configurable from Edit → Preferences → Interface: Status bar (MR #3445)
  • When your document has more than one page, the status bar shows the page navigation to the right of the message area, allowing you to leaf through the pages or to select a specific page directly


Tool Bar

  • The Tool bar width can now be adjusted by dragging its edge. The tool icons will wrap into multiple columns, separated by tool category, depending upon the width.
  • You can now hide tools from the tool bar at Edit → Preferences → Interface → Toolbars: Toolbars (MR #3515)
Toggling tool visibility for the tool bar

Canvas

Page

  • Inkscape documents can now hold multiple pages! Learn more in the section about the new Page tool.
  • Page shadows now have a more realistic, blurry, fade-out look (MR #3128).
  • Settings for the page background / decoration (shadow, border) were refactored, see section about Document properties dialog.
  • The page's default color is white, and the default desk color is set to light gray. This way, it is easier to differentiate what is on the page(s) and what is outside of the page(s).
Page shadow comparison. Left: Inkscape 1.1, right: Inkscape 1.2

Snapping

New snap settings layout

Snap popover

The snap bar has been replaced with a new 'popover'-type dialog, which will unfold when you click on the little arrow symbol in the top right corner, next to the snap symbol. Snap options now have always-visible descriptions, to make them easier to understand (MR #3323).

To activate / deactivate snapping globally, click on the snap symbol in the top right corner or press %.

The popover dialog has two different modes:

  • Simple: Only 3 options: snap bounding boxes and paths, activate / deactivate the new alignment snapping). This provides simple presets for many use cases.
  • Advanced: Gives the familiar granular control over every snapping option.

Note: Switching from 'Advanced' back to 'Simple' is not merely a visual change, but will reset snap settings to defaults.


Alignment and Distribution snapping

During Google Summer of Code 2021, GSOC student Parth Pant worked on adding on-canvas alignment and distribution snapping, with the support of his mentors Thomas Holder and Marc Jeanmougin. As a result, two new modes of on-canvas snapping have been added. These new modes make aligning and distributing objects a very easy drag-and-drop operation (MR #3294)..

  • When on-canvas alignment is active (option Alignment), Inkscape will display horizontal or vertical temporary guide lines that indicate when the selected object can be aligned relative to another object on the canvas. It connects the points of the objects that are in alignment. With the option Nodes in same path, alignment snapping is also available for nodes while editing a path with the node tool.
  • With distribution snapping (option Same distances), multiple objects close by are taken into account, making it possible to align objects in a grid with very little effort.

The temporary guide lines only appear while editing / moving objects on the canvas. Once a guide shows up, the movement of the selection is loosely constrained in the direction of the guide.

Alignment and Distribution snapping guide lines can display the distance(s) between objects as a little label. This can be enabled from Edit → Preferences → Snapping: Show snap distance in case of alignment or distribution snap.

The 'Simple' mode of the snapping popover dialog allows you to simply activate or deactivate Alignment snapping. The 'Advanced' mode gives you additional control by allowing you to en-/disable:

Other Changes to Snapping

  • Snap settings are no longer saved with the document, but are set globally for all documents in the preferences and in the snap popover dialog.
  • The option for enabling snapping in new documents has been removed, as it no longer makes sense (MR #3580)
  • The options for snapping perpendicularly and tangentially to paths or guide lines have been moved from the document preferences to the snap popover to make them more discoverable.
  • The options to configure snap tolerances per snap target type that previously could be set in the document preferences have been removed to simplify snapping for users.


Guides and Grids

  • The size of the guide handles is now adjustable via the existing setting Edit → Preferences → Interface → Handle size. Nonetheless, the guide handles react to this setting at half the rate of other handles; at large settings, the effective size of a guide handle is about half the size of an auto-smooth node. At the same time, a minimum size is enforced, equal to the previously hard-coded size. As a result of this mechanism, the handle is only enlarged when the Handle size preference is set to a value of 7 or larger. Since the default value is 3, the size of guide handles does not change on new installs or for users on default settings (Bug #3111, MR #3870)
  • Larger handles can now easily be grabbed with the mouse, because the handles themselves are now 'grabb-able', not only the guide lines below (Bug #3111, MR #3870)
  • Handles now take on the guide's color. Only when the guide is locked, its handle turns grey (and changes the shape to an "x", as before) (Bug #3111, MR #3870)
  • The default color of guides and grids was changed to a softer shade of blue (MR #4012)
New guide appearance (enlarged for better visibility, and thus pixelated)

Tools

Tool settings

  • The Pen, Pencil, Text and Tweak tool now use the 'last used style' by default, and will not constantly reset to black fill / stroke respectively for new users with default preferences (MR #3533).
  • The default 'Mass' value of the Eraser tool has been increased, so the result is now much smoother (MR #3440, Bug UX#107)
  • The default 'Smoothing' value for the Pencil tool has been increased, so first-time users' first drawings will look less squiggly (MR #3966)
  • The default font unit for the Text tool is pt.

Gradient Tool

To allow you to keep gradients, even when the last object that was using it has been deleted, we added a setting for automatically removing unused gradients at Preferences → Gradient Tool → Auto delete gradients that are not used. This is turned on by default, which corresponds to the behavior of the previous Inkscape version, but you can now turn it off (MR #3897).

Node tool

  • The box (lasso) selection mode gained two new features: node deselection and inverted node selection:
    • to deselect some of the selected nodes, drag a box around those nodes while holding Shift + Ctrl.
    • to select all nodes but those that end up within the box, hold Ctrl while dragging the box around the nodes.
  • When clicking on a path segment while holding Ctrl, the path segment becomes a straight line
  • When double-clicking on a path segment while holding Ctrl, the path segment is removed
Inkscape FYXaPj0jjw.gif
Inkscape FekqUR7B43.gif
Inkscape LWkJXrBQvg.gif
CTRL+ DoubleClick remove segment

Page tool

Context menu for the Page tool

The new Page tool (lowest button in the tool bar) allows you to create multi-page Inkscape documents, and to import as well as export multi-page PDF documents. (MR #3486, MR #3785, MR #3821). It supports overlapping pages and pages of different sizes in a single document.

Importing (Merge) / Exporting (Split)

Multi-page documents can be imported with their pages appended as new pages in the existing document. Select the correct option in the window that pops up to append pages rather than import shapes as usual. This can be used to merge multiple pdf files.

Exporting multiple pages can be done in the new export dialog in batch mode. As well as each individual page in the Single export tab. Use this to split into single page svg or pdf documents. Note: it's not yet possible to select a sub-selection of multiple pages to export yet.

Tool usage:

  • To create a new page either:
    • click-and-drag on the canvas
    • or click on the 'Create a new page' button in the tool controls
  • To delete a page, click on the page to select it, then click on the button Delete selected page or use the Del or Backspace keys.
  • To move a page on the canvas, click-and-drag it to the desired new position. If the option to Move overlapping objects is active, this will also move any objects that touch the page along with it.
  • To change a page's size:
    • click on a page whose size you want to change to select it, then drag the square-shaped handle in its bottom right corner
    • click on the page, and then choose one of the predefined sizes in the page size dropdown, or enter your size values for the 'Custom' option, by typing them into the field in the form of 10cm x 15cm
  • To fit a page to:
    • the size of the drawing: make sure to have no object selected before you switch to the Page tool. Then select a page by clicking on it, then click on the button 'Fit page to drawing or selection' in the tool controls
    • a selected object: first select the object(s) with the selection tool, then switch to the Page tool, click on a page to select it, then press the the button 'Fit page to drawing or selection' in the tool controls
  • To add a label to your page, select the page by clicking on it, then enter a name or label for it into the text field in the page tool's tool controls. Labels are always visible, no matter which tool is currently selected.
  • To export a multi-page PDF file, use File → Save a copy … → PDF. This will automatically include all pages. If you only want to export a certain page, or a selection of pages, the updated File → Export dialog's batch export tab can help you get that done (one file per page).
  • To open or import a multi-page PDF or AI (pdf-based) file, use File → Open/Import → select file name → choose to import 'All' pages [Known issue: 'import' moves content of some pages to some far out place in the drawing]
  • You can navigate pages with page navigator on that will show up in right down corner of status bar

Note: Multi-page SVG files are an Inkscape-specific concept. Web browsers will only display the first page of your document, which corresponds to the 'viewbox' area of the SVG file.

Selector Tool

The tool now allows to set the origin of the selection for precise numerical positioning to one out of 8 possible positions:

  1. If no handle is selected, the default origin is the top left corner of the bounding box.
  2. To change, click on one of the other 7 outside object handles to select your desired origin for the scaling.
  3. The selected handle is now highlighted in blue and the x/y position in the tool controls will adjust to the new origin.
  4. Now edit the x, y, width or height values to move and scale your object using the new origin (MR #2700)
  5. To reset the transformation origin, Shift + Click on the highlighted handle.

Text Tool

Text spacing/kerning options in a popover dialog
  • Kerning options are now symbolized by a button between the subscript and text direction selectors. Clicking on it will open a so-called pop-over, where all previously available options can be found. This change saves space in the Text tool's toolbar.
  • Negative kerning values can now take on values as small as -1000 (previously -100), making them symmetrical to their positive counterparts (MR #2569, MR #3434)
  • Padding: Text that is flowed into a shape and standard flowed text now has an additional square-shaped handle in the top right corner. Move the handle to adjust the text padding inside the frame (MR #2769)
  • Exclusion zones: Text can now flow around one or more movable objects:
    1. Select all object(s) (use only shapes and paths on the same object hierarchy level as the text; no groups / clones / images supported) and the text.
    2. Set the exclusion zone by going to Text → Set subtraction frames.
    3. Now you can move the exclusion objects around or edit their shape, and the text will adjust automatically.
    4. If you want to change the exclusion zones again at a later point, repeat the process with all objects that the text should flow around.
      Background info:
      SVG 2.0 flowed text allows for shape-padding and shape-subtract attributes. shape-padding lets the text flow into a shape and leave some space between its edges and w where the text will start to flow. shape-subtract subtracts shapes with margin, so text can flow around other objects in the scene. These attributes were supported in Inkscape 1.0, but not exposed to the user. This version of Inkscape includes both an adjustable on-canvas knot for changing the padding as well as a Text menu item for setting text subtraction properties with a further knot to adjust it's margins.
Text flowing around a shape and then text padding being adjusted

Path Operations

With Path → Split path, Inkscape now has functionality to separate a path object that consists of multiple subpaths into a set of path objects that 'belong together'. This means that parts of a path that have holes in them are kept as whole objects. The function works by splitting up a path into non-intersecting bits, keeping intersecting bits together.

Example: A path that consists of a word, like 'Inkscape' will be split into 8 parts, one for each letter. With the familiar 'Break apart' function, there would be 12 parts, because of the holes in the letters that would be split off as their own objects, too (MR #3738).

Top: Break path function separates all subpaths into single objects (not new)
Bottom: Splitting a text into letters with the new 'Split path' operation


Dialogs

Close current tab or open any dialog directly from a dialog dock/window

General Dialog Changes

  • A mini-menu (downward pointing arrow symbol) was added into the title bar of every multi-dialog panel (also called 'notebook'). You can use it to close the current tab, to undock it, or to close the whole panel. It also shows a list of available dialogs, sorted by purpose, allowing you to open them with a click ((MR #3728)
  • The right-click menu for tabs now contains a list of all open dialogs.
  • Open dialogs are now less costly for performance, because they do not update when it's not needed (MR #3369), or when they are hidden (MR #3761)
  • Docking zones now expand and flash slowly when a dialog is dragged close to them. This makes it easier to see where docking is possible (MR #3729)
  • The text labels of docked dialogs are now more responsive to the width of dialog (MR #3627)
  • A new option for text labels for docked dialogs has been added. Edit → Preferences → Windows: Dialogs settings : Labels Behavior : Active reduces all except the active tabs' labels to icons. The option is no longer available from the right-click menu of the tabs (MR #3644)

About Screen

The 'About Inkscape' dialog uses the winner art from our Inkscape 1.2 About Screen Contest, "New discoveries await..." by Chris Hildenbrand.

Align and Distribute

  • The formerly separate Arrange dialog is now integrated with the Align and Distribute dialog. With its three tabs, more user-friendly names and some small visual tweaks, the dialog now holds everything that is needed for aligning, distributing and arranging objects in your drawing (MR #3382, MR #3667).
  • The icons inside this dialog are now smaller.
All alignment and distribution options in a single dialog

Document Properties

Document Properties
First tab of the Document Properties dialog
  • The 'Snapping' tab was removed in favor of a global snapping preference, see Snapping section.
  • The first tab of the Document properties dialog was refactored thoroughly to make it easier to use (MR #3700):
    • It's now labelled 'Display' instead of 'Page'.
    • The long list of different document formats is now available from a dropdown.
    • There is a preview available of the page format and colors.
    • The page area(s) in a document can now have a different color than the underlying 'desk' area.
    • The other options have been rearranged to look tidier.
    • Note: The option to add margins to a document when resizing it is currently unavailable
  • Grid precision has been reduced to 3 decimal places (MR #2941)
 

Export

The former Export PNG image dialog was updated to a general Export dialog by 2021 GSOC student Anshudhar Kumar Singh with the mentors Michael Kowalski, Ted Gould and Tavmjong Bah, and finished by Martin Owens (MR #3825).

The new name reflects the increased range of functionality of the dialog.

General Export Dialog Changes

  • the confusing number entry fields for export area coordinates have been hidden from all but the 'Custom' tab
  • the dialog now features a preview that allows you to see what is going to be in the exported file(s). The preview can also be turned off when you do not need one, or in case performance suffers.

Available Export File Formats

  • by default, the dialog allows you to export images to multiple raster and vector formats: – PNG, Optimized PNG, JPEG, WebP, Tiff, SVG, Inkscape SVG, PDF
  • by activating Edit → Preferences → Input/Output → Show all outputs in Export dialog, even more export formats, provided by Inkscape extensions, will become accessible from the dialog. By default, this includes a long list almost as high as your Inkscape window - ranging from 'Compressed Inkscape SVG with media' and .dxf to 'Scribus CMYK pdf' and 'Windows Metafile (.wmf)'.
  • third-party Inkscape Python extensions can be added to extend the dialog's functionality even further

Batch Export

In addition to exporting single images, one at a time, or simple batch export of objects in the selection to separate files, the dialog has gained the ability to:

  • also batch export top level layers and pages
  • to export to multiple image resolutions at once, by setting a different DPI value for each export format/size
  • to export to multiple file formats at once
  • to select objects, pages or top level layers to export (with preview)
  • file names are constructed as <filename>_<object id>_<suffix>.<extension>, where each export file format/size can have its own suffix

This functionality lives in the dialog's new second tab. To add another export file format or size, click on Add export, and a new line with selectable suffix, file format and dpi value settings becomes available. Layer export will include all objects in the layer (i.e. crop to content).

Hint: If you need a background for export that is the same over all layers (e.g. for a presentation or slideshow, or for an animation), you can move that background object into the root of the SVG file, by dragging it out of a layer and placing it below all layers with the Layers/Objects dialog in Objects mode. To have all layers exported at the same size, you'd still need an (invisible) object in each layer with the desired size.

Watch this video tutorial to see batch export in action (fr : export en masse | en : batch export)

Fill and Stroke dialog

Color selector

HSLuv color picker mode with color wheel
  • The more intuitive HSL mode (hue, saturation, lightness) is now the default mode of the color selector.
  • All color selection modes (e.g. HSL, HSV, RGB, CMYK, CMS, HSLuv) have been moved into a drop-down menu, with icons. You can get the old, tabbed look back by disabling the option in Edit → Preferences → Interface: Use compact color selector mode switch (MR #3443).
  • New: HSLuv mode added for color picker. This mode lets you more intuitively select optically similar saturation of different hues (Wikipedia).
  • A color wheel can now be used for HSL, HSV and HSLuv color selection modes (in previous Inkscape versions, it was its own mode). Activate it by clicking on 'Color Wheel' above the color sliders area.

Gradient Editor is back

A replacement for the gradient editor was added to the 'Fill and Stroke' dialog (MR #2688, Bug UX#67).

This allows you to add, edit and delete gradient stops directly in the 'Fill and Stroke' dialog again:

  • to add a new stop, double click on the gradient preview
  • to move a stop, click and drag it along the gradient preview or enter the stop offset value numerically for more precision after selecting one stop
  • to remove a stop, click on it to select it, then press the Del or Backspace key
  • The Gradient tool's options `repeat mode`, `reverse gradient direction`, a gradient selection library and a list of all stops have been added here, too, so all the options pertaining to gradients are in easy reach.

en : demo video of gradient editor | fr : video demo de l’éditeur de dégradé

Markers

Some new markers to play with – the pencil automatically takes on the stroke color

The markers drop down list has been replaced by a little dialog that displays all available markers in a grid, and even allows you to edit the selected marker's size, distance from the line and orientation! This project was undertaken by GSOC student Rachana Podaralla with the mentors Michael Kowalski, Marc Jeanmougin and Martin Owens (MR #3394, MR #3420).

When clicking on the drop down for choosing the start, middle or end markers, you will see the following:

  • a list of markers used in the current document at the top
  • below that, a list of all default markers, which also contains some fun new markers!
  • at the bottom, the 'Edit' section, with:
    • A preview of how the marker will look
    • some number fields to change the size of the marker (keep the lock on to scale proportionally)
    • an option to scale the markers when the stroke width is changed
    • options for switching the marker direction
    • the option to change the marker's angle and to have that angle fixed
    • marker offsetting options
    • a button to enable editing of markers (rotate, scale, move) on the canvas


Adding and editing markers with the new dialog
Editing markers directly on the canvas

en : video of new markers in action | fr : video sur les nouvelles flèches en action

Custom Dash patterns

Inkscape comes with a big choice of dash patterns by default - from tightly spaced dots to widely spaced lines, and many options and combinations in between. Now it includes an option to make your own dash pattern, in addition to the stock patterns.

To create one:

  • Select Custom in the dash pattern drop-down menu. This will make a new text field show up where you can add your new custom dash pattern.
  • The field accepts numbers and spaces. Each number corresponds to the length of a dash or a gap. It always starts with a dash, and when it reaches the end, it will continue with the first number again, for the next gap or dash. So if you enter an even number of numbers, e.g. '1 1 4.5 4.5' the pattern will be 'dot - short gap - dash - long gap' and then repeat again, and for an uneven number of numbers, the pattern will be inverted when the first 'set' ends.

On the canvas, you can watch how your object changes while you change the custom dash pattern numbers.

Adjusting the dash pattern in a drawing

en : custom dash use case video | fr : video de cas d’utilisation de pointillés personnalisés

Other small changes

Line cap and line join order buttons have been reordered, so they match vertically (MR #3402).

New, more logical ordering of line cap and line join buttons
 

Layers and Objects dialog

The new 'Layers and Objects' dialog in 'Objects' mode

A new dialog was created that merges the functionality of the familiar 'Layers' and 'Objects' dialogs, with better performance (MR #2466, MR #3635, MR #2466, MR #3741, MR #3597, MR #3645).

It is available from both the 'Layers' and the 'Objects' menu and offers the following functionality:

  • a button to toggle between 'Layers' and 'Objects' view
  • buttons to move objects up and down in the stack.
  • a list of all layers and objects in the drawing, featuring new icons for the different object types
  • 8 alternating default colors for layers and the objects in them:
    • these colors are used for drawing the paths in the respective layers
    • the colors can be set (in case they clash with your theme, or you cannot see the paths that you draw) in the file share/inkscape/ui/highlight-colors.css in your Inkscape directory
  • layer and object colors can be customized for each layer/object on its own, by clicking on the vertical color bar at the end of each line
  • tiny mask and scissor symbols indicate that a clip or mask is applied to an object
  • object and layer names (label, not id) can be changed after a double-click on the current name
  • icons for locking and hiding a layer/object light up when you hover over the layer's row (when not locked or hidden):
    • click to hide/unhide or lock/unlock, Shift+click to hide/lock other items
  • holding Alt while hovering over an object in the dialog will highlight that object on canvas
  • layers as well as objects can be multi-selected
  • the context (right-click) menu for layers provides options to move, delete, rename the current layer, to lock/hide all/other/the current layers, to add a new layer and to convert a layer to a group
  • the context menu for objects provides the same options as it would when you right-click on the object on canvas directly

Note:

  • the (hidden) setting for path colors in the preferences file and the path outline color (available in Node tool preferences section) are no longer respected. If you used those previously, adjust the style.css file as a workaround (see above).
  • the dialog no longer offers the options to change opacity, blur or blend mode. Use the Fill and Stroke dialog as a workaround.
  • the type-forward search to filter for objects is no longer available. For objects, use the Search and Replace dialog as a workaround, for layers there is currently no replacement.
  • the buttons to move objects or layers to the bottom or to the top have been removed to improve the user interface. For both objects and layers, as a workaround you can use the buttons in the selector tool's tool controls. Home and End navigate in the dialog instead of changing positions, if the dialog has focus.

Preferences

Restart Inkscape when you changed an option with this icon
  • The preferences zoom ruler now respects your theme's look (MR #3450)
  • An option to make Select same behave like Select all with respect to whether it selects objects only in the current layer or in all layers was added to Edit → Preferences → Behavior → Selecting (MR #2832)
  • Preferences options that require restarting Inkscape to take effect now display an icon next to them
  • A set of options to tweak rendering performance and to test run different render settings has been added to the Rendering section. It becomes visible when you activate Enable developer mode

SVG Font Editor

With lots of user feedback, the Font Editor workflow has been updated with better previews, better performance and a higher degree of organization (MR #3381, MR #3396, MR #3552, MR #3628 3916).

These changes result in a new recommended workflow:

  1. Open the SVG Font Editor dialog
  2. Select a name for your new font, using the + icon in the top right corner of the dialog
  3. Adjust the horizontal advance and the major font metrics to your liking
  4. Click on Setup Canvas to change the document format to the font size and get some guides that help you draw your letters
  5. Switch to the Glyphs tab of the dialog
  6. Click + to add your first letter/glyph/character to the list. You can also click the button repeatedly to automatically create a list of commonly used font characters, from Space to common special characters, numbers and then upper case and lower case letters A to Z, and then even more special characters after that.
  7. If you like to, switch from list preview to grid preview in the bottom right corner.
  8. Select one of the lines / blocks in the glyphs list.
  9. Click on Edit. This will:
    • Create a new layer for the selected glyph (if there isn't one yet) and activate that layer.
    • Hide all other layers
  10. Now draw your letter/number/… in the new layer
  11. Make sure it's a single path (e.g. do Path > Union)
  12. Keep it selected, and click on Get curves.
  13. Continue selecting glyphs from the list, adding / editing them and turning them into SVG font characters until your font is complete.
  14. In the last tab, Kerning, you can select two different glyphs from the two dropdown lists, to adjust the default distance between them.
    1. After you've selected them, click on Add pair.
    2. Now adjust the distance between them. In addition to the preview that shows just these two glyphs, you can also make use of the sample text to see how it will look in a sentence.
    3. Continue adjusting letter distances until you're happy with the result.
  15. Save your file as Inkscape SVG, and open it with another program (e.g. FontForge) to be able to convert that SVG font into a ttf or otf font.

The workflow is based upon the following SVG Font Editor dialog improvements:

  • speed improvements: Inkscape can now handle fonts with thousands of glyphs!
  • automatic glyph generation: adding a new glyph creates a new entry and populates its unicode string, based upon the previously defined glyph (next in unicode order)
  • glyph management: glyph editing action creates glyph-specific layers to keep glyphs organized
  • grid glyph view: offers a larger preview than a list

Swatches

The Swatches dialog (View → Swatches) uses the same improved settings as the color palette (without the 'rows' setting).

Updated Swatches dialog settings

Text and Font dialog

The dialog's width has been reduced, so it won't take up excessive amounts of space when docked (MR #3314).

Trace Bitmap

The Trace Bitmap dialog received a new, shiny interface (MR #3405):

  • The tabs list and options have been detangled a bit, so you now have the following three tabs: Single scan, Multicolor, Pixel art
  • The preview auto-updates more reliably and shows a better preview image.
  • The preview location now adjusts to the dialog's format: if it is wider than tall, it moves to the right side, and if it is taller than wide, the preview appears at the bottom of the dialog.
  • The number entry fields are now accompanied by draggable sliders for easier tweaking of values.

Transform dialog

The buttons for applying or resetting the transformation have been moved to the center, the dialog's width has been reduced, and a small visual explanation for matrix transformations has been added (MR #3363).

Welcome dialog

  • The images have been updated with images from the About Screen Contest for Inkscape 1.2.
  • A set of new icons for the web links in the second tab will hopefully help encourage user contributions to the project (MR #4309)
  • There is a 'Close' button now in the top right corner of the dialog.
  • An option to 'Browse for other files' has been added to the dialog, so you can finally open any file (not just templates and recent files) from the dialog (MR #4112)


Live path effects

Select path with LPE that is responsible for the existence of this object

Select Path Effect Parent Object

If you have an object selected that was created by the Live Path Effect of another object, you can now quickly find the responsible LPE object by clicking on the new button at the bottom of the 'Path Effects' dialog. This is very useful for all Live Path effects that create dependent objects which can be selected independently, like the new Copies LPE, the Boolean Operations LPE, the Rotate Copies LPE and many more (MR #3479).

Boolean Operations

  • The mode 'division both' has been added. Its result only becomes visible when you convert the resulting object to a path, where then both objects will be cut along their intersection lines.

Offset

  • Improved performance while editing an offset by mouse

Rotate copies

  • New option to link styles for the case when you want a gradient or a pattern extend over all objects

Tiling

The new Tiling LPE

Internally, we call this the \'Tiled Clones dialog on steroids\'. This new LPE allows for interactive tiling, using a huge range of different tiling types, setting the distance between objects numerically, changing scale, location, rotation per row / column or adding more rows and columns on the fly. This can be used to quickly copy large numbers of objects non-destructively and to create interesting grids and patterns and variations quickly (MR #3814).

Features:

  • Create identical copies of objects in a grid by indicating the number of rows and columns
  • Change the horizontal and vertical spacing between copies by mouse or numerically, and choose the unit of those distances
  • The gap size can also be randomized
  • Offset every other row or column by a specified percentage of object width / height
  • 16 different mirroring modes (requires the setting Edit → Preferences → Behavior → Live Path Effects (LPE) → Tiling → Add advanced tiling options to be active!)
  • Scale interpolation (5 modes):
    • Uniform scaling (no interpolation)
    • Blend size from top to bottom
    • Blend size from left to right
    • Blend size diagonally (top left: original size – bottom right: new size)
    • Random scaling
  • Rotation interpolation with the same 5 modes
  • Option to automatically minimize gaps between copies of different sizes (does not work with rotation or diagonal mode)
  • Option to allow for independently styling and moving each copy ('Split elements', moving works when the object is grouped as a 1 object group)
  • Option to link styles for the case when you want a gradient or a pattern extend over all objects

en : Tiling video demo | fr : video demo du pavage

Import / Export

New placeholder for images that cannot be found

SVG Import

When importing an SVG document, you can now also choose to open it in a new window ('Open SVG image directly using its path'). This option makes sense when using drag and drop to get Inkscape to open a new file (MR #4034)

Import Formats

Linked Images

  • The design of the placeholder for linked images was changed (MR #3842)

Export Formats

  • The file format of the Synfig Export has been updated to > 1.4.0 (MR extensions#299).

Customization / Theming

Customizing the User Interface

  • The overall font size of the user interface can be adjusted at Edit → Preferences → Interface → Theming: Font scale (MR #3690)
  • The +/- buttons for number entry fields are now smaller. If you prefer the old, wider buttons, they can be turned on again by disabling Preferences → Interface : Use narrow number entry boxes. (MR #3358)
  • Tool bar icon sizes can now be scaled on a continuous scale from 100% to 300% size in Edit → Preferences → Interface → Toolbars: Toolbox icon size / Control bar icon size. Changing the size no longer requires a restart.

Cursors

  • The drop shadow is now optional for mouse cursors. You can turn it off in Edit → Preferences → Interface → Mouse cursors: Show drop shadow (MR #3352).

Icon Sets

  • Multiple icons in the Multicolor icons set were tweaked to improve readability or contrast, e.g. the green color is now a little brighter when using a dark theme.
  • Cursors and tool bar icons for the Bézier tool and the Calligraphy tool in the Multicolor icon theme now use the same imagery.

Themes

  • The suggested default theme is now using the multicolor icons set (MR #4043)
  • A contrast slider was added for fine tuning the selected theme's colors at Edit → Preferences → Interface → Theming: Contrast (MR #906)

Other

  • The number of possible autosave files has been increased to 10000 (was 100) (MR #3582)

macOS-specific Changes

  • The minimum operating system version supported is now macOS 10.13. (The prior version, Inkscape 1.1.x, supported macOS 10.11 and newer.)
  • All special menu items in the application menu have been enabled and hidden from other menus, so Inkscape feels more integrated with macOS (MR #3767)
  • Inkscape now provides a .dmg file for arm64 (M1) Apple computers

Windows-specific Changes

  • Modifier keys now work with graphics tablet stylus input (Commit #46c12b)
  • The Extension Manager is now an optional component in the installer for Windows (MR #3106)

Extensions

Features

General Extension Changes

  • Extensions now better support documents with CSS styles and inherited styles.

New Extensions

  • The Clipart Importer extension allows to search and download SVG resources from the Wikimedia, OpenClipart & other online sources. It is available from File → Import Web Image. It helps you with licensing your work correctly by giving information on each image's license and its requirements for derivative works. (MR extensions#441).
  • The Document → Process Illustrator SVG... extension assists with importing Adobe Illustrator documents with layers and the correct scale (MR extensions#351, MR extensions#414).

Particular extensions

The modes of the Extrude extension. A new mode, "Snug", has been added for Inkscape 1.2.
  • In the Add nodes extension, you can now choose the unit of the segment length (MR extensions#346, Issue extensions#127).
  • The Color tab of the Calendar now uses a color chooser widget instead of asking for Hex values (MR extensions#355, Issue extensions#396).
  • The Extrude extension has been rewritten (MR extensions#386). It includes a new mode, "Snug", where the boundary of the extruded rectangle follows the source paths. 'Extrude' now handles paths with multiple subpaths and doesn't require conversion of rectangles or circles to path anymore (Issue extensions#190). The extruded shapes are inserted in between the two selected elements in stacking order, which is more useful than the previous behavior (inserting after the first selected element).
  • The Formula (pdflatex) equation has been made more user-friendly. It now features a font size selector, a field to specify preamble contents, better support for scaled documents and better error messages on compile errors (MR extensions#453).
  • The Frame extension has been rewritten and now supports additional options, such as elliptical frames, offset frame and putting the fill below the object (MR extensions#430, Issue extensions#214).
  • The Motion extension now has an option to take the extrusion color and opacity from the selected path (MR extensions#317).
  • Document Info (MR extensions#401) and Guides creator (MR extensions#424) extensions were adjusted to work with multi-page documents
  • The Guides Creator extension, now also features an option that avoids creating duplicate guides, and an option for alternating margins for even and odd pages (MR extensions#424) .
  • The Split text extension has been rewritten and now supports manual kerning (Issue extensions#142) and SVG2 flowed text (Issue extensions#257) (MR extensions#326).
  • QRCodes with a maximum size of 177x177 can now be created, which allows to encode up to about 2 standard pages of text. Instead of the well-known black rectangular tiles, the extension can now also tile clones of a selected object (MR extensions#394, Issue extensions#150).

Bugs fixed

All extensions

Particular extensions

Extension Development

API Changes for Third-Party Extension Developers

Main Article: Updating your Extension for 1.2

A lot of additional features have been added to inkex, including a new Style API, a new Units API, support for multipage documents and more. Although there are no breaking changes in this release, some methods have been deprecated.

  • The improved CSS style and style inheritance handling is enabled for all bundled extensions. If you want to use this functionality in an extension you maintain, see New Style API.
  • A GUI API (based on gtkme) has been added, so extensions can now ship GTK-based user interfaces (MR extensions#421, MR extensions#450, MR extensions#465).
  • Export extensions can specify that they are only to be listed in "Export as" (MR extensions#371, MR#3600).
  • Color extensions can now process in RGBA space, previously only separate processing of color and opacity was possible (MR extensions#392).
  • The path conversion for arcs and stars have been added, so when extensions create these objects, they are rendered in a browser as well and can be processed further by the same extension. (MR extensions#387, Issue extensions#240).
  • API functions for the new multipage feature have been added (MR extensions#499).

Extension Development Documentation

Under the hood

Command line

  • 'verbs' have been removed. All verbs are available as 'actions' now (see below for more context) (MR #3884, MR #3880, MR #3874).
  • A new action for scaling by a factor has been added, it replaces the previous one, which is now called 'grow' (MR #3880).

Behind the curtains

  • Gio::Actions: The old 'verbs' were converted to 'actions'. This work was done to prepare for migrating to Gtk4. It also makes it possible to reach them all from the commands palette, to assign keyboard shortcuts them and to use them on the command line. A big part of this work was done by Google Summer of Code student SUSHANT A.A. with the mentors Alexander Valavanis, Ted Gould and Tavmjong Bah.
  • Support for x, y, width and height SVG2 attributes on <symbol> has been added. It follows the logic of the <svg> element, which already supported these attributes (MR #3828)
  • Continuous integration has been improved and maintained
  • A whole lot of code cleanup and refactoring has been done to improve maintainability
  • Many new tests were written to be able to detect breakages early

Notable bugfixes

Crash fixes

Fixed a crash that occurred …

  • when closing Inkscape while drawing a 3D box (MR #4018, Bug #2390)
  • when flipping a grouped 3D box (MR #3698)
  • when using Undo after switching from the 3D box tool to another tool (MR #4192, Bug #2854)
  • when pressing Backspace while using the Bézier tool (MR #3715, But #2764)
  • when hatching with the Calligraphy tool (MR #3972, Bug #3173)
  • using Document Properties dialog (MR #3400)
  • when dragging and dropping SVG files from klatexformula into Inkscape (MR #3710)
  • when using the Eraser tool (five different crashes fixed) (MR #4079, MR #4008)
  • when drawing a rectangle after closing the Icon Preview dialog (MR #3439)
  • when copying/cutting/stamping various Live Path Effects (multiple crash and bug fixes) (MR #3479)
  • when copying a path with the 'Attach path' Live Path Effect (Commit 8fd705, Bug #626)
  • when selecting an object with the 'Power Stroke' Live Path Effect after reopening a file (MR #3546, Bug #2716)
  • when editing a shape with an inverse mask applied to it with the Node tool (MR #4080, Bug #3286)
  • when trying to open an SVG file with invalid CSS pseudoclasses (Bug #3358, MR #4219)
  • when changing the pattern back in the Paint Servers dialog ([1], Bug #3327)
  • when quitting Inkscape (MR #3681)
  • when using the Spray tool to spray multiple items in single path mode (MR #3470)
  • when clicking on a color after reopening the Swatches dialog (Bug #3221, MR #3991)
  • when trying to add a Live Path Effect to a symbol (MR #3520)
  • when scrolling quickly through line height units in the the Text tool's tool controls bar (MR #3541)

Other bug fixes

  • The Align and Distribute dialog no longer starts out with node alignment options, this is strictly limited to when the Node tool is in use.
  • Improved Boolean Operation algorithm (MR #3724)
  • The Calligraphy tool no longer inverts the tilt direction (MR #3782, Bug #1692)
  • the Calligraphy tool no longer leaves any blots on locked layers when trying to draw on them (MR #3882, Bug #3154)
  • There's no longer a grey line present that starts on the top left page corner when holding Ctrl and drawing with the Calligraphy tool (MR #3174, Bug #2203)
  • Cloning objects that do not have an ID works now (MR #3180, Bug #2389)
  • macOS users can now close Inkscape from the Welcome screen (MR #2762)
  • The Zoom buttons are back in the Commands bar: Zoom to fit selection in window, Zoom to fit drawing in window, Zoom to fit page in window and Center page in window (Bug #1910, MR #3638)
  • The search results in the Commands palette are now ordered in a more helpful way ([2])
  • Copy-pasting groups using CSS classes for objects inside them no longer turns them all black (MR #3656)
  • Dialogs that have just been opened receive focus again, so they can be used with a keyboard, too (Bug #3482, MR #4381)
  • When the canvas has the focus, open dialogs do not steal keyboard shortcuts from it anymore (Bug #2409, MR #3176)
  • Document properties dialog and menu agree about whether guides are visible and/or locked now (Bug #663, MR #4346)
  • Inkscape no longer slows down when using grids and having the Document Properties dialog open on macOS
  • Units in the Document Properties dialog now adjust properly when scaling the document (MR #3403)
  • For files without a viewbox, the Document properties dialog no longer refuses to change the Display unit (MR #3866, Bug #872)
  • The Eraser tool no longer leaves red traces when it cannot erase (MR #4079, Bug #540)
  • The Eraser tool now even cuts paths with only two nodes or arcs and clones (unlinking them) ([3], MR #4008)
  • Export file names are now saved relative to the file's location (previously, we were saving absolute paths in the SVG document) (MR #4166, Bug #804)
  • Exported raster images without alpha layer (no transparency) such as RGB and Greyscale PNGs, or JPG now use the page background color for export instead of black (MR #3994, Bug #1357)
  • running extensions no longer fails when you've run them many times already (MR #3871, Bug #2861)
  • the Extension Manager now works on macOS (MR #3579)
  • Scaling a stroke by percentage in the Fill and Stroke dialog no longer changes the stroke pattern and no longer shrinks instead of growing (MR #4189, Bugs #792, #793, #1238)
  • The long lost 'Burnt Edges' filter has returned (MR #3567)
  • It is no longer possible to create invalid filters using a non-existing feComposite operator (Bug #1647, MR #2766)
  • The default value for 'saturate' in the color matrix filter has been fixed (MR #3626)
  • Find and Replace now works better if a text has a description and nested tspans (MR #3551)
  • Find and Replace now more reliably finds all occurrances of a string (MR #2999, MR #4352)
  • Editing fonts with the Font Editor dialog now also works for SVG fonts without a label (as created by FontForge)
  • Guides do not move around anymore when resizing the document (MR #4127, Bug #1230)
  • Guide handles are always correctly centered on the guide line. This change also fixes a similar positioning error that affected node handles (Bug #2022, Bug #2604, MR #3870).
  • When a linked image can not be found, Inkscape now no longer uses (and saves the file with) altered image sizes (Bug #3115, MR #3842)
  • Imported images are now rotated according to their metadata (MR #3587, Bug inbox#4235)
  • Embedded SVG images with markers or their own CSS styles are now displayed properly (Bug #1757, MR #3147)
  • Imported .cdr files will now use correct measurements (MR #3879, Bug #2983)
  • The Measure tool handles angles close to 180° better now (MR #2918)
  • Node tool handles for smooth and symmetrical nodes now scale along with the other handles, according to the preferences setting (MR #3679, MR #3699)
  • Opening a file without a file extension now only gives a warning when the file contents is not valid SVG (MR #3500)]
  • Perspective/envelope LPE now works on objects with 0 width or height . (edge cases for single line stroke) (MR #2712)
  • The Preferences option to 'enable dynamic relayout for incomplete sections' has been removed, because it has started to break the interface (MR #3887)
  • The Preferences options for the dockbar style have been removed as they were no longer in use (MR #3660)
  • When a search term can not be found in the Preferences, the whole Preferences tree stays available now (MR #2636)
  • Preferences now store more exact numbers, and these numbers are also more exact when given to extensions (MR #3340)
  • SVG files can now be saved without file extension again (MR #3500)
  • Saving to .odg format works again (Bug #3385, MR #4316)
  • When scaling and snapping with the Selector tool, the snapping now uses the correct location when geometrical bounding box is being used (MR #3990, Bug #2212)
  • When clicking and dragging an object with the Selector tool, the correct object is now always dragged (affected Windows) (MR #3735)
  • Improvements to snapping with the node tool (performance, add useful snap targets, remove useless snap targets) (MR #3890, more info in MR #3889)
  • Text tool is more verbose again in the status bar when editing flowed texts (MR #4201, Bug inbox#4449)
  • Transform handle keyboard shortcuts are now displayed in the status bar (MR #3809)
  • A small margin was added on the right end of the status bar, to prevent canvas rotation when the user's intention was to resize the Inkscape window (MR #3824, Bug #918)
  • Symbols from custom symbol libraries created with Inkscape are now inserted in the correct size (MR #4228, Bug #1319)
  • The last line in a flowed text paragraph is not justified anymore (MR #3780)
  • When moving a flowed text and its flow shape together, the flowed text now stays where it belongs (MR #3695)
  • Multiline vertical texts in legacy Inkscape documents that have been edited in current Inkscape now are placed correctly in browsers (MR #3537)
  • The preview in the Text and Font dialog no longer contains tofu (ugly placeholder character) where there is a linebreak (Bug #2577, MR #3359)
  • Tracing Pixel Art can now warn users again when the image they're trying to trace is too large (Bug #2455, MR #3306)
  • Zoom shortcuts from the numpad work again (MR #3773)

Even more bug fixes

There were even more issues fixed than those listed above, but these probably only affect a small portion of users, or are relevant for development and packaging only.

For a complete list, visit our GitLab issue tracker and see the commit history.

Translations

The following UI translations received updates:

  • Brazilian Portuguese
  • Catalan
  • Croatian
  • Czech
  • Dutch
  • Farsi
  • French
  • German
  • Hebrew
  • Hungarian
  • Icelandic
  • Irish
  • Italian
  • Japanese
  • Korean
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Simplified Chinese
  • Slovenian
  • Spanish
  • Traditional Chinese
  • Turkish
  • Ukrainian


The following documentation translations received updates:

  • German
  • Simplified Chinese


Contributing to interface translations

Want to help with translations? Learn how to help!

Documentation


Contributing to documentation and documentation translation

Contributions to the documentation translations, as well as improvements to its contents, are welcome at the inkscape-docs repository.

Website

The inkscape.org website was updated from Django 1.1 to Django 2.x by Google Summer of Code student Ishaan Arora with the mentors Thomas Holder and Martin Owens. This was in preparation for the goal of updating Django to 3.x, which Ishaan Arora is currently working on.

Important changes for packagers

  • Dithering for gradients (see Dithering section) is available with a build flag (-DWITH_INTERNAL_CAIRO=ON), which causes Cairo to be patched for dithering during the build process. Please find more information in MR #3812.
  • New dependency on python-cssselect added which is required for usage of Inkscape extensions (MR #3239)
  • Added Python appdirs dependency (MR #3568)
  • As Python distutils are now deprecated, they have been replaced by python3-packaging (MR extensions#368)
  • The extension that imports images from the internet requires the Python cachecontrol module
  • gcodetools (gcodetools), extension manager (inkman) and clipart importer (clipart) are now all submodules of the extensions submodule. Make sure to update submodules recursively with --recurse-submodules when updating your git branches!
  • Inkscape now builds without X11 (cmake option) (MR #3208)

Known issues

  • Please check your command line scripts. It is probable that they need to be updated after all verbs have been converted to actions.
  • Some custom keyboard shortcuts that were set with older Inkscape versions may cease to work and need to be set again when their functionality has been touched in the conversion from 'verb' to 'action'.
  • Gradient editing:
    • If you convert your gradient to swatch, the gradient editor cannot be used for editing it anymore.
    • Canvas stops and gradient editor stops highlighting will stop working in some cases.
  • If you want to print a specific range of pages / a specific page, you can select page numbers in the print dialog. However, this only prints the first page currently.
  • The option to specify a margin when resizing the page to the selection is currently not available (formerly available in Document Properties dialog, in the future planned for the Page tool).
  • Spellchecking is not available on macOS
  • Menus on M1 (ARM) architecture Apple computers do not display arrows for expandable menu items
  • The 'Render LaTeX' extension is disabled in the snap packages of Inkscape 1.2
  • Circles that were resized and then the action was reverted with 'Undo' may sometimes lose their radius and can't be copy-pasted anymore, files don't show up correctly in browsers (also the case in 1.1.2 - Bug #2879)
  • Clipart Import and Extension Manager do not work in the Linux AppImage package (Bug inbox#6787)

Other releases