Krita 4.0 release notes

With a complete rewrite of the vector layer file format, the addition of Python scripting, a new text tool and much more, Krita 4.0 is one of the biggest releases ever. There is so much to explore and enjoy! As a team, we’re happy and proud to have reached this milestone and we’re looking forward to build on Krita 4 for many releases to come!

Before we begin telling you about all the new and improved things, take a moment to read this warning:

Krita 4 has a new file format for vector and text objects. Krita 4 tries to import Krita 3 and older files. Krita 3 and older will not be able to read vector and text objects saved by Krita 4. Because the new file format and the old file format are not 100% compatible, images with vector and text objects might look different in Krita 4. We recommend:

To always keep a backup of your Krita 3 files before working on them in Krita4!

In some cases, to convert your vector and text layers to raster layers before working on your old files in Krita 4!

Note that on all platforms it is possible to keep Krita 3 and Krita 4 running side by side. On Windows, use the zip archive downloads, on Linux the appimages and on OSX the disk images, dragged to some other place than Applications. Krita 4 and Krita 3 share settings and resources.

For 4.0, Tyson Tan has again created an awesome Kiki image. The Chinese plum blossoms symbolise overcoming hardship, so it’s a very apposite image for the first major release of Krita after 2017’s tribulations!

Video by Owly Owlet

SVG Format for Vector Tools

Krita 3.0 used the OpenDocument Graphics format (ODG) for vector shapes and paths. This was originally an office document file format and not a format designed for artistic work. ODG does not work well with other applications like Inkscape. We rebuilt our vector tools from the ground up in Krita to use SVG. SVG is a W3C standard that can be opened by many different programs. This is going to allow for more possibilities in the future with working with other applications. Currently, Krita supports most of the SVG 1.1 standard. In the future, SVG 2 will also be supported.

In addition to converting the back-end to SVG we also added the following features:

The gradient tool has been merged into the default tool for easier editing.

Import and save SVG objects. KRA files, when opened as a ZIP, will have its vector layers stored in SVG.

You can now copy-paste shapes from and to Inkscape directly.

Boolean function to combine and intersect multiple vector objects. These are accessible from the new context menu (right click).

The conversion to SVG also allowed us to fix a lot of vector object bugs from Krita 3.

Vector Tools UX Improvements

We did more than just update the technology. We also spent a lot of time researching the workflow for vector artists and made an improved user experience for how the tools work. Scott Petrovic lead the discussion with artists and determined how the tools would look and operate.

One caveat is that we didn’t have time to finish the pattern fill and SVG Filters features. We are working on that, though, and hope to have those features ready for Krita 4.1.

Right-click on the canvas if a vector layer is active, will give a relevant submenu for the vector tools with more options.

New Text Tool

One of the improvements funded by the 2016 kickstarter was a new text tool. With the goal of creating a tool that would be stable, dependable and simple to use, we made a lot of progress in Krita 4.0. External pressure made it impossible to implement everything we wanted for Krita 4.0, and we will be making more updates and adding new things to the text tool as the 4.x releases progress: line wrapping, fine typographic control, vertical text layout for Asian languages, as well as improvements in workflow are all still planned.

The text editor popup has both a rich text editor panel as well as an SVG source editor panel where you can enter any SVG that is valid inside a text element.

Python Scripting

The BIG stretch goal of last year’s Kickstarter! You can now create scripts that create and manipulate images, add dockers and entries to the menu and much more. Note that this is the first release of Krita with scripting, so we’re expecting lots of feedback from you all on what can be done with scripting and what not, and which part of the API works, and which part doesn’t.

We also are including a large amount of scripts so you can see how it works for examples. In Krita’s settings dialog, you can enable or disable Python plugins and check out the script’s manual. Krita will need to be restarted for the python scripts to show up or be disabled.

Python Plugin Manager

Manage which python scripts are active. Located via Settings->Configure Krita->Python Plugin Manager. Activated plugins can be accessed via the tools->scripts.

Note that on Windows 7 and 8 you need to install the Universal C Runtime separately. See the manual.

We’ve taken several wishes from our forums and community and turned them into python scripts. Hopefully with these samples you can see the types of things you can accomplish with Python scripting. Creating these plugins also allowed us to test our own API. Let’s take a look at some of them…

Included Scripts Highlights

Ten Brushes – 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!

Internal Scripting Console – Run scripts while you are in Krita. 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-hightlighting and a small debugger to tell you when your code does not make sense. Created by Eliakin Almeida during his 2017 Summer fo Code project.

Quick Settings Docker – Quickly change between brush sizes, opacity, and flow values… If you’ve used some other applications, this’ll be familiar to you. Once enabled can be found from Settings > Dockers. Coded by Wolthera.

Comic Project Management Tools – A robust plugin used for managing multiple pages for a comic project that Wolthera created. It is a great example for how to handle common tasks in pipeline scripts: opening, saving, cropping, scaling and batch changes. It even has custom exporting formats such as CBZ, EPUB, and ACBF. And the python files are abundantly documented to help you along the way and create your own pipelines!

Colorize Mask Tool

Simplify coloring intricate line art such as comic art. With the new colorize mask layer, you can fill a line art with a few quick strokes…and have Krita figure out how to fill it in. The normal flow is to make your line art, switch to the Colorize Mask tool in the toolbox, then make some quick strokes in the area.

Press the Update button in the layers toolbox. The layer should update and fill everything in. You can either convert this later to a paint layer, or break it apart into color groups. See how it works in more detail from the manual: Colorize Mask documentation.

Background Saving

No more freezing while you wait while Krita auto-saves every 15 minutes. Not only do we have a background worker for saving documents, but also when exporting animations. This allows you to export a large animation then keep working while Krita keeps exporting the animation in the background. And exporting animations has been made faster by fully using all the cores on your CPU to calculate fames, too!

New KPL Color Palette Format & Improved Palette Docker

The palette docker in Krita 3 can only handle 8bit sRGB. Our existing GPL color palette format was designed in a time when anything more seemed like decadence. We’ve taken the plunge and designed a new color palette file format. The KPL fileformat can store any color that Krita can handle. This new file format also allows you to group colors! The file format is made up of a ZIP file with an xml inside. (We are nothing if not consistent!)

The palette docker has also been improved with the following things:

drag and drop support

color renaming

color grouping

able to load Swatchbooker (SBZ) palettes (patch by L.E. Segovia)

able to load Scribus XML palettes (patch by L.E. Segovia)

Brush Editor Editor Improvements and Live Preview

We revamped the brush preset editor significantly to make it easier to use and understand. The brush editor has as preview area for you to see a live update as you are changing settings. This should make creating and editing brushes easier than only using the scratchpad. Note: There are a couple brush engines that do not have a preview because of technical limitations (shape and quick).

Easily rename brushes. Look for the pencil icon in the brush editor

Overwriting brushes now keeps the current preview image.

Creating a brush brings up a new dialog that allows you to modify the preset image or load a custom image

You can collapse/expand the presets, settings, and scratchpad areas. This was added to help people with smaller monitor sizes

Added a set of curve presets when working with brush editor settings such as S curves. The buttons are underneath the curve area

The effect of curves can now affect each other in different ways using different algorithms (seen at the bottom of the curve setting).

When creating brush presets, there is a brush icon library that can be used as a base. These are resources that you can customize in the application’s shared area.

Performance Improvements with Multithreaded brushes

We are always trying to improve Krita’s performance in every area. Last year’s big performance project was multi-threading the pixel brush engine. Krita is now smart enough to let each of your computer cores calculate the dabs separately, and also have them work together. You can decide how many cores Krita will try to use for this in the performance settings! These changes only affect the pixel brush engine for now, but we can later expand this out to other engines like the color smudge.

Speaking of performance improvements, all brushes now have an “Instant Preview threshold” property. This probably sounds confusing, but this speeds up a lot of smaller brushes where Instant Preview didn’t have any performance improvement. Instant Preview will automatically turn on when a brush’s size gets big enough. You can right click the “Instant Preview” checkbox in the bottom of the brush settings to change this.

The work on multi-threaded brushes was sponsored by Intel.

Larger Brush Sizes

In Krita 3, there is a 1,000px brush size limit. In Krita 4, you can lift that limit through the configuration and make it go up to 10,000px! This change requires a restart to take effect. 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. Make sure your computer can handle that!

Masked Brushes

Add a mask to your brush tip to create even a greater variety of brushes. This started out as a Kickstarter stretch goal named ‘stacked brushes’. Masked brush allows you to select a second brush tip, and define size, rotation, mirroring, scatter, and other properties to decide how it should blend with the main brush. You can also assign blending modes to your mask. The example here is using the Screen blending mode to create a watercolor appearance. See the manual for more information!

Updated Brush Presets

We have updated our brush presets after feedback from a lot of artists. We have spent time trying to improve performance and add a greater variety of brush presets. Some of the new presets show off what the new masked brush properties can achieve like the watercolor brushes. Thanks goes out to David Revoy, Ramon Miranda, Wolthera, Pablo Cazorla, Rad, Scott Petrovic, and Razvan for their contributions. Also for all the people that took our brush presets survey and gave us ideas to make them even better. The final brush preset collection has been curated by David Revoy, whose brush kit was used by more than two-thirds of respondents to the survey.

Krita 3’s brushes bundle can be enabled in the resource manager dialog.

Pixel grid

Andrew Kamakin added this cool new feature: 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.

The zoom percentage and color can be conigured in the Settings area.

Isometric grids

Specify the angles and spacing for each axis to help with your isometric artwork. The grid area has an option for either Rectangular or Isometric grid options. There are also a few options for how they will display like color and style. This option is located in the grid docker.

Improvements to the pop-up palette

We have made a few changes to the pop-up palette after feedback

A quick method for zooming with a slider

A quick canvas rotation wheel around presets

quick buttons for mirroring and canvas-only, and resetting zoom to 100%

Painting Assistant Improvements

We have made the assistants much easier to use

Improved rendering of the handles so they are easier to use for tablets.

Ability to change the color and opacity for assistants in the tool options

Fixes for loading and saving assistants

Filter Improvements

New and updated filters

A new edge detection filter has been written. It supports multithreading(which means it works with filter layers as well as filter brushes), and has several options to choose between algorithms, strength and even a special toggle to let it be applied to the alpha channel for cool fringe effects. Manual: Edge-detection

A height to normal map filter has been added using the same framework.

Old edge detection and brightness/contrast curves have been removed.

The gradient map filter has been changed to create gradients on the fly and now stores this filter properly inside the kra file.

Resize thumbnails in presets docker and show brush size

Easily resize your brush presets by the new slider. You can also quickly see a brush presets size to the right of a thumbnail now when you are in details mode

Improved Warnings when Saving without layers

Often people will save their work to an unsuitable file format, losing layers (when you save as a png image) precision and layers (when saving as a jpg image) or more esoteric features like channel depth or vector objects. For Krita 4. we implemented a warning system that will inform you which features are present in the document but cannot be saved to the chosen file format. To be extra safe, the dialog also allows you to save a simultaneous copy as a native KRA file as well.

New Darker Theme

Just in case you wanted Krita even darker

Bug fixes/changes

Layers

File layers now can have the location of their reference changed.

A convert layer to file layer option has been added, that saves out layers and replaces them with a file layer referencing them.

Don’t set the swap directory to an empty string if the user pressed cancel

Change the default author profile to Anonymous (T6627)

Insert author widget at position zero (BUG 389877)

Take into account multiplication when translating DPI to Krita internals (BUG 390337)

Handle offset better when cropping image (BUG 390382)

Fix a regression with delegated tools. (BUG 382690 )

Reset screen rotation after probling QPA on OpenGL (BUG 390651)

Add identify for UC-LOGIC based tablets on linux (BUG 363443)

Windows: set OS and platform when reporting a bug

Top Contributors

Since 3.0 was released we have had a lot of people helping out making Krita better. Here is a list of the top 10 contributors for Krita for 4.0. Information taken from github during the period from June 2016 through March 2018 sorted by commit count.