Fancy text
๐๐๐ซ๐ ๐ถ Unicode styles on one keyboard: pick a style from the strip, and what you see on the keys is what you type.
Fancy Text isnโt a language. Itโs 31 Unicode โfontโ styles on a single keyboard, plus a Normal style that types plain letters. Add it once, pick a style from the strip above the keys, and every letter key immediately shows the styled glyph. What you type is already ๐ฏ๐ช๐ท๐ฌ๐: thereโs no separate conversion step afterward.


Turning it on
Section titled โTurning it onโFancy Text lives in the same language catalogue as everything else, and Languages overview covers how that catalogue works in general. Search for โfancyโ (or scroll to โ๐๐ช๐ท๐ฌ๐ ยท Fancy Textโ) and tap the row. Thatโs the whole setup: one entry in your language list, one layout, one stop on the ๐ cycle and the OS keyboard switcher.
The Fancy text tool
Section titled โThe Fancy text toolโIf you only want fancy letters now and then, the Fancy text toolbar tool does the same thing in one press, from the keyboard, without a trip to Settings. Pin it from WM Keyboard ย Tools (itโs in the Quick actions group) or find it in the toolbox. Press it and the fancy keyboard appears, adding Fancy Text to your language list if it wasnโt there already. Press it again and youโre back on the layout you came from, with Fancy Text taken out of the ๐ cycle again so it isnโt in the way of the languages you actually read. The toolโs icon stays lit for as long as the fancy keyboard is the one typing, however you got there.
Its own screen, at WM Keyboard ย Tools ย Fancy text, has three settings:
- Style to start with. Pin one style and the tool always turns on in it. Left on โLast usedโ, it starts from whatever style you picked last. Either way the strip over the keys still switches styles for the rest of the session, and a pinned style is never overwritten by it.
- Keep the language after you turn it off. On, Fancy Text stays in your language list once the tool has added it, so a spacebar swipe reaches it too. Off (the default) takes it back out again.
- Turn off when the keyboard closes. On by default. For one nickname or one message: leave the field and the keyboard comes back typing plainly. It only undoes what the tool itself turned on, so a Fancy Text language you added in Settings stays put.
On a hardware keyboard the tool answers to the leader key followed by F; see Hardware keyboards.
The same switch also lives in Settings as the Fancy text toggle on WM Keyboard ย Rows & bars, next to the row order, where the style strip can be dragged above or below the other rows.
Picking a style
Section titled โPicking a styleโWhile the fancy keyboard is active, a strip appears above the keys with every style written in itself: Normal, ๐๐จ๐ฅ๐, ๐๐ต๐ข๐ญ๐ช๐ค, ๐๐ฏ๐๐จ๐ฑ๐ฒ๐ฏ, ๐ ๐ ๐ ก๐ ๐ ๐ ๐ and so on. Tap a chip and the keys restyle instantly. Normal, first in the strip, puts the plain letters back without leaving the fancy keyboard. The strip sits nearest the keys by default; WM Keyboard ย Rows & bars ย Row order moves it above the other rows. The pick is remembered until you change it. The dropdown on the stripโs left edge names the current style. Open it and every style appears written in itself, exactly like the chips above; a screen reader still gets the plain name for each one.
The same choice also lives in Settings, on the Fancy Text language screen, as a Style row.
The full set, with the name each one shows:
| Style | Style | Style |
|---|---|---|
| Bold | Sans-serif | Circled |
| Italic | Sans Bold | Circled (Filled) |
| Bold Italic | Sans Italic | Squared |
| Script | Sans Bold Italic | Squared (Filled) |
| Bold Script | Monospace | Small Caps |
| Fraktur | Fullwidth | Superscript |
| Bold Fraktur | Double-struck | Strikethrough |
| Underline | Regional Indicator | Parenthesized |
| Double Underline | Overline | Slashthrough |
| Wavy Underline | Dotted | Upside Down |
| Bypass |
The keyboard itself
Section titled โThe keyboard itselfโThe fancy layout is a plain QWERTY grid: three letter rows plus a bottom row for ?123, comma, ๐, space, period, and Enter. Comma, period, space and the other symbols always commit as plain ASCII, because only letters and digits get the styled substitution. There are no long-press popups on the letter keys. Digits come from the shared ?123 panel, or the number row if you have it on.
Numbers
Section titled โNumbersโDigits are styled too, wherever Unicode has digits for the style: Bold types ๐๐๐, Double-struck ๐๐๐, Sans-serif ๐ฃ๐ค๐ฅ, Sans Bold ๐ญ๐ฎ๐ฏ, Monospace ๐ท๐ธ๐น, Fullwidth ๏ผ๏ผ๏ผ, Circled โ โกโข, Circled (Filled) โถโทโธ, Superscript ยนยฒยณ and Parenthesized โดโตโถ. The digit keys show the styled form, like the letters.
Unicode has no italic, script or fraktur digits. The bold variants of those (Bold Italic, Bold Script, Bold Fraktur) borrow the bold digits, and Sans Italic and Sans Bold Italic borrow the sans ones, so a word and the number next to it keep the same weight. Italic, Script, Fraktur and every other style type plain digits. Parenthesized has no zero, so 0 stays plain there.
Hold any digit key, on the symbols panel or the number row, for every styled form of that digit in one popup, whatever style is active: bold, double-struck, sans-serif, sans bold, monospace, fullwidth, circled, negative circled (โถ), sans-serif circled (โ), parenthesized (โด), with a full stop (โ), superscript (ยน), subscript (โ) and segmented LCD digits (๐ฏฑ). The last few belong to no style, so the popup is the only way to type them. The keyโs usual alternates stay first, so a plain hold still does what it always did. Segmented digits are from Unicode 13, and older fonts show them as empty boxes.
Hover or tap a key with a corner hint to see all its long-press characters.
How it works
Section titled โHow it worksโThe layout stores plain letters, and the selected style substitutes each one at the last moment, both on the key labels and in what a tap commits. Shift works exactly like any other layout: it uppercases the plain letter, and the style supplies its capital form where one exists. Two different Unicode techniques produce the styling, depending on the style:
- Precomposed characters, mostly from the Mathematical Alphanumeric Symbols block, for Bold, Italic, Script, Fraktur, Double-struck, Sans, and Monospace (and their combinations). These sit outside the Basic Multilingual Plane, so they need a font with supplementary-plane coverage to render. See the gaps below.
- Combining marks stacked on plain ASCII letters, for Strikethrough (a stroke mark after each letter) and Underline (a low-line mark after each letter). These stay inside the BMP, so they render reliably almost everywhere, at the cost of being two codepoints per letter instead of one.
Circled, Squared, Fullwidth, Small Caps, and Superscript draw from a few other existing Unicode blocks. Circled (non-filled) is Enclosed Alphanumerics, Fullwidth is the Fullwidth Forms, and Small Caps and Superscript come from the phonetic and modifier-letter ranges, all of which are inside the BMP. Squared, Squared (Filled), and Circled (Filled) are the exception in that group: they sit in the Enclosed Alphanumeric Supplement, which is outside the BMP like the mathematical styles. No font ships with the app for any of this: rendering depends entirely on whatever font the app or system youโre typing into already has installed, which is where the gaps below come from.
Not every style has full alphabet coverage. Italic, Script, non-bold Fraktur, and Double-struck hit codepoints the Mathematical Alphanumeric block deliberately leaves empty, so those specific letters fall back to older, BMP-only symbols instead. Superscript goes further: Unicode has no capital superscript letters at all, and no superscript โqโ in any case, so shift changes nothing there and โqโ types a plain lowercase q.
Details & edge cases
Section titled โDetails & edge casesโCase coverage varies by style. Superscript and Small Caps have no capitals, so shift leaves them as they are. Unicode doesnโt define capital forms for them. Squared, Squared (Filled), and Circled (Filled) are single-case too, since Unicode only assigned capital-shaped symbols for those blocks. Circled (non-filled), Fullwidth, Double-struck, and every Fraktur/Script variant do have real upper/lower distinction.
A handful of letters fall back to an older block. Double-struck is missing astral capitals for C, H, N, P, Q, R, and Z, and non-bold Fraktur for C, H, I, R, and Z, so both fall back to the Letterlike Symbols block for those. Non-bold Script is missing letters in both cases: e, g, o in lowercase and B, E, F, H, I, L, M, R in capitals. Italic has exactly one gap, the lowercase h. Bold Fraktur, Bold Italic, and Bold Script have no such gaps, since their Unicode blocks are complete. Small Caps has a gap of its own kind: Unicode never encoded a small-capital X, so โxโ types a plain lowercase x.
No suggestions, no autocorrect, no swipe typing. Fancy Text ships no bundled dictionary and has no downloadable wordlist, so the language screenโs Dictionaries section has no word list row, only Custom dictionaries. The styled letters never enter the composing buffer either, in any style, so nothing you type here is learned or corrected. Glide typing is off here for the same reason: the keyboard only turns a swipe into a word when the active language has a word list that covers the letters on the grid, and Fancy Text has none.
The keyboardโs own search boxes get plain letters. Typing into the emoji search, GIF search, or any other panel search while the fancy keyboard is active types unstyled letters, so those searches actually match. Only text committed to the appโs field is styled.
Search and screen readers in the receiving app are governed by that app, not by WM Keyboard. Styled Unicode letters arenโt the same codepoints as their plain equivalents, so a search box or screen reader that only matches literal ASCII text wonโt recognize ๐ฅ๐๐๐ค as โthis.โ Thatโs general behavior of the receiving app, not something this keyboard controls either way.
The base grid is an ordinary layout, so you can open it in the visual layout editor to remap a key or add long-press entries. See Custom layouts & the layout editor. The styles themselves arenโt separate layouts anymore, so they canโt be edited individually: your remapped keys apply to every style.
