10#include <klocalizedstring.h>
14 QMap<QString, KoOpenTypeFeatureInfo>
infoMap;
24 i18nc(
"@title",
"Access All Alternates"),
25 i18nc(
"@tooltip",
"Access any possible substitutions."),
29 i18nc(
"@title",
"Contextual Alternates"),
30 i18nc(
"@tooltip",
"Replaces glyphs depending on their context within a text."),
33 i18nc(
"@title",
"Contextual Ligatures"),
34 i18nc(
"@tooltip",
"Replaces sequences of glyphs with ligatures depending on their context within a text."),
37 i18nc(
"@title",
"Contextual Swash"),
38 i18nc(
"@tooltip",
"Replaces glyphs with swashed glyphs depending on their context within a text."),
41 i18nc(
"@title",
"Discretionary Ligatures"),
42 i18nc(
"@tooltip",
"Replaces sequences of glyphs with ligatures intended for typographic effect."),
45 i18nc(
"@title",
"Final Glyph on Line Alternates"),
46 i18nc(
"@tooltip",
"Replaces glyphs with their line-end forms."),
49 i18nc(
"@title",
"Historical Forms"),
50 i18nc(
"@tooltip",
"Replaces glyphs with their historical forms."),
53 i18nc(
"@title",
"Historical Forms"),
54 i18nc(
"@tooltip",
"Replaces sequences glyphs with ligatures that were in use in the past, but rare today."),
57 i18nc(
"@title",
"Justification Alternates"),
58 i18nc(
"@tooltip",
"Replaces glyphs with their alternates meant for justification."),
61 i18nc(
"@title",
"Standard Ligatures"),
62 i18nc(
"@tooltip",
"Replaces sequences glyphs with common ligatures."),
65 i18nc(
"@title",
"Left Bounds"),
66 i18nc(
"@tooltip",
"This adjusts glyphs so there is no space at the left side."),
69 i18nc(
"@title",
"Localized Forms"),
70 i18nc(
"@tooltip",
"This replaces glyphs with language specific versions."),
73 i18nc(
"@title",
"Optical Bounds"),
74 i18nc(
"@tooltip",
"Adjusts glyphs so they align by their optical bounds. Doesn't do anything in Krita."),
77 i18nc(
"@title",
"Ornaments"),
78 i18nc(
"@tooltip",
"Replaces glyphs with ornaments for decorative purposes."),
81 i18nc(
"@title",
"Randomize"),
82 i18nc(
"@tooltip",
"Replaces glyphs with random alternates."),
85 i18nc(
"@title",
"Right Bounds"),
86 i18nc(
"@tooltip",
"This adjusts glyphs so there is no space at the right side."),
89 i18nc(
"@title",
"Stylistic Alternates"),
90 i18nc(
"@tooltip",
"Replaces glyphs with stylistic alternates that do not fit in other categories."),
93 i18nc(
"@title",
"Swash"),
94 i18nc(
"@tooltip",
"Replaces glyphs with swashed alternates."),
99 i18nc(
"@title",
"Glyph Composition/Decomposition"),
100 i18nc(
"@tooltip",
"This composes or decomposes graphemes so that the resulting glyphs can later be recomposed. Commonly used to handle diacritics."),
103 i18nc(
"@title",
"Kerning"),
104 i18nc(
"@tooltip",
"This controls kerning on the font."),
107 i18nc(
"@title",
"Mark Positioning"),
108 i18nc(
"@tooltip",
"This controls the positioning of mark glyphs on base glyphs. Commonly used for diacritics."),
111 i18nc(
"@title",
"Mark Positioning"),
112 i18nc(
"@tooltip",
"This controls the positioning of mark glyphs onto other mark glyphs. Commonly used for diacritics."),
115 i18nc(
"@title",
"Required Contextual Alternates"),
116 i18nc(
"@tooltip",
"Replaces glyphs contextually with alternates, required to make the font work."),
119 i18nc(
"@title",
"Required Ligatures"),
120 i18nc(
"@tooltip",
"Replaces sequences of glyphs with required ligatures."),
123 i18nc(
"@title",
"Required Variation Alternates"),
124 i18nc(
"@tooltip",
"Replaces glyphs in a variable font with ones suited for the current variation."),
127 i18nc(
"@title",
"Optical size"),
128 i18nc(
"@tooltip",
"Indicates how much the font is suitable for its current size. Does nothing in Krita."),
131 i18nc(
"@title",
"Vertical Kerning"),
132 i18nc(
"@tooltip",
"This controls vertical kerning on the font."),
137 i18nc(
"@title",
"Alternative Fractions"),
138 i18nc(
"@tooltip",
"Replaces figures separated by a slash with a nut fraction form."),
141 i18nc(
"@title",
"Denominators"),
142 i18nc(
"@tooltip",
"Replaces figures with forms that are suited to represent the denominator in a fraction."),
145 i18nc(
"@title",
"Dotless Forms"),
146 i18nc(
"@tooltip",
"Replaces dotted letters such as i and j with dotless forms, for use in mathematical formula."),
149 i18nc(
"@title",
"Flattened accent forms"),
150 i18nc(
"@tooltip",
"Replaces accents on capital letters with flattened forms."),
153 i18nc(
"@title",
"Fractions"),
154 i18nc(
"@tooltip",
"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."),
157 i18nc(
"@title",
"Lining Figures"),
158 i18nc(
"@tooltip",
"Replaces oldstyle figures with lining figures, which harmonize well with uppercase letters."),
161 i18nc(
"@title",
"Mathematical Greek"),
162 i18nc(
"@tooltip",
"Replaces normal Greek script with glyphs intended for mathematical usage."),
165 i18nc(
"@title",
"Alternate Annotation Forms"),
166 i18nc(
"@tooltip",
"Replaces figures and letters with notational forms, like encircled."),
169 i18nc(
"@title",
"Numerators"),
170 i18nc(
"@tooltip",
"Replaces figures with forms that are suited to represent the numerator in a fraction."),
173 i18nc(
"@title",
"Oldstyle Figures"),
174 i18nc(
"@tooltip",
"Replaces lining figures with oldstyle figures, which harmonize well with lowercase letters."),
177 i18nc(
"@title",
"Ordinals"),
178 i18nc(
"@tooltip",
"Replaces letters that follow figures with their ordinal forms."),
181 i18nc(
"@title",
"Proportional Figures"),
182 i18nc(
"@tooltip",
"Replaces tabular figures with proportional figures."),
185 i18nc(
"@title",
"Scientific Inferiors"),
186 i18nc(
"@tooltip",
"Replaces glyphs with forms that are suited for displaying the number in chemical formulas."),
189 i18nc(
"@title",
"Math script style alternates"),
190 i18nc(
"@tooltip",
"Replaces glyphs with ones more suited for super- and subscripts."),
193 i18nc(
"@title",
"Subscript"),
194 i18nc(
"@tooltip",
"Replaces glyphs with ones more suited for subscript."),
197 i18nc(
"@title",
"Superscript"),
198 i18nc(
"@tooltip",
"Replaces glyphs with ones more suited for superscript."),
201 i18nc(
"@title",
"Tabular Figures"),
202 i18nc(
"@tooltip",
"Replaces proportional figures with tabular figures."),
205 i18nc(
"@title",
"Slashed Zero"),
206 i18nc(
"@tooltip",
"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'."),
211 i18nc(
"@title",
"Case-Sensitive Forms"),
212 i18nc(
"@tooltip",
"Adjusts glyphs to work better with text that consists of only capitals or lining figures."),
215 i18nc(
"@title",
"Capital Spacing"),
216 i18nc(
"@tooltip",
"Adjusts inter-glyph spacing for all-capital text."),
219 i18nc(
"@title",
"Petite Capitals From Capitals"),
220 i18nc(
"@tooltip",
"Replaces uppercase letters with petite capital forms, which are closer to the x-height of a font than small capital forms."),
223 i18nc(
"@title",
"Small Capitals From Capitals"),
224 i18nc(
"@tooltip",
"Replaces uppercase letters with small capital forms."),
227 i18nc(
"@title",
"Petite Capitals"),
228 i18nc(
"@tooltip",
"Replaces lowercase letters with petite capital forms, which are closer to the x-height of a font than small capital forms."),
231 i18nc(
"@title",
"Small Capitals"),
232 i18nc(
"@tooltip",
"Replaces lowercase letters with small capital forms."),
235 i18nc(
"@title",
"Titling"),
236 i18nc(
"@tooltip",
"Replaces glyphs with alternate forms suited for header text."),
239 i18nc(
"@title",
"Unicase"),
240 i18nc(
"@tooltip",
"Replaces both upper and lowercase glyphs with unicase glyphs."),
245 i18nc(
"@title",
"Above-base Forms"),
246 i18nc(
"@tooltip",
"Controls substitution for above base forms in Khmer and other Indic scripts"),
249 i18nc(
"@title",
"Above-base Mark Positioning"),
250 i18nc(
"@tooltip",
"Controls above-base mark positioning for Indic scripts."),
253 i18nc(
"@title",
"Above-base Substitutions"),
254 i18nc(
"@tooltip",
"Controls above-base mark ligatures for Indic scripts."),
257 i18nc(
"@title",
"Akhand"),
258 i18nc(
"@tooltip",
"Controls Akhand ligatures for Indic scripts."),
261 i18nc(
"@title",
"Below-base Forms"),
262 i18nc(
"@tooltip",
"Controls substitution for below base forms in Indic scripts."),
265 i18nc(
"@title",
"Below-base Mark Positioning"),
266 i18nc(
"@tooltip",
"Controls below-base mark positioning for Indic scripts."),
269 i18nc(
"@title",
"Below-base Substitutions"),
270 i18nc(
"@tooltip",
"Controls below-base mark ligatures for Indic scripts."),
273 i18nc(
"@title",
"Conjunct Form After Ro"),
274 i18nc(
"@tooltip",
"Controls glyphs following conjoined Ro in Khmer script."),
277 i18nc(
"@title",
"Conjunct Forms"),
278 i18nc(
"@tooltip",
"Controls conjunct forms in Indic scripts."),
281 i18nc(
"@title",
"Distances"),
282 i18nc(
"@tooltip",
"Controls distances in Indic scripts, to avoid collisions."),
285 i18nc(
"@title",
"Half Forms"),
286 i18nc(
"@tooltip",
"Replaces consonants in Indic scripts with their half forms."),
289 i18nc(
"@title",
"Halant Forms"),
290 i18nc(
"@tooltip",
"Replaces consonants in Indic scripts with their halant forms."),
293 i18nc(
"@title",
"Nukta Forms"),
294 i18nc(
"@tooltip",
"Replaces consonants combined with Nukta in Indic scripts with their Nukta forms."),
297 i18nc(
"@title",
"Pre-base Forms"),
298 i18nc(
"@tooltip",
"Replaces the pre-base form of a consonant in Khmer script, when a 'Coeng Ra' situation occurs."),
301 i18nc(
"@title",
"Pre-base Substitutions"),
302 i18nc(
"@tooltip",
"Replaces consonants with their pre-base forms in Indic scripts."),
305 i18nc(
"@title",
"Post-base Forms"),
306 i18nc(
"@tooltip",
"Replaces consonants with their post-base forms in Gurmukhi, Malayalam, and Khmer."),
309 i18nc(
"@title",
"Post-base Substitutions"),
310 i18nc(
"@tooltip",
"Replaces base glyphs and post-base glyphs with a ligature in Indic scripts."),
313 i18nc(
"@title",
"Rakar Forms"),
314 i18nc(
"@tooltip",
"Replaces sequences of glyphs in Indic scripts with their Rakar forms."),
317 i18nc(
"@title",
"Reph Form"),
318 i18nc(
"@tooltip",
"Replaces Reph forms in Indic scripts with a consonant and Halant sequence."),
321 i18nc(
"@title",
"Vattu Variants"),
322 i18nc(
"@tooltip",
"Replaces ligatures in Indic scripts with a base consonant and Vattu form."),
327 i18nc(
"@title",
"Contextual Half-width Spacing"),
328 i18nc(
"@tooltip",
"Respaces full-width glyphs to be half-width depending on the context, common examples include CJK full-width brackets and other punctuation marks."),
331 i18nc(
"@title",
"Centered CJK Punctuation"),
332 i18nc(
"@tooltip",
"Adjusts non-centered punctuation to be centered in CJK scripts."),
335 i18nc(
"@title",
"Expert Forms"),
336 i18nc(
"@tooltip",
"Replaces standard forms in Japanese fonts with expert forms."),
339 i18nc(
"@title",
"Full Widths"),
340 i18nc(
"@tooltip",
"Replaces or respaces proportional glyphs with full-width glyphs."),
343 i18nc(
"@title",
"Contextual Half-width Spacing"),
344 i18nc(
"@tooltip",
"Respaces full-width glyphs to be half-width, common examples include CJK full-width brackets and other punctuation marks."),
347 i18nc(
"@title",
"Horizontal Kana Alternates"),
348 i18nc(
"@tooltip",
"Replaces standard kana in Japanese fonts with ones suited for horizontal layout."),
351 i18nc(
"@title",
"Hangul"),
352 i18nc(
"@tooltip",
"Replaces hanja in Korean with the corresponding hangul. Deprecated."),
355 i18nc(
"@title",
"Hojo Kanji Forms"),
356 i18nc(
"@tooltip",
"Replaces 'JIS X 0213:2004' form kanji in Japanese fonts with the Hojo ('JIS X 0212-1990') forms."),
359 i18nc(
"@title",
"Half Widths"),
360 i18nc(
"@tooltip",
"Replaces or respaces proportional or full-width glyphs with half-width glyphs."),
363 i18nc(
"@title",
"Italics"),
364 i18nc(
"@tooltip",
"Replaces Latin glyphs in a CJK font with their italic forms."),
367 i18nc(
"@title",
"JIS78 Forms"),
368 i18nc(
"@tooltip",
"Replaces standard form kanji in Japanese fonts with the JIS78 forms."),
371 i18nc(
"@title",
"JIS83 Forms"),
372 i18nc(
"@tooltip",
"Replaces standard form kanji in Japanese fonts with the JIS83 forms."),
375 i18nc(
"@title",
"JIS90 Forms"),
376 i18nc(
"@tooltip",
"Replaces standard form kanji in Japanese fonts with the JIS90 forms."),
379 i18nc(
"@title",
"JIS2004 Forms"),
380 i18nc(
"@tooltip",
"Replaces standard form kanji in Japanese fonts with the JIS2004 forms."),
383 i18nc(
"@title",
"Leading Jamo Forms"),
384 i18nc(
"@tooltip",
"Replaces sequences of leading class Hangul Jamo with a combined leading form."),
387 i18nc(
"@title",
"NLC Kanji Forms"),
388 i18nc(
"@tooltip",
"Replaces standard form kanji in Japanese fonts with the NLC forms."),
391 i18nc(
"@title",
"Proportional Alternate Widths"),
392 i18nc(
"@tooltip",
"Respaces full-width glyphs to fit in a proportional context."),
395 i18nc(
"@title",
"Proportional Kana"),
396 i18nc(
"@tooltip",
"Replaces full-width kana in Japanese fonts with proportional kana."),
399 i18nc(
"@title",
"Proportional Widths"),
400 i18nc(
"@tooltip",
"Replaces uniform-width glyphs with proportional glyphs."),
403 i18nc(
"@title",
"Quarter Widths"),
404 i18nc(
"@tooltip",
"Replaces glyphs with quarter-width glyphs."),
407 i18nc(
"@title",
"Ruby Notation Forms"),
408 i18nc(
"@tooltip",
"Replaces glyphs in CJK fonts with ones suited for the small text in ruby annotations."),
411 i18nc(
"@title",
"Simplified Forms"),
412 i18nc(
"@tooltip",
"Replaces glyphs in CJK fonts with 'simplified' forms."),
415 i18nc(
"@title",
"Trailing Jamo Forms"),
416 i18nc(
"@tooltip",
"Replaces sequences of trailing class Hangul Jamo with a combined trailing form."),
419 i18nc(
"@title",
"Traditional Name Forms"),
420 i18nc(
"@tooltip",
"Replaces standard form Kanji in Japanese fonts with the ones traditionally used in names."),
423 i18nc(
"@title",
"Traditional Forms"),
424 i18nc(
"@tooltip",
"Replaces glyphs in CJK fonts with 'traditional' forms."),
427 i18nc(
"@title",
"Third Widths"),
428 i18nc(
"@tooltip",
"Replaces glyphs with third-width glyphs."),
431 i18nc(
"@title",
"Alternate Vertical Metrics"),
432 i18nc(
"@tooltip",
"Repositions glyphs so they look more appropriate in vertical layout."),
435 i18nc(
"@title",
"Alternate Half Widths"),
436 i18nc(
"@tooltip",
"Repositions glyphs so they look more appropriate in horizontal layout."),
439 i18nc(
"@title",
"Vertical Contextual Half-width Spacing"),
440 i18nc(
"@tooltip",
"Respaces full-width glyphs to be half-width depending on the context, common examples include CJK full-width brackets and other punctuation marks."),
443 i18nc(
"@title",
"Vertical Alternates"),
444 i18nc(
"@tooltip",
"Replaces glyphs in CJK fonts with ones suited for vertical writing."),
447 i18nc(
"@title",
"Alternate Vertical Half Metrics"),
448 i18nc(
"@tooltip",
"Repositions glyphs so they are half-width in a vertical writing context."),
451 i18nc(
"@title",
"Vowel Jamo Forms"),
452 i18nc(
"@tooltip",
"Replaces sequences of vowel class Hangul Jamo with a combined vowel form."),
455 i18nc(
"@title",
"Vertical Kana Alternates"),
456 i18nc(
"@tooltip",
"Replaces standard kana in Japanese fonts with ones suited for vertical layout."),
459 i18nc(
"@title",
"Proportional Alternate Vertical Metrics"),
460 i18nc(
"@tooltip",
"Repositions glyphs so they are proportional in a vertical writing context."),
463 i18nc(
"@title",
"Vertical Alternates for Rotation"),
464 i18nc(
"@tooltip",
"Replaces a subset of glyphs with rotated variants for vertical layout."),
467 i18nc(
"@title",
"Vertical Alternates and Rotation"),
468 i18nc(
"@tooltip",
"Replaces all horizontal-script glyphs with rotated variants for vertical layout."),
473 i18nc(
"@title",
"Cursive Positioning"),
474 i18nc(
"@tooltip",
"Adjusts the position of glyphs so they cursively connect."),
477 i18nc(
"@title",
"Terminal Forms"),
478 i18nc(
"@tooltip",
"Replaces the final glyph in a sequence of glyphs in a joined script with its end form."),
481 i18nc(
"@title",
"Terminal Form #2"),
482 i18nc(
"@tooltip",
"Replaces the Alaph glyph at the end of Syriac words with its appropriate form."),
485 i18nc(
"@title",
"Terminal Form #3"),
486 i18nc(
"@tooltip",
"Replaces the Alaph glyph at the end of Syriac words with its appropriate form, when neither Terminal forms or Terminal forms 2 are applicable."),
489 i18nc(
"@title",
"Initial Forms"),
490 i18nc(
"@tooltip",
"Replaces the first glyph in a sequence of glyphs in a joined script with its start form."),
493 i18nc(
"@title",
"Initial Forms"),
494 i18nc(
"@tooltip",
"Replaces a glyph in a sequence of glyphs in a joined script with its isolated form."),
497 i18nc(
"@title",
"Left-to-right glyph alternates"),
498 i18nc(
"@tooltip",
"Replaces glyphs with their left-to-right alternates."),
501 i18nc(
"@title",
"Left-to-right mirrored forms"),
502 i18nc(
"@tooltip",
"Replaces glyphs with their left-to-right mirrored forms."),
505 i18nc(
"@title",
"Medial Forms"),
506 i18nc(
"@tooltip",
"Replaces glyphs in the middle of a sequence of glyphs in a joined script with their medial forms."),
509 i18nc(
"@title",
"Medial Forms #2"),
510 i18nc(
"@tooltip",
"Replaces the Alaph glyph in the middle of Syriac words with its appropriate form."),
513 i18nc(
"@title",
"mset"),
514 i18nc(
"@tooltip",
"Positions Arabic combining marks in fonts for Windows 95 using glyph substitution."),
517 i18nc(
"@title",
"Right-to-left glyph alternates"),
518 i18nc(
"@tooltip",
"Replaces glyphs with their right-to-left alternates."),
521 i18nc(
"@title",
"Right-to-left mirrored forms"),
522 i18nc(
"@tooltip",
"Replaces glyphs with their right-to-left mirrored forms."),
525 i18nc(
"@title",
"Stretching Glyph Decomposition"),
526 i18nc(
"@tooltip",
"Replaces glyphs that need to stretch with stretchable glyphs."),
530 for (
int i = 1; i <= 20; i++) {
531 char *tag{
new char[4]{
's',
's',
'0',
'0'}};
532 tag[2] = (i/10) +
'0';
533 tag[3] = (i%10) +
'0';
536 i18nc(
"@title",
"Stylistic Set %1", i),
537 i18nc(
"@tooltip",
"Replaces glyphs with alternates."),
543 for (
int i = 1; i <= 99; i++) {
544 char *tag{
new char[4]{
'c',
'v',
'0',
'0'}};
545 tag[2] = (i/10) +
'0';
546 tag[3] = (i%10) +
'0';
549 i18nc(
"@title",
"Character Variant %1", i),
550 i18nc(
"@tooltip",
"Replaces glyphs with alternates."),
555 d->infoMap.insert(feature.
tag, feature);
566 return d->infoMap.value(tag, def);
571 return d->infoMap.keys();
The KoOpenTypeFeatureInfoFactory class.
~KoOpenTypeFeatureInfoFactory()
QList< QString > tags() const
tags
KoOpenTypeFeatureInfo infoByTag(const QLatin1String &tag) const
infoByTag
QMap< QString, KoOpenTypeFeatureInfo > infoMap
QScopedPointer< Private > d
KoOpenTypeFeatureInfoFactory()
@ GPOS8
Chained-Contextual positioning.
@ GSUB4
Ligature substitution.
@ GSUB1
Single substitution.
@ GSUB2
Multiple substitution (1 -> 2)
@ GPOS2
Pair position adjustment.
@ GSUB8
Reverse Chained Contextual substitution.
@ GPOS1
Single position adjustment.
@ GSUB3
Alternate substitution.
@ GPOS4
Mark-to-base adjustment.
@ GPOS5
Mark-to-ligature adjustment.
@ GSUB5
Contextual substitution.
@ GPOS6
Mark-to-mark adjustment.
@ GSUB6
Chained Contextual substitution.
@ GPOS3
Cursive attachment.
QLatin1String tag
4 char tag.