This is a work in progress of the release notes for Krita 4.0. This page will change as the release gets closer. More than likely, the existing list of changes or features will get bigger.
We have overhauled our vector tools massively in the past few months.
One of the biggest changes is that we changed from the Open Document ODG vector format to the widely-used SVG vector format. SVG is a W3C standard that can be opened by many different programs, so we felt that it made more sense to use this as the default format.
You can now open and save SVGs inside Krita. Kra files, when opened as a ZIP will have it’s vector layers stored in SVG.
We went out of our way to make the tools much more user friendly.
There’s a brand new text tool! The new text tool supports 90% of all SVG 1.1 text features(except glyphs and rotation), and has a new window with all the controls you need to typeset your text. This editor can also be used to change the SVG source as well, allowing for even more fine grained control over the position of letters as long as you know SVG text. With the whole new design, we’ve confidently closed all the bugs of the old text tool. Check what is possible in the manual.
The big chosen stretchgoal of last year’s Kickstarter, python scripting is now part of Krita. We also are including a large amount of scripts with Krita so you can see how it works for examples. You can see some of what we are including below. The scripts are translatable to work in multiple languages.
Delving into a little tech-talk: Python was implemented by making a general library for the bindings, and then have a sip file to turn those into python bindings. What that means practically is that someone could implement other scripting languages pretty easily if they are willing to put in the work.
Plugin Manager – Managed via settings->Configure Krita->Python Plugin Manager. Activated plugins can be accessed via the tools->scripts.
From experience we know that maintaining a scripting plugin can be quite difficult. For that reason we’ve chosen to take several wishes and to turn them into python scripts. This allows us to make sure python scripting is useful and test it against bugs, while providing good example scripts for users.
Let’s take a look at some of them (there are more than the ones listed):
The most important of these plugins is a small python console, written in python. This console will allow you to run scripts in Krita on the fly. Important for when you are testing things, or for when you just want to write a small script.
The python editor is equipped with syntax-colorization and a small debugger to tell you when your code does not make sense. It does not have code-completion.
This plugin allows you to assign instead of convert a color to a given color space. Such a feature was missing from Krita proper, and we imagine it is one of those things someone might want to use in scripting, so hence it’s incarnation as a python script.
Assign specific brush presets to shortcuts. You can do this with dragging and dropping the preset into the shortcut slots. Of course you can open the script up and modify how this works to your heart’s desire!
Quickly change between set brush sizes, opacity, and flow values…similar to how other applications do it.
A bigger plugin used for managing multiple pages for a comic project, and the best example of how to handle common tasks in pipeline scripts, like opening, saving, cropping, scaling and more batch tasks. There is a lot of documentation to go with this, so don’t hesitate to open any of the scripts us to take a look.
A new tool that simplifies coloring intricate line art such as comic art has been added to Krita. With the colorize mask, you can fill a line art with a few quick strokes and have Krita figure out how to fill it for you. Manual: Colorize Mask.
Krita has access to six different color models and four different bitdepths, yet the palette docker and its file format could only handle 8bit sRGB. It is natural, as the GPL(that is, Gimp PaLette, not Gnu Public License) file format was designed in a time when anything more seemed like decadence.
However, that time was a long while ago. So we’ve finally taken the plunge and designed a new fileformat, consisting, yet again, from a zip file with an xml inside(We are nothing if not consistent!). This fileformat, KPL, can store any color that Krita can handle. Furthermore, changing the fileformat also allowed another change: It is now possible to group colors in Krita!
On top of this new file-format, Krita can also load swatchbooker(SBZ) palettes as well as Scribus’ xml palettes, both courtesy of L. E. Segovia.
With that, of course, the palette docker has been improved with drag and drop support, color renaming, color grouping and more!
The Brush Settings had a number of user experience changes and features added to make it easier to use and understand
You can now set Krita to use Brush sizes beyond a 1000 pixels, up to 10.000! This requires a restart. Though, be careful with the big sizes as a 10.000 pixel brush is about as heavy as copy-pasting an image of 10kx10k at the bitdepth of the image you are painting on. It might cause out-of-memory errors.
Lag is always a big topic, we have spent nearly every year on improving performance for Krita. This year’s big performance project was multi-threading the brushes. This means that if you have a multiple core processor, which most laptops bought in the last fifteen years have, Krita is now smart enough to let each of those cores calculate the dabs seperately and also have them work together to draw the dabs onto the canvas. You can even decide how many cores Krita will try to use for this in the performance settings!
As of current writing these changes only affect the pixel brush engine, with the default mask being the fastest.
But wait, that’s not all! We also implemented the masked brush! Starting out as a kickstarter stretchgoal named ‘stacked brushes’, masked brush allows you to select a second brush tip, and define size, rotation, mirroring, and scatter for it as well as decide how it should blend with the main brush.
On top of the changes introduced in the 3.x series(like accessing the xml directly)
Not just was the Kra file format adjusted to use svg internally instead of ODG, we also really overhauled the saving system:
We implemented a passive warning system that will inform you which features are active in the document but cannot be saved to the chosen file format. Furthermore, the dialog will allow you to save to KRA as well. This was inspired by the following:
“Help! I had an image with layers, and I saved it to PNG, and now Krita refuses to load the layers! How do I get them back?”
This is a question that comes up surprisingly often. More experienced readers will know that the problem is that file formats like PNG don’t save things like layer data. This is why we have working file formats like Krita’s KRA. We also added an option to allow you to save a copy of your work as a KRA in this situation.
Krita is not the first Free Open Source Software to attempt to solve this peculiar issue. The other attempt had as a solution to force users to save to the working file format of the application, and have them explicitly use the export to save to other file formats. People did not like this solution very much.
When Krita auto saves in the background, you don’t have to worry about the small freezes that previously happened. This also works when exporting animation and allows you to work while exporting.
Thanks to a rogue patch by Andrew Kamakin, you can now see a pixel grid when you zoom in past 800% (the zoom percentage and color are configurable). Great for precision art where it is hard to tell where pixels start and end.
There is a new isometric option in the grid docker where you can specify the angles and spacing for each axis. You can change the angles and display with how they are shown like the existing grid options.
The variables vh and vw have been added to the numerical input, they represent the width and the height.
A new option allows you to resize your thumbnails in the brush settings and preset dockers. The thumbnail size is saved for future use. Good if you want to see a lot of brush presets in list view.
We have made a few changes to the pop-up palette after feedback