After the big resource rewrite, we decided that we should focus on tackling the biggest pain points in Krita. This release thus contains a lot of background work that we hope to build future improvements on top of.
Two major pain points for animation got tackled: The playback of audio (MR 1323), and simplified video export (MR 1599).
For playback of audio, Emmet and Eoin wanted to tackle the syncing issues, so we reworked the whole audio playback mechanism to use MLT framework.
For the video export option, we used to require people to point at an FFMpeg executable, a program which has all the edge cases of video file format generation covered and is in itself up to date. This was good enough for studio use, but it was difficult to set up if you’re not that technical, and very hard to do on locked down systems like Android or even a school computer. We’ve therefore spend some time to include the basics of FFMpeg into Krita itself.
Wolthera completely rewrote the text layout. This is partially because the original layout engine we used didn’t give us enough control over the underlying text, which made it hard to extend, as well as write a better text tool on top of.
With the new layout engine, we can handle everything the old engine could, as well as text-on-path, vertical text, and wrapped text and text in shape. We can now also access OpenType features as well as render emoji (bitmap and colrV0 types) (MR 1607, MR 1767).
For Krita 5.3 we’ll be working on the text tool proper, making it on-canvas and allowing you to configure the new features with menus and presets. For Krita 5.2 however, you’ll have to use the SVG code editor to get to the new features.
Dmitry Kazakov overhauled the culmulative undo feature (MR 1780), this feature allows merging undo operations, which is useful when painting many different strokes. We’ve simplified the code and made the options more intuitive to use.
The ability to anti-alias the results of the Sketch Brush Engine has been added by Przemysław Gołąb (MR 1425).
Deif Lou has added a new mode to the fill tool: Fill areas of similar color (MR 1577). In addition, both the fill tool and the enclose fill tool have have gained Fill all regions until a specific boundary color (MR 1549), as well as a toggle to use the same blending mode as the brush tool, or to have its own (MR 1749).
The Contiguous Fill also received the same selection extending option as the fill tool (MR 1549), and the ability to set the opacity of the selection decoration (1697). Furthermore, the selection decoration has been made HDI-aware MR 1774.
Several new actions have been added:
Mathias Wein brought us a ‘Wide Gamut Color Selector’. This selector almost the same as the advanced color selector, except it’s capable of selecting colors in wide-gamuts instead of just sRGB. We eventually want to remove the Advanced Color Selector in favor of this one, when we’re sure we haven’t lost any functionality (MR 1600).
The layers docker got some extra display options:
We changed how CMYK blending modes work (with a toggle in the config), (MR 1796), this aligns the blending modes to the way Photoshop handles blending modes in CMYK, simplifying exchange of PSD files with clients that require CMYK PSDs.
Rasyuqa A. H. has been improving the JPEG-XL saving a loading code, implementing CMYK for JPEG-XL, improving compression by giving the JXL library more color space information, and better metadata handling, (MR 1656, 1693, 1673, 1722). He also improved WebP compression (MR 1785), as well improving ICC transfer characteristic code (MR 1667 and 1690).
One of the other big technical updates we did was to rewrite the brush settings code to work with the library Lager. Our old code had the brush presets and the widgets entangled in increasingly convoluted ways, which made it hard to extend the settings. We hope to use this work as a basis to redesign the brush settings widget (MR 1334).