Legacy script exception · U+212C
Script capital B comes from the older Letterlike Symbols block, not the newer Mathematical Script block — on purpose.
The Cursive Unicode Letters That Don’t Exist (and Why)
By fontgenerator.tech team · Published 2026-09-06 · Reviewed 2026-09-06
Sixteen letters across our two cursive-family styles (regular script and Fraktur/Gothic) look slightly different from the rest, on purpose — not a bug. Unicode's Mathematical Script and Mathematical Fraktur blocks were added in 2001, but for 16 specific letters, an older character already existed with the same intended look, so Unicode left that exact slot in the new block unassigned rather than duplicating it. This tool substitutes the correct older character for those specific letters, per the Unicode charts cited below — the alternative (leaving them blank or guessing) would be worse.
Regular script: 11 exceptions
| Letter | Used character | Code point |
|---|---|---|
| B | ℬ SCRIPT CAPITAL B | U+212C |
| E | ℰ SCRIPT CAPITAL E | U+2130 |
| F | ℱ SCRIPT CAPITAL F | U+2131 |
| H | ℋ SCRIPT CAPITAL H | U+210B |
| I | ℐ SCRIPT CAPITAL I | U+2110 |
| L | ℒ SCRIPT CAPITAL L | U+2112 |
| M | ℳ SCRIPT CAPITAL M | U+2133 |
| R | ℛ SCRIPT CAPITAL R | U+211B |
| e | ℯ SCRIPT SMALL E | U+212F |
| g | ℊ SCRIPT SMALL G | U+210A |
| o | ℴ SCRIPT SMALL O | U+2134 |
All other script letters (15 uppercase, 23 lowercase) use the main Mathematical Script block directly.
Fraktur / Gothic: 5 exceptions
| Letter | Used character | Code point |
|---|---|---|
| C | ℭ BLACK-LETTER CAPITAL C | U+212D |
| H | ℌ BLACK-LETTER CAPITAL H | U+210C |
| I | ℑ BLACK-LETTER CAPITAL I | U+2111 |
| R | ℜ BLACK-LETTER CAPITAL R | U+211C |
| Z | ℨ BLACK-LETTER CAPITAL Z | U+2128 |
Bold script and bold Fraktur have no such exceptions — Unicode assigned all 52 letters directly in those two blocks, which is why they're the more visually consistent choice if that matters for your use.
Why this matters in practice
Some fonts render these legacy Letterlike Symbols characters with a subtly different weight or style than the newer Mathematical block, because they were designed decades apart for different purposes (many were originally mathematical notation symbols, like ℒ for a Lagrangian). If you notice one letter looking slightly "off" in an otherwise-consistent script phrase, this table is almost certainly why — not a rendering bug in your device.
Double-struck has a similar pattern
The double-struck style (used for a "chalkboard" look) has the same kind of gap: C, H, N, P, Q, R and Z use older double-struck symbols (ℂ, ℍ, ℕ, ℙ, ℚ, ℝ, ℤ — familiar from number-set notation like ℝ for real numbers) instead of the main double-struck block, for the same historical reason.
Why Unicode did it this way instead of just adding new characters
It would have been simpler for Unicode to assign a brand-new script-B, for instance, at its "proper" position in the Mathematical Script block and leave the old ℬ alone as a separate, redundant character. Unicode's design principle works the other way: avoid encoding the same abstract character twice. ℬ already existed (it was in wide use for mathematical and physical notation, like magnetic flux density) before the Mathematical Alphanumeric Symbols block was proposed, so the newer block's creators deliberately left that slot empty and pointed usage back at the existing character instead of minting a duplicate. The result is fewer total characters overall, at the cost of these 16 letters coming from a different historical block than their neighbors.
A full worked example
Style the word "BEFORE" in regular script and every letter except O uses a legacy Letterlike Symbols character (B, E, F all have exceptions; R does too). Style "LOOK" and only L is an exception — O and K use the main Mathematical Script block. There's no visual cue in advance that tells you which letters will be exceptions; the table above is the actual, complete list, drawn directly from the Unicode charts rather than guessed from testing individual fonts.
How to check this yourself
Open this site's Cursive Text Generator, type any word containing one of the 16 exception letters, and expand the "Details" panel under the script result — it states the exact support and limitation for that style. You can also copy a single exception letter and look up its code point in any Unicode inspector; it will report a Letterlike Symbols code point (in the U+2100 range) rather than a Mathematical Alphanumeric Symbols one (U+1D400 range), confirming exactly which block it actually came from.
Recognizing the exception letters at a glance
If you're trying to predict, without checking the table, whether a given letter will come from the main block or a legacy symbol: in regular script, watch for B, E, F, H, I, L, M, R, e, g and o specifically — every other letter is a direct assignment. In Fraktur, the shorter exception list (C, H, I, R, Z) is easier to remember by the mnemonic that all five happen to be letters commonly seen in older mathematical or physics notation (Fraktur letters were historically used for vector fields and similar notation, which is part of why some of them already had established symbols before the newer block existed).
A quick way to check your own text
Type your word or name into the Cursive Text Generator and expand the "Details" panel under the script result — it lists exactly which letters in your specific text came from the legacy Letterlike Symbols block versus the main Mathematical Script block, computed fresh from what you typed rather than requiring you to cross-reference the tables above by hand.
Questions people actually ask
Will this ever get "fixed" to use consistent characters? No — Unicode code point assignments are permanent once published, specifically so that text encoded today remains valid forever. The current mixed-block behavior for these 16 letters is the permanent, correct behavior per the Unicode Standard, not a temporary gap.
Does this affect the plain-text converter? No — our Plain Text Converter includes both the main Mathematical Script/Fraktur ranges and these 16 legacy Letterlike Symbols characters in its reverse map, so converting script or Fraktur text back to plain letters works the same regardless of which block a given letter came from.
Do any other styles on this site have similar legacy-character exceptions? Yes — see our bubble text guide for how circled and negative-circled letters have their own, different kind of Unicode-assignment gap.