1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
//! Symbol font codepoint mapping table.
//!
//! Maps Symbol font codepoints (0x20–0xFE) to Unicode characters.
//!
//! Source: <https://en.wikipedia.org/wiki/Symbol_(typeface)>
//! Last updated: 2026-06-10.
/// Maps Symbol font codepoints to Unicode characters.
///
/// Sorted by key (first tuple field). Covers range 0x20–0xFE.
pub(super) const TABLE: &[(u8, char)] = &[
(0x20, '\u{00A0}'), // NO-BREAK SPACE
(0x21, '!'), // EXCLAMATION MARK
(0x22, '\u{2200}'), // FOR ALL
(0x23, '#'), // NUMBER SIGN
(0x24, '\u{2203}'), // THERE EXISTS
(0x25, '%'), // PERCENT SIGN
(0x26, '&'), // AMPERSAND
(0x27, '\u{220b}'), // CONTAINS AS MEMBER
(0x28, '('), // LEFT PARENTHESIS
(0x29, ')'), // RIGHT PARENTHESIS
(0x2A, '\u{2217}'), // ASTERISK OPERATOR
(0x2B, '+'), // PLUS SIGN
(0x2C, ','), // COMMA
(0x2D, '\u{2212}'), // MINUS SIGN
(0x2E, '.'), // FULL STOP
(0x2F, '/'), // SOLIDUS
(0x30, '0'), // DIGIT ZERO
(0x31, '1'), // DIGIT ONE
(0x32, '2'), // DIGIT TWO
(0x33, '3'), // DIGIT THREE
(0x34, '4'), // DIGIT FOUR
(0x35, '5'), // DIGIT FIVE
(0x36, '6'), // DIGIT SIX
(0x37, '7'), // DIGIT SEVEN
(0x38, '8'), // DIGIT EIGHT
(0x39, '9'), // DIGIT NINE
(0x3A, ':'), // COLON
(0x3B, ';'), // SEMICOLON
(0x3C, '<'), // LESS-THAN SIGN
(0x3D, '='), // EQUALS SIGN
(0x3E, '>'), // GREATER-THAN SIGN
(0x3F, '?'), // QUESTION MARK
(0x40, '\u{2245}'), // APPROXIMATELY EQUAL TO
(0x41, '\u{391}'), // GREEK CAPITAL LETTER ALPHA
(0x42, '\u{392}'), // GREEK CAPITAL LETTER BETA
(0x43, '\u{3a7}'), // GREEK CAPITAL LETTER CHI
(0x44, '\u{2206}'), // INCREMENT
(0x45, '\u{395}'), // GREEK CAPITAL LETTER EPSILON
(0x46, '\u{3a6}'), // GREEK CAPITAL LETTER PHI
(0x47, '\u{393}'), // GREEK CAPITAL LETTER GAMMA
(0x48, '\u{397}'), // GREEK CAPITAL LETTER ETA
(0x49, '\u{399}'), // GREEK CAPITAL LETTER IOTA
(0x4A, '\u{3d1}'), // GREEK SMALL LETTER VARTHETA
(0x4B, '\u{39a}'), // GREEK CAPITAL LETTER KAPPA
(0x4C, '\u{39b}'), // GREEK CAPITAL LETTER LAMDA
(0x4D, '\u{39c}'), // GREEK CAPITAL LETTER MU
(0x4E, '\u{39d}'), // GREEK CAPITAL LETTER NU
(0x4F, '\u{39f}'), // GREEK CAPITAL LETTER OMICRON
(0x50, '\u{3a0}'), // GREEK CAPITAL LETTER PI
(0x51, '\u{398}'), // GREEK CAPITAL LETTER THETA
(0x52, '\u{3a1}'), // GREEK CAPITAL LETTER RHO
(0x53, '\u{3a3}'), // GREEK CAPITAL LETTER SIGMA
(0x54, '\u{3a4}'), // GREEK CAPITAL LETTER TAU
(0x55, '\u{3a5}'), // GREEK CAPITAL LETTER UPSILON
(0x56, '\u{3c2}'), // GREEK SMALL LETTER FINAL SIGMA
(0x57, '\u{3a9}'), // GREEK CAPITAL LETTER OMEGA
(0x58, '\u{39e}'), // GREEK CAPITAL LETTER XI
(0x59, '\u{3a8}'), // GREEK CAPITAL LETTER PSI
(0x5A, '\u{396}'), // GREEK CAPITAL LETTER ZETA
(0x5B, '['), // LEFT SQUARE BRACKET
(0x5C, '\u{2234}'), // THEREFORE
(0x5D, ']'), // RIGHT SQUARE BRACKET
(0x5E, '\u{22a5}'), // UP TACK
(0x5F, '_'), // LOW LINE
(0x60, '\u{F8E5}'), // PRIVATE USE CHARACTER
(0x61, '\u{3b1}'), // GREEK SMALL LETTER ALPHA
(0x62, '\u{3b2}'), // GREEK SMALL LETTER BETA
(0x63, '\u{3c7}'), // GREEK SMALL LETTER CHI
(0x64, '\u{3b4}'), // GREEK SMALL LETTER DELTA
(0x65, '\u{3b5}'), // GREEK SMALL LETTER EPSILON
(0x66, '\u{3c6}'), // GREEK SMALL LETTER PHI
(0x67, '\u{3b3}'), // GREEK SMALL LETTER GAMMA
(0x68, '\u{3b7}'), // GREEK SMALL LETTER ETA
(0x69, '\u{3b9}'), // GREEK SMALL LETTER IOTA
(0x6A, '\u{3d5}'), // GREEK SMALL LETTER VARPHI
(0x6B, '\u{3ba}'), // GREEK SMALL LETTER KAPPA
(0x6C, '\u{3bb}'), // GREEK SMALL LETTER LAMDA
(0x6D, '\u{3bc}'), // GREEK SMALL LETTER MU
(0x6E, '\u{3bd}'), // GREEK SMALL LETTER NU
(0x6F, '\u{3bf}'), // GREEK SMALL LETTER OMICRON
(0x70, '\u{3c0}'), // GREEK SMALL LETTER PI
(0x71, '\u{3b8}'), // GREEK SMALL LETTER THETA
(0x72, '\u{3c1}'), // GREEK SMALL LETTER RHO
(0x73, '\u{3c3}'), // GREEK SMALL LETTER SIGMA
(0x74, '\u{3c4}'), // GREEK SMALL LETTER TAU
(0x75, '\u{3c5}'), // GREEK SMALL LETTER UPSILON
(0x76, '\u{3d6}'), // GREEK SMALL LETTER VARPI
(0x77, '\u{3c9}'), // GREEK SMALL LETTER OMEGA
(0x78, '\u{3be}'), // GREEK SMALL LETTER XI
(0x79, '\u{3c8}'), // GREEK SMALL LETTER PSI
(0x7A, '\u{3b6}'), // GREEK SMALL LETTER ZETA
(0x7B, '{'), // LEFT CURLY BRACKET
(0x7C, '|'), // VERTICAL LINE
(0x7D, '}'), // RIGHT CURLY BRACKET
(0x7E, '\u{223c}'), // TILDE OPERATOR
(0xA0, '\u{20ac}'), // EURO SIGN
(0xA1, '\u{3d2}'), // GREEK CAPITAL LETTER UPSILON WITH HOOK
(0xA2, '\u{2032}'), // PRIME
(0xA3, '\u{2264}'), // LESS-THAN OR EQUAL TO
(0xA4, '\u{2044}'), // FRACTION SLASH
(0xA5, '\u{221e}'), // INFINITY
(0xA6, '\u{192}'), // LATIN SMALL LETTER F WITH HOOK
(0xA7, '\u{2663}'), // BLACK CLUB SUIT
(0xA8, '\u{2666}'), // BLACK DIAMOND SUIT
(0xA9, '\u{2665}'), // BLACK HEART SUIT
(0xAA, '\u{2660}'), // BLACK SPADE SUIT
(0xAB, '\u{2194}'), // LEFT RIGHT ARROW
(0xAC, '\u{2190}'), // LEFTWARDS ARROW
(0xAD, '\u{2191}'), // UPWARDS ARROW
(0xAE, '\u{2192}'), // RIGHTWARDS ARROW
(0xAF, '\u{2193}'), // DOWNWARDS ARROW
(0xB0, '\u{b0}'), // DEGREE SIGN
(0xB1, '\u{b1}'), // PLUS-MINUS SIGN
(0xB2, '\u{2033}'), // DOUBLE PRIME
(0xB3, '\u{2265}'), // GREATER-THAN OR EQUAL TO
(0xB4, '\u{d7}'), // MULTIPLICATION SIGN
(0xB5, '\u{221d}'), // PROPORTIONAL TO
(0xB6, '\u{2202}'), // PARTIAL DIFFERENTIAL
(0xB7, '\u{2022}'), // BULLET
(0xB8, '\u{f7}'), // DIVISION SIGN
(0xB9, '\u{2260}'), // NOT EQUAL TO
(0xBA, '\u{2261}'), // IDENTICAL TO
(0xBB, '\u{2248}'), // ALMOST EQUAL TO
(0xBC, '\u{2026}'), // HORIZONTAL ELLIPSIS
(0xBD, '\u{F8E6}'), // PRIVATE USE CHARACTER
(0xBE, '\u{F8E7}'), // PRIVATE USE CHARACTER
(0xBF, '\u{21b5}'), // DOWNWARDS ARROW WITH CORNER LEFTWARDS
(0xC0, '\u{2135}'), // ALEF SYMBOL
(0xC1, '\u{2111}'), // BLACK-LETTER CAPITAL I
(0xC2, '\u{211c}'), // BLACK-LETTER CAPITAL R
(0xC3, '\u{2118}'), // WEIERSTRASS ELLIPTIC FUNCTION
(0xC4, '\u{2297}'), // CIRCLED TIMES
(0xC5, '\u{2295}'), // CIRCLED PLUS
(0xC6, '\u{2205}'), // EMPTY SET
(0xC7, '\u{2229}'), // INTERSECTION
(0xC8, '\u{222a}'), // UNION
(0xC9, '\u{2283}'), // SUPERSET OF
(0xCA, '\u{2287}'), // SUPERSET OF OR EQUAL TO
(0xCB, '\u{2284}'), // NOT A SUBSET OF
(0xCC, '\u{2282}'), // SUBSET OF
(0xCD, '\u{2286}'), // SUBSET OF OR EQUAL TO
(0xCE, '\u{2208}'), // ELEMENT OF
(0xCF, '\u{2209}'), // NOT AN ELEMENT OF
(0xD0, '\u{2220}'), // ANGLE
(0xD1, '\u{2207}'), // NABLA
(0xD2, '\u{F6DA}'), // PRIVATE USE CHARACTER
(0xD3, '\u{F6D9}'), // PRIVATE USE CHARACTER
(0xD4, '\u{F6DB}'), // PRIVATE USE CHARACTER
(0xD5, '\u{220f}'), // N-ARY PRODUCT
(0xD6, '\u{221a}'), // SQUARE ROOT
(0xD7, '\u{22c5}'), // DOT OPERATOR
(0xD8, '\u{ac}'), // NOT SIGN
(0xD9, '\u{2227}'), // LOGICAL AND
(0xDA, '\u{2228}'), // LOGICAL OR
(0xDB, '\u{21d4}'), // LEFT RIGHT DOUBLE ARROW
(0xDC, '\u{21d0}'), // LEFTWARDS DOUBLE ARROW
(0xDD, '\u{21d1}'), // UPWARDS DOUBLE ARROW
(0xDE, '\u{21d2}'), // RIGHTWARDS DOUBLE ARROW
(0xDF, '\u{21d3}'), // DOWNWARDS DOUBLE ARROW
(0xE0, '\u{25ca}'), // LOZENGE
(0xE1, '\u{27e8}'), // MATHEMATICAL LEFT ANGLE BRACKET
(0xE2, '\u{F8E8}'), // PRIVATE USE CHARACTER
(0xE3, '\u{F8E9}'), // PRIVATE USE CHARACTER
(0xE4, '\u{F8EA}'), // PRIVATE USE CHARACTER
(0xE5, '\u{2211}'), // N-ARY SUMMATION
(0xE6, '\u{F8EB}'), // PRIVATE USE CHARACTER
(0xE7, '\u{F8EC}'), // PRIVATE USE CHARACTER
(0xE8, '\u{F8ED}'), // PRIVATE USE CHARACTER
(0xE9, '\u{F8EE}'), // PRIVATE USE CHARACTER
(0xEA, '\u{F8EF}'), // PRIVATE USE CHARACTER
(0xEB, '\u{F8F0}'), // PRIVATE USE CHARACTER
(0xEC, '\u{F8F1}'), // PRIVATE USE CHARACTER
(0xED, '\u{F8F2}'), // PRIVATE USE CHARACTER
(0xEE, '\u{F8F3}'), // PRIVATE USE CHARACTER
(0xEF, '\u{F8F4}'), // PRIVATE USE CHARACTER
(0xF1, '\u{27e9}'), // MATHEMATICAL RIGHT ANGLE BRACKET
(0xF2, '\u{222b}'), // INTEGRAL
(0xF3, '\u{2320}'), // TOP HALF INTEGRAL
(0xF4, '\u{F8F5}'), // PRIVATE USE CHARACTER
(0xF5, '\u{2321}'), // BOTTOM HALF INTEGRAL
(0xF6, '\u{F8F6}'), // PRIVATE USE CHARACTER
(0xF7, '\u{F8F7}'), // PRIVATE USE CHARACTER
(0xF8, '\u{F8F8}'), // PRIVATE USE CHARACTER
(0xF9, '\u{F8F9}'), // PRIVATE USE CHARACTER
(0xFA, '\u{F8FA}'), // PRIVATE USE CHARACTER
(0xFB, '\u{F8FB}'), // PRIVATE USE CHARACTER
(0xFC, '\u{F8FC}'), // PRIVATE USE CHARACTER
(0xFD, '\u{F8FD}'), // PRIVATE USE CHARACTER
(0xFE, '\u{F8FE}'), // PRIVATE USE CHARACTER
];
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn table_sorted() {
for (prev, curr) in TABLE.iter().zip(TABLE.iter().skip(1)) {
assert!(
prev.0 < curr.0,
"table not sorted: {:#04X} >= {:#04X}",
prev.0,
curr.0
);
}
}
#[test]
fn table_no_duplicates() {
for (prev, curr) in TABLE.iter().zip(TABLE.iter().skip(1)) {
assert_ne!(prev.0, curr.0, "duplicate key: {:#04X}", curr.0);
}
}
}