vga_framebuffer/charset.rs
1/// This MS-DOS CodePage 850. It offers a compromise between the box
2/// characters of CodePage 437 and the accents of ISO 8859-1 / Latin-1.
3#[repr(u8)]
4#[derive(Copy, Clone)]
5pub enum Char {
6 Null, // Char 000 ' ' = REPLACEMENT CHARACTER
7 SOH, // Char 001 '☺' = WHITE SMILING FACE
8 STX, // Char 002 '☻' = BLACK SMILING FACE
9 ETX, // Char 003 '♥' = BLACK HEART SUIT
10 EOT, // Char 004 '♦' = BLACK DIAMOND SUIT
11 ENQ, // Char 005 '♣' = BLACK CLUB SUIT
12 ACK, // Char 006 '♠' = BLACK SPADE SUIT
13 BEL, // Char 007 '•' = BULLET
14 BS, // Char 008 '◘' = INVERSE BULLET
15 HT, // Char 009 '○' = WHITE CIRCLE
16 LF, // Char 010 '◙' = INVERSE WHITE CIRCLE
17 VT, // Char 011 '♂' = MALE SIGN
18 FF, // Char 012 '♀' = FEMALE SIGN
19 CR, // Char 013 '♪' = EIGHTH NOTE
20 SO, // Char 014 '♫' = BEAMED EIGHTH NOTES
21 SI, // Char 015 '☼' = WHITE SUN WITH RAYS
22 DLE, // Char 016 '►' = BLACK RIGHT-POINTING ARROW
23 DC1, // Char 017 '◄' = BLACK LEFT-POINTING ARROW
24 DC2, // Char 018 '↕' = UP DOWN ARROW
25 DC3, // Char 019 '‼' = DOUBLE EXCLAMATION MARK
26 DC4, // Char 020 '¶' = PILCROW SIGN
27 NAK, // Char 021 '§' = SECTION SIGN
28 SYN, // Char 022 '▬' = BLACK RECTANGLE
29 ETB, // Char 023 '↨' = UP DOWN ARROW WITH BASE
30 CAN, // Char 024 '↑' = UPWARDS ARROW
31 EM, // Char 025 '↓' = DOWNWARDS ARROW
32 SUB, // Char 026 '→' = RIGHTWARDS ARROW
33 Escape, // Char 027 '←' = LEFTWARDS ARROW
34 FS, // Char 028 '∟' = RIGHT ANDLE
35 GS, // Char 029 '↔' = LEFT RIGHT ARROW
36 RS, // Char 030 '▲' = BLACK UP POINTING ARROW
37 US, // Char 031 '▼' = BLACK DOWN POINTING ARROW
38 Space, // Char 032 ' ' = SPACE
39 ExclamationMark, // Char 033 '!' = EXCLAMATION MARK
40 QuotationMark, // Char 034 '"' = QUOTATION MARK
41 NumberSign, // Char 035 '#' = NUMBER SIGN
42 DollarSign, // Char 036 '$' = DOLLAR SIGN
43 PercentSign, // Char 037 '%' = PERCENT SIGN
44 Ampersand, // Char 038 '&' = AMPERSAND
45 Apostrophe, // Char 039 "'" = APOSTROPHE
46 LeftParenthesis, // Char 040 '(' = LEFT PARENTHESIS
47 RightParenthesis, // Char 041 ')' = RIGHT PARENTHESIS
48 Asterisk, // Char 042 '*' = ASTERISK
49 PlusSign, // Char 043 '+' = PLUS SIGN
50 Comma, // Char 044 ',' = COMMA
51 HyphenMinus, // Char 045 '-' = HYPHEN-MINUS
52 FullStop, // Char 046 '.' = FULL STOP
53 Solidus, // Char 047 '/' = SOLIDUS
54 DigitZero, // Char 048 '0' = DIGIT ZERO
55 DigitOne, // Char 049 '1' = DIGIT ONE
56 DigitTwo, // Char 050 '2' = DIGIT TWO
57 DigitThree, // Char 051 '3' = DIGIT THREE
58 DigitFour, // Char 052 '4' = DIGIT FOUR
59 DigitFive, // Char 053 '5' = DIGIT FIVE
60 DigitSix, // Char 054 '6' = DIGIT SIX
61 DigitSeven, // Char 055 '7' = DIGIT SEVEN
62 DigitEight, // Char 056 '8' = DIGIT EIGHT
63 DigitNine, // Char 057 '9' = DIGIT NINE
64 Colon, // Char 058 ':' = COLON
65 Semicolon, // Char 059 ';' = SEMICOLON
66 LessThanSign, // Char 060 '<' = LESS-THAN SIGN
67 EqualsSign, // Char 061 '=' = EQUALS SIGN
68 GreaterThanSign, // Char 062 '>' = GREATER-THAN SIGN
69 QuestionMark, // Char 063 '?' = QUESTION MARK
70 CommercialAt, // Char 064 '@' = COMMERCIAL AT
71 LatinCapitalLetterA, // Char 065 'A' = LATIN CAPITAL LETTER A
72 LatinCapitalLetterB, // Char 066 'B' = LATIN CAPITAL LETTER B
73 LatinCapitalLetterC, // Char 067 'C' = LATIN CAPITAL LETTER C
74 LatinCapitalLetterD, // Char 068 'D' = LATIN CAPITAL LETTER D
75 LatinCapitalLetterE, // Char 069 'E' = LATIN CAPITAL LETTER E
76 LatinCapitalLetterF, // Char 070 'F' = LATIN CAPITAL LETTER F
77 LatinCapitalLetterG, // Char 071 'G' = LATIN CAPITAL LETTER G
78 LatinCapitalLetterH, // Char 072 'H' = LATIN CAPITAL LETTER H
79 LatinCapitalLetterI, // Char 073 'I' = LATIN CAPITAL LETTER I
80 LatinCapitalLetterJ, // Char 074 'J' = LATIN CAPITAL LETTER J
81 LatinCapitalLetterK, // Char 075 'K' = LATIN CAPITAL LETTER K
82 LatinCapitalLetterL, // Char 076 'L' = LATIN CAPITAL LETTER L
83 LatinCapitalLetterM, // Char 077 'M' = LATIN CAPITAL LETTER M
84 LatinCapitalLetterN, // Char 078 'N' = LATIN CAPITAL LETTER N
85 LatinCapitalLetterO, // Char 079 'O' = LATIN CAPITAL LETTER O
86 LatinCapitalLetterP, // Char 080 'P' = LATIN CAPITAL LETTER P
87 LatinCapitalLetterQ, // Char 081 'Q' = LATIN CAPITAL LETTER Q
88 LatinCapitalLetterR, // Char 082 'R' = LATIN CAPITAL LETTER R
89 LatinCapitalLetterS, // Char 083 'S' = LATIN CAPITAL LETTER S
90 LatinCapitalLetterT, // Char 084 'T' = LATIN CAPITAL LETTER T
91 LatinCapitalLetterU, // Char 085 'U' = LATIN CAPITAL LETTER U
92 LatinCapitalLetterV, // Char 086 'V' = LATIN CAPITAL LETTER V
93 LatinCapitalLetterW, // Char 087 'W' = LATIN CAPITAL LETTER W
94 LatinCapitalLetterX, // Char 088 'X' = LATIN CAPITAL LETTER X
95 LatinCapitalLetterY, // Char 089 'Y' = LATIN CAPITAL LETTER Y
96 LatinCapitalLetterZ, // Char 090 'Z' = LATIN CAPITAL LETTER Z
97 LeftSquareBracket, // Char 091 '[' = LEFT SQUARE BRACKET
98 ReverseSolidus, // Char 092 '\\' = REVERSE SOLIDUS
99 RightSquareBracket, // Char 093 ']' = RIGHT SQUARE BRACKET
100 CircumflexAccent, // Char 094 '^' = CIRCUMFLEX ACCENT
101 LowLine, // Char 095 '_' = LOW LINE
102 GraveAccent, // Char 096 '`' = GRAVE ACCENT
103 LatinSmallLetterA, // Char 097 'a' = LATIN SMALL LETTER A
104 LatinSmallLetterB, // Char 098 'b' = LATIN SMALL LETTER B
105 LatinSmallLetterC, // Char 099 'c' = LATIN SMALL LETTER C
106 LatinSmallLetterD, // Char 100 'd' = LATIN SMALL LETTER D
107 LatinSmallLetterE, // Char 101 'e' = LATIN SMALL LETTER E
108 LatinSmallLetterF, // Char 102 'f' = LATIN SMALL LETTER F
109 LatinSmallLetterG, // Char 103 'g' = LATIN SMALL LETTER G
110 LatinSmallLetterH, // Char 104 'h' = LATIN SMALL LETTER H
111 LatinSmallLetterI, // Char 105 'i' = LATIN SMALL LETTER I
112 LatinSmallLetterJ, // Char 106 'j' = LATIN SMALL LETTER J
113 LatinSmallLetterK, // Char 107 'k' = LATIN SMALL LETTER K
114 LatinSmallLetterL, // Char 108 'l' = LATIN SMALL LETTER L
115 LatinSmallLetterM, // Char 109 'm' = LATIN SMALL LETTER M
116 LatinSmallLetterN, // Char 110 'n' = LATIN SMALL LETTER N
117 LatinSmallLetterO, // Char 111 'o' = LATIN SMALL LETTER O
118 LatinSmallLetterP, // Char 112 'p' = LATIN SMALL LETTER P
119 LatinSmallLetterQ, // Char 113 'q' = LATIN SMALL LETTER Q
120 LatinSmallLetterR, // Char 114 'r' = LATIN SMALL LETTER R
121 LatinSmallLetterS, // Char 115 's' = LATIN SMALL LETTER S
122 LatinSmallLetterT, // Char 116 't' = LATIN SMALL LETTER T
123 LatinSmallLetterU, // Char 117 'u' = LATIN SMALL LETTER U
124 LatinSmallLetterV, // Char 118 'v' = LATIN SMALL LETTER V
125 LatinSmallLetterW, // Char 119 'w' = LATIN SMALL LETTER W
126 LatinSmallLetterX, // Char 120 'x' = LATIN SMALL LETTER X
127 LatinSmallLetterY, // Char 121 'y' = LATIN SMALL LETTER Y
128 LatinSmallLetterZ, // Char 122 'z' = LATIN SMALL LETTER Z
129 LeftCurlyBracket, // Char 123 '{' = LEFT CURLY BRACKET
130 VerticalLine, // Char 124 '|' = VERTICAL LINE
131 RightCurlyBracket, // Char 125 '}' = RIGHT CURLY BRACKET
132 Tilde, // Char 126 '~' = TILDE
133 Delete, // Char 127 '\x7f' = DELETE
134 LatinCapitalLetterCWithCedilla, // Char 128 'Ç' = LATIN CAPITAL LETTER C WITH CEDILLA
135 LatinSmallLetterUWithDiaeresis, // Char 129 'ü' = LATIN SMALL LETTER U WITH DIAERESIS
136 LatinSmallLetterEWithAcute, // Char 130 'é' = LATIN SMALL LETTER E WITH ACUTE
137 LatinSmallLetterAWithCircumflex, // Char 131 'â' = LATIN SMALL LETTER A WITH CIRCUMFLEX
138 LatinSmallLetterAWithDiaeresis, // Char 132 'ä' = LATIN SMALL LETTER A WITH DIAERESIS
139 LatinSmallLetterAWithGrave, // Char 133 'à' = LATIN SMALL LETTER A WITH GRAVE
140 LatinSmallLetterAWithRingAbove, // Char 134 'å' = LATIN SMALL LETTER A WITH RING ABOVE
141 LatinSmallLetterCWithCedilla, // Char 135 'ç' = LATIN SMALL LETTER C WITH CEDILLA
142 LatinSmallLetterEWithCircumflex, // Char 136 'ê' = LATIN SMALL LETTER E WITH CIRCUMFLEX
143 LatinSmallLetterEWithDiaeresis, // Char 137 'ë' = LATIN SMALL LETTER E WITH DIAERESIS
144 LatinSmallLetterEWithGrave, // Char 138 'è' = LATIN SMALL LETTER E WITH GRAVE
145 LatinSmallLetterIWithDiaeresis, // Char 139 'ï' = LATIN SMALL LETTER I WITH DIAERESIS
146 LatinSmallLetterIWithCircumflex, // Char 140 'î' = LATIN SMALL LETTER I WITH CIRCUMFLEX
147 LatinSmallLetterIWithGrave, // Char 141 'ì' = LATIN SMALL LETTER I WITH GRAVE
148 LatinCapitalLetterAWithDiaeresis, // Char 142 'Ä' = LATIN CAPITAL LETTER A WITH DIAERESIS
149 LatinCapitalLetterAWithRingAbove, // Char 143 'Å' = LATIN CAPITAL LETTER A WITH RING ABOVE
150 LatinCapitalLetterEWithAcute, // Char 144 'É' = LATIN CAPITAL LETTER E WITH ACUTE
151 LatinSmallLetterAe, // Char 145 'æ' = LATIN SMALL LETTER AE
152 LatinCapitalLetterAe, // Char 146 'Æ' = LATIN CAPITAL LETTER AE
153 LatinSmallLetterOWithCircumflex, // Char 147 'ô' = LATIN SMALL LETTER O WITH CIRCUMFLEX
154 LatinSmallLetterOWithDiaeresis, // Char 148 'ö' = LATIN SMALL LETTER O WITH DIAERESIS
155 LatinSmallLetterOWithGrave, // Char 149 'ò' = LATIN SMALL LETTER O WITH GRAVE
156 LatinSmallLetterUWithCircumflex, // Char 150 'û' = LATIN SMALL LETTER U WITH CIRCUMFLEX
157 LatinSmallLetterUWithGrave, // Char 151 'ù' = LATIN SMALL LETTER U WITH GRAVE
158 LatinSmallLetterYWithDiaeresis, // Char 152 'ÿ' = LATIN SMALL LETTER Y WITH DIAERESIS
159 LatinCapitalLetterOWithDiaeresis, // Char 153 'Ö' = LATIN CAPITAL LETTER O WITH DIAERESIS
160 LatinCapitalLetterUWithDiaeresis, // Char 154 'Ü' = LATIN CAPITAL LETTER U WITH DIAERESIS
161 LatinSmallLetterOWithStroke, // Char 155 'ø' = LATIN SMALL LETTER O WITH STROKE
162 PoundSign, // Char 156 '£' = POUND SIGN
163 LatinCapitalLetterOWithStroke, // Char 157 'Ø' = LATIN CAPITAL LETTER O WITH STROKE
164 MultiplicationSign, // Char 158 '×' = MULTIPLICATION SIGN
165 LatinSmallLetterFWithHook, // Char 159 'ƒ' = LATIN SMALL LETTER F WITH HOOK
166 LatinSmallLetterAWithAcute, // Char 160 'á' = LATIN SMALL LETTER A WITH ACUTE
167 LatinSmallLetterIWithAcute, // Char 161 'í' = LATIN SMALL LETTER I WITH ACUTE
168 LatinSmallLetterOWithAcute, // Char 162 'ó' = LATIN SMALL LETTER O WITH ACUTE
169 LatinSmallLetterUWithAcute, // Char 163 'ú' = LATIN SMALL LETTER U WITH ACUTE
170 LatinSmallLetterNWithTilde, // Char 164 'ñ' = LATIN SMALL LETTER N WITH TILDE
171 LatinCapitalLetterNWithTilde, // Char 165 'Ñ' = LATIN CAPITAL LETTER N WITH TILDE
172 FeminineOrdinalIndicator, // Char 166 'ª' = FEMININE ORDINAL INDICATOR
173 MasculineOrdinalIndicator, // Char 167 'º' = MASCULINE ORDINAL INDICATOR
174 InvertedQuestionMark, // Char 168 '¿' = INVERTED QUESTION MARK
175 RegisteredSign, // Char 169 '®' = REGISTERED SIGN
176 NotSign, // Char 170 '¬' = NOT SIGN
177 VulgarFractionOneHalf, // Char 171 '½' = VULGAR FRACTION ONE HALF
178 VulgarFractionOneQuarter, // Char 172 '¼' = VULGAR FRACTION ONE QUARTER
179 InvertedExclamationMark, // Char 173 '¡' = INVERTED EXCLAMATION MARK
180 LeftPointingDoubleAngleQuotationMark, // Char 174 '«' = LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
181 RightPointingDoubleAngleQuotationMark, // Char 175 '»' = RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
182 LightShade, // Char 176 '░' = LIGHT SHADE
183 MediumShade, // Char 177 '▒' = MEDIUM SHADE
184 DarkShade, // Char 178 '▓' = DARK SHADE
185 BoxDrawingsLightVertical, // Char 179 '│' = BOX DRAWINGS LIGHT VERTICAL
186 BoxDrawingsLightVerticalAndLeft, // Char 180 '┤' = BOX DRAWINGS LIGHT VERTICAL AND LEFT
187 LatinCapitalLetterAWithAcute, // Char 181 'Á' = LATIN CAPITAL LETTER A WITH ACUTE
188 LatinCapitalLetterAWithCircumflex, // Char 182 'Â' = LATIN CAPITAL LETTER A WITH CIRCUMFLEX
189 LatinCapitalLetterAWithGrave, // Char 183 'À' = LATIN CAPITAL LETTER A WITH GRAVE
190 CopyrightSign, // Char 184 '©' = COPYRIGHT SIGN
191 BoxDrawingsDoubleVerticalAndLeft, // Char 185 '╣' = BOX DRAWINGS DOUBLE VERTICAL AND LEFT
192 BoxDrawingsDoubleVertical, // Char 186 '║' = BOX DRAWINGS DOUBLE VERTICAL
193 BoxDrawingsDoubleDownAndLeft, // Char 187 '╗' = BOX DRAWINGS DOUBLE DOWN AND LEFT
194 BoxDrawingsDoubleUpAndLeft, // Char 188 '╝' = BOX DRAWINGS DOUBLE UP AND LEFT
195 CentSign, // Char 189 '¢' = CENT SIGN
196 YenSign, // Char 190 '¥' = YEN SIGN
197 BoxDrawingsLightDownAndLeft, // Char 191 '┐' = BOX DRAWINGS LIGHT DOWN AND LEFT
198 BoxDrawingsLightUpAndRight, // Char 192 '└' = BOX DRAWINGS LIGHT UP AND RIGHT
199 BoxDrawingsLightUpAndHorizontal, // Char 193 '┴' = BOX DRAWINGS LIGHT UP AND HORIZONTAL
200 BoxDrawingsLightDownAndHorizontal, // Char 194 '┬' = BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
201 BoxDrawingsLightVerticalAndRight, // Char 195 '├' = BOX DRAWINGS LIGHT VERTICAL AND RIGHT
202 BoxDrawingsLightHorizontal, // Char 196 '─' = BOX DRAWINGS LIGHT HORIZONTAL
203 BoxDrawingsLightVerticalAndHorizontal, // Char 197 '┼' = BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
204 LatinSmallLetterAWithTilde, // Char 198 'ã' = LATIN SMALL LETTER A WITH TILDE
205 LatinCapitalLetterAWithTilde, // Char 199 'Ã' = LATIN CAPITAL LETTER A WITH TILDE
206 BoxDrawingsDoubleUpAndRight, // Char 200 '╚' = BOX DRAWINGS DOUBLE UP AND RIGHT
207 BoxDrawingsDoubleDownAndRight, // Char 201 '╔' = BOX DRAWINGS DOUBLE DOWN AND RIGHT
208 BoxDrawingsDoubleUpAndHorizontal, // Char 202 '╩' = BOX DRAWINGS DOUBLE UP AND HORIZONTAL
209 BoxDrawingsDoubleDownAndHorizontal, // Char 203 '╦' = BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
210 BoxDrawingsDoubleVerticalAndRight, // Char 204 '╠' = BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
211 BoxDrawingsDoubleHorizontal, // Char 205 '═' = BOX DRAWINGS DOUBLE HORIZONTAL
212 BoxDrawingsDoubleVerticalAndHorizontal, // Char 206 '╬' = BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
213 CurrencySign, // Char 207 '¤' = CURRENCY SIGN
214 LatinSmallLetterEth, // Char 208 'ð' = LATIN SMALL LETTER ETH
215 LatinCapitalLetterEth, // Char 209 'Ð' = LATIN CAPITAL LETTER ETH
216 LatinCapitalLetterEWithCircumflex, // Char 210 'Ê' = LATIN CAPITAL LETTER E WITH CIRCUMFLEX
217 LatinCapitalLetterEWithDiaeresis, // Char 211 'Ë' = LATIN CAPITAL LETTER E WITH DIAERESIS
218 LatinCapitalLetterEWithGrave, // Char 212 'È' = LATIN CAPITAL LETTER E WITH GRAVE
219 LatinSmallLetterDotlessI, // Char 213 'ı' = LATIN SMALL LETTER DOTLESS I
220 LatinCapitalLetterIWithAcute, // Char 214 'Í' = LATIN CAPITAL LETTER I WITH ACUTE
221 LatinCapitalLetterIWithCircumflex, // Char 215 'Î' = LATIN CAPITAL LETTER I WITH CIRCUMFLEX
222 LatinCapitalLetterIWithDiaeresis, // Char 216 'Ï' = LATIN CAPITAL LETTER I WITH DIAERESIS
223 BoxDrawingsLightUpAndLeft, // Char 217 '┘' = BOX DRAWINGS LIGHT UP AND LEFT
224 BoxDrawingsLightDownAndRight, // Char 218 '┌' = BOX DRAWINGS LIGHT DOWN AND RIGHT
225 FullBlock, // Char 219 '█' = FULL BLOCK
226 LowerHalfBlock, // Char 220 '▄' = LOWER HALF BLOCK
227 BrokenBar, // Char 221 '¦' = BROKEN BAR
228 LatinCapitalLetterIWithGrave, // Char 222 'Ì' = LATIN CAPITAL LETTER I WITH GRAVE
229 UpperHalfBlock, // Char 223 '▀' = UPPER HALF BLOCK
230 LatinCapitalLetterOWithAcute, // Char 224 'Ó' = LATIN CAPITAL LETTER O WITH ACUTE
231 LatinSmallLetterSharpS, // Char 225 'ß' = LATIN SMALL LETTER SHARP S
232 LatinCapitalLetterOWithCircumflex, // Char 226 'Ô' = LATIN CAPITAL LETTER O WITH CIRCUMFLEX
233 LatinCapitalLetterOWithGrave, // Char 227 'Ò' = LATIN CAPITAL LETTER O WITH GRAVE
234 LatinSmallLetterOWithTilde, // Char 228 'õ' = LATIN SMALL LETTER O WITH TILDE
235 LatinCapitalLetterOWithTilde, // Char 229 'Õ' = LATIN CAPITAL LETTER O WITH TILDE
236 MicroSign, // Char 230 'µ' = MICRO SIGN
237 LatinSmallLetterThorn, // Char 231 'þ' = LATIN SMALL LETTER THORN
238 LatinCapitalLetterThorn, // Char 232 'Þ' = LATIN CAPITAL LETTER THORN
239 LatinCapitalLetterUWithAcute, // Char 233 'Ú' = LATIN CAPITAL LETTER U WITH ACUTE
240 LatinCapitalLetterUWithCircumflex, // Char 234 'Û' = LATIN CAPITAL LETTER U WITH CIRCUMFLEX
241 LatinCapitalLetterUWithGrave, // Char 235 'Ù' = LATIN CAPITAL LETTER U WITH GRAVE
242 LatinSmallLetterYWithAcute, // Char 236 'ý' = LATIN SMALL LETTER Y WITH ACUTE
243 LatinCapitalLetterYWithAcute, // Char 237 'Ý' = LATIN CAPITAL LETTER Y WITH ACUTE
244 Macron, // Char 238 '¯' = MACRON
245 AcuteAccent, // Char 239 '´' = ACUTE ACCENT
246 SoftHyphen, // Char 240 '-' = SOFT HYPHEN
247 PlusMinusSign, // Char 241 '±' = PLUS-MINUS SIGN
248 DoubleLowLine, // Char 242 '‗' = DOUBLE LOW LINE
249 VulgarFractionThreeQuarters, // Char 243 '¾' = VULGAR FRACTION THREE QUARTERS
250 PilcrowSign, // Char 244 '¶' = PILCROW SIGN
251 SectionSign, // Char 245 '§' = SECTION SIGN
252 DivisionSign, // Char 246 '÷' = DIVISION SIGN
253 Cedilla, // Char 247 '¸' = CEDILLA
254 DegreeSign, // Char 248 '°' = DEGREE SIGN
255 Diaeresis, // Char 249 '¨' = DIAERESIS
256 MiddleDot, // Char 250 '·' = MIDDLE DOT
257 SuperscriptOne, // Char 251 '¹' = SUPERSCRIPT ONE
258 SuperscriptThree, // Char 252 '³' = SUPERSCRIPT THREE
259 SuperscriptTwo, // Char 253 '²' = SUPERSCRIPT TWO
260 BlackSquare, // Char 254 '■' = BLACK SQUARE
261 NoBreakSpace, // Char 255 '\xa0' = NO-BREAK SPACE
262}
263
264impl ::core::default::Default for Char {
265 fn default() -> Char {
266 Char::Space
267 }
268}
269
270impl Char {
271 /// Convert a Unicode scalar value into an 8-bit Code Page 850 character.
272 /// Characters that can't be mapped are set to '?' (Char::QuestionMark).
273 /// Both the Unicode control characters and the relevant Unicode symbols
274 /// (like BLACK HEART SUIT) are mapped into the 0..31 range, so this is
275 /// not a 1:1 mapping.
276 pub fn map_char(ch: char) -> Char {
277 match ch {
278 '\u{0000}' => Char::Null,
279 '\u{0001}' => Char::SOH,
280 '\u{0002}' => Char::STX,
281 '\u{0003}' => Char::ETX,
282 '\u{0004}' => Char::EOT,
283 '\u{0005}' => Char::ENQ,
284 '\u{0006}' => Char::ACK,
285 '\u{0007}' => Char::BEL,
286 '\u{0008}' => Char::BS,
287 '\t' => Char::HT,
288 '\n' => Char::LF,
289 '\u{000b}' => Char::VT,
290 '\u{000c}' => Char::FF,
291 '\r' => Char::CR,
292 '\u{000e}' => Char::SO,
293 '\u{000f}' => Char::SI,
294 '\u{0010}' => Char::DLE,
295 '\u{0011}' => Char::DC1,
296 '\u{0012}' => Char::DC2,
297 '\u{0013}' => Char::DC3,
298 '\u{0014}' => Char::DC4,
299 '\u{0015}' => Char::NAK,
300 '\u{0016}' => Char::SYN,
301 '\u{0017}' => Char::ETB,
302 '\u{0018}' => Char::CAN,
303 '\u{0019}' => Char::EM,
304 '\u{001a}' => Char::SUB,
305 '\u{001b}' => Char::Escape,
306 '\u{001c}' => Char::FS,
307 '\u{001d}' => Char::GS,
308 '\u{001e}' => Char::RS,
309 '\u{001f}' => Char::US,
310 ' ' => Char::Space,
311 '!' => Char::ExclamationMark,
312 '"' => Char::QuotationMark,
313 '#' => Char::NumberSign,
314 '$' => Char::DollarSign,
315 '%' => Char::PercentSign,
316 '&' => Char::Ampersand,
317 '\'' => Char::Apostrophe,
318 '(' => Char::LeftParenthesis,
319 ')' => Char::RightParenthesis,
320 '*' => Char::Asterisk,
321 '+' => Char::PlusSign,
322 ',' => Char::Comma,
323 '-' => Char::HyphenMinus,
324 '.' => Char::FullStop,
325 '/' => Char::Solidus,
326 '0' => Char::DigitZero,
327 '1' => Char::DigitOne,
328 '2' => Char::DigitTwo,
329 '3' => Char::DigitThree,
330 '4' => Char::DigitFour,
331 '5' => Char::DigitFive,
332 '6' => Char::DigitSix,
333 '7' => Char::DigitSeven,
334 '8' => Char::DigitEight,
335 '9' => Char::DigitNine,
336 ':' => Char::Colon,
337 ';' => Char::Semicolon,
338 '<' => Char::LessThanSign,
339 '=' => Char::EqualsSign,
340 '>' => Char::GreaterThanSign,
341 '?' => Char::QuestionMark,
342 '@' => Char::CommercialAt,
343 'A' => Char::LatinCapitalLetterA,
344 'B' => Char::LatinCapitalLetterB,
345 'C' => Char::LatinCapitalLetterC,
346 'D' => Char::LatinCapitalLetterD,
347 'E' => Char::LatinCapitalLetterE,
348 'F' => Char::LatinCapitalLetterF,
349 'G' => Char::LatinCapitalLetterG,
350 'H' => Char::LatinCapitalLetterH,
351 'I' => Char::LatinCapitalLetterI,
352 'J' => Char::LatinCapitalLetterJ,
353 'K' => Char::LatinCapitalLetterK,
354 'L' => Char::LatinCapitalLetterL,
355 'M' => Char::LatinCapitalLetterM,
356 'N' => Char::LatinCapitalLetterN,
357 'O' => Char::LatinCapitalLetterO,
358 'P' => Char::LatinCapitalLetterP,
359 'Q' => Char::LatinCapitalLetterQ,
360 'R' => Char::LatinCapitalLetterR,
361 'S' => Char::LatinCapitalLetterS,
362 'T' => Char::LatinCapitalLetterT,
363 'U' => Char::LatinCapitalLetterU,
364 'V' => Char::LatinCapitalLetterV,
365 'W' => Char::LatinCapitalLetterW,
366 'X' => Char::LatinCapitalLetterX,
367 'Y' => Char::LatinCapitalLetterY,
368 'Z' => Char::LatinCapitalLetterZ,
369 '[' => Char::LeftSquareBracket,
370 '\\' => Char::ReverseSolidus,
371 ']' => Char::RightSquareBracket,
372 '^' => Char::CircumflexAccent,
373 '_' => Char::LowLine,
374 '`' => Char::GraveAccent,
375 'a' => Char::LatinSmallLetterA,
376 'b' => Char::LatinSmallLetterB,
377 'c' => Char::LatinSmallLetterC,
378 'd' => Char::LatinSmallLetterD,
379 'e' => Char::LatinSmallLetterE,
380 'f' => Char::LatinSmallLetterF,
381 'g' => Char::LatinSmallLetterG,
382 'h' => Char::LatinSmallLetterH,
383 'i' => Char::LatinSmallLetterI,
384 'j' => Char::LatinSmallLetterJ,
385 'k' => Char::LatinSmallLetterK,
386 'l' => Char::LatinSmallLetterL,
387 'm' => Char::LatinSmallLetterM,
388 'n' => Char::LatinSmallLetterN,
389 'o' => Char::LatinSmallLetterO,
390 'p' => Char::LatinSmallLetterP,
391 'q' => Char::LatinSmallLetterQ,
392 'r' => Char::LatinSmallLetterR,
393 's' => Char::LatinSmallLetterS,
394 't' => Char::LatinSmallLetterT,
395 'u' => Char::LatinSmallLetterU,
396 'v' => Char::LatinSmallLetterV,
397 'w' => Char::LatinSmallLetterW,
398 'x' => Char::LatinSmallLetterX,
399 'y' => Char::LatinSmallLetterY,
400 'z' => Char::LatinSmallLetterZ,
401 '{' => Char::LeftCurlyBracket,
402 '|' => Char::VerticalLine,
403 '}' => Char::RightCurlyBracket,
404 '~' => Char::Tilde,
405 '\u{007f}' => Char::Delete,
406 'Ç' => Char::LatinCapitalLetterCWithCedilla,
407 'ü' => Char::LatinSmallLetterUWithDiaeresis,
408 'é' => Char::LatinSmallLetterEWithAcute,
409 'â' => Char::LatinSmallLetterAWithCircumflex,
410 'ä' => Char::LatinSmallLetterAWithDiaeresis,
411 'à' => Char::LatinSmallLetterAWithGrave,
412 'å' => Char::LatinSmallLetterAWithRingAbove,
413 'ç' => Char::LatinSmallLetterCWithCedilla,
414 'ê' => Char::LatinSmallLetterEWithCircumflex,
415 'ë' => Char::LatinSmallLetterEWithDiaeresis,
416 'è' => Char::LatinSmallLetterEWithGrave,
417 'ï' => Char::LatinSmallLetterIWithDiaeresis,
418 'î' => Char::LatinSmallLetterIWithCircumflex,
419 'ì' => Char::LatinSmallLetterIWithGrave,
420 'Ä' => Char::LatinCapitalLetterAWithDiaeresis,
421 'Å' => Char::LatinCapitalLetterAWithRingAbove,
422 'É' => Char::LatinCapitalLetterEWithAcute,
423 'æ' => Char::LatinSmallLetterAe,
424 'Æ' => Char::LatinCapitalLetterAe,
425 'ô' => Char::LatinSmallLetterOWithCircumflex,
426 'ö' => Char::LatinSmallLetterOWithDiaeresis,
427 'ò' => Char::LatinSmallLetterOWithGrave,
428 'û' => Char::LatinSmallLetterUWithCircumflex,
429 'ù' => Char::LatinSmallLetterUWithGrave,
430 'ÿ' => Char::LatinSmallLetterYWithDiaeresis,
431 'Ö' => Char::LatinCapitalLetterOWithDiaeresis,
432 'Ü' => Char::LatinCapitalLetterUWithDiaeresis,
433 'ø' => Char::LatinSmallLetterOWithStroke,
434 '£' => Char::PoundSign,
435 'Ø' => Char::LatinCapitalLetterOWithStroke,
436 '×' => Char::MultiplicationSign,
437 'ƒ' => Char::LatinSmallLetterFWithHook,
438 'á' => Char::LatinSmallLetterAWithAcute,
439 'í' => Char::LatinSmallLetterIWithAcute,
440 'ó' => Char::LatinSmallLetterOWithAcute,
441 'ú' => Char::LatinSmallLetterUWithAcute,
442 'ñ' => Char::LatinSmallLetterNWithTilde,
443 'Ñ' => Char::LatinCapitalLetterNWithTilde,
444 'ª' => Char::FeminineOrdinalIndicator,
445 'º' => Char::MasculineOrdinalIndicator,
446 '¿' => Char::InvertedQuestionMark,
447 '®' => Char::RegisteredSign,
448 '¬' => Char::NotSign,
449 '½' => Char::VulgarFractionOneHalf,
450 '¼' => Char::VulgarFractionOneQuarter,
451 '¡' => Char::InvertedExclamationMark,
452 '«' => Char::LeftPointingDoubleAngleQuotationMark,
453 '»' => Char::RightPointingDoubleAngleQuotationMark,
454 '░' => Char::LightShade,
455 '▒' => Char::MediumShade,
456 '▓' => Char::DarkShade,
457 '│' => Char::BoxDrawingsLightVertical,
458 '┤' => Char::BoxDrawingsLightVerticalAndLeft,
459 'Á' => Char::LatinCapitalLetterAWithAcute,
460 'Â' => Char::LatinCapitalLetterAWithCircumflex,
461 'À' => Char::LatinCapitalLetterAWithGrave,
462 '©' => Char::CopyrightSign,
463 '╣' => Char::BoxDrawingsDoubleVerticalAndLeft,
464 '║' => Char::BoxDrawingsDoubleVertical,
465 '╗' => Char::BoxDrawingsDoubleDownAndLeft,
466 '╝' => Char::BoxDrawingsDoubleUpAndLeft,
467 '¢' => Char::CentSign,
468 '¥' => Char::YenSign,
469 '┐' => Char::BoxDrawingsLightDownAndLeft,
470 '└' => Char::BoxDrawingsLightUpAndRight,
471 '┴' => Char::BoxDrawingsLightUpAndHorizontal,
472 '┬' => Char::BoxDrawingsLightDownAndHorizontal,
473 '├' => Char::BoxDrawingsLightVerticalAndRight,
474 '─' => Char::BoxDrawingsLightHorizontal,
475 '┼' => Char::BoxDrawingsLightVerticalAndHorizontal,
476 'ã' => Char::LatinSmallLetterAWithTilde,
477 'Ã' => Char::LatinCapitalLetterAWithTilde,
478 '╚' => Char::BoxDrawingsDoubleUpAndRight,
479 '╔' => Char::BoxDrawingsDoubleDownAndRight,
480 '╩' => Char::BoxDrawingsDoubleUpAndHorizontal,
481 '╦' => Char::BoxDrawingsDoubleDownAndHorizontal,
482 '╠' => Char::BoxDrawingsDoubleVerticalAndRight,
483 '═' => Char::BoxDrawingsDoubleHorizontal,
484 '╬' => Char::BoxDrawingsDoubleVerticalAndHorizontal,
485 '¤' => Char::CurrencySign,
486 'ð' => Char::LatinSmallLetterEth,
487 'Ð' => Char::LatinCapitalLetterEth,
488 'Ê' => Char::LatinCapitalLetterEWithCircumflex,
489 'Ë' => Char::LatinCapitalLetterEWithDiaeresis,
490 'È' => Char::LatinCapitalLetterEWithGrave,
491 'ı' => Char::LatinSmallLetterDotlessI,
492 'Í' => Char::LatinCapitalLetterIWithAcute,
493 'Î' => Char::LatinCapitalLetterIWithCircumflex,
494 'Ï' => Char::LatinCapitalLetterIWithDiaeresis,
495 '┘' => Char::BoxDrawingsLightUpAndLeft,
496 '┌' => Char::BoxDrawingsLightDownAndRight,
497 '█' => Char::FullBlock,
498 '▄' => Char::LowerHalfBlock,
499 '¦' => Char::BrokenBar,
500 'Ì' => Char::LatinCapitalLetterIWithGrave,
501 '▀' => Char::UpperHalfBlock,
502 'Ó' => Char::LatinCapitalLetterOWithAcute,
503 'ß' => Char::LatinSmallLetterSharpS,
504 'Ô' => Char::LatinCapitalLetterOWithCircumflex,
505 'Ò' => Char::LatinCapitalLetterOWithGrave,
506 'õ' => Char::LatinSmallLetterOWithTilde,
507 'Õ' => Char::LatinCapitalLetterOWithTilde,
508 'µ' => Char::MicroSign,
509 'þ' => Char::LatinSmallLetterThorn,
510 'Þ' => Char::LatinCapitalLetterThorn,
511 'Ú' => Char::LatinCapitalLetterUWithAcute,
512 'Û' => Char::LatinCapitalLetterUWithCircumflex,
513 'Ù' => Char::LatinCapitalLetterUWithGrave,
514 'ý' => Char::LatinSmallLetterYWithAcute,
515 'Ý' => Char::LatinCapitalLetterYWithAcute,
516 '¯' => Char::Macron,
517 '´' => Char::AcuteAccent,
518 '\u{00ad}' => Char::SoftHyphen,
519 '±' => Char::PlusMinusSign,
520 '‗' => Char::DoubleLowLine,
521 '¾' => Char::VulgarFractionThreeQuarters,
522 '¶' => Char::PilcrowSign,
523 '§' => Char::SectionSign,
524 '÷' => Char::DivisionSign,
525 '¸' => Char::Cedilla,
526 '°' => Char::DegreeSign,
527 '¨' => Char::Diaeresis,
528 '·' => Char::MiddleDot,
529 '¹' => Char::SuperscriptOne,
530 '³' => Char::SuperscriptThree,
531 '²' => Char::SuperscriptTwo,
532 '■' => Char::BlackSquare,
533 '\u{00a0}' => Char::NoBreakSpace,
534 '☺' => Char::SOH,
535 '☻' => Char::STX,
536 '♥' => Char::ETX,
537 '♦' => Char::EOT,
538 '♣' => Char::ENQ,
539 '♠' => Char::ACK,
540 '•' => Char::BEL,
541 '◘' => Char::BS,
542 '○' => Char::HT,
543 '◙' => Char::LF,
544 '♂' => Char::VT,
545 '♀' => Char::FF,
546 '♪' => Char::CR,
547 '♫' => Char::SO,
548 '☼' => Char::SI,
549 '►' => Char::DLE,
550 '◄' => Char::DC1,
551 '↕' => Char::DC2,
552 '‼' => Char::DC3,
553 '▬' => Char::SYN,
554 '↨' => Char::ETB,
555 '↑' => Char::CAN,
556 '↓' => Char::EM,
557 '→' => Char::SUB,
558 '←' => Char::Escape,
559 '∟' => Char::FS,
560 '↔' => Char::GS,
561 '▲' => Char::RS,
562 '▼' => Char::US,
563 _ => Char::QuestionMark,
564 }
565 }
566
567 /// Convert an 8-bit integer into a `Char` (assumes input is in CodePage
568 /// 850).
569 pub fn from_byte(byte: u8) -> Char {
570 unsafe { ::core::mem::transmute(byte) }
571 }
572
573 /// Convert to an 8-bit integer.
574 pub fn to_byte(self) -> u8 {
575 unsafe { ::core::mem::transmute(self) }
576 }
577}
578
579// End of file