blob: 254dea31ff4ee8400d9f4bceac6999595e6f511b [file] [log] [blame]
Marc-André Lemburga1129f42005-10-21 13:49:12 +00001""" Python Character Mapping Codec generated from 'ISO8859/8859-6.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 0x00a2: None,
37 0x00a3: None,
38 0x00a5: None,
39 0x00a6: None,
40 0x00a7: None,
41 0x00a8: None,
42 0x00a9: None,
43 0x00aa: None,
44 0x00ab: None,
45 0x00ac: 0x060c, # ARABIC COMMA
46 0x00ae: None,
47 0x00af: None,
48 0x00b0: None,
49 0x00b1: None,
50 0x00b2: None,
51 0x00b3: None,
52 0x00b4: None,
53 0x00b5: None,
54 0x00b6: None,
55 0x00b7: None,
56 0x00b8: None,
57 0x00b9: None,
58 0x00ba: None,
59 0x00bb: 0x061b, # ARABIC SEMICOLON
60 0x00bc: None,
61 0x00bd: None,
62 0x00be: None,
63 0x00bf: 0x061f, # ARABIC QUESTION MARK
64 0x00c0: None,
65 0x00c1: 0x0621, # ARABIC LETTER HAMZA
66 0x00c2: 0x0622, # ARABIC LETTER ALEF WITH MADDA ABOVE
67 0x00c3: 0x0623, # ARABIC LETTER ALEF WITH HAMZA ABOVE
68 0x00c4: 0x0624, # ARABIC LETTER WAW WITH HAMZA ABOVE
69 0x00c5: 0x0625, # ARABIC LETTER ALEF WITH HAMZA BELOW
70 0x00c6: 0x0626, # ARABIC LETTER YEH WITH HAMZA ABOVE
71 0x00c7: 0x0627, # ARABIC LETTER ALEF
72 0x00c8: 0x0628, # ARABIC LETTER BEH
73 0x00c9: 0x0629, # ARABIC LETTER TEH MARBUTA
74 0x00ca: 0x062a, # ARABIC LETTER TEH
75 0x00cb: 0x062b, # ARABIC LETTER THEH
76 0x00cc: 0x062c, # ARABIC LETTER JEEM
77 0x00cd: 0x062d, # ARABIC LETTER HAH
78 0x00ce: 0x062e, # ARABIC LETTER KHAH
79 0x00cf: 0x062f, # ARABIC LETTER DAL
80 0x00d0: 0x0630, # ARABIC LETTER THAL
81 0x00d1: 0x0631, # ARABIC LETTER REH
82 0x00d2: 0x0632, # ARABIC LETTER ZAIN
83 0x00d3: 0x0633, # ARABIC LETTER SEEN
84 0x00d4: 0x0634, # ARABIC LETTER SHEEN
85 0x00d5: 0x0635, # ARABIC LETTER SAD
86 0x00d6: 0x0636, # ARABIC LETTER DAD
87 0x00d7: 0x0637, # ARABIC LETTER TAH
88 0x00d8: 0x0638, # ARABIC LETTER ZAH
89 0x00d9: 0x0639, # ARABIC LETTER AIN
90 0x00da: 0x063a, # ARABIC LETTER GHAIN
91 0x00db: None,
92 0x00dc: None,
93 0x00dd: None,
94 0x00de: None,
95 0x00df: None,
96 0x00e0: 0x0640, # ARABIC TATWEEL
97 0x00e1: 0x0641, # ARABIC LETTER FEH
98 0x00e2: 0x0642, # ARABIC LETTER QAF
99 0x00e3: 0x0643, # ARABIC LETTER KAF
100 0x00e4: 0x0644, # ARABIC LETTER LAM
101 0x00e5: 0x0645, # ARABIC LETTER MEEM
102 0x00e6: 0x0646, # ARABIC LETTER NOON
103 0x00e7: 0x0647, # ARABIC LETTER HEH
104 0x00e8: 0x0648, # ARABIC LETTER WAW
105 0x00e9: 0x0649, # ARABIC LETTER ALEF MAKSURA
106 0x00ea: 0x064a, # ARABIC LETTER YEH
107 0x00eb: 0x064b, # ARABIC FATHATAN
108 0x00ec: 0x064c, # ARABIC DAMMATAN
109 0x00ed: 0x064d, # ARABIC KASRATAN
110 0x00ee: 0x064e, # ARABIC FATHA
111 0x00ef: 0x064f, # ARABIC DAMMA
112 0x00f0: 0x0650, # ARABIC KASRA
113 0x00f1: 0x0651, # ARABIC SHADDA
114 0x00f2: 0x0652, # ARABIC SUKUN
115 0x00f3: None,
116 0x00f4: None,
117 0x00f5: None,
118 0x00f6: None,
119 0x00f7: None,
120 0x00f8: None,
121 0x00f9: None,
122 0x00fa: None,
123 0x00fb: None,
124 0x00fc: None,
125 0x00fd: None,
126 0x00fe: None,
127 0x00ff: None,
Marc-André Lemburga866df82001-01-03 21:29:14 +0000128})
Guido van Rossum0229bf62000-03-10 23:17:24 +0000129
Marc-André Lemburga1129f42005-10-21 13:49:12 +0000130### Decoding Table
131
132decoding_table = (
133 u'\x00' # 0x0000 -> NULL
134 u'\x01' # 0x0001 -> START OF HEADING
135 u'\x02' # 0x0002 -> START OF TEXT
136 u'\x03' # 0x0003 -> END OF TEXT
137 u'\x04' # 0x0004 -> END OF TRANSMISSION
138 u'\x05' # 0x0005 -> ENQUIRY
139 u'\x06' # 0x0006 -> ACKNOWLEDGE
140 u'\x07' # 0x0007 -> BELL
141 u'\x08' # 0x0008 -> BACKSPACE
142 u'\t' # 0x0009 -> HORIZONTAL TABULATION
143 u'\n' # 0x000a -> LINE FEED
144 u'\x0b' # 0x000b -> VERTICAL TABULATION
145 u'\x0c' # 0x000c -> FORM FEED
146 u'\r' # 0x000d -> CARRIAGE RETURN
147 u'\x0e' # 0x000e -> SHIFT OUT
148 u'\x0f' # 0x000f -> SHIFT IN
149 u'\x10' # 0x0010 -> DATA LINK ESCAPE
150 u'\x11' # 0x0011 -> DEVICE CONTROL ONE
151 u'\x12' # 0x0012 -> DEVICE CONTROL TWO
152 u'\x13' # 0x0013 -> DEVICE CONTROL THREE
153 u'\x14' # 0x0014 -> DEVICE CONTROL FOUR
154 u'\x15' # 0x0015 -> NEGATIVE ACKNOWLEDGE
155 u'\x16' # 0x0016 -> SYNCHRONOUS IDLE
156 u'\x17' # 0x0017 -> END OF TRANSMISSION BLOCK
157 u'\x18' # 0x0018 -> CANCEL
158 u'\x19' # 0x0019 -> END OF MEDIUM
159 u'\x1a' # 0x001a -> SUBSTITUTE
160 u'\x1b' # 0x001b -> ESCAPE
161 u'\x1c' # 0x001c -> FILE SEPARATOR
162 u'\x1d' # 0x001d -> GROUP SEPARATOR
163 u'\x1e' # 0x001e -> RECORD SEPARATOR
164 u'\x1f' # 0x001f -> UNIT SEPARATOR
165 u' ' # 0x0020 -> SPACE
166 u'!' # 0x0021 -> EXCLAMATION MARK
167 u'"' # 0x0022 -> QUOTATION MARK
168 u'#' # 0x0023 -> NUMBER SIGN
169 u'$' # 0x0024 -> DOLLAR SIGN
170 u'%' # 0x0025 -> PERCENT SIGN
171 u'&' # 0x0026 -> AMPERSAND
172 u"'" # 0x0027 -> APOSTROPHE
173 u'(' # 0x0028 -> LEFT PARENTHESIS
174 u')' # 0x0029 -> RIGHT PARENTHESIS
175 u'*' # 0x002a -> ASTERISK
176 u'+' # 0x002b -> PLUS SIGN
177 u',' # 0x002c -> COMMA
178 u'-' # 0x002d -> HYPHEN-MINUS
179 u'.' # 0x002e -> FULL STOP
180 u'/' # 0x002f -> SOLIDUS
181 u'0' # 0x0030 -> DIGIT ZERO
182 u'1' # 0x0031 -> DIGIT ONE
183 u'2' # 0x0032 -> DIGIT TWO
184 u'3' # 0x0033 -> DIGIT THREE
185 u'4' # 0x0034 -> DIGIT FOUR
186 u'5' # 0x0035 -> DIGIT FIVE
187 u'6' # 0x0036 -> DIGIT SIX
188 u'7' # 0x0037 -> DIGIT SEVEN
189 u'8' # 0x0038 -> DIGIT EIGHT
190 u'9' # 0x0039 -> DIGIT NINE
191 u':' # 0x003a -> COLON
192 u';' # 0x003b -> SEMICOLON
193 u'<' # 0x003c -> LESS-THAN SIGN
194 u'=' # 0x003d -> EQUALS SIGN
195 u'>' # 0x003e -> GREATER-THAN SIGN
196 u'?' # 0x003f -> QUESTION MARK
197 u'@' # 0x0040 -> COMMERCIAL AT
198 u'A' # 0x0041 -> LATIN CAPITAL LETTER A
199 u'B' # 0x0042 -> LATIN CAPITAL LETTER B
200 u'C' # 0x0043 -> LATIN CAPITAL LETTER C
201 u'D' # 0x0044 -> LATIN CAPITAL LETTER D
202 u'E' # 0x0045 -> LATIN CAPITAL LETTER E
203 u'F' # 0x0046 -> LATIN CAPITAL LETTER F
204 u'G' # 0x0047 -> LATIN CAPITAL LETTER G
205 u'H' # 0x0048 -> LATIN CAPITAL LETTER H
206 u'I' # 0x0049 -> LATIN CAPITAL LETTER I
207 u'J' # 0x004a -> LATIN CAPITAL LETTER J
208 u'K' # 0x004b -> LATIN CAPITAL LETTER K
209 u'L' # 0x004c -> LATIN CAPITAL LETTER L
210 u'M' # 0x004d -> LATIN CAPITAL LETTER M
211 u'N' # 0x004e -> LATIN CAPITAL LETTER N
212 u'O' # 0x004f -> LATIN CAPITAL LETTER O
213 u'P' # 0x0050 -> LATIN CAPITAL LETTER P
214 u'Q' # 0x0051 -> LATIN CAPITAL LETTER Q
215 u'R' # 0x0052 -> LATIN CAPITAL LETTER R
216 u'S' # 0x0053 -> LATIN CAPITAL LETTER S
217 u'T' # 0x0054 -> LATIN CAPITAL LETTER T
218 u'U' # 0x0055 -> LATIN CAPITAL LETTER U
219 u'V' # 0x0056 -> LATIN CAPITAL LETTER V
220 u'W' # 0x0057 -> LATIN CAPITAL LETTER W
221 u'X' # 0x0058 -> LATIN CAPITAL LETTER X
222 u'Y' # 0x0059 -> LATIN CAPITAL LETTER Y
223 u'Z' # 0x005a -> LATIN CAPITAL LETTER Z
224 u'[' # 0x005b -> LEFT SQUARE BRACKET
225 u'\\' # 0x005c -> REVERSE SOLIDUS
226 u']' # 0x005d -> RIGHT SQUARE BRACKET
227 u'^' # 0x005e -> CIRCUMFLEX ACCENT
228 u'_' # 0x005f -> LOW LINE
229 u'`' # 0x0060 -> GRAVE ACCENT
230 u'a' # 0x0061 -> LATIN SMALL LETTER A
231 u'b' # 0x0062 -> LATIN SMALL LETTER B
232 u'c' # 0x0063 -> LATIN SMALL LETTER C
233 u'd' # 0x0064 -> LATIN SMALL LETTER D
234 u'e' # 0x0065 -> LATIN SMALL LETTER E
235 u'f' # 0x0066 -> LATIN SMALL LETTER F
236 u'g' # 0x0067 -> LATIN SMALL LETTER G
237 u'h' # 0x0068 -> LATIN SMALL LETTER H
238 u'i' # 0x0069 -> LATIN SMALL LETTER I
239 u'j' # 0x006a -> LATIN SMALL LETTER J
240 u'k' # 0x006b -> LATIN SMALL LETTER K
241 u'l' # 0x006c -> LATIN SMALL LETTER L
242 u'm' # 0x006d -> LATIN SMALL LETTER M
243 u'n' # 0x006e -> LATIN SMALL LETTER N
244 u'o' # 0x006f -> LATIN SMALL LETTER O
245 u'p' # 0x0070 -> LATIN SMALL LETTER P
246 u'q' # 0x0071 -> LATIN SMALL LETTER Q
247 u'r' # 0x0072 -> LATIN SMALL LETTER R
248 u's' # 0x0073 -> LATIN SMALL LETTER S
249 u't' # 0x0074 -> LATIN SMALL LETTER T
250 u'u' # 0x0075 -> LATIN SMALL LETTER U
251 u'v' # 0x0076 -> LATIN SMALL LETTER V
252 u'w' # 0x0077 -> LATIN SMALL LETTER W
253 u'x' # 0x0078 -> LATIN SMALL LETTER X
254 u'y' # 0x0079 -> LATIN SMALL LETTER Y
255 u'z' # 0x007a -> LATIN SMALL LETTER Z
256 u'{' # 0x007b -> LEFT CURLY BRACKET
257 u'|' # 0x007c -> VERTICAL LINE
258 u'}' # 0x007d -> RIGHT CURLY BRACKET
259 u'~' # 0x007e -> TILDE
260 u'\x7f' # 0x007f -> DELETE
261 u'\x80' # 0x0080 -> <control>
262 u'\x81' # 0x0081 -> <control>
263 u'\x82' # 0x0082 -> <control>
264 u'\x83' # 0x0083 -> <control>
265 u'\x84' # 0x0084 -> <control>
266 u'\x85' # 0x0085 -> <control>
267 u'\x86' # 0x0086 -> <control>
268 u'\x87' # 0x0087 -> <control>
269 u'\x88' # 0x0088 -> <control>
270 u'\x89' # 0x0089 -> <control>
271 u'\x8a' # 0x008a -> <control>
272 u'\x8b' # 0x008b -> <control>
273 u'\x8c' # 0x008c -> <control>
274 u'\x8d' # 0x008d -> <control>
275 u'\x8e' # 0x008e -> <control>
276 u'\x8f' # 0x008f -> <control>
277 u'\x90' # 0x0090 -> <control>
278 u'\x91' # 0x0091 -> <control>
279 u'\x92' # 0x0092 -> <control>
280 u'\x93' # 0x0093 -> <control>
281 u'\x94' # 0x0094 -> <control>
282 u'\x95' # 0x0095 -> <control>
283 u'\x96' # 0x0096 -> <control>
284 u'\x97' # 0x0097 -> <control>
285 u'\x98' # 0x0098 -> <control>
286 u'\x99' # 0x0099 -> <control>
287 u'\x9a' # 0x009a -> <control>
288 u'\x9b' # 0x009b -> <control>
289 u'\x9c' # 0x009c -> <control>
290 u'\x9d' # 0x009d -> <control>
291 u'\x9e' # 0x009e -> <control>
292 u'\x9f' # 0x009f -> <control>
293 u'\xa0' # 0x00a0 -> NO-BREAK SPACE
294 u'\ufffe'
295 u'\ufffe'
296 u'\ufffe'
297 u'\xa4' # 0x00a4 -> CURRENCY SIGN
298 u'\ufffe'
299 u'\ufffe'
300 u'\ufffe'
301 u'\ufffe'
302 u'\ufffe'
303 u'\ufffe'
304 u'\ufffe'
305 u'\u060c' # 0x00ac -> ARABIC COMMA
306 u'\xad' # 0x00ad -> SOFT HYPHEN
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'\u061b' # 0x00bb -> ARABIC SEMICOLON
321 u'\ufffe'
322 u'\ufffe'
323 u'\ufffe'
324 u'\u061f' # 0x00bf -> ARABIC QUESTION MARK
325 u'\ufffe'
326 u'\u0621' # 0x00c1 -> ARABIC LETTER HAMZA
327 u'\u0622' # 0x00c2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
328 u'\u0623' # 0x00c3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
329 u'\u0624' # 0x00c4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
330 u'\u0625' # 0x00c5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
331 u'\u0626' # 0x00c6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
332 u'\u0627' # 0x00c7 -> ARABIC LETTER ALEF
333 u'\u0628' # 0x00c8 -> ARABIC LETTER BEH
334 u'\u0629' # 0x00c9 -> ARABIC LETTER TEH MARBUTA
335 u'\u062a' # 0x00ca -> ARABIC LETTER TEH
336 u'\u062b' # 0x00cb -> ARABIC LETTER THEH
337 u'\u062c' # 0x00cc -> ARABIC LETTER JEEM
338 u'\u062d' # 0x00cd -> ARABIC LETTER HAH
339 u'\u062e' # 0x00ce -> ARABIC LETTER KHAH
340 u'\u062f' # 0x00cf -> ARABIC LETTER DAL
341 u'\u0630' # 0x00d0 -> ARABIC LETTER THAL
342 u'\u0631' # 0x00d1 -> ARABIC LETTER REH
343 u'\u0632' # 0x00d2 -> ARABIC LETTER ZAIN
344 u'\u0633' # 0x00d3 -> ARABIC LETTER SEEN
345 u'\u0634' # 0x00d4 -> ARABIC LETTER SHEEN
346 u'\u0635' # 0x00d5 -> ARABIC LETTER SAD
347 u'\u0636' # 0x00d6 -> ARABIC LETTER DAD
348 u'\u0637' # 0x00d7 -> ARABIC LETTER TAH
349 u'\u0638' # 0x00d8 -> ARABIC LETTER ZAH
350 u'\u0639' # 0x00d9 -> ARABIC LETTER AIN
351 u'\u063a' # 0x00da -> ARABIC LETTER GHAIN
352 u'\ufffe'
353 u'\ufffe'
354 u'\ufffe'
355 u'\ufffe'
356 u'\ufffe'
357 u'\u0640' # 0x00e0 -> ARABIC TATWEEL
358 u'\u0641' # 0x00e1 -> ARABIC LETTER FEH
359 u'\u0642' # 0x00e2 -> ARABIC LETTER QAF
360 u'\u0643' # 0x00e3 -> ARABIC LETTER KAF
361 u'\u0644' # 0x00e4 -> ARABIC LETTER LAM
362 u'\u0645' # 0x00e5 -> ARABIC LETTER MEEM
363 u'\u0646' # 0x00e6 -> ARABIC LETTER NOON
364 u'\u0647' # 0x00e7 -> ARABIC LETTER HEH
365 u'\u0648' # 0x00e8 -> ARABIC LETTER WAW
366 u'\u0649' # 0x00e9 -> ARABIC LETTER ALEF MAKSURA
367 u'\u064a' # 0x00ea -> ARABIC LETTER YEH
368 u'\u064b' # 0x00eb -> ARABIC FATHATAN
369 u'\u064c' # 0x00ec -> ARABIC DAMMATAN
370 u'\u064d' # 0x00ed -> ARABIC KASRATAN
371 u'\u064e' # 0x00ee -> ARABIC FATHA
372 u'\u064f' # 0x00ef -> ARABIC DAMMA
373 u'\u0650' # 0x00f0 -> ARABIC KASRA
374 u'\u0651' # 0x00f1 -> ARABIC SHADDA
375 u'\u0652' # 0x00f2 -> ARABIC SUKUN
376 u'\ufffe'
377 u'\ufffe'
378 u'\ufffe'
379 u'\ufffe'
380 u'\ufffe'
381 u'\ufffe'
382 u'\ufffe'
383 u'\ufffe'
384 u'\ufffe'
385 u'\ufffe'
386 u'\ufffe'
387 u'\ufffe'
388 u'\ufffe'
389)
390
Guido van Rossum0229bf62000-03-10 23:17:24 +0000391### Encoding Map
392
Marc-André Lemburga1129f42005-10-21 13:49:12 +0000393encoding_map = {
394 0x0000: 0x0000, # NULL
395 0x0001: 0x0001, # START OF HEADING
396 0x0002: 0x0002, # START OF TEXT
397 0x0003: 0x0003, # END OF TEXT
398 0x0004: 0x0004, # END OF TRANSMISSION
399 0x0005: 0x0005, # ENQUIRY
400 0x0006: 0x0006, # ACKNOWLEDGE
401 0x0007: 0x0007, # BELL
402 0x0008: 0x0008, # BACKSPACE
403 0x0009: 0x0009, # HORIZONTAL TABULATION
404 0x000a: 0x000a, # LINE FEED
405 0x000b: 0x000b, # VERTICAL TABULATION
406 0x000c: 0x000c, # FORM FEED
407 0x000d: 0x000d, # CARRIAGE RETURN
408 0x000e: 0x000e, # SHIFT OUT
409 0x000f: 0x000f, # SHIFT IN
410 0x0010: 0x0010, # DATA LINK ESCAPE
411 0x0011: 0x0011, # DEVICE CONTROL ONE
412 0x0012: 0x0012, # DEVICE CONTROL TWO
413 0x0013: 0x0013, # DEVICE CONTROL THREE
414 0x0014: 0x0014, # DEVICE CONTROL FOUR
415 0x0015: 0x0015, # NEGATIVE ACKNOWLEDGE
416 0x0016: 0x0016, # SYNCHRONOUS IDLE
417 0x0017: 0x0017, # END OF TRANSMISSION BLOCK
418 0x0018: 0x0018, # CANCEL
419 0x0019: 0x0019, # END OF MEDIUM
420 0x001a: 0x001a, # SUBSTITUTE
421 0x001b: 0x001b, # ESCAPE
422 0x001c: 0x001c, # FILE SEPARATOR
423 0x001d: 0x001d, # GROUP SEPARATOR
424 0x001e: 0x001e, # RECORD SEPARATOR
425 0x001f: 0x001f, # UNIT SEPARATOR
426 0x0020: 0x0020, # SPACE
427 0x0021: 0x0021, # EXCLAMATION MARK
428 0x0022: 0x0022, # QUOTATION MARK
429 0x0023: 0x0023, # NUMBER SIGN
430 0x0024: 0x0024, # DOLLAR SIGN
431 0x0025: 0x0025, # PERCENT SIGN
432 0x0026: 0x0026, # AMPERSAND
433 0x0027: 0x0027, # APOSTROPHE
434 0x0028: 0x0028, # LEFT PARENTHESIS
435 0x0029: 0x0029, # RIGHT PARENTHESIS
436 0x002a: 0x002a, # ASTERISK
437 0x002b: 0x002b, # PLUS SIGN
438 0x002c: 0x002c, # COMMA
439 0x002d: 0x002d, # HYPHEN-MINUS
440 0x002e: 0x002e, # FULL STOP
441 0x002f: 0x002f, # SOLIDUS
442 0x0030: 0x0030, # DIGIT ZERO
443 0x0031: 0x0031, # DIGIT ONE
444 0x0032: 0x0032, # DIGIT TWO
445 0x0033: 0x0033, # DIGIT THREE
446 0x0034: 0x0034, # DIGIT FOUR
447 0x0035: 0x0035, # DIGIT FIVE
448 0x0036: 0x0036, # DIGIT SIX
449 0x0037: 0x0037, # DIGIT SEVEN
450 0x0038: 0x0038, # DIGIT EIGHT
451 0x0039: 0x0039, # DIGIT NINE
452 0x003a: 0x003a, # COLON
453 0x003b: 0x003b, # SEMICOLON
454 0x003c: 0x003c, # LESS-THAN SIGN
455 0x003d: 0x003d, # EQUALS SIGN
456 0x003e: 0x003e, # GREATER-THAN SIGN
457 0x003f: 0x003f, # QUESTION MARK
458 0x0040: 0x0040, # COMMERCIAL AT
459 0x0041: 0x0041, # LATIN CAPITAL LETTER A
460 0x0042: 0x0042, # LATIN CAPITAL LETTER B
461 0x0043: 0x0043, # LATIN CAPITAL LETTER C
462 0x0044: 0x0044, # LATIN CAPITAL LETTER D
463 0x0045: 0x0045, # LATIN CAPITAL LETTER E
464 0x0046: 0x0046, # LATIN CAPITAL LETTER F
465 0x0047: 0x0047, # LATIN CAPITAL LETTER G
466 0x0048: 0x0048, # LATIN CAPITAL LETTER H
467 0x0049: 0x0049, # LATIN CAPITAL LETTER I
468 0x004a: 0x004a, # LATIN CAPITAL LETTER J
469 0x004b: 0x004b, # LATIN CAPITAL LETTER K
470 0x004c: 0x004c, # LATIN CAPITAL LETTER L
471 0x004d: 0x004d, # LATIN CAPITAL LETTER M
472 0x004e: 0x004e, # LATIN CAPITAL LETTER N
473 0x004f: 0x004f, # LATIN CAPITAL LETTER O
474 0x0050: 0x0050, # LATIN CAPITAL LETTER P
475 0x0051: 0x0051, # LATIN CAPITAL LETTER Q
476 0x0052: 0x0052, # LATIN CAPITAL LETTER R
477 0x0053: 0x0053, # LATIN CAPITAL LETTER S
478 0x0054: 0x0054, # LATIN CAPITAL LETTER T
479 0x0055: 0x0055, # LATIN CAPITAL LETTER U
480 0x0056: 0x0056, # LATIN CAPITAL LETTER V
481 0x0057: 0x0057, # LATIN CAPITAL LETTER W
482 0x0058: 0x0058, # LATIN CAPITAL LETTER X
483 0x0059: 0x0059, # LATIN CAPITAL LETTER Y
484 0x005a: 0x005a, # LATIN CAPITAL LETTER Z
485 0x005b: 0x005b, # LEFT SQUARE BRACKET
486 0x005c: 0x005c, # REVERSE SOLIDUS
487 0x005d: 0x005d, # RIGHT SQUARE BRACKET
488 0x005e: 0x005e, # CIRCUMFLEX ACCENT
489 0x005f: 0x005f, # LOW LINE
490 0x0060: 0x0060, # GRAVE ACCENT
491 0x0061: 0x0061, # LATIN SMALL LETTER A
492 0x0062: 0x0062, # LATIN SMALL LETTER B
493 0x0063: 0x0063, # LATIN SMALL LETTER C
494 0x0064: 0x0064, # LATIN SMALL LETTER D
495 0x0065: 0x0065, # LATIN SMALL LETTER E
496 0x0066: 0x0066, # LATIN SMALL LETTER F
497 0x0067: 0x0067, # LATIN SMALL LETTER G
498 0x0068: 0x0068, # LATIN SMALL LETTER H
499 0x0069: 0x0069, # LATIN SMALL LETTER I
500 0x006a: 0x006a, # LATIN SMALL LETTER J
501 0x006b: 0x006b, # LATIN SMALL LETTER K
502 0x006c: 0x006c, # LATIN SMALL LETTER L
503 0x006d: 0x006d, # LATIN SMALL LETTER M
504 0x006e: 0x006e, # LATIN SMALL LETTER N
505 0x006f: 0x006f, # LATIN SMALL LETTER O
506 0x0070: 0x0070, # LATIN SMALL LETTER P
507 0x0071: 0x0071, # LATIN SMALL LETTER Q
508 0x0072: 0x0072, # LATIN SMALL LETTER R
509 0x0073: 0x0073, # LATIN SMALL LETTER S
510 0x0074: 0x0074, # LATIN SMALL LETTER T
511 0x0075: 0x0075, # LATIN SMALL LETTER U
512 0x0076: 0x0076, # LATIN SMALL LETTER V
513 0x0077: 0x0077, # LATIN SMALL LETTER W
514 0x0078: 0x0078, # LATIN SMALL LETTER X
515 0x0079: 0x0079, # LATIN SMALL LETTER Y
516 0x007a: 0x007a, # LATIN SMALL LETTER Z
517 0x007b: 0x007b, # LEFT CURLY BRACKET
518 0x007c: 0x007c, # VERTICAL LINE
519 0x007d: 0x007d, # RIGHT CURLY BRACKET
520 0x007e: 0x007e, # TILDE
521 0x007f: 0x007f, # DELETE
522 0x0080: 0x0080, # <control>
523 0x0081: 0x0081, # <control>
524 0x0082: 0x0082, # <control>
525 0x0083: 0x0083, # <control>
526 0x0084: 0x0084, # <control>
527 0x0085: 0x0085, # <control>
528 0x0086: 0x0086, # <control>
529 0x0087: 0x0087, # <control>
530 0x0088: 0x0088, # <control>
531 0x0089: 0x0089, # <control>
532 0x008a: 0x008a, # <control>
533 0x008b: 0x008b, # <control>
534 0x008c: 0x008c, # <control>
535 0x008d: 0x008d, # <control>
536 0x008e: 0x008e, # <control>
537 0x008f: 0x008f, # <control>
538 0x0090: 0x0090, # <control>
539 0x0091: 0x0091, # <control>
540 0x0092: 0x0092, # <control>
541 0x0093: 0x0093, # <control>
542 0x0094: 0x0094, # <control>
543 0x0095: 0x0095, # <control>
544 0x0096: 0x0096, # <control>
545 0x0097: 0x0097, # <control>
546 0x0098: 0x0098, # <control>
547 0x0099: 0x0099, # <control>
548 0x009a: 0x009a, # <control>
549 0x009b: 0x009b, # <control>
550 0x009c: 0x009c, # <control>
551 0x009d: 0x009d, # <control>
552 0x009e: 0x009e, # <control>
553 0x009f: 0x009f, # <control>
554 0x00a0: 0x00a0, # NO-BREAK SPACE
555 0x00a4: 0x00a4, # CURRENCY SIGN
556 0x00ad: 0x00ad, # SOFT HYPHEN
557 0x060c: 0x00ac, # ARABIC COMMA
558 0x061b: 0x00bb, # ARABIC SEMICOLON
559 0x061f: 0x00bf, # ARABIC QUESTION MARK
560 0x0621: 0x00c1, # ARABIC LETTER HAMZA
561 0x0622: 0x00c2, # ARABIC LETTER ALEF WITH MADDA ABOVE
562 0x0623: 0x00c3, # ARABIC LETTER ALEF WITH HAMZA ABOVE
563 0x0624: 0x00c4, # ARABIC LETTER WAW WITH HAMZA ABOVE
564 0x0625: 0x00c5, # ARABIC LETTER ALEF WITH HAMZA BELOW
565 0x0626: 0x00c6, # ARABIC LETTER YEH WITH HAMZA ABOVE
566 0x0627: 0x00c7, # ARABIC LETTER ALEF
567 0x0628: 0x00c8, # ARABIC LETTER BEH
568 0x0629: 0x00c9, # ARABIC LETTER TEH MARBUTA
569 0x062a: 0x00ca, # ARABIC LETTER TEH
570 0x062b: 0x00cb, # ARABIC LETTER THEH
571 0x062c: 0x00cc, # ARABIC LETTER JEEM
572 0x062d: 0x00cd, # ARABIC LETTER HAH
573 0x062e: 0x00ce, # ARABIC LETTER KHAH
574 0x062f: 0x00cf, # ARABIC LETTER DAL
575 0x0630: 0x00d0, # ARABIC LETTER THAL
576 0x0631: 0x00d1, # ARABIC LETTER REH
577 0x0632: 0x00d2, # ARABIC LETTER ZAIN
578 0x0633: 0x00d3, # ARABIC LETTER SEEN
579 0x0634: 0x00d4, # ARABIC LETTER SHEEN
580 0x0635: 0x00d5, # ARABIC LETTER SAD
581 0x0636: 0x00d6, # ARABIC LETTER DAD
582 0x0637: 0x00d7, # ARABIC LETTER TAH
583 0x0638: 0x00d8, # ARABIC LETTER ZAH
584 0x0639: 0x00d9, # ARABIC LETTER AIN
585 0x063a: 0x00da, # ARABIC LETTER GHAIN
586 0x0640: 0x00e0, # ARABIC TATWEEL
587 0x0641: 0x00e1, # ARABIC LETTER FEH
588 0x0642: 0x00e2, # ARABIC LETTER QAF
589 0x0643: 0x00e3, # ARABIC LETTER KAF
590 0x0644: 0x00e4, # ARABIC LETTER LAM
591 0x0645: 0x00e5, # ARABIC LETTER MEEM
592 0x0646: 0x00e6, # ARABIC LETTER NOON
593 0x0647: 0x00e7, # ARABIC LETTER HEH
594 0x0648: 0x00e8, # ARABIC LETTER WAW
595 0x0649: 0x00e9, # ARABIC LETTER ALEF MAKSURA
596 0x064a: 0x00ea, # ARABIC LETTER YEH
597 0x064b: 0x00eb, # ARABIC FATHATAN
598 0x064c: 0x00ec, # ARABIC DAMMATAN
599 0x064d: 0x00ed, # ARABIC KASRATAN
600 0x064e: 0x00ee, # ARABIC FATHA
601 0x064f: 0x00ef, # ARABIC DAMMA
602 0x0650: 0x00f0, # ARABIC KASRA
603 0x0651: 0x00f1, # ARABIC SHADDA
604 0x0652: 0x00f2, # ARABIC SUKUN
605}