CopyFont

Fancy text that actually works where you paste it

unicode

Are Fancy Fonts Real Fonts? What You Copy Is Unicode

Fancy text generators do not change your font. They swap each letter for a different Unicode character that looks styled, which is why the style survives a paste into a plain field.

The short answer No. A fancy font generator does not apply a font. It replaces each letter with a separate Unicode character that was drawn to look bold, italic or script. The style travels with the text because it is part of the text, not formatting applied on top of it.

Paste 𝐇𝐞𝐥𝐥𝐨 into a chat box that offers no formatting buttons and it stays bold. Paste it into a search field and it stays bold there too. That behaviour is the giveaway: nothing about it is a font.

A font is a drawing, a character is an identity

A font is a file of shapes. When a document is set in bold, the letter stored in the file is still a plain H, and a separate instruction says to draw it with the heavy version of the typeface. Move that letter to a system without the instruction, or into a field that stores no instructions, and the bold disappears. This is why bold text pasted from a word processor into a plain input arrives plain.

Unicode works differently. It assigns a number, called a codepoint, to each character it recognises as distinct. H is U+0048. And 𝐇, the mathematical bold capital H, is U+1D407. Those are two different characters with two different identities, in the same way that H and h are two different characters. No formatting is involved. The heaviness is baked into the identity.

A fancy text generator takes your input and substitutes, letter by letter, a different character that happens to be drawn in a heavier or more slanted shape. Your H becomes 𝐇. Your e becomes 𝐞. The result is not styled text; it is different text.

Why the style survives the paste

Every field that accepts text stores a sequence of codepoints. A field with no formatting model still stores codepoints faithfully, because that is all storing text means. So when the styling lives in the codepoints themselves, there is nothing for a plain field to strip.

This is the whole trick, and it is also the whole limitation. The style cannot be removed by a plain field, and it cannot be reflowed, resized or restyled by one either. What you copy is what everyone gets.

What Unicode itself says about this

The Unicode Standard is direct about it. The core specification for version 16.0, in chapter 22 on symbols, describes the Mathematical Alphanumeric Symbols block and states that these characters “should not be used to represent styling of nonmathematical text” and are “intended for use only in mathematical or technical notation” (unicode.org, Unicode 16.0 core specification, chapter 22).

The reason is not aesthetic disapproval. In mathematics, a bold v and an italic v denote different objects, so the distinction has to survive plain-text transmission and cannot be left to formatting. Unicode encoded the alphabets to protect that meaning. Using them as decoration reuses characters whose entire purpose is semantic.

The practical consequences follow from that purpose rather than from any rule being broken:

  • Search stops working. 𝐇𝐞𝐥𝐥𝐨 is not Hello, so ctrl-F, site search and platform search will not match it. A hashtag written in bold characters is a different hashtag from the plain one, and usually a hashtag nobody follows.
  • Assistive technology reads the identity, not the look. A screen reader that meets a mathematical italic capital A can only announce what the character is. The accessibility guide covers which styles have this problem and which do not.
  • Sorting and matching behave oddly. Anything that alphabetises, deduplicates or compares strings sees characters far outside the Latin range.
  • Nothing degrades gracefully. A device without a font for the block shows a box, and the reader gets no hint of what the text said.

None of this makes the characters unusable. It makes them appropriate for short, decorative, non-functional text: a display name, a divider line in a bio, a heading in a message. It makes them a bad idea for anything a reader has to search, copy or act on.

The block has holes in it

The Mathematical Alphanumeric Symbols block, U+1D400 to U+1D7FF, looks like a tidy series of 26-letter runs. It is not. When Unicode came to encode the mathematical alphabets, several of the letters had already been encoded years earlier in the Letterlike Symbols block, and the standard does not encode the same character twice. So those slots were left unassigned and the character lives elsewhere.

Script capital H is the clearest case. The slot where a base-plus-offset calculation expects it is empty, and the real character is ℋ, U+210B, a letterlike symbol. Script has eleven such gaps, fraktur five, double-struck seven, and italic lowercase h is ℎ at U+210E rather than in the block.

A generator that builds each character by adding a constant to the ASCII value walks straight into those gaps and emits codepoints that were never assigned. Nothing can render an unassigned codepoint, so the reader sees a box. This is the single most common defect in fancy text tools, and it is why the word “Hello” in script comes out broken on some sites and correct on others. Our cursive generator, gothic generator and outline generator patch every gap explicitly, and the output is checked so that no unassigned codepoint is ever produced.

Two different things get called fancy text

Once you know that codepoints carry the style, a second family of styles makes sense. Strikethrough, underline, overline and slashed text do not replace your letters at all. They keep the plain ASCII and add a combining mark after each character, a zero-width accent that the renderer draws on top. H̶e̶l̶l̶o̶ is still the letters H, e, l, l, o with a combining long stroke overlay between them.

That difference matters more than it looks. Marked styles stay searchable and stay readable to assistive technology, because the underlying letters are untouched. Replaced styles do not. Every style page on CopyFont says which class it belongs to.

So what should you call them

Calling them fonts is convenient shorthand and everyone understands it, which is why the style index uses the word. But when something goes wrong, the shorthand is what stops you diagnosing it. A username field that rejects 𝐛𝐨𝐥𝐝 text has not rejected a font; it has rejected characters outside its allowlist. A box on a friend’s phone is not a missing font download; it is a font that does not cover that block. A hashtag that returns nothing has not failed to match a style; it is a different string.

Knowing that you are moving characters, not formatting, tells you in advance where the styling will hold and where it will not.

Frequently asked questions

Quick answers to what people ask us most

If it is not a font, why does it look like one?

Because the characters were designed to look that way. Unicode encodes a separate bold A, italic A and script A as distinct characters so that mathematicians can tell them apart. Your device draws each one with whatever font it has, and that drawing is what you see.

Do I need to install anything for people to see it?

No. The characters are part of Unicode, so any system with a font covering them will render them. That is also the limit: a device whose fonts do not cover a given block shows a box instead, and there is nothing the sender can do about it.

Why do some generators give me empty boxes?

Because they calculate each character by adding a fixed offset and never check the result. The Mathematical Alphanumeric Symbols block has unassigned gaps where Unicode had already encoded a letter elsewhere, so a naive generator emits a codepoint that does not exist.