Difference between revisions of "Release notes/1.3"

From Inkscape Wiki
Jump to navigation Jump to search
 
(107 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
<!--
{{Box| '''These Release Notes are in Draft Status.'''
{{Box| '''These Release Notes are in Draft Status.'''


Line 13: Line 13:
{{Box| Pending questions:
{{Box| Pending questions:


* [https://gitlab.com/inkscape/inbox/-/issues/8562 See GitLab]


}}
}}
 
-->
== Release highlights ==
== Release highlights ==


<!--'''Released on May xx, 2023 '''-->
'''Released on July 23, 2023 '''
'''Definitely not released yet.'''
<!-- '''Definitely not released yet.'''-->


The highlights of this major Inkscape version are:
The highlights of this major Inkscape version are:
* [[#Shape_Builder_Tool|Shape Builder Tool]] for building up shapes on canvas (Boolean tool)
* [[#Font_Collections|Font Collections]]
* [[#Pattern_Editor|Pattern Editor]]
* [[#Document_Resources_Dialog|Document Resources Dialog]]
* [[#Performance|Improved performance thanks to fully asynchronous, multithreaded rendering]]
* [[#Performance|Improved performance thanks to fully asynchronous, multithreaded rendering]]
*[[#Shape_Builder_Tool|Shape builder]] - a new tool for building complex shapes (Boolean tool)
* [[#LPE_Dialog|LPE dialog redesigned]]
* [[#On-Canvas_Pattern_Editing|On-Canvas Pattern Editing]]
* [[#On-Canvas_Pattern_Editing|Improved On-Canvas Pattern Editing]]
* [[#Pattern_Editor|Pattern Editor (NEW)]]
* [[#Refactoring_of_PDF_and_AI_import|Better PDF import]]
* [[#Page_Tool|Page margins & bleed]]
* [[#Page_Tool|Page margins & bleed]]
* [[#Document_Resources_Dialog|Document Resources Dialog (NEW)]]
* Return of [[#Layers_and_Objects_Dialog|Search, opacity & blend modes in Layers & Objects dialog]] and of an optional [[#Snap_toolbar|persistent snap bar]]
* Return of [[#Layers_and_Objects_Dialog|Search, opacity & blend modes in Layers & Objects dialog]] and of an optional [[#Snap_toolbar|persistent snap bar]]
* [[#Font_Collections|Font Collections]]
* [[#Syntax_Highlighting|Syntax highlighting in XML Editor]]
* [[#Syntax_Highlighting|Syntax highlighting in XML Editor]]
* [[#LPE_Dialog|LPE dialog - Redesign]]
*[[#Refactoring_of_PDF_and_AI_import|Better PDF import]]


* '''And so much more!'''
* '''And so much more!'''
Line 38: Line 39:
== Performance ==
== Performance ==


A lot of effort has gone into improving the performance and speed of all aspects in Inkscape. This involved the refactoring of inefficient code, rewriting how Inkscape works with patterns, moving bitmap tracing into a separate thread and so much more.
A lot of effort has gone into improving the performance and speed of all aspects of Inkscape. This involved the refactoring of inefficient code, rewriting how Inkscape works with patterns, moving bitmap tracing into a separate thread and so much more.


Canvas rendering is now both multithreaded and done outside of Inkscape's main process thread. This should significantly improve performance while zooming / panning / transforming objects
Canvas rendering is now both multithreaded, and done outside of Inkscape's main process thread.


If your computer's processor has more than one core (which it most likely does). This results '''in a 2–4× speedup''' in most of the tasks.
If your computer's processor has more than one core (which it most likely does), this can result '''in a 2–4× speedup''' while zooming / panning / transforming objects.


You can set the number of processor cores Inkscape should use for rendering in <code>Edit ➞ Preferences ➞ Rendering ➞ Number of Threads</code>. By default, Inkscape tries to be as fast as possible by using as many cores as possible  
The number of processor cores used for rendering can be adjusted in <code>Edit ➞ Preferences ➞ Rendering ➞ Number of Threads</code>. By default, Inkscape tries to be as fast as possible by using as many cores as possible.


([https://gitlab.com/inkscape/inkscape/-/merge_requests?scope=all&state=merged&label_name&#x5B;&#x5D;=Project%3A%3AMultithreading Multithreading MRs], [https://gitlab.com/inkscape/inkscape/-/merge_requests/4760 MR #4760]).
([https://gitlab.com/inkscape/inkscape/-/merge_requests?scope=all&state=merged&label_name&#x5B;&#x5D;=Project%3A%3AMultithreading Multithreading MRs], [https://gitlab.com/inkscape/inkscape/-/merge_requests/4760 MR #4760]).
Line 53: Line 54:


[[File:Indicators of used colors.png|thumb|Indicators for used colors]]
[[File:Indicators of used colors.png|thumb|Indicators for used colors]]
* Color palette fields now have little indicators that show which color is used for the stroke and fill of a selected object.  
* Color palette fields now have little '''indicators''' that show which color is used for the stroke and fill of a selected object.  
* Color pinning ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4957 MR #4957]):  
* '''Color pinning''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4957 MR #4957]):  
** You can select colors from the palette that you are using and 'pin' them to the start of the palette, for faster access. By default, these 4 colors are 'Unset', black, grey and white, but you can choose any other color, too. These fields can be made larger, so they can be easily clicked on.
** Colors from the palette that you use frequently can be 'pinned' to the start of the palette, for faster access. By default, these 4 colors are 'Unset', black, grey and white, but you can choose any other color. These fields can be made larger, so they can be easily clicked on.
** To add a color to the pinned colors array, right-click on its palette field and select 'Pin color'. The color will then be moved away from its original location in the palette to the palette start.
** To add a color to the pinned colors array, right-click on its palette field and select 'Pin color'. The color will then be moved away from its original location in the palette to the palette start.
** To 'unpin' a color, right-click on the pinned color's field and select 'Unpin color'.  
** To 'unpin' a color, right-click on the pinned color's field and select 'Unpin color'.  
Line 64: Line 65:




=== Context menu ===
=== Color Pickers ===
 
Color pickers in Inkscape now support choosing colors in the '''OKLch''' color space, which has just been adopted into the CSS Color Module Level 4 [https://www.w3.org/TR/css-color-4/#ok-lab draft recommendation]. For those who would like to learn more, OKLch and OKLab are described in detail by its creator [https://bottosson.github.io/posts/oklab/ in a blog post].
 
This additional option is disabled by default. It can be enabled in <code>Edit ➞ Preferences ➞ Interface ➞ Color Selector</code> as "OKHSL", and will then be available in any color picker's dropdown. Note that color values will still be written as RGB hex codes in the SVG source, and Inkscape also does not support reading colors that are defined in that color space. This change is purely adding a new convenient option for choosing colors.
 
[[File:OKLAB.png|thumb|474x474px]]
 
[[File:Configure-color-pickers.png|none|thumb|461x461px]]


* For clipped images, there is now an option to crop them to their clipping path. This destructive operation can be used to reduce the file size of an SVG file, removing unneeded parts. The function automatically embeds any linked images, leaving the original image untouched. For any areas outside an irregular-shaped clip, but inside the rectangular region of the bounding box, the new image will use transparency. The status bar will show a message telling you by how many bytes the cropping made your file lighter.


=== Command Palette ===


=== Crash dialog ===
It is no longer necessary to scroll horizontally in the <code>Command Palette</code> (shortcut: <kbd>?</kbd>), as entries are now '''nicely arranged and formatted''' and make use of linebreaks. Now all the info for an entry is directly visible ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4988 MR #4988])


When Inkscape crashes, it will now ask you to create a bug report and will provide information that can help developers to fix the crash.
=== Context menu ===


For clipped images, there is now an option in the context menu to '''crop them to their clipping path'''. This destructive operation can be used to reduce the file size of an SVG file, removing unneeded parts. The function automatically embeds any linked images, leaving the original image untouched. For any areas outside an irregular-shaped clip, but inside the rectangular region of the bounding box, the new image will use transparency. The status bar will show a message telling you by how many bytes the cropping made your file lighter.


=== Pasting Options Renamed, and Paste on Page ===


The <code>Paste size</code> entry in the <code>Edit</code> menu has been renamed to <code>Paste…</code>, to hold all 'special' pasting operations that you may need.
=== Copy-pasting Styles ===


A new pasting feature <code>On Page</code> has been added to this renamed menu to paste the copied object(s) into the same position on a different page ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4695 MR #4695]).  
A new preference option in <code>Edit ➞ Preferences ➞ Behavior ➞ Clipboard</code> now allows you to choose whether you want to '''replace the CSS rules''' (new option) for an object with those of the other object, or whether you want to always just paste the '''resulting style attributes''' (old behavior), without any CSS classes, when you copy-paste the style of one object onto another one. This will help with (colorable) icon creation and web development tasks. The option defaults to the old behavior, so unless the old style pasting behavior bothered you, you do not need to change anything.


For this to work correctly, you must first select the page to paste on by either:
=== Crash dialog ===


* selecting an object on that page before pasting
When Inkscape crashes, it will now ask you to create a bug report, and will '''provide information that can help developers''' to fix the crash.
* selecting the page with the page tool
* changing the current page using the buttons in the status bar


[[File:Crash-dialog.png|border|right|349x349px]]


=== Selections ===
=== Keyboard shortcuts ===


Functionality to save and restore the current selection (i.e. which items are currently selected) and to delete the saved status has been added. It is accessible from the Commands bar (<kbd>?</kbd>, search for 'set selection backup') or by setting a keyboard shortcut for it in the preferences. You can use it to quickly save which objects or which nodes in a path you currently have selected, and to later get back to work with that selection.
The keyboard shortcuts for '''aligning objects vertically and horizontally''' have been moved to the numeric keypad, where the other alignment shortcuts are, too:


* Vertical alignment has been moved from <kbd>Ctrl+Alt+T</kbd> to <kbd>'''Ctrl+Alt+Numpad 1'''</kbd>
* Horizontal alignment has been moved from <kbd>Ctrl+Alt+H</kbd> to <kbd>'''Ctrl+Alt+Numpad 7'''</kbd>


=== Snap toolbar ===
If you find yourself unable to reach the new shortcuts (for example, because your laptop does not have a keypad, or because the shortcuts do not work - may be the case on Linux with Xfce), you can set them to something else by changing '''both''' the alignment shortcut '''and''' the function that now uses that shortcut (if any). Use the search in <code>Edit ➞ Preferences ➞ Interface ➞ Keyboard</code> – it also allows searching for shortcuts, not only for their name (e.g. search for <code>ctrl+alt+t</code> to find the new default action that is executed when that combo is pressed).


An option was added in <code>Edit ➞ Preferences ➞ Interface ➞ Toolbars</code> to show snapping options permanently in a dedicated toolbar, similar to Inkscape version 1.1 and earlier.


=== Origin on current page ===


=== Keyboard shortcuts ===
In <code>Edit ➞ Preferences ➞ Interface</code>, there is an option now to use the '''current page's corner as the coordinate system origin''' for placing objects, for the rulers, and for any tools.


The keyboard shortcuts for aligning objects vertically and horizontally have been moved to the numeric keypad, where the other alignment shortcuts are, too:


*Vertical alignment was moved from <kbd>Ctrl+Alt+T</kbd> to <kbd>'''Ctrl+Alt+Numpad 1'''</kbd>
=== Pasting Options Renamed, and Paste on Page ===
*Horizontal alignment was moved from <kbd>Ctrl+Alt+H</kbd> to <kbd>'''Ctrl+Alt+Numpad 7'''</kbd>
[[File:OKLAB.png|thumb|474x474px]]
If you find yourself unable to reach the new shortcuts (for example, because your laptop does not have a keypad, or because the shortcuts do not work - may be the case on Linux with Xfce), you can set them to something else by changing '''both''' the alignment shortcut '''and''' the function that now uses that shortcut (if any). Use the search in <code>Edit ➞ Preferences ➞ Interface ➞ Keyboard</code>. It also allows searching for shortcuts, not only for their name (e.g. search for <code>ctrl+alt+t</code> to find the new default action that is executed when that combo is pressed).


The <code>Paste size</code> entry in the <code>Edit</code> menu has been '''renamed to <code>Paste…</code>''', to hold all 'special' pasting operations that you may need.


=== Color Pickers ===
A new pasting feature called <code>On Page</code> has been added to this renamed menu. You can use it to paste the copied object(s) into the same position on a different page ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4695 MR #4695]).


Color pickers in Inkscape now support choosing colors in the '''OKLch''' color space, which has just been adopted into the CSS Color Module Level 4 [https://www.w3.org/TR/css-color-4/#ok-lab draft recommendation]. For those who would like to learn more, OKLch and OKLab are described in detail by its creator [https://bottosson.github.io/posts/oklab/ in a blog post].
For this to work correctly, you must first select the page to paste on by either:


This additional option is disabled by default. It can be enabled in <code>Edit ➞ Preferences ➞ Interface ➞ Color Selector</code> as "OKHSL", and will then be available in any color picker's dropdown. Note that color values will still be written as RGB hex codes in the SVG source, and Inkscape also does not support reading colors that are defined in that color space. This change is purely adding a new convenient option for choosing colors.
* selecting an object on that page before pasting
* selecting the page with the page tool
* changing the current page using the buttons in the status bar




=== Rulers ===
=== Rulers ===


Inkscape's rulers at the canvas boundaries got two new indicator areas:
Inkscape's rulers on the top and left side of the canvas now feature '''two new indicator areas''':


* '''Page:''' the part of the ruler that corresponds to the current page's location is now colored in a different tone, so you can always see where your page ends.
* '''Page:''' the part of the ruler that corresponds to the current page's location is now colored in a different tone, so you can always see where your page ends.
* '''Selection:''' a thin blue line indicates and follows the current selection. This line can be turned off in <code>Edit ➞ Preferences ➞ Interface: Show selection in ruler</code>.
* '''Selection:''' a thin blue line indicates and follows the current selection. This line can be turned off in <code>Edit ➞ Preferences ➞ Interface: Show selection in ruler</code>.


Ruler performance has been improved along with these changes.
Ruler '''performance''' has been improved along with these changes.
 
[[File:Rulers-with-selection.png|599x599px]]


[needs screenshot of current default]
Right-clicking on the rulers allows you to set the unit used for rulers and as default for any number fields and indicator fields in Inkscape ('display unit', can also be changed in the document settings).


=== Selecting ===


=== Commands Palette ===
* Functionality to '''save and restore the current selection''' (i.e. which items are currently selected) and to delete the saved status has been added. It is accessible from the <code>Commands bar</code> (<kbd>?</kbd>, search for 'set selection backup') or by setting a keyboard shortcut for it in the preferences. You can use it to quickly save which objects or which nodes in a path you currently have selected, and to later get back to work with that selection.
* An option to '''select invisible (transparent) items''' by clicking on them has been added to the preferences in <code>Edit ➞ Preferences ➞ Behavior ➞ Selecting</code>.


It is no longer necessary to scroll horizontally in the Commands palette (shortcut: <kbd>?</kbd>), as entries are now nicely arranged and formatted and make use of linebreaks. Now all the info for an entry is directly visible ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4988 MR #4988])
=== Snap toolbar ===


[Needs new screenshot with more up-to-date ruler or entirely without]
An option was added in <code>Edit ➞ Preferences ➞ Interface ➞ Toolbars</code> to '''show snapping options permanently''' in a dedicated toolbar, similar to Inkscape version 1.1 and earlier.


== Canvas ==
== Canvas ==


Pressing '''<code><kbd>F</kbd></code>''' temporarily hides on-canvas overlays (transformation handles, grids, guides...). This allows quick preview of final artwork without any distractions.
=== Views and Display Modes ===
 
https://gitlab.com/inkscape/inkscape/-/merge_requests/4395
 
Added display overlay controls in top right corners. You need to have scrollbars enabled to see it (<kbd>CTRL+B</kbd>).


* '''Quick Preview''': Pressing '''<code><kbd>F</kbd></code>''' temporarily hides on-canvas overlays (transformation handles, grids, guides...). This allows quick preview of final artwork without any distractions. ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4395 MR #4395])
* '''Display mode and overlay controls''' are now accessible quickly from the top right corner of the canvas. Scrollbars must be enabled to see it (<kbd>CTRL+B</kbd>).
* '''Clip object rendering to page''': For a more permanent preview, you can choose whether to not display any objects outside the page area in the <code>Document Properties dialog</code>. A keyboard shortcut to toggle this feature can be set in the <code>Keyboard Shortcuts</code> list in the preferences.
[[File:Ezgif.com-resizeasd.gif|400x400px]]
[[File:Ezgif.com-resizeasd.gif|400x400px]]




=== OpenGL (GPU) accelerated canvas ===
=== Experimental OpenGL (GPU) Accelerated Canvas Rendering ===
An OpenGL-accelerated display mode was added to the canvas to speed up panning, zooming and rotating.


https://gitlab.com/inkscape/inkscape/-/merge_requests/4133
An '''OpenGL'''-accelerated display mode was added to the canvas to speed up panning, zooming and rotating ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4133 MR #4133]).


This is NOT a fully GPU-based renderer; content is still rendered on the CPU in exactly the same way as before, so large performance improvements are not to be expected. It does however result in a smoother display and lower CPU usage, especially on HiDPI screens.
This is '''NOT''' a fully GPU-based renderer; content is still rendered on the CPU in exactly the same way as before, so large performance improvements are not to be expected. It does, however, result in a smoother display and lower CPU usage, especially on HiDPI screens.


OpenGL mode is highly experimental and is turned off by default. It can be turned on at
OpenGL mode is highly experimental and is turned off by default. It can be turned on at
Line 156: Line 167:
Note however the following caveats:
Note however the following caveats:


*Due to packaging problems, when using the Linux AppImage, OpenGL support either does not work (on X11) or crashes (on Wayland).
* Due to packaging problems, when using the Linux AppImage, OpenGL support either does not work (on X11) or crashes (on Wayland).
* Due to GTK3 bugs, OpenGL mode crashes on Windows, blacks out the screen on MacOS, is slower than software rendering on Linux X11, and is only really usable on Wayland.
* Due to GTK3 bugs, OpenGL mode crashes on Windows, blacks out the screen on MacOS, is slower than software rendering on Linux X11, and is only really usable on Wayland.


For these reasons, it is not expected to be useful until we migrate to GTK4, where we hope that at least some of these bugs have been fixed.
For these reasons, it is not expected to be useful until we migrate to GTK4, where we hope that at least some of these bugs will have been fixed.




=== Smooth auto-scrolling ===
=== Smooth auto-scrolling ===
Auto-scrolling happens when you drag an object off the edge of the canvas. We improved smoothness of this action.


https://gitlab.com/inkscape/inkscape/-/merge_requests/5027
When dragging an object off the edge of the canvas, the view of the canvas automatically scrolls, so you can still see your object. Auto-scrolling is much smoother now than it was in previous Inkscape versions ([https://gitlab.com/inkscape/inkscape/-/merge_requests/5027 MR #5027])


[[File:Smooth-page-scrolling.gif|1045x1045px]]


== Tools ==
== Tools ==


=== General ===
=== Toolbar ===


You can right click on any tool icon in toolbox to see tool preferences.
'''Right-clicking''' on any tool icon now gives you a '''context menu for opening that tool's preferences''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4982 MR #4982]).


https://gitlab.com/inkscape/inkscape/-/merge_requests/4982
=== 3D Box Tool ===


This tool had to '''sacrifice its shortcut''' <kbd>x</kbd>, which is now used for the Shape Builder Tool. The shortcut <kbd>Shift+F4</kbd> still works for making 3D boxes.


=== Gradient Tool ===
=== Gradient Tool ===


* Allow changing the ''repeat'' setting when multiple gradients are selected.
* When '''multiple gradients''' are selected ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4339 MR #4339]):
* Show 'Multiple gradients' in the stop list when multiple gradients are selected (instead of a random stop).
** the <code>repeat</code> setting can now be changed for all of them '''at once'''.
* Allow editing of the offset of the start/end stops in the tool controls (consistent with the option in the Fill and Stroke dialog).
** the stop list now reads <code>Multiple gradients</code>(instead of a random stop).
* Keep the stop selected after the offset is changed in the toolbar (instead of selecting the first stop of the gradient).
* Offsets of the start/end stops can be adjusted '''in the tool controls bar''' (consistent with the option in the Fill and Stroke dialog).
* The stop '''stays selected''' after its offset is changed in the toolbar (instead of selecting the first stop of the gradient).


https://gitlab.com/inkscape/inkscape/-/merge_requests/4339
[[File:Inkscape xfsvsc2oY9.gif|thumb|editing pattern on canvas]]


=== Node Tool ===
=== Node Tool ===
==== On-Canvas Pattern Editing ====


[[File:Inkscape xfsvsc2oY9.gif|thumb|editing pattern on canvas]]
Pattern editing on canvas is now '''much easier'''! No more searching for the pattern controls - as now, you can '''click on any part of a pattern''' and it will show you controls at that position:


* the top left square handle controls the pattern position
* the circular handle controls rotation
* and the bottom right square controls the pattern's size


==== On-Canvas Pattern Editing ====
Hold down <kbd>Ctrl</kbd> to constrain proportions.


Pattern editing on canvas is now easier; you can click on any part of a pattern and it will show you controls at that position. We also added an outline that shows you the edges of the pattern. The first square controls position, the circle controls rotation, and the second square controls size. Hold Shift to constrain proportions.  
An additional outline shows you the edges of the pattern.
We also fixed '''performance''' problems with patterns, so now you can have smaller patterns in project and zoom in on them without worrying about Inkscape eating up all your RAM. This should also fix or at least improve issues with patterns not rendering / only partially rendering in exported files or when zoomed out very far.


We also fixed performance problems with patterns, so now you can have smaller patterns in project and zoom in on them without worrying about Inkscape eating up all your RAM.


[[File:Inkscape_YbiQFDqHoZ.gif|right]]


==== Draw around Selection ====
==== Draw around Selection ====


We added a new (lasso) selection mode for nodes. Hold <kbd>Alt</kbd> and draw with the Node tool around the nodes that you want to select. This saves a lot of time that was needed before, where you needed to add new nodes to the selection by dragging small rectangles while holding <kbd>Shift</kbd>, whenever nodes were not located together in a convenient rectangular area ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4747 MR #4747]).
We added a '''new selection mode for nodes'''. Hold down <kbd>Alt</kbd> and draw with the <code>Node tool</code> around the nodes that you want to select. This saves a lot of time compared to previous versions, where you needed to add new nodes to the selection by dragging small rectangles while holding <kbd>Shift</kbd>, whenever nodes were not located together in a convenient rectangular area ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4747 MR #4747]).  




==== Better shape preservation when deleting nodes ====
==== Better shape preservation when deleting nodes ====
New, improved curve fitting algorithm from FontForge used when deleting nodes on a "smooth" path (rather than corners)
 
When deleting nodes, a '''new, improved curve fitting algorithm''', adopted from FontForge, is now used on a "smooth" path (rather than corners) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/5082 MR #5082]).


[[File:Spline-fit-1.gif]]
[[File:Spline-fit-1.gif]]


Attempt to apply "preserve shape" only if selected nodes define relatively smooth path. Trying to preserve shape when deleting corners is rarely what's desirable:
It will attempt to preserve the shape '''only when selected nodes define a relatively smooth path'''. Trying to preserve the shape when deleting corner nodes is rarely what's desirable, so the algorithm '''will not do that''':


[[File:Spline-fit-2.gif]]
[[File:Spline-fit-2.gif]]


With "preserve shape" option ON, algorithm may still decide to insert line segments if it detects what it thinks are corners. Holding <kbd>Ctrl</kbd> key while deleting inverts this decision:
With the "preserve shape" option ON, the algorithm may still decide to insert line segments if it detects what it thinks are corners. Holding <kbd>Ctrl</kbd> key while deleting inverts this decision:


[[File:Curve-fit-inverted.gif]]
[[File:Curve-fit-inverted.gif]]


https://gitlab.com/inkscape/inkscape/-/merge_requests/5082


==== Edit Blur on Canvas ====
If your object has a <code>Blur</code> filter (from the Fill and Stroke dialog) applied to it, or any composed filter that uses a <code>Blur</code> filter as one of its components, you will see '''a set of new on-canvas blur controls''' when the object is selected with the node tool, or with the selection tool when the filter is first applied ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4867 MR #4867])
The '''ratio''' of the blur controls is '''not locked by default''', so only dragging on one of them will change horizontal or vertical blur '''separately'''.


==== Edit Blur on Canvas ====
If you hold '''<kbd>CTRL</kbd>''' and click-drag on one of the handles, the blur will be reset back to be the '''same amount for both directions''', and both will change by the same amount when you move the handle.


New on-canvas blur controls will appear for blur effects from the Fill and Stroke panel, or filters with blur effects from Add Filter. Controls are not linked by default, so you can control horizontal and vertical blurring separately.  If you hold '''<kbd>CTRL</kbd>''', you can control both Axes linked. You can control arbitrary angle of blurring if you rotate your object after you set blur.
You can select an '''arbitrary blur angle''' by rotating your object after setting its blur, or when applying it to a rotated shape, group, clone, symbol or other object that features a transform matrix. If this is not desired, ungroup and regroup or convert to path to apply the matrix before attempting to create an uneven blur.


[[File:Inkscape fCXLNVIQp7.gif]]
[[File:Inkscape fCXLNVIQp7.gif]]


https://gitlab.com/inkscape/inkscape/-/merge_requests/4867


==== On-canvas Corners Editing ====
==== On-canvas Corners Editing ====


In the tool controls bar, a new button allows you to add the Corners LPE to the currently selected path. Click the button again to remove the effect.
In the <code>Tool Controls Bar</code>, a new button allows you to '''add the Corners Live Path Effect''' to the currently selected path, to round corners by a specified amount, or to add chamfers/fillets. Click the button again to remove the effect.
 
[[File:Inkscape E33kBkZM1j.gif]]
[[File:Inkscape E33kBkZM1j.gif]]


=== Page Tool ===
=== Page Tool ===
[[File:Ezgif.com-gif-maker (12).gif|right|600x600px]]The Page tool now has controls for margins and bleed:


* An attribute on the page element to record the margin
[[File:Ezgif.com-gif-maker (12).gif|right|600x600px]]
* A new HTML/CSS style box model with tests
* New UI to set margins in the toolbar
* New on-canvas controls for moving margins (with <kbd>ctrl</kbd>/<kbd>shift</kbd>)
* New display of margins in the same canvas group as the page border
* Snapping for page margins


https://gitlab.com/inkscape/inkscape/-/merge_requests/4523
The <code>Page tool</code> now offers controls for page margins and bleeds for printing ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4523 MR #4532]):


* In its <code>Tool Controls Bar</code>, there is a '''field where you can enter the margin''' numerically, including the unit (if no unit is given, the Display unit from the Document Properties dialog is used), like this '<code>3mm</code>'.
* You can set the margin widths '''for all sides separately''':
** by '''filling out the form''' that opens when you click on the double-arrow icon in front of the number field
** '''on the canvas''' by using the blue circle-shaped handles – to adjust all page margins of equal value simultaneously, use <kbd>ctrl</kbd>.
** or by '''entering them as follows''' into the number field: <code>top right bottom left</code> (e.g. '<code>3mm 5mm 7mm 10mm</code>', or <code>top/bottom left/right</code> (e.g. '<code>10mm 20mm</code>'), or <code>top left/right bottom</code> (e.g. '<code>10mm 20mm 30mm</code>').
* You can set the '''bleed''' width by first clicking on the double-arrow, and then expanding the dialog at the bottom, then you can use the same syntax as for the other number field above.
* Page margins and bleeds are available as '''snapping targets''', and can be de-/activated with the 'page borders' snap control.
* Bleeds will be used for '''PDF export'''.


=== Selector Tool ===
=== Selector Tool ===


New commands:
The Selector Tool features '''three new keyboard shortcuts''':


*'''Reapply transform''': ''<kbd>Ctrl+Alt+T</kbd>'' - This allows a user to perform a transformation multiple times and works from the canvas edits or from transform dialog or the select toolbar. <span style="color: red;">Shortcut needs to change, it opens a terminal on Linux.</span>
* '''Reapply transform''': ''<kbd>Ctrl+Alt+T</kbd>'' - This allows you to perform the last applied transformation multiple times. <br/>Usage example: Rotate an object by 20°, then double the rotation by using the shortcut.<br/>''Note: on Linux, the shortcut will usually open a terminal, so you will probably want to assign a different shortcut. This shortcut was previously used for alignment, see [[#Keyboard_shortcuts]] for more info.''
*'''Duplicate and transform''': ''<kbd>Ctrl+Alt+D</kbd>'' -This performs a duplication and then reapplies the previous transform to the duplicate. <span style="color: red;">Shortcut needs to change, it minimizes the window on Linux.</span>
* '''Duplicate and transform''': ''<kbd>Ctrl+Alt+D</kbd>'' - This performs a duplication and then reapplies the previous transform to the duplicate, so it is moved / rotated / etc. by the same amount. You could, for example, use it to quickly create a sequence of evenly spaced objects.<br/>''Note: On Linux, this shortcut usually minimizes the window, so you will want to assign a different shortcut.'' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4506 MR #4506])
https://gitlab.com/inkscape/inkscape/-/merge_requests/4506
* '''Clone while dragging: '''drag object + <kbd>C</kbd> - Drag and object and press <kbd>C</kbd> to clone it in the current position (this is similar to 'stamping' by pressing <kbd>Space</kbd> to create a copy when dragging an object) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4752 MR #4752]).
*'''Clone while dragging:''' drag object + <kbd>C</kbd> - Drag and object and press <kbd>C</kbd> to clone it in the current position. https://gitlab.com/inkscape/inkscape/-/merge_requests/4752


=== Shape Builder Tool ===
=== Shape Builder Tool ===


New tool for fast shape building and Boolean operations. Shortcut: '''<code><kbd>X</kbd></code>'''.
This is a new tool for '''building shapes from intersecting objects''', to make Boolean operations more accessible ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4709 MR #4709]).  
 
It can be activated by clicking on the '''third button from the top in the Tool bar''', after the Selector and Node tools.
 
Its '''keyboard shortcut''' is '''<code><kbd>X</kbd></code>''' (previously the shortcut for the 3D Box tool, see [[3D_Box_Tool]]).
 
==== Usage ====


Use: Select multiple overlapping shapes and select the Shape Builder tool. The selection will be fragmented on overlapping areas, while everything else will be hidden until you leave the shape builder. Now you '''Click and drag''' to combine segments together or hold '''<kbd>Shift</kbd> + Click and drag''' to subtract, and '''Single click''' on segments to split. Adding is represented by a blue color, removing by pink.
* '''Select''' multiple overlapping shapes, or one self-intersecting path, '''with the Selector or Node tool'''.
* '''Switch''' to '''Shape Builder tool'''.  
* The view of the canvas will now change, and '''show all paths/outlines''' of all selected objects. Everything else will be hidden until you leave the Shape Builder tool. You can see whether the current mode/key combination will add or subtract by color: Adding is represented by a blue color, removing by pink.
* In default (Addition) mode, <kbd>click</kbd> on any segment to '''add''' it to the result '''as separate object'''.
* <kbd>Shift + click</kbd> on any segment to '''remove''' it from the result.
* <kbd>Click and drag</kbd> over segment boundaries to '''union all touched segments'''.
* <kbd>Shift + click and drag</kbd> over segment boundaries to '''remove all touched segments'''.
* Use <kbd>Escape</kbd> or the corresponding tool controls bar button to '''cancel'''
* or use <kbd>Enter</kbd>, the corresponding button, or just switch to a different tool to '''accept the result'''.
 
==== Result ====
 
* Any segments that have '''not''' been touched with the tool '''will be gone'''.
* All other segments will now be available as '''unioned or separate objects''', depending on your actions.
* These '''objects will keep their style''', if not unioned with an object that has a different style. In that case, the first object will determine the style of the result.


[[File:Shape_builder.gif]]
[[File:Shape_builder.gif]]


https://gitlab.com/inkscape/inkscape/-/merge_requests/4709
== Path Operations ==


=== Object to Path ===


== Path Operations ==
<code>Path ➞ Object to Path</code> now '''behaves differently for texts'''. In recent Inkscape versions, a text was converted into a group of letters, where each letter was a single path. Now, '''the whole text is converted to a single path''' (if you need individual letters, with <code>Path ➞ Split Path</code>, many texts can ''almost'' be split into letters again - or you can use the extension <code>Text ➞ Split Text</code> to split the text into single letters first).


=== Fracture Paths ===
=== Fracture Paths ===
[[File:Inkscape g4YHbWWPxg.gif|thumb|557x557px|Left: original objects, middle: result of 'Fracture', right: result of 'Flatten']]


<code>Path ➞ Fracture</code> - every overlapping region of a set of paths will be split into a separate object. The resulting objects do not overlap anymore.  
<code>Path ➞ Fracture</code> - every overlapping region of a set of paths will be split into a separate object. The resulting objects do not overlap anymore.  


Corresponds to the sequence:  
Corresponds to the following sequence of Boolean operations that were previously necessary to achieve the same result:  


''Duplicate ➞ Union ➞ push down in stacking order ➞ select other set of duplicates ➞ Combine ➞ select both resulting objects ➞ Division'', but keeps the color/style of the visible areas.
''Duplicate ➞ Union ➞ push down in stacking order ➞ select other set of duplicates ➞ Combine ➞ select both resulting objects ➞ Division'', but keeps the color/style of the visible areas.
Line 280: Line 327:


This could previously only be done by repeatedly subtracting duplicated and unioned stacks of objects.
This could previously only be done by repeatedly subtracting duplicated and unioned stacks of objects.
== Clones ==
A new preference option is now available in <code>Edit  ➞  Preferences ➞ Behavior ➞ Clone</code> that allows you to decide '''whether you really want to convert a clone''' in the selection '''to a path''' when you use the command <code>Path  ➞  Object to Path</code>. Otherwise, the clones will only be unlinked, but keep their path effects and editable shapes.


== Masking / Clipping==
== Masking / Clipping==


*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 children</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])
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 children</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.  


If you're one of those who have used ungrouping as a fast and convenient way to remove all clips and masks in imported PDF files, to go back to previous default behavior, deactivate this new option ([https://gitlab.com/inkscape/inkscape/-/merge_requests/3564 MR #3564]).


== Dialogs ==
== Dialogs ==
=== Document Resources Dialog ===
=== Document Resources Dialog ===


[[File:Document resources dialog.gif|thumb|The Document Resources dialog]]
[[File:Document properties 2.gif|thumb|700x700px]]


Added a new dialog that shows you an overview of what assets are currently inside your document. You can edit names and export some of the resources from this dialog.
This new dialog shows an overview of the assets currently used inside your document. Names can be edited here, and some of the resources can even be exported from this dialog ([https://gitlab.com/inkscape/inkscape/-/merge_requests/5003 MR #5003]).


It presents the following document assets:
It presents the following document assets:
Line 307: Line 361:
* external references
* external references


https://gitlab.com/inkscape/inkscape/-/merge_requests/5003


=== Export Dialog ===
=== Export Dialog ===


We added new options for how to export multipage in PDF and SVG formats allowing the selection of a single page out of many to export in the single-export tab and improving how batch exporting is done by ordering pages correctly.
* When the '''PDF file format''' is selected, you can now choose which pages to export into a single multipage PDF file, instead of only being able to export a single page to PDF from this dialog.
 
* Choosing the correct page to export has become much easier, as '''pages are now ordered correctly by their page number''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/5002 MR #5002]).
https://gitlab.com/inkscape/inkscape/-/merge_requests/5002




Line 320: Line 372:
==== Markers ====
==== Markers ====


Inkscape's markers got some more human-friendly (and better translatable) names.
Inkscape's markers now use more human-friendly (and better translatable) names.


==== Pattern Editor ====
==== Pattern Editor ====
Line 326: Line 378:
[[File:Pattern editor1.gif|alt=Pattern editor|right|Pattern editor]]
[[File:Pattern editor1.gif|alt=Pattern editor|right|Pattern editor]]


Added in to UI. You can preview patterns, change Name, Size, Rotation, Offset, Gaps, and Colors for some specific patterns. We also added collections of patterns in <code>~paint/</code> so it's easier to be organized. Since this allows having many more patterns preinstalled, we also added a search function and a few new default patterns.
* When choosing to use a pattern for your object, you are now presented with a new subdialog that allows you to edit may pattern parameters numerically.  
 
* You can preview patterns, change their name, size, rotation angle, offset, the size of gaps between the pattern tiles, and even pattern colors for many of the stock patterns.  
https://gitlab.com/inkscape/inkscape/-/merge_requests/4938
* Patterns are now grouped by category, which are represented by separate files in the <code>paint/</code> directory in the Inkscape installation (and in your personal preferences directory, too), so it's easier to be organized.  
* Since this categorization allows having many more patterns preinstalled without losing sight of what you're looking for, we also added a search function and a few new stock patterns ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4938 MR #4938]).


[[File:Inkscape 9yhQG7s68v.gif]]
[[File:Inkscape 9yhQG7s68v.gif]]


=== Filter Editor ===
=== Filter Editor ===
[[File:Filter-resize.gif|alt=Filter-resize|Filter-resize|left]]
[[File:Filter-resize.gif|alt=Filter-resize|Filter-resize|left]]


Redesign of this dialog:
The Filter Editor has been '''overhauled and is now easier to use'''! ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4720 MR #4720])
 
*Filter selection moved to a popover
* Effects are listed in a popup menu and can be selected by searching (by name)
* Adjusted connector sizes to make them more compact
* Fixed an issue where all parameters would initially be visible in a docked filter dialog
* Fixed min size of parameters panel to make it fit in a narrow docked dialog
* Reactive layout to accommodate wide dialog
* Added primitive filter attributes to <code>fe-image</code> and <code>fe-tile</code> (#1417)
* Replaced GTK color picker with Inkscape color picker


*Sources can now be hidden (for most use cases only the source graphic is useful; other inputs are broken or need UX work).<br />https://gitlab.com/inkscape/inkscape/-/merge_requests/4720[[File:Inkscape Y7U4yzIFTq.gif|thumb]]
* Filter selection has been moved to a popover-type dialog.
* Effects are listed in a popup menu and can be selected by searching (by name).
* Connector sizes were adjusted to make them more compact.
* The minimum size of the parameters panel was adjusted to make it fit in a narrow docked dialog.
* The layout adjusts to accommodate a very wide dialog.
* Added primitive filter attributes to <code>fe-image</code> and <code>fe-tile</code>.
* The GTK color picker has been replaced with Inkscape's own color picker.
* Sources can now be hidden (for most use cases only the source graphic is useful; other inputs are broken or need UX work).


[[File:Inkscape Y7U4yzIFTq.gif|thumb]]


=== Layers and Objects Dialog ===
=== Layers and Objects Dialog ===


UX improvements:
==== Usability Improvements ====


* You can click and drag to change visibility of multiple objects
* <kbd>Click and drag</kbd> eye or lock icon vertically to '''(un)lock/(un)hide all touched objects'''
* Selecting on group does not auto expand
* Selecting a group does '''not auto expand anymore'''.
* Selecting multiple objects and and changing visibility/locking applies to all selected
* Selecting multiple objects and and changing visibility/lock status applies '''to all selected'''.
* We added a search feature; it's a limited implementation - it does not auto-apply search and you need to search for more than 3 characters.
* The '''Search field''' is back! While it's a limited implementation - it does not auto-apply search and you need to search for more than 3 characters - it is still a very useful addition.
* We added a hover indicator for rows and layer colors
* We added a '''hover indicator''' for rows and layer colors.
* Added controls for opacity and blending mode
* '''Opacity and blend mode''' can be adjusted in the Layers dialog again! Clicking on the square-shaped icon (right before the eye icon) will open a popover dialog where you can adjust opacity with a slider and choose from the 16 different blend modes.
* Improved '''performance''' for editing of many objects at once.


We added shortcuts for layers navigation and actions:


* Arrows to navigate
==== Keyboard Shortcuts ====
* <kbd>Space bar</kbd> confirms (select, apply, open)
* <kbd>Shift+→</kbd> and <kbd>Shift+←</kbd> to open/close group
* <kbd>Shift+↑</kbd> and <kbd>Shift+↓</kbd> to move in Z order <br />Improved performance for editing of many obejcts at once
https://gitlab.com/inkscape/inkscape/-/merge_requests/5183[[File:VirtualBoxVM I675gipqe1.gif|thumb|1017x1017px|Place holder  demo of new LPE dialog]]


* Use the '''arrow''' keys to '''navigate rows and columns'''
* <kbd>Space bar</kbd> confirms ('''select, apply, open''')
* <kbd>Shift+→</kbd> and <kbd>Shift+←</kbd> to '''expand/contract''' group or layer
* <kbd>Shift+↑</kbd> and <kbd>Shift+↓</kbd> to '''move''' in stacking order


=== Live Path Effects (LPE) ===
[(https://gitlab.com/inkscape/inkscape/-/merge_requests/5183 MR #5183)]


==== LPE Dialog ====
=== Live Path Effects Dialog ===
The compact new design merges organization and controls into one unit. You can reorder LPE by dragging and dropping the whole effect. It adds a fast search box, and a fast dropdown for adding effects.


Each LPE has 5 controls:
[[File:Ezgif.com-optimize (1)asda.gif|right]]


* Show/hide controls
The compact '''new design''' merges the two steps of choosing an LPE and adjusting it into one single dialog ([
* Visibility of effect
https://gitlab.com/inkscape/inkscape/-/merge_requests/4677 MR #4677]).
* Delete effect
* Context menu
** Re-order
** Duplicate
** Set as default
** Flatten


[[File:LPE organization.png|right|266x266px]]
Choosing an LPE now works by either:
* starting to type its name into the search box and selecting a suggestion
* clicking on the arrow behind the search box to reveal a dropdown catalog of all available path effects


[<span style="color:red;">TODO: gif file needs to be edited!</span>]
Since this design asked for a more compact way to show all LPEs, we decided on sorting the effects into these categories for the dropdown:


==== Reorganization of LPEs ====
* Favorites (hidden if you don't have any yet)
* Edit/Tools
* Distort
* Generate
* Convert
* Experimental (hidden by default)


Since we needed a more compact way to show all LPEs, we decided on a list that is organized into 6 categories:
'''Each LPE features the following controls:'''
Tools, Distort, Generate, Convert, Experimental, and Favorite


* on the left side of the icon: expand/contract LPE settings
* on the other side, after the label:
** Show/hide effect
** Delete effect
** Context menu
*** Duplicate
*** Move up/down
*** Flatten: This will apply the effect stack, starting from the first up to the selected LPE, to the object's geometry (i.e. it will convert that part of the LPE stack to a path). Effects that come after the selected LPE will stay editable as LPEs.
*** Set custom defaults: to set the current parameters as defaults for this path effect
*** Set Favorite
** Drag and drop handles
* below this line, when expanded, the actual LPE parameters (different for each LPE)


==== Changes ====
'''Other changes:'''


* Setting presets for LPE was moved into contextual menu
* The LPE gallery overview has moved into an optional button, deactivated by default. It can be enabled in the preferences at <code>Preferences ➞ Behavior ➞ LPE</code>). This adds a button on the right side of the search field. Clicking on it opens the old LPE chooser dialog, where you can read everything about the LPEs in a quick overview.
* Setting Favorite LPE was moved into contextual menu
* To see experimental LPEs you need to enable the option in the preferences at <code>Edit ➞ Preferences ➞ Behavior ➞ LPE</code>.
* Added new feature: flatten - This will apply effect to geometry. It will apply all effects in the stack.
* An indicator now shows the id or label (if set) of the selected object.
* We removed LPE gallery (you can still enable it in preferences if you wish: <code>Preferences ➞ Behavior ➞ LPE</code>)
* When a text object is selected, the dialog offers to convert the text to a path, or to a clone – since text does not support LPEs, a conversion is necessary.
* To see experimental LPEs you need to enable it in Preferences: <code>Preferences ➞ Behavior ➞ LPE</code>
* Added an indicator showing which object is selected
* Added conversion commands when you select text objects - since text does not support LPEs yet we added a workaround that converts text to paths or clones the text.
* If you select an object that is associated with an LPE (Clone, Boolean operations, Bend, Fill between many, etc…) you will see a button in the dialog that will take you to the linked geometry/controls.
* If you select an object that is associated with an LPE (Clone, Boolean operations, Bend, Fill between many, etc…) you will see a button in the dialog that will take you to the linked geometry/controls.
* Labels inside effects are aligned nicely
* Labels inside effects are aligned nicely.
 
[[File:TletOwk4Zs.gif|right]]
 
 
=== Object Attributes Dialog ===


https://gitlab.com/inkscape/inkscape/-/merge_requests/4677
The dialog has been improved and now allows you to '''set contextual object-dependent attributes''' for the selected object. It currently supports '''image objects, shapes (rectangle, circle, polygon) and hyperlinks'''. For images, it is accessible as 'Image properties' from the '''context menu''', for all objects, it is available from "Object attributes" from the dialog popup menu, and can also be opened by setting a keyboard shortcut for it in the preferences ([
https://gitlab.com/inkscape/inkscape/-/merge_requests/5064 MR #5064]).
 
In addition to the previously available set of options, the dialog now allows you to adjust/change the following:
 
* Images: replace existing image, embed a linked image in the document, or extract an embedded image, change aspect ratio and rendering properties.
* Shapes: edit procedural parameters of objects (width, height, radius), round some parameters to whole numbers, for rectangles: add Corners LPE to be able to adjust corner radius independently.
* Hyperlinks: set url, and other metadata
 
It is still a work in progress, so consider this a preview for a new feature. You can also contribute new ideas to the dialog's development by helping our UX team and our development team.




=== Swatches Dialog ===
=== Swatches Dialog ===


In the Swatches dialog, the option to display colors together with their names (from the .gpl palette file), in a vertical list, is back again.  
In the Swatches dialog, the option to '''display colors together with their names''' (from the .gpl palette file), in a vertical list, is back again.  


Enable it by clicking on the Hamburger menu, choosing 'Configure' and selecting the option 'Show color labels' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4957 MR #4957]).[[File:Ezgif.com-optimizeasda.gif|right]]
Enable it by clicking on the Hamburger menu, choosing 'Configure' and selecting the option 'Show color labels' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4957 MR #4957]).[[File:Ezgif.com-optimizeasda.gif|right]]
Line 419: Line 494:
=== Symbols Dialog ===
=== Symbols Dialog ===


Redesign and functionality improvements:
The Symbols dialog has been getting some '''design love and many improvements''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4975 MR #4975],
[https://gitlab.com/inkscape/inkscape/-/merge_requests/4994 MR #4994],
[https://gitlab.com/inkscape/inkscape/-/merge_requests/4666 MR #4666],
[https://gitlab.com/inkscape/inkscape/-/merge_requests/4883 MR #4883],
[https://gitlab.com/inkscape/inkscape/-/merge_requests/4793 MR #4793],
[https://gitlab.com/inkscape/inkscape/-/merge_requests/4784 MR #4784]):


* the settings have moved to a popover dialog
* its '''settings''' have moved to a popover dialog
* the currently selected symbol set and dialog settings are now saved, so when you closes and reopen the dialog, you can continue right where you left it
* the currently selected symbol set and dialog settings are now '''saved''', so when you close and reopen the dialog, you can continue right where you left it
* the maximum symbol preview size and zoom have been increased
* the maximum symbol preview size and zoom have been '''increased'''
* an option to show symbols' names was added
* an option to '''show symbols' names''' was added
* symbols are now rendered at screen resolution and look sharp (high-dpi aware)
* symbols are now rendered at screen resolution and '''look sharp''' (high-dpi aware)
* to manage the growing number of symbol sets, their list is now searchable
* to manage the growing number of symbol sets, their '''list is now searchable'''
* searching for symbols directly filters the symbol set (no need to press Enter anymore).
* searching for symbols '''directly''' filters the symbol set (no need to press Enter anymore).
* performance improvement through rendering symbols on-demand, reducing memory usage and time needed to switch sets
* '''performance improvement''' through rendering symbols on-demand, reducing memory usage and time needed to switch sets
* statistics indicator: lists the total number of symbols in the current set and how many of them are visible after filtering
* '''statistics indicator''': lists the total number of symbols in the current set and how many of them are visible after filtering
* more precise positioning of symbols when adding them to the drawing by drag-and-drop
* more '''precise positioning''' of symbols when adding them to the drawing by drag-and-drop
* the dialog is now symbolized by a different icon - the "heart" symbol
* the dialog is now symbolized by a '''different icon''' - the "heart" symbol
* the modern Visio formats <code>vssx</code> and <code>vsdx</code> can now be read by Inkscape. Symbols are loaded once, not in each window.
* the modern '''Visio''' formats <code>vssx</code> and <code>vsdx</code> can now be read by Inkscape.
* 596 new symbols in 16 categories from the SJJB map icons set
* '''596 new symbols in 16 categories''' from the SJJB map icons set


https://gitlab.com/inkscape/inkscape/-/merge_requests/4975
https://gitlab.com/inkscape/inkscape/-/merge_requests/4994
https://gitlab.com/inkscape/inkscape/-/merge_requests/4666
https://gitlab.com/inkscape/inkscape/-/merge_requests/4883
https://gitlab.com/inkscape/inkscape/-/merge_requests/4793
https://gitlab.com/inkscape/inkscape/-/merge_requests/4784


Bugfixes
=== Text and Font Dialog ===


* Fixed symbol selection color for dark themes.
==== Font Collections ====


=== Text and Font Dialog ===
[[File:Font collections opt.gif|thumb|Font collections|745x745px]]


==== Font Collections ====
Fonts can now be '''organized by sorting them into Collections''', for example to sort them by their properties (like handwriting, serif, sans serif, …) or by the type of document you want to use them for (e.g. poster, or for a specific customer), or maybe even just by how much you like them (e.g. to filter out fonts that you really dislike, or to gather those you like a lot) ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4694 MR #4694]).


[[File:Font collections opt.gif|thumb|Font collections]]
To '''create''' and fill a new Font Collection:


[todo: document features and how to use them ]
* Click on the <code>Font Collections</code> icon in the <code>Text tool</code>'s tool controls bar or in the <code>Text and Font dialog</code>.
https://gitlab.com/inkscape/inkscape/-/merge_requests/4694
* In the popover dialog that will then open, choose to <code>Open Collections Editor</code>.
* In the <code>Font Collections</code> dialog, you can now create a new Collection by clicking on the <code>+</code> icon.
* Type the name of the new collection into the text field.
* Now start populating your new Font Collection by dragging a font (or many!) from the left side of the dialog into the collection.
* You can change the name of a collection by either double-clicking on it, or by using the 'Edit' icon.
* Use the 'trash' icon to remove a selected font or a complete font selection (in this case, Inkscape will ask for confirmation) from the list.


When you have created a few collections, you can use the '''list in the popover dialog''' in the Text tool's tool controls or in the 'Text and Font' dialog for '''filtering''' your fonts.


=== Trace Bitmap Dialog ===
=== Trace Bitmap Dialog ===


Got significant performance boost and a progress bar. Now it runs in the background, allowing you to cancel it if it's taking too long.
* Tracing bitmap images is '''significantly faster''' now.  
https://gitlab.com/inkscape/inkscape/-/merge_requests/4702
* In those cases where it still takes a bit because of the size or complexity of the trace, it now displays a '''progress bar'''
 
* If it is then still taking unexpectedly long, '''canceling''' the tracing process actually works now ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4702 MR #4702]).


=== Welcome Dialog ===
=== Welcome Dialog ===
Files are sorted by their last modified date. We Added recovery for files in this list after crash. You can see then by text Emergency save next to file.


https://gitlab.com/inkscape/inkscape/-/merge_requests/5058
* Files are now '''sorted by modification time''', with the most recently modified at the top.
* When Inkscape crashes, it tries to save the file at its current state. These '''emergency saves are now listed''' in the Welcome dialog, so in the optimal case, you can quickly continue working after a crash without a long hunt for your files ([https://gitlab.com/inkscape/inkscape/-/merge_requests/5058 MR #5058])


=== XML Editor ===


=== XML Editor ===
[[File:Syntax highlighting.png|thumb|Syntax highlighting in XML Editor|389x389px]]


[[File:Syntax highlighting.png|thumb|Syntax highlighting in XML Editor]]
The XML editor received some small cosmetic changes:  
We did small cosmetic changes to UI of this dialog:  


* smaller icons (16×16px),
* '''smaller icons''' (16×16px)
* removed text tool tips.
* added '''auto-responsive layout''' (default)
* Added responsive layout and moved layout controls to the top in a dropdown (auto layout is the default option).
* '''moved layout controls''' to the top in a dropdown  


==== Syntax Highlighting and Monospaced Font ====


==== Syntax Highlighting ====
For improving readability in the XML Editor dialog, '''syntax highlighting''' and '''automatical line-breaks''' were added.


For improving readability we added syntax highlighting and auto line-breaking. This works for CSS style tag, inline styling, <code>d <var>«path data»</var></code>. You can change highlighting themes in <code>Preferences ➞ Interface ➞ Theming</code>.
* The '''highlighting theme''' can be selected in <code>Preferences ➞ Interface ➞ Theming</code>.
* You can choose to use a '''monospace font''' for the dialog's tree view, as well as select a font and its size, in that same Preferences section.


[[File:Xml-dialog-preferences.png|410x410px]]


==== Rounding path data ====
==== Rounding path data ====
We added a feature to round path data. You can also set how many decimal points you want to round to. This gives you granular control over optimizing size of SVGs.  
 
When a path's <code>d</code> attribute is selected in the XML editor, the editing window now offers a set of '''two new buttons''' below the path data ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4885 MR #4885]):
 
* a button labelled N.N(NNN) to select '''how many decimal points''' to keep after rounding.
* a button to '''apply the rounding''' to the currently selected path.
 
This gives you granular control over optimizing size of SVGs.  


[[File:Inkscape GAlKvNTcCm.gif]]
[[File:Inkscape GAlKvNTcCm.gif]]


https://gitlab.com/inkscape/inkscape/-/merge_requests/4885
== Live path effects ==
 
=== General ===


* The '''performance''' of most of the effects has been improved.
* '''Text objects''' can now be used as linked geometry (for Boolean operation, Bend, Pattern along path LPEs)
* [[Release notes/1.3#Live Path Effects Dialog|Dialog redesign]]


== Filters ==
[[File:Roughen-lpe.png|thumb|243x243px]]


[[Release notes/1.3#Filter Editor|Filter editor is redesigned]]
=== Roughen LPE ===
== Live path effects ==
LPE Dialog was completely redesign see  [[New redesigned LPE dialog]]  for more details. Performance of most of the effects was improved.
=== Roughen ===
UI clean-up and reordering of the controls.


https://gitlab.com/inkscape/inkscape/-/merge_requests/4872
The user interface has been cleaned up, and the '''order of the parameters''' has been changed ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4872 MR #4872]).


=== Taper Stroke ===
=== Taper Stroke LPE ===
Added support for sub-paths.


https://gitlab.com/inkscape/inkscape/-/merge_requests/4906
The Taper Stroke LPE now supports paths with multiple '''sub-paths''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4906 MR #4906]).


=== Power Stroke ===
=== Power Stroke LPE ===
Added support for sub-paths.


https://gitlab.com/inkscape/inkscape/-/merge_requests/4880
The Power Stroke LPE now supports paths with multiple '''sub-paths''' ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4880 MR #4880]).


=== Corners LPE ===
[[File:Inkscape IdBRmOuKA5.gif|right|frameless]]


* The handles of the effect have been changed to little triangles, which allows you to position them more precisely.
=== Corners (Fillet/Chamfer) LPE ===
* You can now assign a shortcut to the LPE to be able to quickly use it on any path without opening the Path Effects dialog.


https://gitlab.com/inkscape/inkscape/-/merge_requests/5164
* The '''handles''' of the effect have been changed to '''little triangles''', which allows you to position them more precisely ([https://gitlab.com/inkscape/inkscape/-/merge_requests/5164 MR #5164]).
* You can now assign a '''shortcut''' to the LPE to be able to quickly use it on any path without opening the <code>Path Effects</code> dialog.


== Import / Export ==
== Import / Export ==


=== Refactoring of PDF and AI import ===
=== PDF import ===
The PDF importer was using the svg group as a way of tracking the GfxState matrix, but this actually causes a lot of problems. Using the Sfx CTM matrix state directly provides dependable positions and transformations for creating objects.
 
[[File:Pdf-import-dialog.png|thumb|339x339px]]
 
* The PDF import dialog '''user interface has been rewritten''' (in Glade).
* In this new dialog, in the 'internal import' tab, Inkscape provides an '''overview about what it will do with each font''' it finds in the PDF: convert to paths, keep original font name (even when not installed), use a substitute font, delete the text.
* The '''internal PDF import''' has been rewritten:
** '''Font name detection''' has been much improved.
** '''PDF layers''' are now converted to Inkscape layers on import.
** '''ICC Color Profile''' support retains the information about your CMYK colors in the imported file, for use with Scribus and other software that supports color profiles in SVG
** '''Margins, bleeds and page sizes''' are retained.
** Similar path stroke/fill objects are '''merged'''.


* New import PDF dialog GUI using glade
=== Improved HPGL import ===
* Added PDF layer support
* Merging of similar path stroke/fill objects
* Removal of state groups
* Rendering text methods, to glyphs and to text
* Embedded font handling for rendering methods
* Much better font-name detection
* ICC Color Profile support retains your CMYK colors in the PDF
* Margins, bleeds and page sizes retained.


https://gitlab.com/inkscape/inkscape/-/merge_requests/4757
* HP-GL/2 import has been rewritten to support '''more complex''' HPGL files including fill and line style, non-linear draw commands, scaling and rotating of the document.


=== Rewrite of XAML export ===
=== Export ===
XAML export has been completely rewritten and now supports AvaloniaUI, export to DrawingGroup, conserving swatches for easy styling and exporting Layers to individual resources which allows to maintain an icon library in a single SVG file. For more info, check the [https://inkscape.gitlab.io/extensions/documentation/extensions/svg2xaml.html extensions documentation]. ([https://inkscape.gitlab.io/extensions/documentation/extensions/svg2xaml.html MR extensions#498])


=== Improved HPGL import ===
* '''XAML export''' has been '''completely rewritten''' and now supports AvaloniaUI, export to DrawingGroup, conserving swatches for easy styling, and exporting Layers to individual resources which allows to maintain an icon library in a single SVG file.<br/>For more info, check the [https://inkscape.gitlab.io/extensions/documentation/extensions/svg2xaml.html extensions documentation] ([https://inkscape.gitlab.io/extensions/documentation/extensions/svg2xaml.html MR extensions#498]).
HP-GL/2 import has been rewritten to support more complex HPGL files including fill and line style, non-linear draw commands, scaling and rotating of the document.
* '''Text elements''' will automatically be converted to paths when exporting to HPGL ([https://gitlab.com/inkscape/extensions/-/merge_requests/497 MR extensions#497], [https://gitlab.com/inkscape/extensions/-/issues/211 Issue extensions#211]).
* The '''DXF export''' extensions (R12 and R14) now also process non-paths by converting them to path beforehand. This includes text, flowed text and clones ([https://gitlab.com/inkscape/extensions/-/merge_requests/567 MR extensions#567], [https://gitlab.com/inkscape/extensions/-/issues/518 issue  extensions#518]).


== Templates ==
== Templates ==
[[File:Templates-dialog.png|thumb|229x229px]]


All template dialogs (Welcome screen, New from Template, Page tool default sizes) now use the same template sizes ([https://gitlab.com/inkscape/extensions/-/merge_requests/479] MR #479)
* All template dialogs (Welcome screen, New from Template, Page tool default sizes) now offer '''the same template sizes''' ([https://gitlab.com/inkscape/extensions/-/merge_requests/479 MR #479]).
* A set of templates with pre-designed grids to be used with the '''Shape Builder''' has been added ([https://gitlab.com/inkscape/extensions/-/merge_requests/552 MR extensions#552]).


== SVG Standards Compliance ==
Added support for <code>href</code> and <code>xlink:href</code> in SVG header. This makes Inkscape more compatible with SVG 2 ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4596 MR #4596]).


== Customization / Theming ==
== Customization / Theming ==
Added <code>user.css</code> to UI folder to allow tweaking UI without interfering with or fully overriding other CSS files. https://gitlab.com/inkscape/inkscape/-/merge_requests/5004


Fixed hidden icons on menus: https://gitlab.com/inkscape/inkscape/-/merge_requests/4686
=== Custom CSS ===


The file <code>user.css</code> has been added to the <code>/ui</code> folder. This allows you to '''tweak the interface style''' without interfering with or fully overriding other CSS files ([https://gitlab.com/inkscape/inkscape/-/merge_requests/5004 MR #5004]).


== Other ==
=== Multiuser resource sharing ===
Added support for <code>href</code> and <code>xlink:href</code> in SVG header. This makes Inkscape more compatible with SVG 2.


https://gitlab.com/inkscape/inkscape/-/merge_requests/4596
In <code>Edit ➞ Preferences ➞ System</code>, users can set a '''folder for shared default resources'''. It must be structured like a user's Inkscape preferences directory. This makes it possible to share a set of resources, such as extensions, fonts, icon sets, keyboard shortcuts, patterns/hatches, palettes, symbols, templates, themes and user interface definition files, between multiple users who have access to that folder (on the same computer or in the network). The option requires a restart of Inkscape to work when changed.


== Rendering (advanced) ==


== MacOS-specific Changes ==
New options in <code>Edit ➞ Preferences ➞ Rendering ➞ Developer mode</code>:


* option to update the dragged region as a single block
* option for choosing the pixel streaming method
* option to define the size of a pre-rendered margin around the visible region
* option to set the minimum size of render tiles at the borders
* option to continuously adjust viewing parameters in an animation loop
Some other advanced options have been removed.


== Windows-specific Changes ==
== Windows-specific Changes ==


Inkscape detects dark and light theme and maches color of the title bar.
Inkscape now detects dark and light themes and matches the color of the title bar ([https://gitlab.com/inkscape/inkscape/-/merge_requests/5144 MR #5144]).
 
== macOS-specific Changes ==
 
'''Dithering''' is '''not available in 1.3''' on macOS, we're hoping to be able to bring it back for 1.3.1.


https://gitlab.com/inkscape/inkscape/-/merge_requests/5144
== Extensions ==
== Extensions ==


=== Features ===
=== Features ===
Speed up processing especially on complex documents: https://gitlab.com/inkscape/inkscape/-/merge_requests/4996
==== General Extension Changes ====


* Various extensions have been renamed or moved in the extensions menu so users can find them more easily ([https://gitlab.com/inkscape/extensions/-/merge_requests/455 MR extensions#455], [https://gitlab.com/inkscape/extensions/-/merge_requests/558 MR extensions#558], [https://gitlab.com/inkscape/extensions/-/merge_requests/559 MR extensions#559], [https://gitlab.com/inkscape/extensions/-/merge_requests/565 MR extensions#565],  [https://gitlab.com/inkscape/ux/-/issues/140 issue UX#140]).
* Inkscape will tell you when the extension is done with its work and Inkscape is loading the file.
* Faster processing especially on complex documents ([https://gitlab.com/inkscape/inkscape/-/merge_requests/4996 MR #4996])


==== General Extension Changes ====
==== Particular extensions ====


* A new dialog in Inkscape will tell you when the extension is done with its work and Inkscape is loading the file
*The '''Print Win32 Vector''' extension has been updated to work with Inkscape >= 1.0 and 64bit Windows. ([https://gitlab.com/inkscape/extensions/-/merge_requests/547 MR extensions#547], [https://gitlab.com/inkscape/extensions/-/issues/417 issue extensions#417]).
 
* Added Serbo-Croatian-Bosnian Latin characters to '''Hershey Text''' stroke fonts ([https://gitlab.com/inkscape/extensions/-/merge_requests/535 MR extensions#535]).
==== New Extensions ====
* the '''plotter''' extension which is based on the '''HPGL export''' benefits from improvements to HPGL export (see [[#Improved_HPGL_import]]).


=== Bugs fixed ===


==== Particular extensions ====
==== Particular extensions ====


* Fix a bug where formulas generated with the '''pdflatex''' extensions were sometimes clipped vertically, and remove reference to (nonexistent) log files in case of a pdflatex compile error ([https://gitlab.com/inkscape/extensions/-/merge_requests/512 MR extensions#512], issues [https://gitlab.com/inkscape/extensions/-/issues/493 extensions#493], [https://gitlab.com/inkscape/extensions/-/issues/502 extensions#502], [https://gitlab.com/inkscape/extensions/-/issues/507 extension#507]).
* Fix scale of rotated ellipses in '''DXF import''': Projected drawings such as cylinders output from CAD can be accurately reflected ( [https://gitlab.com/inkscape/extensions/-/merge_requests/504 MR extensions#504], [https://gitlab.com/inkscape/extensions/-/issues/504 issue extensions#504]). Also, trailing newlines don't crash the extension anymore ([https://gitlab.com/inkscape/extensions/-/merge_requests/519 MR extensions#519], [https://gitlab.com/inkscape/extensions/-/issues/515 issue extensions#515]).
* Allow '''Export of DXF''' files with Splines converted to Polylines ([https://gitlab.com/inkscape/extensions/-/merge_requests/545 MR extensions#545], [https://gitlab.com/inkscape/extensions/-/issues/540 issue extensions#540]).
* Fix a regression (from 1.2.1) in '''DXF R14 export''' in which documents with "pt" or other unsupported units would crash the extension ([https://gitlab.com/inkscape/extensions/-/merge_requests/566 MR extensions#566], [https://gitlab.com/inkscape/extensions/-/issues/542 issue extensions#542]).
* Fix a crash in the '''Synfig Export''' extension when the CSS Color 3 attribute <code>currentColor</code> is used. CurrentColor is also correctly used in '''Gimp Palette export''' now ([https://gitlab.com/inkscape/extensions/-/merge_requests/568 MR extensions#568], [https://gitlab.com/inkscape/extensions/-/issues/516 issue extensions#516]).
* Improve the warning message for '''JPEG export''' ([https://gitlab.com/inkscape/extensions/-/commit/5d1e5eacf55dbe6114a16d343bf4863867cc6a0b Commit]).
* Make the '''Clipart Importer''' more robust against missing packages ([https://gitlab.com/inkscape/extras/inkscape-import-clipart/-/commit/7a708ba3c281ddb7c68ae07e45e9c1c75a733e1f Commit]).
* Update the '''Extensions Manager''' and prevent spurious warnings from being shown ([https://gitlab.com/inkscape/extensions/-/merge_requests/514 MR extensions#514]).


=== Bugs fixed ===
==== All extensions ====
==== All extensions ====


 
* Fixed an issue where calling Inkscape with a long <code>--actions</code> parameter resulted in a crash on Windows due to the command line length limit ([https://gitlab.com/inkscape/extensions/-/merge_requests/484 MR extensions#484], [https://gitlab.com/inkscape/extensions/-/issues/482 issue extensions#482]).
==== Particular extensions ====
* Allow inkex to be imported when stdout is closed or atypical ([https://gitlab.com/inkscape/extensions/-/merge_requests/362 MR extensions#362], [https://gitlab.com/inkscape/extensions/-/issues/412 issue extensions#412]).
 
* The <code>href</code> attribute is now handled to fallback to <code>xlink:href</code> ([https://gitlab.com/inkscape/extensions/-/merge_requests/542 MR extensions#542]) as specified in the SVG2 specification.
* All extension now have <code>python3</code> set as default interpreter ([https://gitlab.com/inkscape/extensions/-/merge_requests/521 MR extensions#521]).
* <code>is_visible()</code> now correctly answers if element is visible in UserAgents (compliant with rendering in browser) ([https://gitlab.com/inkscape/extensions/-/merge_requests/548 MR extensions#548])
* Fix <code>get_path()</code> on Use elements to include the referenced transform ([https://gitlab.com/inkscape/extensions/-/merge_requests/549 MR extensions#549]).


=== Extension Development ===
=== Extension Development ===


==== API Changes for Third-Party Extension Developers ====
==== API Changes for Third-Party Extension Developers ====


* The format for '''template extensions''' has been updated to allow these extensions to appear in the Welcome Dialog, 'New from template' dialog and Page toolbar ([https://gitlab.com/inkscape/extensions/-/merge_requests/479 MR extensions#479], [https://gitlab.com/inkscape/extensions/-/merge_requests/520 MR extensions#520]).
* The '''Page API''' has been reworked to make adding or querying page information more inutitive. In particular, <code>add_page</code> only needs to be called once (was twice) in a single-page (pre-1.2) document to add a second page. The <code>get_page_bbox</code> function now supports multipage documents. ([https://gitlab.com/inkscape/extensions/-/merge_requests/480 MR extensions#480], [https://gitlab.com/inkscape/extensions/-/issues/479 issue extensions#479])
* The '''Guides API''' has been rewritten to get and set guide properties in the post-1.0 coordinate system, as the current guide API is rather confusing in a multipage setting. For this, <code>Guide.point</code> has been deprecated in favor of <code>Guide.position</code> (new coordinate system) and <code>Guide.raw_position</code> (old coordinate system). Also, <code>NamedView.new_guide</code>, <code>NamedView.new_unique_guide</code> and <code>Guide.move_to</code> have been deprecated in favor of <code>NamedView.new_guide</code>, <code>NamedView.add_unique_guide</code> and <code>Guide.set_position</code> ([https://inkscape.gitlab.io/extensions/documentation/source/inkex.elements._meta.html#inkex.elements._meta.Guide Documentation], [https://gitlab.com/inkscape/extensions/-/merge_requests/481 MR extensions#481]).
* If your '''export extension''' should automatically preprocess certains objects before all else (e.g. text to path or clone unlinking), consider using the new function <code>OutputExtension.preprocess</code>  ([https://inkscape.gitlab.io/extensions/documentation/source/inkex.extensions.html?highlight=preprocess#inkex.extensions.OutputExtension.preprocess Documentation], [https://gitlab.com/inkscape/extensions/-/merge_requests/497 MR extensions#497]).
* The <code>priority</code> attribute of '''import extensions''' is now respected when choosing the default importer to open a given file extension ([https://gitlab.com/inkscape/inkscape/-/merge_requests/5201 #5201]).
* Improved handling of additional XML namespaces ([https://gitlab.com/inkscape/extensions/-/merge_requests/516 MR extensions#516]).
* <code>BaseElement.composed_transform(self, other)</code> ([https://inkscape.gitlab.io/extensions/documentation/source/inkex.elements._base.html#inkex.elements._base.BaseElement.composed_transform Documentation]) now respects the <code>other</code> parameter ([https://gitlab.com/inkscape/extensions/-/merge_requests/539 MR extensions#539]).
* <code>inkscape_command()</code> now handles Inkscape actions since verbs don't exist anymore.


==== Extension Development Documentation ====
==== Extension Development Documentation ====


* Document how to '''translate third-party extensions''' ([https://gitlab.com/inkscape/extensions/-/merge_requests/493 MR extensions#493], [https://gitlab.com/inkscape/extensions/-/issues/305 issue extensions#305]).
* Document the '''different extension types''' ([https://gitlab.com/inkscape/extensions/-/merge_requests/536 MR extensions#536]).
* Improve documentation for building the inkex documentation locally ([https://gitlab.com/inkscape/extensions/-/merge_requests/529 MR extensions#529]) and how to package inkex ([https://gitlab.com/inkscape/extensions/-/merge_requests/532 MR extensions#532]).
* Improve clarity, fix typos and formatting ([https://gitlab.com/inkscape/extensions/-/merge_requests/482 MR extensions#482], [https://gitlab.com/inkscape/extensions/-/merge_requests/488 MR extensions#488], [https://gitlab.com/inkscape/extensions/-/merge_requests/490 MR extensions#490], [https://gitlab.com/inkscape/extensions/-/merge_requests/526 MR extensions#526], [https://gitlab.com/inkscape/extensions/-/merge_requests/530 MR extensions#530]).


==== Under the hood ====
==== Under the hood ====
* Various changes to the CI pipeline: Make automated testing on Windows more robust ([https://gitlab.com/inkscape/extensions/-/merge_requests/495 MR extensions#495], [https://gitlab.com/inkscape/extensions/-/merge_requests/557 MR extensions#557]), adding an archiving pipeline to allow easier swapping of the local extensions folder for user testing ([https://gitlab.com/inkscape/extensions/-/merge_requests/501 MR extensions#501]), simplify process for fork pipelines ([https://gitlab.com/inkscape/extensions/-/merge_requests/517 MR extensions#517], [https://gitlab.com/inkscape/extensions/-/merge_requests/546 MR extensions#546]), black v23 update ([https://gitlab.com/inkscape/extensions/-/merge_requests/522 MR extensions#522]).
* A separate README file has been added that is shown on pypi ([https://gitlab.com/inkscape/extensions/-/merge_requests/533 MR extensions#533]).
* Improve testing mechanism for mock commands ([https://gitlab.com/inkscape/extensions/-/merge_requests/512 MR extensions#512]).
* Fully reflect the (existing) requirement for Python 3.7+. ([https://gitlab.com/inkscape/extensions/-/merge_requests/500 MR extensions#500]) and add CI for Python 3.11 ([https://gitlab.com/inkscape/extensions/-/merge_requests/543 MR extensions#543]), while dropping CI for Python 3.7 ([https://gitlab.com/inkscape/extensions/-/merge_requests/553 MR extensions#553]).
* Improve compatibility with Python 3.11 ([https://gitlab.com/inkscape/extensions/-/merge_requests/551 MR extensions#551], issues [https://gitlab.com/inkscape/extensions/-/issues/538 extensions#538], [https://gitlab.com/inkscape/extensions/-/issues/539 extensions#539]).
* For '''packagers''': A script to output all dependencies (and their versions), including in submodules, has been added ([https://gitlab.com/inkscape/extensions/-/merge_requests/523 MR extensions#523]). It is published via [https://inkscape.gitlab.io/extensions/python-dependencies.txt CI].
* Refactor <code>.inx</code> file schema validation ([https://gitlab.com/inkscape/extensions/-/merge_requests/502 MR extensions#502]).
* A change in the underlying Docker image for the pipelines now automatically triggers all jobs based on it ([https://gitlab.com/inkscape/extensions/-/merge_requests/555 MR extensions#555]).


== Command line ==
== Command line ==


Added a new parameter <code>--actions-file</code>. You specify a list like in <code>--actions</code> but in a file to allow bypassing Windows comandline length limit, and also to allow reuse of action lists.
* You can now specify a '''file containing a list of Inkscape actions''', formatted like <code>--actions</code>. This can be used to bypass Windows comandline length limit, and also makes it easy to reuse and share a sequence of actions.
* The parameter <code>--active-window</code> / <code>-q</code> lets you run all given Inkscape commands in the active window of an '''already-running instance of Inkscape'''.
* New action 'rebase-file', which can '''replace the current document's contents''' by the contents of another file
* The '''node alignment''' command can now also make use of the '''last used alignment mode''' in the Align and Distribute dialog with the value 'pref'.


Added a new parameter <code>--active-window</code> / <code>-q</code> that runs all commands on the active window of an already-running instance of Inkscape.
== Bugfixes ==


Hundreds of bugs were fixed for this release.


== Behind the curtains ==
An incomplete list is available by filtering by milestone in [https://gitlab.com/inkscape/inkscape/-/issues/?sort=updated_desc&state=closed&milestone_title=Inkscape%201.3 our GitLab issue tracker]. The full list of changes is available in the [https://gitlab.com/inkscape/inkscape/-/commits/1.3.x commit history].
 
 
== Notable bugfixes ==
=== Crash fixes ===
 
Fixed a crash that occurred…
 
* When…
 
 
=== Other bug fixes ===
 
* LPE related undo bugs: https://gitlab.com/inkscape/inkscape/-/merge_requests/4520
* Fixed bspline LPE with cusp nodes when initially using with node tool. https://gitlab.com/inkscape/inkscape/-/merge_requests/5016
* <code>&lt;use&gt;</code>s retain their LPE correctly when unlinked or converted to paths. The old convert to paths behaviour is still available in the Preferences. https://gitlab.com/inkscape/inkscape/-/merge_requests/5016
 
=== Even more bug fixes ===
 
There were even more issues fixed than those listed above, but these probably only affect a small proportion of users, or are relevant for development and packaging only.
 
For a complete list, visit [https://gitlab.com/inkscape/inkscape/-/issues?milestone_title=Inkscape+1.3 our GitLab issue tracker] and see the [https://gitlab.com/inkscape/inkscape/-/commits/1.3.x commit history].
 


== Translations ==
== Translations ==


The following UI translations received updates (as of May 10 2023):
The following UI translations received updates:


* Basque
* Basque
* Brazilian Portuguese
* Brazilian Portuguese
* British English
* Croatian
* Czech
* Czech
* French
* French
* German
* Greek
* Greek
* Hungarian
* Icelandic
* Icelandic
* Indonesian
* Italian
* Japanese
* Japanese
* Polish
* Polish
* Romanian
* Russian
* Russian
* Simplified Chinese
* Simplified Chinese
Line 651: Line 777:
* Swedish
* Swedish
* Turkish
* Turkish
* Ukrainian
* Vietnamese
* Vietnamese




The following documentation translations received updates (as of May 10 2023):
The following documentation translations received updates:


* German
* German
* Hungarian
* Hungarian
* Korean
* Korean
* Spanish




Line 666: Line 794:


== Documentation ==
== Documentation ==
=== Updates ===
Documentation (tutorials, man page, keyboard shortcuts list) has been updated to reflect the changes in this version.


=== Contributing to documentation and documentation translation ===
=== Contributing to documentation and documentation translation ===
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 ==
== Website ==


* We now have team blogs available on our website! [https://inkscape.org/*membership/blog/ Check out what the team is up to!]
* We now have team blogs available on our website! [https://inkscape.org/*membership/blog/ Check out what the team is up to!]
* The website design got a little makeover, for some more modern looks!


== Important Inkscape Project Milestones ==
== Important Inkscape Project Milestones ==


* We have hired [https://inkscape.org/*membership/blog/march-ai-extension-2023/ our first external contractor], and more are to come – thanks to your donations!
* We have hired [https://inkscape.org/*membership/blog/march-ai-extension-2023/ our first external contractors], and more are to come – thanks to your donations!
* We had a Hackfest in Germany this year ([https://www.youtube.com/watch?v=gdo-OG2-XJs Video]|[https://inkscape.org/gallery/=photograph/hackfest-2023/ Photos])
* We had a Hackfest in Germany this year ([https://www.youtube.com/watch?v=gdo-OG2-XJs Video]|[https://inkscape.org/gallery/=photograph/hackfest-2023/ Photos])
* We have [https://inkscape.org/*membership/blog/inkscape-signs-new-fsa-sfc/ updated our Fiscal Sponsorship Agreement] with the Software Freedom Conservancy
* We have [https://inkscape.org/*membership/blog/inkscape-signs-new-fsa-sfc/ updated our Fiscal Sponsorship Agreement] with the Software Freedom Conservancy

Latest revision as of 21:46, 11 November 2023

Release highlights

Released on July 23, 2023

The highlights of this major Inkscape version are:

  • And so much more!

Performance

A lot of effort has gone into improving the performance and speed of all aspects of Inkscape. This involved the refactoring of inefficient code, rewriting how Inkscape works with patterns, moving bitmap tracing into a separate thread and so much more.

Canvas rendering is now both multithreaded, and done outside of Inkscape's main process thread.

If your computer's processor has more than one core (which it most likely does), this can result in a 2–4× speedup while zooming / panning / transforming objects.

The number of processor cores used for rendering can be adjusted in Edit ➞ Preferences ➞ Rendering ➞ Number of Threads. By default, Inkscape tries to be as fast as possible by using as many cores as possible.

(Multithreading MRs, MR #4760).

General user interface

Color Palette

Indicators for used colors
  • Color palette fields now have little indicators that show which color is used for the stroke and fill of a selected object.
  • Color pinning (MR #4957):
    • Colors from the palette that you use frequently can be 'pinned' to the start of the palette, for faster access. By default, these 4 colors are 'Unset', black, grey and white, but you can choose any other color. These fields can be made larger, so they can be easily clicked on.
    • To add a color to the pinned colors array, right-click on its palette field and select 'Pin color'. The color will then be moved away from its original location in the palette to the palette start.
    • To 'unpin' a color, right-click on the pinned color's field and select 'Unpin color'.
    • To choose the pinned colors' size, click on the palette bar's hamburger menu icon and select to 'Configure' it, and check / uncheck the option 'Enlarge pinned colors'.
    • Note: Pinned colors only show up if the current palette contains them. So when you switch the palette, some colors may be dropped, and when you switch back to a palette that contains them, they will show again.

Inkscape BHd0t2kzml.gif


Color Pickers

Color pickers in Inkscape now support choosing colors in the OKLch color space, which has just been adopted into the CSS Color Module Level 4 draft recommendation. For those who would like to learn more, OKLch and OKLab are described in detail by its creator in a blog post.

This additional option is disabled by default. It can be enabled in Edit ➞ Preferences ➞ Interface ➞ Color Selector as "OKHSL", and will then be available in any color picker's dropdown. Note that color values will still be written as RGB hex codes in the SVG source, and Inkscape also does not support reading colors that are defined in that color space. This change is purely adding a new convenient option for choosing colors.

OKLAB.png
Configure-color-pickers.png


Command Palette

It is no longer necessary to scroll horizontally in the Command Palette (shortcut: ?), as entries are now nicely arranged and formatted and make use of linebreaks. Now all the info for an entry is directly visible (MR #4988)

Context menu

For clipped images, there is now an option in the context menu to crop them to their clipping path. This destructive operation can be used to reduce the file size of an SVG file, removing unneeded parts. The function automatically embeds any linked images, leaving the original image untouched. For any areas outside an irregular-shaped clip, but inside the rectangular region of the bounding box, the new image will use transparency. The status bar will show a message telling you by how many bytes the cropping made your file lighter.


Copy-pasting Styles

A new preference option in Edit ➞ Preferences ➞ Behavior ➞ Clipboard now allows you to choose whether you want to replace the CSS rules (new option) for an object with those of the other object, or whether you want to always just paste the resulting style attributes (old behavior), without any CSS classes, when you copy-paste the style of one object onto another one. This will help with (colorable) icon creation and web development tasks. The option defaults to the old behavior, so unless the old style pasting behavior bothered you, you do not need to change anything.

Crash dialog

When Inkscape crashes, it will now ask you to create a bug report, and will provide information that can help developers to fix the crash.

Crash-dialog.png

Keyboard shortcuts

The keyboard shortcuts for aligning objects vertically and horizontally have been moved to the numeric keypad, where the other alignment shortcuts are, too:

  • Vertical alignment has been moved from Ctrl+Alt+T to Ctrl+Alt+Numpad 1
  • Horizontal alignment has been moved from Ctrl+Alt+H to Ctrl+Alt+Numpad 7

If you find yourself unable to reach the new shortcuts (for example, because your laptop does not have a keypad, or because the shortcuts do not work - may be the case on Linux with Xfce), you can set them to something else by changing both the alignment shortcut and the function that now uses that shortcut (if any). Use the search in Edit ➞ Preferences ➞ Interface ➞ Keyboard – it also allows searching for shortcuts, not only for their name (e.g. search for ctrl+alt+t to find the new default action that is executed when that combo is pressed).


Origin on current page

In Edit ➞ Preferences ➞ Interface, there is an option now to use the current page's corner as the coordinate system origin for placing objects, for the rulers, and for any tools.


Pasting Options Renamed, and Paste on Page

The Paste size entry in the Edit menu has been renamed to Paste…, to hold all 'special' pasting operations that you may need.

A new pasting feature called On Page has been added to this renamed menu. You can use it to paste the copied object(s) into the same position on a different page (MR #4695).

For this to work correctly, you must first select the page to paste on by either:

  • selecting an object on that page before pasting
  • selecting the page with the page tool
  • changing the current page using the buttons in the status bar


Rulers

Inkscape's rulers on the top and left side of the canvas now feature two new indicator areas:

  • Page: the part of the ruler that corresponds to the current page's location is now colored in a different tone, so you can always see where your page ends.
  • Selection: a thin blue line indicates and follows the current selection. This line can be turned off in Edit ➞ Preferences ➞ Interface: Show selection in ruler.

Ruler performance has been improved along with these changes.

Rulers-with-selection.png

Right-clicking on the rulers allows you to set the unit used for rulers and as default for any number fields and indicator fields in Inkscape ('display unit', can also be changed in the document settings).

Selecting

  • Functionality to save and restore the current selection (i.e. which items are currently selected) and to delete the saved status has been added. It is accessible from the Commands bar (?, search for 'set selection backup') or by setting a keyboard shortcut for it in the preferences. You can use it to quickly save which objects or which nodes in a path you currently have selected, and to later get back to work with that selection.
  • An option to select invisible (transparent) items by clicking on them has been added to the preferences in Edit ➞ Preferences ➞ Behavior ➞ Selecting.

Snap toolbar

An option was added in Edit ➞ Preferences ➞ Interface ➞ Toolbars to show snapping options permanently in a dedicated toolbar, similar to Inkscape version 1.1 and earlier.

Canvas

Views and Display Modes

  • Quick Preview: Pressing F temporarily hides on-canvas overlays (transformation handles, grids, guides...). This allows quick preview of final artwork without any distractions. (MR #4395)
  • Display mode and overlay controls are now accessible quickly from the top right corner of the canvas. Scrollbars must be enabled to see it (CTRL+B).
  • Clip object rendering to page: For a more permanent preview, you can choose whether to not display any objects outside the page area in the Document Properties dialog. A keyboard shortcut to toggle this feature can be set in the Keyboard Shortcuts list in the preferences.

Ezgif.com-resizeasd.gif


Experimental OpenGL (GPU) Accelerated Canvas Rendering

An OpenGL-accelerated display mode was added to the canvas to speed up panning, zooming and rotating (MR #4133).

This is NOT a fully GPU-based renderer; content is still rendered on the CPU in exactly the same way as before, so large performance improvements are not to be expected. It does, however, result in a smoother display and lower CPU usage, especially on HiDPI screens.

OpenGL mode is highly experimental and is turned off by default. It can be turned on at

Preferences ➞ Rendering ➞ Enable OpenGL

Note however the following caveats:

  • Due to packaging problems, when using the Linux AppImage, OpenGL support either does not work (on X11) or crashes (on Wayland).
  • Due to GTK3 bugs, OpenGL mode crashes on Windows, blacks out the screen on MacOS, is slower than software rendering on Linux X11, and is only really usable on Wayland.

For these reasons, it is not expected to be useful until we migrate to GTK4, where we hope that at least some of these bugs will have been fixed.


Smooth auto-scrolling

When dragging an object off the edge of the canvas, the view of the canvas automatically scrolls, so you can still see your object. Auto-scrolling is much smoother now than it was in previous Inkscape versions (MR #5027)

Smooth-page-scrolling.gif

Tools

Toolbar

Right-clicking on any tool icon now gives you a context menu for opening that tool's preferences (MR #4982).

3D Box Tool

This tool had to sacrifice its shortcut x, which is now used for the Shape Builder Tool. The shortcut Shift+F4 still works for making 3D boxes.

Gradient Tool

  • When multiple gradients are selected (MR #4339):
    • the repeat setting can now be changed for all of them at once.
    • the stop list now reads Multiple gradients(instead of a random stop).
  • Offsets of the start/end stops can be adjusted in the tool controls bar (consistent with the option in the Fill and Stroke dialog).
  • The stop stays selected after its offset is changed in the toolbar (instead of selecting the first stop of the gradient).
editing pattern on canvas

Node Tool

On-Canvas Pattern Editing

Pattern editing on canvas is now much easier! No more searching for the pattern controls - as now, you can click on any part of a pattern and it will show you controls at that position:

  • the top left square handle controls the pattern position
  • the circular handle controls rotation
  • and the bottom right square controls the pattern's size

Hold down Ctrl to constrain proportions.

An additional outline shows you the edges of the pattern. We also fixed performance problems with patterns, so now you can have smaller patterns in project and zoom in on them without worrying about Inkscape eating up all your RAM. This should also fix or at least improve issues with patterns not rendering / only partially rendering in exported files or when zoomed out very far.


Inkscape YbiQFDqHoZ.gif

Draw around Selection

We added a new selection mode for nodes. Hold down Alt and draw with the Node tool around the nodes that you want to select. This saves a lot of time compared to previous versions, where you needed to add new nodes to the selection by dragging small rectangles while holding Shift, whenever nodes were not located together in a convenient rectangular area (MR #4747).


Better shape preservation when deleting nodes

When deleting nodes, a new, improved curve fitting algorithm, adopted from FontForge, is now used on a "smooth" path (rather than corners) (MR #5082).

Spline-fit-1.gif

It will attempt to preserve the shape only when selected nodes define a relatively smooth path. Trying to preserve the shape when deleting corner nodes is rarely what's desirable, so the algorithm will not do that:

Spline-fit-2.gif

With the "preserve shape" option ON, the algorithm may still decide to insert line segments if it detects what it thinks are corners. Holding Ctrl key while deleting inverts this decision:

Curve-fit-inverted.gif


Edit Blur on Canvas

If your object has a Blur filter (from the Fill and Stroke dialog) applied to it, or any composed filter that uses a Blur filter as one of its components, you will see a set of new on-canvas blur controls when the object is selected with the node tool, or with the selection tool when the filter is first applied (MR #4867)

The ratio of the blur controls is not locked by default, so only dragging on one of them will change horizontal or vertical blur separately.

If you hold CTRL and click-drag on one of the handles, the blur will be reset back to be the same amount for both directions, and both will change by the same amount when you move the handle.

You can select an arbitrary blur angle by rotating your object after setting its blur, or when applying it to a rotated shape, group, clone, symbol or other object that features a transform matrix. If this is not desired, ungroup and regroup or convert to path to apply the matrix before attempting to create an uneven blur.

Inkscape fCXLNVIQp7.gif


On-canvas Corners Editing

In the Tool Controls Bar, a new button allows you to add the Corners Live Path Effect to the currently selected path, to round corners by a specified amount, or to add chamfers/fillets. Click the button again to remove the effect.

Inkscape E33kBkZM1j.gif


Page Tool

Ezgif.com-gif-maker (12).gif

The Page tool now offers controls for page margins and bleeds for printing (MR #4532):

  • In its Tool Controls Bar, there is a field where you can enter the margin numerically, including the unit (if no unit is given, the Display unit from the Document Properties dialog is used), like this '3mm'.
  • You can set the margin widths for all sides separately:
    • by filling out the form that opens when you click on the double-arrow icon in front of the number field
    • on the canvas by using the blue circle-shaped handles – to adjust all page margins of equal value simultaneously, use ctrl.
    • or by entering them as follows into the number field: top right bottom left (e.g. '3mm 5mm 7mm 10mm', or top/bottom left/right (e.g. '10mm 20mm'), or top left/right bottom (e.g. '10mm 20mm 30mm').
  • You can set the bleed width by first clicking on the double-arrow, and then expanding the dialog at the bottom, then you can use the same syntax as for the other number field above.
  • Page margins and bleeds are available as snapping targets, and can be de-/activated with the 'page borders' snap control.
  • Bleeds will be used for PDF export.

Selector Tool

The Selector Tool features three new keyboard shortcuts:

  • Reapply transform: Ctrl+Alt+T - This allows you to perform the last applied transformation multiple times.
    Usage example: Rotate an object by 20°, then double the rotation by using the shortcut.
    Note: on Linux, the shortcut will usually open a terminal, so you will probably want to assign a different shortcut. This shortcut was previously used for alignment, see #Keyboard_shortcuts for more info.
  • Duplicate and transform: Ctrl+Alt+D - This performs a duplication and then reapplies the previous transform to the duplicate, so it is moved / rotated / etc. by the same amount. You could, for example, use it to quickly create a sequence of evenly spaced objects.
    Note: On Linux, this shortcut usually minimizes the window, so you will want to assign a different shortcut. (MR #4506)
  • Clone while dragging: drag object + C - Drag and object and press C to clone it in the current position (this is similar to 'stamping' by pressing Space to create a copy when dragging an object) (MR #4752).

Shape Builder Tool

This is a new tool for building shapes from intersecting objects, to make Boolean operations more accessible (MR #4709).

It can be activated by clicking on the third button from the top in the Tool bar, after the Selector and Node tools.

Its keyboard shortcut is X (previously the shortcut for the 3D Box tool, see 3D_Box_Tool).

Usage

  • Select multiple overlapping shapes, or one self-intersecting path, with the Selector or Node tool.
  • Switch to Shape Builder tool.
  • The view of the canvas will now change, and show all paths/outlines of all selected objects. Everything else will be hidden until you leave the Shape Builder tool. You can see whether the current mode/key combination will add or subtract by color: Adding is represented by a blue color, removing by pink.
  • In default (Addition) mode, click on any segment to add it to the result as separate object.
  • Shift + click on any segment to remove it from the result.
  • Click and drag over segment boundaries to union all touched segments.
  • Shift + click and drag over segment boundaries to remove all touched segments.
  • Use Escape or the corresponding tool controls bar button to cancel
  • or use Enter, the corresponding button, or just switch to a different tool to accept the result.

Result

  • Any segments that have not been touched with the tool will be gone.
  • All other segments will now be available as unioned or separate objects, depending on your actions.
  • These objects will keep their style, if not unioned with an object that has a different style. In that case, the first object will determine the style of the result.

Shape builder.gif

Path Operations

Object to Path

Path ➞ Object to Path now behaves differently for texts. In recent Inkscape versions, a text was converted into a group of letters, where each letter was a single path. Now, the whole text is converted to a single path (if you need individual letters, with Path ➞ Split Path, many texts can almost be split into letters again - or you can use the extension Text ➞ Split Text to split the text into single letters first).

Fracture Paths

Left: original objects, middle: result of 'Fracture', right: result of 'Flatten'

Path ➞ Fracture - every overlapping region of a set of paths will be split into a separate object. The resulting objects do not overlap anymore.

Corresponds to the following sequence of Boolean operations that were previously necessary to achieve the same result:

Duplicate ➞ Union ➞ push down in stacking order ➞ select other set of duplicates ➞ Combine ➞ select both resulting objects ➞ Division, but keeps the color/style of the visible areas.

Flatten Paths

Path ➞ Flatten - overlapping objects will be flattened visually (it will delete paths that are hidden behind a top path). Useful for separating colors for Screen printing and offset printing as well as for doing any kind of plotting.

This could previously only be done by repeatedly subtracting duplicated and unioned stacks of objects.

Clones

A new preference option is now available in Edit ➞ Preferences ➞ Behavior ➞ Clone that allows you to decide whether you really want to convert a clone in the selection to a path when you use the command Path ➞ Object to Path. Otherwise, the clones will only be unlinked, but keep their path effects and editable shapes.

Masking / Clipping

A new option to preserve clips / masks when ungrouping objects has been added (Edit ➞ Preferences ➞ Behavior ➞ Clippaths and masks: When ungroup, clip/mask is preserved in children). 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.

If you're one of those who have used ungrouping as a fast and convenient way to remove all clips and masks in imported PDF files, to go back to previous default behavior, deactivate this new option (MR #3564).

Dialogs

Document Resources Dialog

Document properties 2.gif

This new dialog shows an overview of the assets currently used inside your document. Names can be edited here, and some of the resources can even be exported from this dialog (MR #5003).

It presents the following document assets:

  • fonts
  • styles
  • colors
  • swatches
  • gradients
  • filters
  • patterns
  • symbols
  • markers
  • images
  • external references


Export Dialog

  • When the PDF file format is selected, you can now choose which pages to export into a single multipage PDF file, instead of only being able to export a single page to PDF from this dialog.
  • Choosing the correct page to export has become much easier, as pages are now ordered correctly by their page number (MR #5002).


Fill and Stroke Dialog

Markers

Inkscape's markers now use more human-friendly (and better translatable) names.

Pattern Editor

Pattern editor
  • When choosing to use a pattern for your object, you are now presented with a new subdialog that allows you to edit may pattern parameters numerically.
  • You can preview patterns, change their name, size, rotation angle, offset, the size of gaps between the pattern tiles, and even pattern colors for many of the stock patterns.
  • Patterns are now grouped by category, which are represented by separate files in the paint/ directory in the Inkscape installation (and in your personal preferences directory, too), so it's easier to be organized.
  • Since this categorization allows having many more patterns preinstalled without losing sight of what you're looking for, we also added a search function and a few new stock patterns (MR #4938).

Inkscape 9yhQG7s68v.gif

Filter Editor

Filter-resize

The Filter Editor has been overhauled and is now easier to use! (MR #4720)

  • Filter selection has been moved to a popover-type dialog.
  • Effects are listed in a popup menu and can be selected by searching (by name).
  • Connector sizes were adjusted to make them more compact.
  • The minimum size of the parameters panel was adjusted to make it fit in a narrow docked dialog.
  • The layout adjusts to accommodate a very wide dialog.
  • Added primitive filter attributes to fe-image and fe-tile.
  • The GTK color picker has been replaced with Inkscape's own color picker.
  • Sources can now be hidden (for most use cases only the source graphic is useful; other inputs are broken or need UX work).
Inkscape Y7U4yzIFTq.gif

Layers and Objects Dialog

Usability Improvements

  • Click and drag eye or lock icon vertically to (un)lock/(un)hide all touched objects
  • Selecting a group does not auto expand anymore.
  • Selecting multiple objects and and changing visibility/lock status applies to all selected.
  • The Search field is back! While it's a limited implementation - it does not auto-apply search and you need to search for more than 3 characters - it is still a very useful addition.
  • We added a hover indicator for rows and layer colors.
  • Opacity and blend mode can be adjusted in the Layers dialog again! Clicking on the square-shaped icon (right before the eye icon) will open a popover dialog where you can adjust opacity with a slider and choose from the 16 different blend modes.
  • Improved performance for editing of many objects at once.


Keyboard Shortcuts

  • Use the arrow keys to navigate rows and columns
  • Space bar confirms (select, apply, open)
  • Shift+→ and Shift+← to expand/contract group or layer
  • Shift+↑ and Shift+↓ to move in stacking order

[(https://gitlab.com/inkscape/inkscape/-/merge_requests/5183 MR #5183)]

Live Path Effects Dialog

Ezgif.com-optimize (1)asda.gif

The compact new design merges the two steps of choosing an LPE and adjusting it into one single dialog ([ https://gitlab.com/inkscape/inkscape/-/merge_requests/4677 MR #4677]).

Choosing an LPE now works by either:

  • starting to type its name into the search box and selecting a suggestion
  • clicking on the arrow behind the search box to reveal a dropdown catalog of all available path effects

Since this design asked for a more compact way to show all LPEs, we decided on sorting the effects into these categories for the dropdown:

  • Favorites (hidden if you don't have any yet)
  • Edit/Tools
  • Distort
  • Generate
  • Convert
  • Experimental (hidden by default)

Each LPE features the following controls:

  • on the left side of the icon: expand/contract LPE settings
  • on the other side, after the label:
    • Show/hide effect
    • Delete effect
    • Context menu
      • Duplicate
      • Move up/down
      • Flatten: This will apply the effect stack, starting from the first up to the selected LPE, to the object's geometry (i.e. it will convert that part of the LPE stack to a path). Effects that come after the selected LPE will stay editable as LPEs.
      • Set custom defaults: to set the current parameters as defaults for this path effect
      • Set Favorite
    • Drag and drop handles
  • below this line, when expanded, the actual LPE parameters (different for each LPE)

Other changes:

  • The LPE gallery overview has moved into an optional button, deactivated by default. It can be enabled in the preferences at Preferences ➞ Behavior ➞ LPE). This adds a button on the right side of the search field. Clicking on it opens the old LPE chooser dialog, where you can read everything about the LPEs in a quick overview.
  • To see experimental LPEs you need to enable the option in the preferences at Edit ➞ Preferences ➞ Behavior ➞ LPE.
  • An indicator now shows the id or label (if set) of the selected object.
  • When a text object is selected, the dialog offers to convert the text to a path, or to a clone – since text does not support LPEs, a conversion is necessary.
  • If you select an object that is associated with an LPE (Clone, Boolean operations, Bend, Fill between many, etc…) you will see a button in the dialog that will take you to the linked geometry/controls.
  • Labels inside effects are aligned nicely.
TletOwk4Zs.gif


Object Attributes Dialog

The dialog has been improved and now allows you to set contextual object-dependent attributes for the selected object. It currently supports image objects, shapes (rectangle, circle, polygon) and hyperlinks. For images, it is accessible as 'Image properties' from the context menu, for all objects, it is available from "Object attributes" from the dialog popup menu, and can also be opened by setting a keyboard shortcut for it in the preferences ([ https://gitlab.com/inkscape/inkscape/-/merge_requests/5064 MR #5064]).

In addition to the previously available set of options, the dialog now allows you to adjust/change the following:

  • Images: replace existing image, embed a linked image in the document, or extract an embedded image, change aspect ratio and rendering properties.
  • Shapes: edit procedural parameters of objects (width, height, radius), round some parameters to whole numbers, for rectangles: add Corners LPE to be able to adjust corner radius independently.
  • Hyperlinks: set url, and other metadata

It is still a work in progress, so consider this a preview for a new feature. You can also contribute new ideas to the dialog's development by helping our UX team and our development team.


Swatches Dialog

In the Swatches dialog, the option to display colors together with their names (from the .gpl palette file), in a vertical list, is back again.

Enable it by clicking on the Hamburger menu, choosing 'Configure' and selecting the option 'Show color labels' (MR #4957).

Ezgif.com-optimizeasda.gif


Symbols Dialog

The Symbols dialog has been getting some design love and many improvements (MR #4975, MR #4994, MR #4666, MR #4883, MR #4793, MR #4784):

  • its settings have moved to a popover dialog
  • the currently selected symbol set and dialog settings are now saved, so when you close and reopen the dialog, you can continue right where you left it
  • the maximum symbol preview size and zoom have been increased
  • an option to show symbols' names was added
  • symbols are now rendered at screen resolution and look sharp (high-dpi aware)
  • to manage the growing number of symbol sets, their list is now searchable
  • searching for symbols directly filters the symbol set (no need to press Enter anymore).
  • performance improvement through rendering symbols on-demand, reducing memory usage and time needed to switch sets
  • statistics indicator: lists the total number of symbols in the current set and how many of them are visible after filtering
  • more precise positioning of symbols when adding them to the drawing by drag-and-drop
  • the dialog is now symbolized by a different icon - the "heart" symbol
  • the modern Visio formats vssx and vsdx can now be read by Inkscape.
  • 596 new symbols in 16 categories from the SJJB map icons set


Text and Font Dialog

Font Collections

Font collections

Fonts can now be organized by sorting them into Collections, for example to sort them by their properties (like handwriting, serif, sans serif, …) or by the type of document you want to use them for (e.g. poster, or for a specific customer), or maybe even just by how much you like them (e.g. to filter out fonts that you really dislike, or to gather those you like a lot) (MR #4694).

To create and fill a new Font Collection:

  • Click on the Font Collections icon in the Text tool's tool controls bar or in the Text and Font dialog.
  • In the popover dialog that will then open, choose to Open Collections Editor.
  • In the Font Collections dialog, you can now create a new Collection by clicking on the + icon.
  • Type the name of the new collection into the text field.
  • Now start populating your new Font Collection by dragging a font (or many!) from the left side of the dialog into the collection.
  • You can change the name of a collection by either double-clicking on it, or by using the 'Edit' icon.
  • Use the 'trash' icon to remove a selected font or a complete font selection (in this case, Inkscape will ask for confirmation) from the list.

When you have created a few collections, you can use the list in the popover dialog in the Text tool's tool controls or in the 'Text and Font' dialog for filtering your fonts.

Trace Bitmap Dialog

  • Tracing bitmap images is significantly faster now.
  • In those cases where it still takes a bit because of the size or complexity of the trace, it now displays a progress bar
  • If it is then still taking unexpectedly long, canceling the tracing process actually works now (MR #4702).

Welcome Dialog

  • Files are now sorted by modification time, with the most recently modified at the top.
  • When Inkscape crashes, it tries to save the file at its current state. These emergency saves are now listed in the Welcome dialog, so in the optimal case, you can quickly continue working after a crash without a long hunt for your files (MR #5058)

XML Editor

Syntax highlighting in XML Editor

The XML editor received some small cosmetic changes:

  • smaller icons (16×16px)
  • added auto-responsive layout (default)
  • moved layout controls to the top in a dropdown

Syntax Highlighting and Monospaced Font

For improving readability in the XML Editor dialog, syntax highlighting and automatical line-breaks were added.

  • The highlighting theme can be selected in Preferences ➞ Interface ➞ Theming.
  • You can choose to use a monospace font for the dialog's tree view, as well as select a font and its size, in that same Preferences section.

Xml-dialog-preferences.png

Rounding path data

When a path's d attribute is selected in the XML editor, the editing window now offers a set of two new buttons below the path data (MR #4885):

  • a button labelled N.N(NNN) to select how many decimal points to keep after rounding.
  • a button to apply the rounding to the currently selected path.

This gives you granular control over optimizing size of SVGs.

Inkscape GAlKvNTcCm.gif

Live path effects

General

  • The performance of most of the effects has been improved.
  • Text objects can now be used as linked geometry (for Boolean operation, Bend, Pattern along path LPEs)
  • Dialog redesign
Roughen-lpe.png

Roughen LPE

The user interface has been cleaned up, and the order of the parameters has been changed (MR #4872).

Taper Stroke LPE

The Taper Stroke LPE now supports paths with multiple sub-paths (MR #4906).

Power Stroke LPE

The Power Stroke LPE now supports paths with multiple sub-paths (MR #4880).

Inkscape IdBRmOuKA5.gif

Corners (Fillet/Chamfer) LPE

  • The handles of the effect have been changed to little triangles, which allows you to position them more precisely (MR #5164).
  • You can now assign a shortcut to the LPE to be able to quickly use it on any path without opening the Path Effects dialog.

Import / Export

PDF import

Pdf-import-dialog.png
  • The PDF import dialog user interface has been rewritten (in Glade).
  • In this new dialog, in the 'internal import' tab, Inkscape provides an overview about what it will do with each font it finds in the PDF: convert to paths, keep original font name (even when not installed), use a substitute font, delete the text.
  • The internal PDF import has been rewritten:
    • Font name detection has been much improved.
    • PDF layers are now converted to Inkscape layers on import.
    • ICC Color Profile support retains the information about your CMYK colors in the imported file, for use with Scribus and other software that supports color profiles in SVG
    • Margins, bleeds and page sizes are retained.
    • Similar path stroke/fill objects are merged.

Improved HPGL import

  • HP-GL/2 import has been rewritten to support more complex HPGL files including fill and line style, non-linear draw commands, scaling and rotating of the document.

Export

  • XAML export has been completely rewritten and now supports AvaloniaUI, export to DrawingGroup, conserving swatches for easy styling, and exporting Layers to individual resources which allows to maintain an icon library in a single SVG file.
    For more info, check the extensions documentation (MR extensions#498).
  • Text elements will automatically be converted to paths when exporting to HPGL (MR extensions#497, Issue extensions#211).
  • The DXF export extensions (R12 and R14) now also process non-paths by converting them to path beforehand. This includes text, flowed text and clones (MR extensions#567, issue extensions#518).

Templates

Templates-dialog.png
  • All template dialogs (Welcome screen, New from Template, Page tool default sizes) now offer the same template sizes (MR #479).
  • A set of templates with pre-designed grids to be used with the Shape Builder has been added (MR extensions#552).

SVG Standards Compliance

Added support for href and xlink:href in SVG header. This makes Inkscape more compatible with SVG 2 (MR #4596).

Customization / Theming

Custom CSS

The file user.css has been added to the /ui folder. This allows you to tweak the interface style without interfering with or fully overriding other CSS files (MR #5004).

Multiuser resource sharing

In Edit ➞ Preferences ➞ System, users can set a folder for shared default resources. It must be structured like a user's Inkscape preferences directory. This makes it possible to share a set of resources, such as extensions, fonts, icon sets, keyboard shortcuts, patterns/hatches, palettes, symbols, templates, themes and user interface definition files, between multiple users who have access to that folder (on the same computer or in the network). The option requires a restart of Inkscape to work when changed.

Rendering (advanced)

New options in Edit ➞ Preferences ➞ Rendering ➞ Developer mode:

  • option to update the dragged region as a single block
  • option for choosing the pixel streaming method
  • option to define the size of a pre-rendered margin around the visible region
  • option to set the minimum size of render tiles at the borders
  • option to continuously adjust viewing parameters in an animation loop

Some other advanced options have been removed.

Windows-specific Changes

Inkscape now detects dark and light themes and matches the color of the title bar (MR #5144).

macOS-specific Changes

Dithering is not available in 1.3 on macOS, we're hoping to be able to bring it back for 1.3.1.

Extensions

Features

General Extension Changes

Particular extensions

Bugs fixed

Particular extensions

All extensions

Extension Development

API Changes for Third-Party Extension Developers

  • The format for template extensions has been updated to allow these extensions to appear in the Welcome Dialog, 'New from template' dialog and Page toolbar (MR extensions#479, MR extensions#520).
  • The Page API has been reworked to make adding or querying page information more inutitive. In particular, add_page only needs to be called once (was twice) in a single-page (pre-1.2) document to add a second page. The get_page_bbox function now supports multipage documents. (MR extensions#480, issue extensions#479)
  • The Guides API has been rewritten to get and set guide properties in the post-1.0 coordinate system, as the current guide API is rather confusing in a multipage setting. For this, Guide.point has been deprecated in favor of Guide.position (new coordinate system) and Guide.raw_position (old coordinate system). Also, NamedView.new_guide, NamedView.new_unique_guide and Guide.move_to have been deprecated in favor of NamedView.new_guide, NamedView.add_unique_guide and Guide.set_position (Documentation, MR extensions#481).
  • If your export extension should automatically preprocess certains objects before all else (e.g. text to path or clone unlinking), consider using the new function OutputExtension.preprocess (Documentation, MR extensions#497).
  • The priority attribute of import extensions is now respected when choosing the default importer to open a given file extension (#5201).
  • Improved handling of additional XML namespaces (MR extensions#516).
  • BaseElement.composed_transform(self, other) (Documentation) now respects the other parameter (MR extensions#539).
  • inkscape_command() now handles Inkscape actions since verbs don't exist anymore.

Extension Development Documentation

Under the hood

Command line

  • You can now specify a file containing a list of Inkscape actions, formatted like --actions. This can be used to bypass Windows comandline length limit, and also makes it easy to reuse and share a sequence of actions.
  • The parameter --active-window / -q lets you run all given Inkscape commands in the active window of an already-running instance of Inkscape.
  • New action 'rebase-file', which can replace the current document's contents by the contents of another file
  • The node alignment command can now also make use of the last used alignment mode in the Align and Distribute dialog with the value 'pref'.

Bugfixes

Hundreds of bugs were fixed for this release.

An incomplete list is available by filtering by milestone in our GitLab issue tracker. The full list of changes is available in the commit history.

Translations

The following UI translations received updates:

  • Basque
  • Brazilian Portuguese
  • British English
  • Croatian
  • Czech
  • French
  • German
  • Greek
  • Hungarian
  • Icelandic
  • Indonesian
  • Italian
  • Japanese
  • Polish
  • Romanian
  • Russian
  • Simplified Chinese
  • Slovenian
  • Spanish
  • Swedish
  • Turkish
  • Ukrainian
  • Vietnamese


The following documentation translations received updates:

  • German
  • Hungarian
  • Korean
  • Spanish


Contributing to interface translations

Want to help with translations? Learn how to help!

Documentation

Updates

Documentation (tutorials, man page, keyboard shortcuts list) has been updated to reflect the changes in this version.

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

Important Inkscape Project Milestones

Important changes for packagers

Known issues

Other releases