Fancy Text Generator

Borrowed letters, with the fine print shown.

  • 25 Unicode styles
  • Code points shown
  • Screen reader warning
A shallow wooden tray divided into small square compartments, each holding one or two plain wooden cubes, with a hand roller resting on its edge.

The guide

Borrowed From Mathematics: The Letters Behind Fancy Text and the Readers They Leave Out

The bold and script letters pasted into plain text boxes are not fonts. They are separate characters made for equations, and using them as decoration has a price that someone else pays.

  • 24 holes letters left out of the mathematical alphabets as already encoded
  • 13 alphabets styled Latin alphabets in the Mathematical Alphanumeric Symbols block
  • 20 bytes Hello in mathematical bold as UTF-8, against 5 bytes in plain letters
  • U+210E the Planck constant sign, which stands in for the italic small h
Read the full guide Fold the guide 7 min · 17 sources

A plain text box has no bold button. A profile name, a caption, a subject line: each one takes characters and nothing else. So people go looking for bold somewhere, and they find it.

What they find is not bold. The heavy letters that paste so neatly into a field with no formatting are not their own letters wearing a thicker face. They are other characters entirely, each with its own number, and the page that produced them simply swapped one for the other. Nothing was styled. Something was replaced.

That difference sounds like pedantry until it costs somebody something. It decides whether a search can find the word, whether a length limit is met, whether a device shows a letter or an empty box, and whether a person who listens to the screen hears a name or a recital of symbols.

Letters built for equations

The characters come from a block the Unicode Standard calls Mathematical Alphanumeric Symbols, running from U+1D400 to U+1D7FF. The standard is blunt about its purpose: the block is intended for use only in mathematical or technical notation, and not in nontechnical text. It was added in Unicode 3.1, in March 2001, with 991 characters, and by version 18.0 it holds 997.

Mathematics needed them because in a formula a change of typeface is a change of meaning. The standard’s own example is the letter H, which can appear upright, bold, italic, in script or in Fraktur, and in one document each of those may be a different, unrelated quantity. Strip the styling from an equation and a script H collapses into an ordinary one; a physicist would no longer read the Hamiltonian in it. Encoding each styled alphabet as its own set of characters lets a formula survive as plain text with its distinctions intact.

So the block holds whole alphabets. Counting the Latin ones in the character database gives 13 alphabets. Bold, italic and bold italic come first, then script, bold script, Fraktur, bold Fraktur and double-struck, then four sans-serif weights and slants, and monospace. Five of them come with digits. Each character has a formal name that says exactly what it is, such as MATHEMATICAL BOLD CAPITAL A.

Every one of these letters also carries what the standard calls a compatibility decomposition back to its plain letter. The annex on normalization explains the idea: when a visual distinction is only stylistic, markup or styling could carry it, and a process may fold the variant back to the base character. Software that applies that folding turns a carefully styled word back into ordinary letters. Software that does not apply it sees a run of symbols where the writer meant a word.

There is one more design choice with visible consequences. Only unaccented letters were given mathematical forms, because general accents would collide with the marks mathematicians put over variables. A styled name with an accent in it therefore has to be assembled from a mathematical letter and a separate combining accent, and how well those two sit together depends on the font that happens to draw them.

Why the alphabets have holes

The alphabets are not complete, and the gaps are deliberate. Before the mathematical block existed, a handful of styled letters had already been encoded one at a time in an older block, Letterlike Symbols, between U+2100 and U+214F. The standard counts 24 of them among the double-struck, italic, Fraktur and script letters. Rather than encode them twice, it unified them with the new alphabets and left the matching positions empty. Those are the 24 holes.

The script capital B is the usual example. Where the pattern says it should be, at U+1D49D, there is nothing; the code point is reserved. The real character sits at U+212C. The italic alphabet has a single hole, at the small h, and the character that fills it is U+210E, whose name is PLANCK CONSTANT. The code charts mark each reserved position with a pointer to the character that belongs there, so the full list can be read from the data and need not be remembered.

A worked case shows how often this matters. Type Hello and ask for script. The result is five characters: U+210B, U+212F, U+1D4C1 twice, and U+2134. Three of the five come from the older block, not from the mathematical one. As people see them, that is still 5 characters and 5 code points, but 7 UTF-16 units and 17 bytes of UTF-8. The same word in mathematical bold is 10 units and 20 bytes, where plain Hello is 5 bytes.

A converter that builds its table by arithmetic, adding a fixed offset to each letter, lands in the holes. It emits code points that are assigned to nothing, and a reader sees a blank box in the middle of a word. The only safe table is one checked name by name against the character database.

The other popular styles are borrowed from elsewhere and have gaps of their own. Circled and parenthesized letters come from blocks of enclosed characters. Superscript and subscript letters exist, the standard says, mainly for specialized phonetic alphabets, and it prefers markup for ordinary raised text. There is no subscript b, c, d, f, g or q. Subscript w, y and z only arrived in Unicode 18.0 in September 2026, so a device needs very recent fonts to draw them. Small capitals are phonetic letters, and no small capital X was ever encoded. Four of the dark squared capitals, A, B, O and P, are also listed as emoji and may appear as colored buttons.

What a count hides

Length is where the substitution first bites. A text field that allows a fixed number of characters has to decide what a character is, and there are at least four honest answers.

The first is the one people use: the user-perceived character, which the segmentation annex calls a grapheme cluster and which browsers expose through a segmenter. The second is the code point. The third is the UTF-16 code unit, which is what a string’s length reports in JavaScript; a character outside the first 65,536 takes two. The fourth is the byte, and UTF-8 spends one to four of them on each code point.

For plain English these four numbers agree. For a mathematical letter they are 1, 1, 2 and 4. A strikethrough made by placing U+0336 after every letter does something different again: Hello stays 5 characters to the eye but becomes 10 code points and 15 bytes. No single limit can be quoted for styled text, because the answer depends on which of these the receiving system counts.

The cost to readers who listen

The heaviest cost falls on people who use a screen reader. Massachusetts, in its guidance on accessible social media, describes these alternative characters, also called fancy fonts, and warns that although they may look like typical letters they do not get interpreted in the same way, or may be skipped entirely, by assistive technology. The federal Section 508 program gives the general rule: screen readers may struggle to identify special characters, so it is best to avoid them in posts.

What does struggling sound like? One possibility is silence. Another is the character names read in full, so that a five-letter greeting becomes mathematical bold capital h, mathematical bold small e, and three more of the same. A listener must reassemble the word from a run of phrases, and a display name written this way arrives as a list of symbols.

Machines fare no better. The W3C’s MathML specification states that mathematical alphanumeric characters should not be used for styled prose, because doing so creates problems for searching, for restyling such as for accessibility, and for many other kinds of processing. A search for a word compares characters, and a styled copy shares none with the plain one unless the system folds it first. Spell checkers and sorting are in the same position.

Then there is trust. The technical report on mathematics notes that these symbols can be confused with styled text and are therefore excluded from security-sensitive settings such as domain names. Unicode publishes a whole mechanism for detecting visually confusable characters and strings that mix scripts. Wikipedia records the practical side: the letters turn up in stylized user names and in spam trying to slip past filters. That is why an honest converter never fills a gap with a similar-looking Greek or Cyrillic letter. A look-alike from another script is precisely the pattern those defenses are built to catch.

When plain emphasis is the better choice

Where real formatting exists, it carries meaning these characters cannot. In HTML the strong element represents strong importance and the em element represents stress emphasis, and both leave the letters themselves untouched, so every reader, search index and spell checker still receives the word. Use the formatting a place offers before reaching for a substitute.

Where none exists, keep the essential words plain. A name, a heading, a date, a price, an instruction: anything a person must be able to read, find or act on should be made of ordinary letters. If a styled flourish is wanted anyway, let it repeat something already said in plain text, so that a reader who gets silence or boxes loses nothing.

Lines drawn through or under text with combining marks deserve the same restraint. One mark per letter leaves the letters visible. Dozens stacked on each letter bury the text for everyone and hand a screen reader a long list of marks to announce or ignore.

No converter can turn these characters into a font, and none can promise how they will look or sound somewhere else. Whether a device has a picture for a given character depends on its fonts. What a screen reader says depends on the product, its version and its settings, so any preview built from character names is an illustration and not a recording. What can be done exactly is the bookkeeping: which characters were replaced, which had no counterpart and stayed as typed, and how long the result is by each way of counting.

Sources

Every source consulted for this guide. Links checked October 10, 2026.

  1. Chapter 22 - Unicode 18.0.0 (Symbols) Unicode Consortium
  2. Unicode Technical Report #25: Unicode Support for Mathematics Barbara Beeton, Asmus Freytag and Murray Sargent III, Unicode Consortium
  3. UnicodeData.txt (Unicode Character Database 18.0.0) Unicode Consortium
  4. NamesList-18.0.0.txt Unicode Consortium
  5. DerivedAge-18.0.0.txt Unicode Consortium
  6. emoji-data.txt Unicode Consortium
  7. UAX #15: Unicode Normalization Forms Unicode Consortium
  8. UAX #29: Unicode Text Segmentation Unicode Consortium
  9. UTS #39: Unicode Security Mechanisms Unicode Consortium
  10. Characters, Entities and Fonts (Mathematical Markup Language Version 3.0, chapter 7) W3C
  11. Social media accessibility - Digital Accessibility at the Commonwealth Commonwealth of Massachusetts
  12. Social Media | Section508.gov U.S. General Services Administration
  13. String: length - JavaScript | MDN MDN Web Docs
  14. Intl.Segmenter - JavaScript | MDN MDN Web Docs
  15. RFC 3629: UTF-8, a transformation format of ISO 10646 IETF (RFC Editor)
  16. HTML Standard: Text-level semantics WHATWG
  17. Mathematical Alphanumeric Symbols - Wikipedia Wikipedia