blob: 2d01db0e901a10c0d2e3e54a2f8992836859af0c [file] [log] [blame]
Marc-André Lemburga1129f42005-10-21 13:49:12 +00001""" Python Character Mapping Codec generated from 'ISO8859/8859-8.TXT' with gencodec.py.
Guido van Rossum0229bf62000-03-10 23:17:24 +00002
3"""#"
4
5import codecs
6
7### Codec APIs
8
9class Codec(codecs.Codec):
10
11 def encode(self,input,errors='strict'):
12
13 return codecs.charmap_encode(input,errors,encoding_map)
Tim Peters469cdad2002-08-08 20:19:19 +000014
Guido van Rossum0229bf62000-03-10 23:17:24 +000015 def decode(self,input,errors='strict'):
16
Marc-André Lemburga1129f42005-10-21 13:49:12 +000017 return codecs.charmap_decode(input,errors,decoding_table)
18
Guido van Rossum0229bf62000-03-10 23:17:24 +000019class StreamWriter(Codec,codecs.StreamWriter):
20 pass
Tim Peters469cdad2002-08-08 20:19:19 +000021
Guido van Rossum0229bf62000-03-10 23:17:24 +000022class StreamReader(Codec,codecs.StreamReader):
23 pass
24
25### encodings module API
26
27def getregentry():
28
29 return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
30
31### Decoding Map
32
Marc-André Lemburga866df82001-01-03 21:29:14 +000033decoding_map = codecs.make_identity_dict(range(256))
34decoding_map.update({
Marc-André Lemburga1129f42005-10-21 13:49:12 +000035 0x00a1: None,
36 0x00aa: 0x00d7, # MULTIPLICATION SIGN
37 0x00ba: 0x00f7, # DIVISION SIGN
38 0x00bf: None,
39 0x00c0: None,
40 0x00c1: None,
41 0x00c2: None,
42 0x00c3: None,
43 0x00c4: None,
44 0x00c5: None,
45 0x00c6: None,
46 0x00c7: None,
47 0x00c8: None,
48 0x00c9: None,
49 0x00ca: None,
50 0x00cb: None,
51 0x00cc: None,
52 0x00cd: None,
53 0x00ce: None,
54 0x00cf: None,
55 0x00d0: None,
56 0x00d1: None,
57 0x00d2: None,
58 0x00d3: None,
59 0x00d4: None,
60 0x00d5: None,
61 0x00d6: None,
62 0x00d7: None,
63 0x00d8: None,
64 0x00d9: None,
65 0x00da: None,
66 0x00db: None,
67 0x00dc: None,
68 0x00dd: None,
69 0x00de: None,
70 0x00df: 0x2017, # DOUBLE LOW LINE
71 0x00e0: 0x05d0, # HEBREW LETTER ALEF
72 0x00e1: 0x05d1, # HEBREW LETTER BET
73 0x00e2: 0x05d2, # HEBREW LETTER GIMEL
74 0x00e3: 0x05d3, # HEBREW LETTER DALET
75 0x00e4: 0x05d4, # HEBREW LETTER HE
76 0x00e5: 0x05d5, # HEBREW LETTER VAV
77 0x00e6: 0x05d6, # HEBREW LETTER ZAYIN
78 0x00e7: 0x05d7, # HEBREW LETTER HET
79 0x00e8: 0x05d8, # HEBREW LETTER TET
80 0x00e9: 0x05d9, # HEBREW LETTER YOD
81 0x00ea: 0x05da, # HEBREW LETTER FINAL KAF
82 0x00eb: 0x05db, # HEBREW LETTER KAF
83 0x00ec: 0x05dc, # HEBREW LETTER LAMED
84 0x00ed: 0x05dd, # HEBREW LETTER FINAL MEM
85 0x00ee: 0x05de, # HEBREW LETTER MEM
86 0x00ef: 0x05df, # HEBREW LETTER FINAL NUN
87 0x00f0: 0x05e0, # HEBREW LETTER NUN
88 0x00f1: 0x05e1, # HEBREW LETTER SAMEKH
89 0x00f2: 0x05e2, # HEBREW LETTER AYIN
90 0x00f3: 0x05e3, # HEBREW LETTER FINAL PE
91 0x00f4: 0x05e4, # HEBREW LETTER PE
92 0x00f5: 0x05e5, # HEBREW LETTER FINAL TSADI
93 0x00f6: 0x05e6, # HEBREW LETTER TSADI
94 0x00f7: 0x05e7, # HEBREW LETTER QOF
95 0x00f8: 0x05e8, # HEBREW LETTER RESH
96 0x00f9: 0x05e9, # HEBREW LETTER SHIN
97 0x00fa: 0x05ea, # HEBREW LETTER TAV
98 0x00fb: None,
99 0x00fc: None,
100 0x00fd: 0x200e, # LEFT-TO-RIGHT MARK
101 0x00fe: 0x200f, # RIGHT-TO-LEFT MARK
102 0x00ff: None,
Marc-André Lemburga866df82001-01-03 21:29:14 +0000103})
Guido van Rossum0229bf62000-03-10 23:17:24 +0000104
Marc-André Lemburga1129f42005-10-21 13:49:12 +0000105### Decoding Table
106
107decoding_table = (
108 u'\x00' # 0x0000 -> NULL
109 u'\x01' # 0x0001 -> START OF HEADING
110 u'\x02' # 0x0002 -> START OF TEXT
111 u'\x03' # 0x0003 -> END OF TEXT
112 u'\x04' # 0x0004 -> END OF TRANSMISSION
113 u'\x05' # 0x0005 -> ENQUIRY
114 u'\x06' # 0x0006 -> ACKNOWLEDGE
115 u'\x07' # 0x0007 -> BELL
116 u'\x08' # 0x0008 -> BACKSPACE
117 u'\t' # 0x0009 -> HORIZONTAL TABULATION
118 u'\n' # 0x000a -> LINE FEED
119 u'\x0b' # 0x000b -> VERTICAL TABULATION
120 u'\x0c' # 0x000c -> FORM FEED
121 u'\r' # 0x000d -> CARRIAGE RETURN
122 u'\x0e' # 0x000e -> SHIFT OUT
123 u'\x0f' # 0x000f -> SHIFT IN
124 u'\x10' # 0x0010 -> DATA LINK ESCAPE
125 u'\x11' # 0x0011 -> DEVICE CONTROL ONE
126 u'\x12' # 0x0012 -> DEVICE CONTROL TWO
127 u'\x13' # 0x0013 -> DEVICE CONTROL THREE
128 u'\x14' # 0x0014 -> DEVICE CONTROL FOUR
129 u'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
130 u'\x16' # 0x0016 -> SYNCHRONOUS IDLE
131 u'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
132 u'\x18' # 0x0018 -> CANCEL
133 u'\x19' # 0x0019 -> END OF MEDIUM
134 u'\x1a' # 0x001a -> SUBSTITUTE
135 u'\x1b' # 0x001b -> ESCAPE
136 u'\x1c' # 0x001c -> FILE SEPARATOR
137 u'\x1d' # 0x001d -> GROUP SEPARATOR
138 u'\x1e' # 0x001e -> RECORD SEPARATOR
139 u'\x1f' # 0x001f -> UNIT SEPARATOR
140 u' ' # 0x0020 -> SPACE
141 u'!' # 0x0021 -> EXCLAMATION MARK
142 u'"' # 0x0022 -> QUOTATION MARK
143 u'#' # 0x0023 -> NUMBER SIGN
144 u'$' # 0x0024 -> DOLLAR SIGN
145 u'%' # 0x0025 -> PERCENT SIGN
146 u'&' # 0x0026 -> AMPERSAND
147 u"'" # 0x0027 -> APOSTROPHE
148 u'(' # 0x0028 -> LEFT PARENTHESIS
149 u')' # 0x0029 -> RIGHT PARENTHESIS
150 u'*' # 0x002a -> ASTERISK
151 u'+' # 0x002b -> PLUS SIGN
152 u',' # 0x002c -> COMMA
153 u'-' # 0x002d -> HYPHEN-MINUS
154 u'.' # 0x002e -> FULL STOP
155 u'/' # 0x002f -> SOLIDUS
156 u'0' # 0x0030 -> DIGIT ZERO
157 u'1' # 0x0031 -> DIGIT ONE
158 u'2' # 0x0032 -> DIGIT TWO
159 u'3' # 0x0033 -> DIGIT THREE
160 u'4' # 0x0034 -> DIGIT FOUR
161 u'5' # 0x0035 -> DIGIT FIVE
162 u'6' # 0x0036 -> DIGIT SIX
163 u'7' # 0x0037 -> DIGIT SEVEN
164 u'8' # 0x0038 -> DIGIT EIGHT
165 u'9' # 0x0039 -> DIGIT NINE
166 u':' # 0x003a -> COLON
167 u';' # 0x003b -> SEMICOLON
168 u'<' # 0x003c -> LESS-THAN SIGN
169 u'=' # 0x003d -> EQUALS SIGN
170 u'>' # 0x003e -> GREATER-THAN SIGN
171 u'?' # 0x003f -> QUESTION MARK
172 u'@' # 0x0040 -> COMMERCIAL AT
173 u'A' # 0x0041 -> LATIN CAPITAL LETTER A
174 u'B' # 0x0042 -> LATIN CAPITAL LETTER B
175 u'C' # 0x0043 -> LATIN CAPITAL LETTER C
176 u'D' # 0x0044 -> LATIN CAPITAL LETTER D
177 u'E' # 0x0045 -> LATIN CAPITAL LETTER E
178 u'F' # 0x0046 -> LATIN CAPITAL LETTER F
179 u'G' # 0x0047 -> LATIN CAPITAL LETTER G
180 u'H' # 0x0048 -> LATIN CAPITAL LETTER H
181 u'I' # 0x0049 -> LATIN CAPITAL LETTER I
182 u'J' # 0x004a -> LATIN CAPITAL LETTER J
183 u'K' # 0x004b -> LATIN CAPITAL LETTER K
184 u'L' # 0x004c -> LATIN CAPITAL LETTER L
185 u'M' # 0x004d -> LATIN CAPITAL LETTER M
186 u'N' # 0x004e -> LATIN CAPITAL LETTER N
187 u'O' # 0x004f -> LATIN CAPITAL LETTER O
188 u'P' # 0x0050 -> LATIN CAPITAL LETTER P
189 u'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
190 u'R' # 0x0052 -> LATIN CAPITAL LETTER R
191 u'S' # 0x0053 -> LATIN CAPITAL LETTER S
192 u'T' # 0x0054 -> LATIN CAPITAL LETTER T
193 u'U' # 0x0055 -> LATIN CAPITAL LETTER U
194 u'V' # 0x0056 -> LATIN CAPITAL LETTER V
195 u'W' # 0x0057 -> LATIN CAPITAL LETTER W
196 u'X' # 0x0058 -> LATIN CAPITAL LETTER X
197 u'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
198 u'Z' # 0x005a -> LATIN CAPITAL LETTER Z
199 u'[' # 0x005b -> LEFT SQUARE BRACKET
200 u'\\' # 0x005c -> REVERSE SOLIDUS
201 u']' # 0x005d -> RIGHT SQUARE BRACKET
202 u'^' # 0x005e -> CIRCUMFLEX ACCENT
203 u'_' # 0x005f -> LOW LINE
204 u'`' # 0x0060 -> GRAVE ACCENT
205 u'a' # 0x0061 -> LATIN SMALL LETTER A
206 u'b' # 0x0062 -> LATIN SMALL LETTER B
207 u'c' # 0x0063 -> LATIN SMALL LETTER C
208 u'd' # 0x0064 -> LATIN SMALL LETTER D
209 u'e' # 0x0065 -> LATIN SMALL LETTER E
210 u'f' # 0x0066 -> LATIN SMALL LETTER F
211 u'g' # 0x0067 -> LATIN SMALL LETTER G
212 u'h' # 0x0068 -> LATIN SMALL LETTER H
213 u'i' # 0x0069 -> LATIN SMALL LETTER I
214 u'j' # 0x006a -> LATIN SMALL LETTER J
215 u'k' # 0x006b -> LATIN SMALL LETTER K
216 u'l' # 0x006c -> LATIN SMALL LETTER L
217 u'm' # 0x006d -> LATIN SMALL LETTER M
218 u'n' # 0x006e -> LATIN SMALL LETTER N
219 u'o' # 0x006f -> LATIN SMALL LETTER O
220 u'p' # 0x0070 -> LATIN SMALL LETTER P
221 u'q' # 0x0071 -> LATIN SMALL LETTER Q
222 u'r' # 0x0072 -> LATIN SMALL LETTER R
223 u's' # 0x0073 -> LATIN SMALL LETTER S
224 u't' # 0x0074 -> LATIN SMALL LETTER T
225 u'u' # 0x0075 -> LATIN SMALL LETTER U
226 u'v' # 0x0076 -> LATIN SMALL LETTER V
227 u'w' # 0x0077 -> LATIN SMALL LETTER W
228 u'x' # 0x0078 -> LATIN SMALL LETTER X
229 u'y' # 0x0079 -> LATIN SMALL LETTER Y
230 u'z' # 0x007a -> LATIN SMALL LETTER Z
231 u'{' # 0x007b -> LEFT CURLY BRACKET
232 u'|' # 0x007c -> VERTICAL LINE
233 u'}' # 0x007d -> RIGHT CURLY BRACKET
234 u'~' # 0x007e -> TILDE
235 u'\x7f' # 0x007f -> DELETE
236 u'\x80' # 0x0080 -> <control>
237 u'\x81' # 0x0081 -> <control>
238 u'\x82' # 0x0082 -> <control>
239 u'\x83' # 0x0083 -> <control>
240 u'\x84' # 0x0084 -> <control>
241 u'\x85' # 0x0085 -> <control>
242 u'\x86' # 0x0086 -> <control>
243 u'\x87' # 0x0087 -> <control>
244 u'\x88' # 0x0088 -> <control>
245 u'\x89' # 0x0089 -> <control>
246 u'\x8a' # 0x008a -> <control>
247 u'\x8b' # 0x008b -> <control>
248 u'\x8c' # 0x008c -> <control>
249 u'\x8d' # 0x008d -> <control>
250 u'\x8e' # 0x008e -> <control>
251 u'\x8f' # 0x008f -> <control>
252 u'\x90' # 0x0090 -> <control>
253 u'\x91' # 0x0091 -> <control>
254 u'\x92' # 0x0092 -> <control>
255 u'\x93' # 0x0093 -> <control>
256 u'\x94' # 0x0094 -> <control>
257 u'\x95' # 0x0095 -> <control>
258 u'\x96' # 0x0096 -> <control>
259 u'\x97' # 0x0097 -> <control>
260 u'\x98' # 0x0098 -> <control>
261 u'\x99' # 0x0099 -> <control>
262 u'\x9a' # 0x009a -> <control>
263 u'\x9b' # 0x009b -> <control>
264 u'\x9c' # 0x009c -> <control>
265 u'\x9d' # 0x009d -> <control>
266 u'\x9e' # 0x009e -> <control>
267 u'\x9f' # 0x009f -> <control>
268 u'\xa0' # 0x00a0 -> NO-BREAK SPACE
269 u'\ufffe'
270 u'\xa2' # 0x00a2 -> CENT SIGN
271 u'\xa3' # 0x00a3 -> POUND SIGN
272 u'\xa4' # 0x00a4 -> CURRENCY SIGN
273 u'\xa5' # 0x00a5 -> YEN SIGN
274 u'\xa6' # 0x00a6 -> BROKEN BAR
275 u'\xa7' # 0x00a7 -> SECTION SIGN
276 u'\xa8' # 0x00a8 -> DIAERESIS
277 u'\xa9' # 0x00a9 -> COPYRIGHT SIGN
278 u'\xd7' # 0x00aa -> MULTIPLICATION SIGN
279 u'\xab' # 0x00ab -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
280 u'\xac' # 0x00ac -> NOT SIGN
281 u'\xad' # 0x00ad -> SOFT HYPHEN
282 u'\xae' # 0x00ae -> REGISTERED SIGN
283 u'\xaf' # 0x00af -> MACRON
284 u'\xb0' # 0x00b0 -> DEGREE SIGN
285 u'\xb1' # 0x00b1 -> PLUS-MINUS SIGN
286 u'\xb2' # 0x00b2 -> SUPERSCRIPT TWO
287 u'\xb3' # 0x00b3 -> SUPERSCRIPT THREE
288 u'\xb4' # 0x00b4 -> ACUTE ACCENT
289 u'\xb5' # 0x00b5 -> MICRO SIGN
290 u'\xb6' # 0x00b6 -> PILCROW SIGN
291 u'\xb7' # 0x00b7 -> MIDDLE DOT
292 u'\xb8' # 0x00b8 -> CEDILLA
293 u'\xb9' # 0x00b9 -> SUPERSCRIPT ONE
294 u'\xf7' # 0x00ba -> DIVISION SIGN
295 u'\xbb' # 0x00bb -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
296 u'\xbc' # 0x00bc -> VULGAR FRACTION ONE QUARTER
297 u'\xbd' # 0x00bd -> VULGAR FRACTION ONE HALF
298 u'\xbe' # 0x00be -> VULGAR FRACTION THREE QUARTERS
299 u'\ufffe'
300 u'\ufffe'
301 u'\ufffe'
302 u'\ufffe'
303 u'\ufffe'
304 u'\ufffe'
305 u'\ufffe'
306 u'\ufffe'
307 u'\ufffe'
308 u'\ufffe'
309 u'\ufffe'
310 u'\ufffe'
311 u'\ufffe'
312 u'\ufffe'
313 u'\ufffe'
314 u'\ufffe'
315 u'\ufffe'
316 u'\ufffe'
317 u'\ufffe'
318 u'\ufffe'
319 u'\ufffe'
320 u'\ufffe'
321 u'\ufffe'
322 u'\ufffe'
323 u'\ufffe'
324 u'\ufffe'
325 u'\ufffe'
326 u'\ufffe'
327 u'\ufffe'
328 u'\ufffe'
329 u'\ufffe'
330 u'\ufffe'
331 u'\u2017' # 0x00df -> DOUBLE LOW LINE
332 u'\u05d0' # 0x00e0 -> HEBREW LETTER ALEF
333 u'\u05d1' # 0x00e1 -> HEBREW LETTER BET
334 u'\u05d2' # 0x00e2 -> HEBREW LETTER GIMEL
335 u'\u05d3' # 0x00e3 -> HEBREW LETTER DALET
336 u'\u05d4' # 0x00e4 -> HEBREW LETTER HE
337 u'\u05d5' # 0x00e5 -> HEBREW LETTER VAV
338 u'\u05d6' # 0x00e6 -> HEBREW LETTER ZAYIN
339 u'\u05d7' # 0x00e7 -> HEBREW LETTER HET
340 u'\u05d8' # 0x00e8 -> HEBREW LETTER TET
341 u'\u05d9' # 0x00e9 -> HEBREW LETTER YOD
342 u'\u05da' # 0x00ea -> HEBREW LETTER FINAL KAF
343 u'\u05db' # 0x00eb -> HEBREW LETTER KAF
344 u'\u05dc' # 0x00ec -> HEBREW LETTER LAMED
345 u'\u05dd' # 0x00ed -> HEBREW LETTER FINAL MEM
346 u'\u05de' # 0x00ee -> HEBREW LETTER MEM
347 u'\u05df' # 0x00ef -> HEBREW LETTER FINAL NUN
348 u'\u05e0' # 0x00f0 -> HEBREW LETTER NUN
349 u'\u05e1' # 0x00f1 -> HEBREW LETTER SAMEKH
350 u'\u05e2' # 0x00f2 -> HEBREW LETTER AYIN
351 u'\u05e3' # 0x00f3 -> HEBREW LETTER FINAL PE
352 u'\u05e4' # 0x00f4 -> HEBREW LETTER PE
353 u'\u05e5' # 0x00f5 -> HEBREW LETTER FINAL TSADI
354 u'\u05e6' # 0x00f6 -> HEBREW LETTER TSADI
355 u'\u05e7' # 0x00f7 -> HEBREW LETTER QOF
356 u'\u05e8' # 0x00f8 -> HEBREW LETTER RESH
357 u'\u05e9' # 0x00f9 -> HEBREW LETTER SHIN
358 u'\u05ea' # 0x00fa -> HEBREW LETTER TAV
359 u'\ufffe'
360 u'\ufffe'
361 u'\u200e' # 0x00fd -> LEFT-TO-RIGHT MARK
362 u'\u200f' # 0x00fe -> RIGHT-TO-LEFT MARK
363 u'\ufffe'
364)
365
Guido van Rossum0229bf62000-03-10 23:17:24 +0000366### Encoding Map
367
Marc-André Lemburga1129f42005-10-21 13:49:12 +0000368encoding_map = {
369 0x0000: 0x0000, # NULL
370 0x0001: 0x0001, # START OF HEADING
371 0x0002: 0x0002, # START OF TEXT
372 0x0003: 0x0003, # END OF TEXT
373 0x0004: 0x0004, # END OF TRANSMISSION
374 0x0005: 0x0005, # ENQUIRY
375 0x0006: 0x0006, # ACKNOWLEDGE
376 0x0007: 0x0007, # BELL
377 0x0008: 0x0008, # BACKSPACE
378 0x0009: 0x0009, # HORIZONTAL TABULATION
379 0x000a: 0x000a, # LINE FEED
380 0x000b: 0x000b, # VERTICAL TABULATION
381 0x000c: 0x000c, # FORM FEED
382 0x000d: 0x000d, # CARRIAGE RETURN
383 0x000e: 0x000e, # SHIFT OUT
384 0x000f: 0x000f, # SHIFT IN
385 0x0010: 0x0010, # DATA LINK ESCAPE
386 0x0011: 0x0011, # DEVICE CONTROL ONE
387 0x0012: 0x0012, # DEVICE CONTROL TWO
388 0x0013: 0x0013, # DEVICE CONTROL THREE
389 0x0014: 0x0014, # DEVICE CONTROL FOUR
390 0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
391 0x0016: 0x0016, # SYNCHRONOUS IDLE
392 0x0017: 0x0017, # END OF TRANSMISSION BLOCK
393 0x0018: 0x0018, # CANCEL
394 0x0019: 0x0019, # END OF MEDIUM
395 0x001a: 0x001a, # SUBSTITUTE
396 0x001b: 0x001b, # ESCAPE
397 0x001c: 0x001c, # FILE SEPARATOR
398 0x001d: 0x001d, # GROUP SEPARATOR
399 0x001e: 0x001e, # RECORD SEPARATOR
400 0x001f: 0x001f, # UNIT SEPARATOR
401 0x0020: 0x0020, # SPACE
402 0x0021: 0x0021, # EXCLAMATION MARK
403 0x0022: 0x0022, # QUOTATION MARK
404 0x0023: 0x0023, # NUMBER SIGN
405 0x0024: 0x0024, # DOLLAR SIGN
406 0x0025: 0x0025, # PERCENT SIGN
407 0x0026: 0x0026, # AMPERSAND
408 0x0027: 0x0027, # APOSTROPHE
409 0x0028: 0x0028, # LEFT PARENTHESIS
410 0x0029: 0x0029, # RIGHT PARENTHESIS
411 0x002a: 0x002a, # ASTERISK
412 0x002b: 0x002b, # PLUS SIGN
413 0x002c: 0x002c, # COMMA
414 0x002d: 0x002d, # HYPHEN-MINUS
415 0x002e: 0x002e, # FULL STOP
416 0x002f: 0x002f, # SOLIDUS
417 0x0030: 0x0030, # DIGIT ZERO
418 0x0031: 0x0031, # DIGIT ONE
419 0x0032: 0x0032, # DIGIT TWO
420 0x0033: 0x0033, # DIGIT THREE
421 0x0034: 0x0034, # DIGIT FOUR
422 0x0035: 0x0035, # DIGIT FIVE
423 0x0036: 0x0036, # DIGIT SIX
424 0x0037: 0x0037, # DIGIT SEVEN
425 0x0038: 0x0038, # DIGIT EIGHT
426 0x0039: 0x0039, # DIGIT NINE
427 0x003a: 0x003a, # COLON
428 0x003b: 0x003b, # SEMICOLON
429 0x003c: 0x003c, # LESS-THAN SIGN
430 0x003d: 0x003d, # EQUALS SIGN
431 0x003e: 0x003e, # GREATER-THAN SIGN
432 0x003f: 0x003f, # QUESTION MARK
433 0x0040: 0x0040, # COMMERCIAL AT
434 0x0041: 0x0041, # LATIN CAPITAL LETTER A
435 0x0042: 0x0042, # LATIN CAPITAL LETTER B
436 0x0043: 0x0043, # LATIN CAPITAL LETTER C
437 0x0044: 0x0044, # LATIN CAPITAL LETTER D
438 0x0045: 0x0045, # LATIN CAPITAL LETTER E
439 0x0046: 0x0046, # LATIN CAPITAL LETTER F
440 0x0047: 0x0047, # LATIN CAPITAL LETTER G
441 0x0048: 0x0048, # LATIN CAPITAL LETTER H
442 0x0049: 0x0049, # LATIN CAPITAL LETTER I
443 0x004a: 0x004a, # LATIN CAPITAL LETTER J
444 0x004b: 0x004b, # LATIN CAPITAL LETTER K
445 0x004c: 0x004c, # LATIN CAPITAL LETTER L
446 0x004d: 0x004d, # LATIN CAPITAL LETTER M
447 0x004e: 0x004e, # LATIN CAPITAL LETTER N
448 0x004f: 0x004f, # LATIN CAPITAL LETTER O
449 0x0050: 0x0050, # LATIN CAPITAL LETTER P
450 0x0051: 0x0051, # LATIN CAPITAL LETTER Q
451 0x0052: 0x0052, # LATIN CAPITAL LETTER R
452 0x0053: 0x0053, # LATIN CAPITAL LETTER S
453 0x0054: 0x0054, # LATIN CAPITAL LETTER T
454 0x0055: 0x0055, # LATIN CAPITAL LETTER U
455 0x0056: 0x0056, # LATIN CAPITAL LETTER V
456 0x0057: 0x0057, # LATIN CAPITAL LETTER W
457 0x0058: 0x0058, # LATIN CAPITAL LETTER X
458 0x0059: 0x0059, # LATIN CAPITAL LETTER Y
459 0x005a: 0x005a, # LATIN CAPITAL LETTER Z
460 0x005b: 0x005b, # LEFT SQUARE BRACKET
461 0x005c: 0x005c, # REVERSE SOLIDUS
462 0x005d: 0x005d, # RIGHT SQUARE BRACKET
463 0x005e: 0x005e, # CIRCUMFLEX ACCENT
464 0x005f: 0x005f, # LOW LINE
465 0x0060: 0x0060, # GRAVE ACCENT
466 0x0061: 0x0061, # LATIN SMALL LETTER A
467 0x0062: 0x0062, # LATIN SMALL LETTER B
468 0x0063: 0x0063, # LATIN SMALL LETTER C
469 0x0064: 0x0064, # LATIN SMALL LETTER D
470 0x0065: 0x0065, # LATIN SMALL LETTER E
471 0x0066: 0x0066, # LATIN SMALL LETTER F
472 0x0067: 0x0067, # LATIN SMALL LETTER G
473 0x0068: 0x0068, # LATIN SMALL LETTER H
474 0x0069: 0x0069, # LATIN SMALL LETTER I
475 0x006a: 0x006a, # LATIN SMALL LETTER J
476 0x006b: 0x006b, # LATIN SMALL LETTER K
477 0x006c: 0x006c, # LATIN SMALL LETTER L
478 0x006d: 0x006d, # LATIN SMALL LETTER M
479 0x006e: 0x006e, # LATIN SMALL LETTER N
480 0x006f: 0x006f, # LATIN SMALL LETTER O
481 0x0070: 0x0070, # LATIN SMALL LETTER P
482 0x0071: 0x0071, # LATIN SMALL LETTER Q
483 0x0072: 0x0072, # LATIN SMALL LETTER R
484 0x0073: 0x0073, # LATIN SMALL LETTER S
485 0x0074: 0x0074, # LATIN SMALL LETTER T
486 0x0075: 0x0075, # LATIN SMALL LETTER U
487 0x0076: 0x0076, # LATIN SMALL LETTER V
488 0x0077: 0x0077, # LATIN SMALL LETTER W
489 0x0078: 0x0078, # LATIN SMALL LETTER X
490 0x0079: 0x0079, # LATIN SMALL LETTER Y
491 0x007a: 0x007a, # LATIN SMALL LETTER Z
492 0x007b: 0x007b, # LEFT CURLY BRACKET
493 0x007c: 0x007c, # VERTICAL LINE
494 0x007d: 0x007d, # RIGHT CURLY BRACKET
495 0x007e: 0x007e, # TILDE
496 0x007f: 0x007f, # DELETE
497 0x0080: 0x0080, # <control>
498 0x0081: 0x0081, # <control>
499 0x0082: 0x0082, # <control>
500 0x0083: 0x0083, # <control>
501 0x0084: 0x0084, # <control>
502 0x0085: 0x0085, # <control>
503 0x0086: 0x0086, # <control>
504 0x0087: 0x0087, # <control>
505 0x0088: 0x0088, # <control>
506 0x0089: 0x0089, # <control>
507 0x008a: 0x008a, # <control>
508 0x008b: 0x008b, # <control>
509 0x008c: 0x008c, # <control>
510 0x008d: 0x008d, # <control>
511 0x008e: 0x008e, # <control>
512 0x008f: 0x008f, # <control>
513 0x0090: 0x0090, # <control>
514 0x0091: 0x0091, # <control>
515 0x0092: 0x0092, # <control>
516 0x0093: 0x0093, # <control>
517 0x0094: 0x0094, # <control>
518 0x0095: 0x0095, # <control>
519 0x0096: 0x0096, # <control>
520 0x0097: 0x0097, # <control>
521 0x0098: 0x0098, # <control>
522 0x0099: 0x0099, # <control>
523 0x009a: 0x009a, # <control>
524 0x009b: 0x009b, # <control>
525 0x009c: 0x009c, # <control>
526 0x009d: 0x009d, # <control>
527 0x009e: 0x009e, # <control>
528 0x009f: 0x009f, # <control>
529 0x00a0: 0x00a0, # NO-BREAK SPACE
530 0x00a2: 0x00a2, # CENT SIGN
531 0x00a3: 0x00a3, # POUND SIGN
532 0x00a4: 0x00a4, # CURRENCY SIGN
533 0x00a5: 0x00a5, # YEN SIGN
534 0x00a6: 0x00a6, # BROKEN BAR
535 0x00a7: 0x00a7, # SECTION SIGN
536 0x00a8: 0x00a8, # DIAERESIS
537 0x00a9: 0x00a9, # COPYRIGHT SIGN
538 0x00ab: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
539 0x00ac: 0x00ac, # NOT SIGN
540 0x00ad: 0x00ad, # SOFT HYPHEN
541 0x00ae: 0x00ae, # REGISTERED SIGN
542 0x00af: 0x00af, # MACRON
543 0x00b0: 0x00b0, # DEGREE SIGN
544 0x00b1: 0x00b1, # PLUS-MINUS SIGN
545 0x00b2: 0x00b2, # SUPERSCRIPT TWO
546 0x00b3: 0x00b3, # SUPERSCRIPT THREE
547 0x00b4: 0x00b4, # ACUTE ACCENT
548 0x00b5: 0x00b5, # MICRO SIGN
549 0x00b6: 0x00b6, # PILCROW SIGN
550 0x00b7: 0x00b7, # MIDDLE DOT
551 0x00b8: 0x00b8, # CEDILLA
552 0x00b9: 0x00b9, # SUPERSCRIPT ONE
553 0x00bb: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
554 0x00bc: 0x00bc, # VULGAR FRACTION ONE QUARTER
555 0x00bd: 0x00bd, # VULGAR FRACTION ONE HALF
556 0x00be: 0x00be, # VULGAR FRACTION THREE QUARTERS
557 0x00d7: 0x00aa, # MULTIPLICATION SIGN
558 0x00f7: 0x00ba, # DIVISION SIGN
559 0x05d0: 0x00e0, # HEBREW LETTER ALEF
560 0x05d1: 0x00e1, # HEBREW LETTER BET
561 0x05d2: 0x00e2, # HEBREW LETTER GIMEL
562 0x05d3: 0x00e3, # HEBREW LETTER DALET
563 0x05d4: 0x00e4, # HEBREW LETTER HE
564 0x05d5: 0x00e5, # HEBREW LETTER VAV
565 0x05d6: 0x00e6, # HEBREW LETTER ZAYIN
566 0x05d7: 0x00e7, # HEBREW LETTER HET
567 0x05d8: 0x00e8, # HEBREW LETTER TET
568 0x05d9: 0x00e9, # HEBREW LETTER YOD
569 0x05da: 0x00ea, # HEBREW LETTER FINAL KAF
570 0x05db: 0x00eb, # HEBREW LETTER KAF
571 0x05dc: 0x00ec, # HEBREW LETTER LAMED
572 0x05dd: 0x00ed, # HEBREW LETTER FINAL MEM
573 0x05de: 0x00ee, # HEBREW LETTER MEM
574 0x05df: 0x00ef, # HEBREW LETTER FINAL NUN
575 0x05e0: 0x00f0, # HEBREW LETTER NUN
576 0x05e1: 0x00f1, # HEBREW LETTER SAMEKH
577 0x05e2: 0x00f2, # HEBREW LETTER AYIN
578 0x05e3: 0x00f3, # HEBREW LETTER FINAL PE
579 0x05e4: 0x00f4, # HEBREW LETTER PE
580 0x05e5: 0x00f5, # HEBREW LETTER FINAL TSADI
581 0x05e6: 0x00f6, # HEBREW LETTER TSADI
582 0x05e7: 0x00f7, # HEBREW LETTER QOF
583 0x05e8: 0x00f8, # HEBREW LETTER RESH
584 0x05e9: 0x00f9, # HEBREW LETTER SHIN
585 0x05ea: 0x00fa, # HEBREW LETTER TAV
586 0x200e: 0x00fd, # LEFT-TO-RIGHT MARK
587 0x200f: 0x00fe, # RIGHT-TO-LEFT MARK
588 0x2017: 0x00df, # DOUBLE LOW LINE
589}