Hey everyone, so I’ve updated the OP, and now got a general idea of where to go with the text tool.
One thing that has been really revelatory about this thread is that there’s two kinds of text tool: One for typing and editing text, and one for making text look pretty, and that most graphics programs provide the latter. This makies sense because a lot of artists copy text in from a brief. Our aim to support (indie) comic artists, as well as the feedback in this thread indicate that we’ve got more of an interest in the other usecase of just typing and editing text without any interference. For this reason, I’m going to make the text tool have two modes: A text editing mode and a type setting mode.
The text editing mode is our priority, this will function as a rich text editor, which means you can type, edit, copy, paste and format text. This will also include editing the wrapping area.
Type setting mode on the other hand will focus on on-canvas editing of things like spacing and giving more typesetting info like baselines and other metrics.
By making this split I hope to avoid a situation where someone helpfully tries to add widgets to edit the glyph positions that interfere with typing, or the opposite, implements a spell checking mode, which would be helpful for text editing, but would just give ugly underlines in type setting mode.
That said, the plan is as follows:
-
I will now continue on with 5.2 docs, release notes and bugfixes.
-
Once 5.2 is out, I’ll start working on Phase 1, which will cover all on-canvas interaction. This includes typing (including the use of input methods), copy, paste, undo. It also includes creating text with a font fqamily, size and whether it is horizontal, vertical, left to right or right to left. The thread converged on how the creation should work, and I’m fairly confident I’ll be able to make the text tool distinguish on whether you’re trying to create a text on path, text in shape, simple wrapped text or preformatted text.
-
Phase 2 will be all about formatting the text. This will require a rewrite of the underlying code (I had previously not touched this code, only the text layout code) to solve some bugs with the way Krita stores data, and to ensure it will be simpler to manipulate the data with widgets.
After that I’ll have to work on all the widgets themselves. We’re still trying to decide between a system that shows all properties in collapsible groups, or a system that only shows the active properties and allows you to add as necessary. In both cases, because there are 50+ properties, we’ll add a search box to find the relevant property, as well as a preset system to store any formatting.
I wish I could’ve told you already whether we’re going with a docker, or a context menu or a floating menu, but I need to finish Phase 1 first. In particular, I need to finish Input Method support (which covers not just CJK input, but also things like the onscreen keyboard for android and the diacritics selection windows on MacOS), as I need to make sure that which ever we choose does not interfere with that.
-
After all this, the text tool should be fully functional, and I’ll start Phase 3, where we’re going to work on conveniences like the type setting mode as well as things like the ability to show formatting marks (these are usually use for spaces and line breaks, but there’s also other unicode things like zero-width-joiner we could provide an icon for).
I hope to have phases 1 and 2 in 5.3, but overall I feel confident that the ordering of things will give a sense of progress despite me doing boring code stuff in the middle.
If you have any questions, feel free to ask.