What Is the Mathematical Alphanumeric Symbols Block?
The Mathematical Alphanumeric Symbols block, located at U+1D400–U+1D7FF in Unicode Plane 1 (SMP), contains styled variants of Latin and Greek letters and digits specifically intended for use in mathematical and scientific notation. These include bold, italic, bold italic, script, bold script, fraktur, bold fraktur, double-struck, and sans-serif variants.
This block was added to provide a way to represent the rich typographic tradition of mathematical writing in plain Unicode text — for contexts where full LaTeX or MathML rendering is unavailable, such as plain-text chat, email subject lines, or social media posts.
Style Families in the Block
| Style | Example | Unicode Start |
|---|---|---|
| Bold | 𝐀𝐁𝐂 | U+1D400 |
| Italic | 𝐴𝐵𝐶 | U+1D434 |
| Bold Italic | 𝑨𝑩𝑪 | U+1D468 |
| Script | 𝒜ℬ𝒞 | U+1D49C |
| Bold Script | 𝓐𝓑𝓒 | U+1D4D0 |
| Fraktur | 𝔄𝔅ℭ | U+1D504 |
| Bold Fraktur | 𝕬𝕭𝕮 | U+1D56C |
| Double-Struck | 𝔸𝔹ℂ | U+1D538 |
| Sans-Serif | 𝖠𝖡𝖢 | U+1D5A0 |
| Sans-Serif Bold | 𝗔𝗕𝗖 | U+1D5D4 |
| Sans-Serif Italic | 𝘈𝘉𝘊 | U+1D608 |
| Monospace | 𝙰𝙱𝙲 | U+1D670 |
The block also contains styled digits: bold digits (𝟎𝟏𝟐), double-struck digits (𝟘𝟙𝟚), sans-serif digits, and monospace digits.
Gaps and Compatibility Characters
Not every position in the block is filled. Several common mathematical letters were already encoded elsewhere for historical reasons and are mapped via NFKC compatibility:
- ℝ (real numbers) → U+211D (already in Letterlike Symbols block)
- ℂ (complex numbers) → U+2102
- ℕ (natural numbers) → U+2115
- ℤ (integers) → U+2124
- ℚ (rationals) → U+211A
- ℋ (Hamiltonian) → U+210B
import unicodedata
# Mathematical alphanumeric characters have general category 'Ll', 'Lu', etc.
# but their names indicate they are mathematical variants
bold_a = '\U0001D400' # MATHEMATICAL BOLD CAPITAL A
print(unicodedata.name(bold_a)) # 'MATHEMATICAL BOLD CAPITAL A'
print(unicodedata.category(bold_a)) # 'Lu'
# NFKC normalization maps styled variants to base characters
print(unicodedata.normalize('NFKC', bold_a)) # 'A'
print(unicodedata.normalize('NFKC', '\U0001D49C')) # 'A' (Script A)
// Generate a bold math string (for demonstration)
function toBoldMath(str) {
return [...str].map(c => {
const cp = c.codePointAt(0);
if (cp >= 0x41 && cp <= 0x5A) { // A-Z
return String.fromCodePoint(0x1D400 + (cp - 0x41));
}
if (cp >= 0x61 && cp <= 0x7A) { // a-z
return String.fromCodePoint(0x1D41A + (cp - 0x61));
}
return c;
}).join('');
}
console.log(toBoldMath('Hello')); // '𝐇𝐞𝐥𝐥𝐨'
Accessibility and Semantic Concerns
While math alphanumeric characters are visually striking, their use in non-mathematical contexts (social media bios, usernames) creates significant accessibility problems. Screen readers often read these characters as their full Unicode names ("MATHEMATICAL BOLD CAPITAL H") rather than pronouncing them normally. Search engines may fail to index them correctly. NFKC normalization is needed to recover the base Latin text for search and sorting purposes.