Vastzetter met teksteigenschappen

The Text Properties Docker allows you to edit text properties of text objects currently selected with either the Gereedschap voor selectie van vormen or Hulpmiddel Tekst. See Working with Text for an overview of all text features.

The docker has three tabs: Paragraph, Character and Preset.

Paragraph will edit the default properties for the whole paragraph, and contains both Paragraph Properties and Character Properties. These can be edited with both tools.

Character will edit the properties for the selected word or range and edits only Character Properties. These are only available when editing with the Hulpmiddel Tekst.

Finally, Preset allows you to create and apply style presets onto the text. See Style Presets for more information.

By default, the first two tabs will show only a handful of basic properties, while all other properties are only shown when they are currently set, or inherited.

The revert button left of a given property will give an indicator of whether a property is changed, and clicking it will undo said change. When a mixture of style properties are selected, you will see a multi-headed arrow, while the control itself will show the default or inherited value. Modifying the control will set the same value on all properties, while clicking the revert button will unset the property on all text.

New properties can be added with the add property drop down below. The text input allows for searching the current text properties, with each property having a number of alternate keywords. For example, typing “underline” will list the Text Decoration, which the Underline option is part of. Selecting Text Decoration will add the property to the list, so it can be set.

The visibility state of each property can be configured by pressing the configure button next to the add property dropdown. When the default visibility is set to “always show” and none of the individual properties are set to show conditionally, the add property dropdown is replaced with a filter input. The current visibility states are possible:

Follow Default

The property will follow the default visibility state at the top of the configuration window.

Always Visible

The property will always be visible.

When Set

The property will be visible only when set.

When Relevant

The property will be visible when it is set or when it is inherited.

Never Show

The property is never shown.

Inheritance

Krita’s text shape uses CSS, and thus allows for properties to be inherited. This means that properties like the font size can be set over a whole text shape, and ranges of text within the shape will default to the inherited value if it is not explicitly set on the range.

Inheritance is useful because it allows us to only set the properties that are important on a given section. So, we can emphasis a range of text with italics in the Character tab, and then use the Paragraph tab to change the font size or font family on the whole text without losing the emphasis on the range of text.

Conversely, some properties do not inherit at all, Baseline Shift for example. These properties usually get added on top of one another, but the precise behaviour is described in their entry.

Font-Relative Units

Some properties allow for font-relative units. The meaning of these units also depend on inheritance mechanics. All font-relative units will try to use the current font metrics. However, when said font metric is Em and the property being edited is Font Size, it will be relative to the inherited font size. Similar with Lh and Line Height.

Font relative units are particularly useful for Letter Spacing, which is often done relative to the Em size. Similarly, it is very common to have super scripted text to be set to 0.5 Em (so it is half the regular font size), or to have Shape Padding to be 1 Ex.

Em

The current font size (or inherited font size in the case of Font Size).

Ex

The current x height. This metric is retrieved from the font, and affected by font size.

Cap

The current capital height. This metric is retrieved from the font, and affected by font size.

Lh

The line height. This is either relative to the current line height or, in the case of Line Height, the inherited line height.

Ic

Relative to ideographic character Advance. The advance of a single CJK character.

Ch

Advance of the number ‘0’.

Character Properties

Character properties are properties that can be applied on a range of text or the whole paragraph.

Font Size

Font size allows setting the size of the characters. Particularly it scales the whole font so that its design size (the “em size”) is the same as the font size.

When using Font-Relative Units, font size will always use the inherited font size and family as the reference font. This can be used to ensure a range of the text is always a bit bigger or a bit smaller than the surrounding text, which can be useful for superscript or titling.

By default, this property is always visible.

Font Size Adjust

Font size adjust allows setting a ratio that the x-height must be matched by. The x-height is the height of the small latin x in Latin fonts, and it is a value that is derived from the font metrics.

This is particularly useful with font-fallback, but can also be useful in general to force some consistency into the x-height. There’s a calculate button, which allows you to calculate the font-size ratio of the current font family.

../../_images/font-size-adjust-example.png

Script fonts frequently have a much smaller x-height than typical body text fonts. By using Font Size Adjust and pressing calculate, we can set the text to have a similarly sized x-height.

Font Family

Font family allows selecting a list of fonts that should be used for the current text. The first item in the list is the primary font used, while each subsequent font may be used as a fallback.

../../_images/font-selection-fallback-arabic.png

Many fonts only have glyphs for a subset of unicode, so controlling fallback can allow us to select fonts that seem to be in a similar tradition, like using a Serif Latin font for a Naskh Arabic font.

See Font Families for more information about the font picker and font families.

By default, this property is always visible.

Font Style

Font style allows setting the sub style of the given font family, such as italics and bold.

The main control is a drop down that shows a list of predefined styles. These are determined either by the fonts within a family, or by the instances inside a Variable Font. Clicking any of these will set the corresponding CSS properties for that style.

../../_images/font-style-examples.png

The image above showcases a number of styles. The top row shows the effects of width, weight and slant, while the bottom row shows the effect of toggling optical size at different font sizes.

When unfolding this property, the following settings are available:

Weight

This controls the thickness of the glyph outlines.

Synthesize Bold

This allows synthesizing thick glyphs when there’s no support for bold in the font family.

Width

This controls how much horizontal space a glyph takes. Not all fonts support this, and there’s no synthesis for this.

Slant

This can be either Normal, Italic or Oblique. The difference between Italic and Oblique is that the former corresponds to a glyph style remniscent of the Italic calligraphy style, while the latter is a slanted version of the normal glyphs.

When Oblique is selected, the angle can also be configured. This is primarily for use with variable fonts that support the slant axis.

Synthesize Slant

This allows synthesizing slanted glyphs where there’s no italic or oblique version of the glyphs available.

Optical Size

This determines whether the optical size axis in Variable Fonts will be synced to the font size. Note that Krita interprets the axis value to be in points.

Finally, there’s a place for the extra axes. These are for use with variable fonts, which can provide more configuration for the font style.

This property is, by default, always visible.

Letter Spacing

Letter spacing controls the spacing between visible clusters of characters. There are subtle differences in how letter spacing is implemented by programs that support CSS. Krita’s implementation follows CSS-Text-3 and thus does not apply to single characters. Letter spacing is mostly intended to apply to whole spans of characters.

Word Spacing

Word spacing controls the size of word separator characters, such as the space character. It also provides spacing for other word separator characters, like the Ethiopian word space, Aegean word separators, Ugaric word divider as well as Phoenician word separators.

Line Height

Line Height controls the line height used for the range of text. It does not work for pre-positioned SVG 1.1 text, but does apply for pre-formatted text that uses hard line breaks, or wrapped text.

Normal

When this is on, Krita will try to determine the line height by taking each character in a line, and determining its ascent, descent, and also the line gap metric. The maximum of these is used as the line height.

Ln

Line Height has one unique unit: Ln, this is similar to “normal”, except it uses the font size.

All other units will define a fixed offset. Even the Font-Relative Units are fixed to the current font and size of the element the line height is defined on.

When using relative units, Line Height will take the current font size and family as reference. However, when using the line height unit, Line height will use the inherited line height as reference.

Line Break

Line Break allows choosing a strictness for the line breaking algorithm. Mostly used for CJK scripts, requires Language being set to work. Krita at this moment does not support Loose.

Word Break

Word Break allows fine-tuning the line breaking by toggling whether to only break at words or also allow breaking at characters. Useful for Korean or Ethiopian.

../../_images/word-break-korean.png

Krita slogan in Korean. On the left side there’s the default behaviour, which breaks after every hangul cluster. This looks rather old fashioned. By setting word break to Keep-all, breaks will happen only at word boundaries.

Text Transform

Text Transform allows transforming the given range of characters, for example, by setting them uppercase, or switching out half-width forms for full-width forms. This is useful in that it is applied as a stylistic effect, meaning any text written is automatically transformed.

Text Transform is sensitive to the Language being set. For example, the Turkish undotted i will be transformed with the I while regular i will be transformed to dotted I.

Case

Whether to transform all text to upper or lower case. In the case of Capitalize the first letter after each word separator is uppercased, which the rest is lowercased.

Full-width

Full-width refers to the “Fullwidth” code points in the Halfwidth and Fullwidth unicode block. Toggling this will mean that proportional or halfwidth glyphs will be replaced with those fullwidth glyphs if possible. Typically, in vertical text, proportional glyphs are rotated, but when this isn’t possible or required, using full width glyphs can look a lot neater. The full width opentype feature does something similar, but not every font supports that.

Full-size Kana

In Japanese Kana scripts, there are some instances of small and big kana, which have subtly different pronunciation. However, when the text is really small, it can be useful to replace small kana with big kana to aid in readability.

Text Decoration

../../_images/text-decoration-sample.png

Sample showing all the possible decorations as well as the line styles.

Text Decoration allows drawing underlines, overlines and striking through text.

Line:

Toggles whether underline, overline or line through is enabled. Multiple can be enabled at once.

Color:

Set the color of the underline. When unset, the color of the decoration will follow the text color.

Style:

The style of the lines. Shared between all enabled lines, these can be made dashed, dotted, wavy and even double lines can be drawn.

Text Decoration does not inherit. Instead it is applied over each range of text it is defined on, with later defined text decoration being drawn on top of earlier defined text decoration.

../../_images/text-decoration-nested.png

Nested text decorations definitions. While something this complicated is only possible with the SVG source editor, you can see a similar result if you define a text decoration on the paragraph, and one on a range of characters.

Underline Position

Specify the position of the underline for text-decoration.

Horizontal:

Behaviour in horizontal writing modes

Auto

Underlines will be positioned according to the metrics of the font.

Bottom

Underlines will be aligned to the descender.

Vertical:

Behaviour in vertical writing modes.

Vertical left

Underlines will be at the left of the characters. Overlines at the right.

Vertical right

Underlines will be at the right of the characters, and overlines left.

OpenType Features

Some fonts include OpenType features like kerning, ligatures or small caps, and can also involve a variety of alternative glyphs (or even contextual glyphs) so that complex joined scripts render correctly. The latter type is generally always enabled, and Krita provides control for the former.

OpenType Feature Settings

../../_images/opentype_features_ui.png

Some features enabled in the medievalist font “Junicode”. The first four letters are the “OpenType feature tag”, which is the way these features are stored in the font. The name can be retrieved from the font if defined, otherwise Krita will provide its own name.

This provides precise control over Open Type features. OpenType features are usually defined by tags, and whether they are on or off. The drop down will provide a list of features in the primary font in the Font Family list.

For where it is feasible, a small preview is rendered, but for some features it can be hard to provide this.

Typing in a feature name or tag into the search will show a filtered list of all official features that match the search. This way, features that are not in the primary font can still be selected and enabled (which is useful when inheriting).

See also the Glyph Palette for an alternate way of selecting glyph alternates in the current text.

OpenType features, while they inherit, inherit as one list. If you want to give general hints for a given feature to be enabled over the whole text, use the Glyph properties:

Glyphs: Ligatures

Enable or disable ligatures and contextual alternates on the text.

Common

Enables liga and clig, which are commonly used ligatures.

Discretionary

Enables dlig, which are ligatures of a more decorative nature.

Historical

Enables hlig, which is intended for old-fashioned ligatures.

Contextual Alternates

Enables calt, which is frequently used by script fonts and decorative fonts to select appropriate glyphs depending on their context.

../../_images/opentype-ligatures.png

Ligatures in “Noto Serif” and “Junicode”, with the ligatures marked in blue, and the lack of ligatures marked in orange. “ffi” is a common ligature in Noto Serif, and contextual in Junicode, “st” is a discretionary ligature in Junicode and “al” is a historical ligature in Junicode.

Glyphs: Position

Enable super or subscripts on the text.

Super

Enables superscript glyphs.

Sub

Enables subscript glyphs.

../../_images/opentype-position.png

Showing sub and superscripts in the font “EB Garamond”.

Glyphs: Numeric

Enable number-related glyph forms on the text.

Style
Normal

Does not explicitly enable either style, showing the font default.

Lining

Requests figures that fit within an upper case text, using lnum.

Old Style

Requests asks for figures that fit within an upper case text, using onum.

Proportion
Normal

Does not explicitly enable either style, showing the font default.

Proportional

Requests proportional figures, using pnum.

Tabular

Requests tabular figures, using tnum, these figures all share the same advance.

Fraction
Normal

Does not explicitly enable either style, showing the font default.

Diagonal

Replaces figures separated by a slash with a proper diagonal fraction form. If a font has the numerator and denominator features, and the numbers are separated by a ‘fraction slash’ (U+2044), then this will replace the figures with numerators before the slash and denominators after the slash.

Stacked

Replaces figures separated by a slash with a nut fraction form.

Ordinals

Replaces letters that follow figures with their ordinal forms.

Slashed Zero

Replaces the number zero with one that has a slash in the middle, which can help prevent confusion with similar glyphs like the letter ‘O’.

../../_images/opentype-numeric.png

Showing numeric opentype features in the font “EB Garamond”. Selected is a fraction “1/2”, beyond that it shows old style figures for “12345” in green, tabular spacing for those old style figures in orange, and ordinals in blue.

Glyphs: Caps

Enable opentype features related to capitals, such as small caps.

Normal

Don’t use any particular capitals.

Small Caps

Sets uppercase to small caps. Typically used for abbreviations.

All Small Caps

Sets all text to small caps. Typically used for formal text.

Petite Caps

Sets uppercase to petite caps. Alternative to small caps that is exactly the same as the x height.

All Petite Caps

Sets all text to petite caps.

Titling Caps

Sets uppercase to use titling caps. Titling caps frequently are larger and more dramatic, and best suited for headers instead of body text.

Unicase

Enables the unicase feature.

../../_images/opentype-caps.png

Capital related opentype features in “EB Garamond” for small and petite caps, “Estonia” for Titling caps and in a custom comic font for unicase features.

Glyphs: East-Asian

Enable glyph forms related to East Asian text layout.

Style
Normal

Use font default.

Traditional

Use traditional glyphs.

Simplified

Use simplifies glyphs.

JIS78

Use glyphs as specified by JIS78

JIS83

Use glyphs as specified by JIS83

JIS90

Use glyphs as specified by JIS90

JIS04

Use glyphs as specified by JIS04

Width
Full Width

Use full width glyphs.

Proportional

Use proportional glyphs.

Ruby

Enable glyphs meant for ruby annotations.

../../_images/opentype-east-asian.png

Showing the east-asian font variants in orange, using the font “Yu Gothic”. Full-width is typically used for vertical text, JIS78 refers to a Japanese industry standard that specifies certain glyph shapes.

Font Kerning

Turn font kerning on or off. Font kerning enables per-glyph spacing adjustments.

Direction

Direction sets whether the text is left-to-right or right-to-left.

Unicode Bidi

Unicode bidi gives extra control over how a shifted direction should be interpreted. Typically the default algorithm is fine, but in some specific cases, it cannot tell whether a sequence should be left-to-right or right-to-left.

Normal

No controls are inserted. All text inside is reordered according to its implicit direction (which is derived from the characters used).

Embed

The sequence is directionally embedded. This means that the bidirectional algorithm will assume the explicit direction is that of the direction property, but the text itself is ordered by implicit direction.

Override

Override means that the given section will use the current direction as the explicit direction as well as the direction of the text.

Isolate

Isolate controls are inserted. Isolate means that the bidirectional algorithm treats the sequence as if it were a completely independent paragraph. Due this, the ordering has no effect on the ordering of text on either side.

Isolate-Override

Both isolate and override are applied. This means that the text is ordered explicitely by direction, but said ordering has no effect

Plain Text

direction property is unused and bididirectional algorithm will instead guess at the direction.

Unicode bidi is one of the properties that does not inherit. The reason for this is that it works by inserting bi directional algorithm controls at the ends of the given range.

Baseline

In some script traditions, the alignment point of text of different sizes are different from the alignment point with Latin text. For compatibility purposes, fonts of these scripts are usually made so the glyphs align properly with Latin text. To achieve a more traditional alignment, dominant and alignment baseline can be used.

This feature will try to use data encoded in the fonts’ baseline table. If there’s no such data, the baseline metrics will be auto-generated.

Dominant and Alignment baseline share the following options:

Alphabetic

Uses the baseline used by most scripts. Default.

Ideographic

Uses the Ideographic design square and selects the bottom end in horizontal mode, and the left side in vertical mode.

Central

Uses the Ideographic design square and selects the vertical center in horizontal mode, and the horizontal center in vertical mode.

Hanging

Align to the headstroke as used by North-Brahmic scripts.

Middle

Align to the center between the alphabetic baseline and x-height when laying out horizontally, in vertical this is the central baseline.

Mathematical

Align to the mathematical baseline, so that operator symbols align.

Text Top

Align to the ascender.

Text Bottom

Align to the descender.

Dominant Baseline

../../_images/baseline-example-devanagari.png

In North Brahmic scripts like Devanagari, letters of different sizes align at the headstroke. In the examples here, the top sample shows the default behaviour, while the bottom sample uses hanging over the whole text, which provides the traditional headstroke alignment.

Dominant Baseline specifies how stretches of text of different sizes are aligned, it is also the default for Alignment Baseline. It has one unique value, Auto, which translates to Alphabetic in horizontal and Central in vertical Writing Mode.

Alignment Baseline

Alignment Baseline allows control over how this range of text is aligned to the parent text. It has one unique property Baseline, which means it will take its value from the Dominant Baseline property.

Alignment baseline does not inherit. Instead, child text will try to align to the specified baseline of the parent text.

Baseline Shift

Baseline shift allows moving the text away from the baseline, either by predefined super and subscript values, or by a fixed amount.

Length

Shift text by a specified amount.

Super

Shift text so it aligns to the inherited super script offset. Said value is retrieved from the font.

Sub

Shift text so it aligns to the inherited sub script offset. Said value is retrieved from the font.

Baseline shift does not inherit. Instead, shifts will be added to one another, allowing the following:

../../_images/baseline-nested-super-script.png

Nested baseline-shift super definitions. This is only possible by editing the text with the SVG source editor.

White Space

The CSS white space rule controls how multiples of spaces are handled, and whether the text can wrap.

By default, this property is hidden.

Language

The language of this text shape. Language affects a number of properties, like glyph shape, upper- and lowercase and line breaking.

The text input allows typing any valid BCP 47 code. Pressing enter will cause Krita to parse the code. Typing a language name or code into the text input will show a filtered search pop-up.

Pressing on the down arrow will show all previously used locales this session, as well as stored locales. By toggling the check box in front of a locale, you can indicate that they need to be stored for future sessions.

There is also a Script dropdown. Normally, it is possible to guess the script from the language and country. However, in some places, different scripts can be used for the same language, and sometimes the main script being used has changed over the years. The script dropdown allows setting the script in these cases.

Fill

Fill can currently not be set with the text properties docker. You will need to use the Gereedschap voor selectie van vormen to set it on the paragraph, or change the foreground color with any of the color selectors.

Stroke

Stroke can currently not be configured with the text properties docker. You will need to use the Gereedschap voor selectie van vormen to set it, or use the SVG Source Editor in the text tool to manually set a stroke.

Paragraph Properties

Paragraph properties are the properties that can only be applied over a whole text shape.

Writing Mode

Writing Mode sets whether the text flows horizontally or vertically, and in the latter case, whether the block flows right-to-left or left-to-right.

See also Direction.

Notitie

A related feature is “Text Orientation”, which allows rotating horizontal text when it is typeset vertically. Krita does not current support this feature, but it is planned in the future.

Text Indent

Text Indent allows setting indentation at the line start. Only works when the text is wrapping. The main control is a slider defining the size of the indent. There’s two more advanced controls:

Hanging Indentation

This does not apply indentation to the stating line, but instead the subsequent lines.

Indent after hard breaks

This makes it so each line after a hard break qualifies as a starting lines. Frequently used for poetry.

Text Align

Text Align sets the alignment for the given block of characters.

The main control of this shows three buttons that correspond to start, middle and end. These properties are affected by direction, meaning that for right-to-left text, start will be the same as align right. The final button is the justification toggle.

Opening the advanced settings shows the following:

Text Align

This allows you to set the text alignment when text is wrapped in a shape.

Align Last

When Text Align is set to Justified, this controls what to do with the final line.

Text Anchor

Text anchor controls how the text is anchored, instead of aligned. It somewhat resembles Text Align in that it allows text to flow from the left or right, but where Text Align is alignment within a space, Text Anchor is relative to the starting point of the text. You can use Text Anchor to set the anchor for each line, as long as the text is not being auto wrapped.

This means that there’s no justification for text that is not wrapped in shape.

By default, this property is always visible, even when not set.

Hanging Punctuation

Hanging punctuation allows hanging opening and closing punctuation as well as commas. This implementation only implements East-Asian style hanging punctuation.

Hang first

Opening punctuation such as opening quotes or opening brackets at the start of the paragraph will be hung.

Line end

This toggle will allow or force commas and periods to hang at the end of any line.

Hang last

Closing punctuation such as closing quotes or closing brackets at the end of the paragraph will be hung.

Tab Size

Tab Size allows defining the size of tabulation characters. Tabulation characters (inserted with tab) are a type of white space that snaps to the nearest multiple of the reference size. Its main use case is to align columns of information without resorting to tables.

Tab size has one unique unit: Sp. This means the tab size uses the current advance of the space character as unit.

Text Rendering

Text Rendering controls the hinting and rendering style for the text shape.

Optimize Speed

The hinting style for monochrome bitmaps is used, and anti-aliasing is turned off. Krita will also take care to snap the glyphs to the nearest pixel. This allows for pixel art fonts to look good, as well as being the fastest to render option.

Optimize Legibility

In vertical writing modes, full hinting is enabled, while for horizontal, hinting only happens vertically. Krita will additionally snap relevant metrics in these directions.

Geometric Precision

No hinting is performed at all.

Auto

Same as Geometric Precision.

../../_images/unifont-text-rendering-example.png

The Krita slogan in various scripts, typeset with the “Unifont” pixel font. By using Optimize Speed, Krita knows to not just disable anti-aliasing, but it will also try to snap the glyphs so that Baseline Shift, Letter Spacing and Line Height will look good.

Text Area

These properties are related to Text in Shape.

Shape Padding

This is the padding that is calculated on the Inside shapes.

Shape Margin

This is margin around the “Subtract” shapes that is added before they are removed from the “Inside” shapes.

Style Presets

Voorinstellingen van stijl. allow storing combinations of properties for later use. See that page for information about editing style presets.

mouseleft an entry will select it for editing, while double mouseleft will apply the active properties onto the text.

The buttons at the bottom allow modifying the style presets:

Import Style Presets

Import an SVG with a style preset definition inside.

Delete Style Presets

Disable a given style preset.

Create Style Preset

Creates a style preset from the current settings.

Clone Preset

Clones the current presets and shows the edit window.

Edit Preset

Edits the current selected presets.