-
Notifications
You must be signed in to change notification settings - Fork 2
/
shift_jis.gd
23050 lines (23032 loc) · 779 KB
/
shift_jis.gd
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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
## returns u16 int array, which is Shift JIS encoded
## unknown characters are skipped
static func to_shift_jis_2004_buffer(text: String) -> PackedByteArray:
var res: PackedByteArray = PackedByteArray()
res.resize(2 * text.length())
var byte_idx: int = 0
var idx: int = 0
while idx < text.length():
var unicode: int = text.unicode_at(idx)
# unicode value combined with the next one
# there are 25 characters which are using two unicode numbers
var unicode_comb: int = -1
if (idx + 1) < text.length():
unicode_comb = (unicode << 16) | text.unicode_at(idx + 1)
if unicode_comb != -1 && _UNICODE_TO_SHIFT_JIS_TABLE.has(unicode_comb):
res.encode_u16(byte_idx, _UNICODE_TO_SHIFT_JIS_TABLE[unicode_comb])
idx += 2
elif _UNICODE_TO_SHIFT_JIS_TABLE.has(unicode):
res.encode_u16(byte_idx, _UNICODE_TO_SHIFT_JIS_TABLE[unicode])
idx += 1
else:
idx += 1
continue
byte_idx += 2
res.resize(byte_idx)
return res
## requires an u16 int array, which is Shift JIS encoded
## unknown characters are skipped
static func get_string_from_shift_jis_2004(arr: PackedByteArray) -> String:
assert(arr.size() % 2 == 0)
var res: String = ""
for idx: int in range(arr.size() / 2):
var unicode: int = _SHIFT_JIS_TO_UNICODE_TABLE.get(arr.decode_u16(idx * 2), -1)
if unicode != -1:
res += char(unicode)
return res
## returns u8 int array, which is JIS 8 encoded
## unknown characters are skipped
static func to_jis_8_buffer(text: String) -> PackedByteArray:
var res: PackedByteArray = PackedByteArray()
res.resize(text.length())
var byte_idx: int = 0
for idx: int in range(text.length()):
var unicode: int = text.unicode_at(idx)
var jis_val: int = _UNICODE_TO_SHIFT_JIS_TABLE.get(unicode, -1)
if jis_val != -1 && jis_val <= 0xFF:
res.append(jis_val)
byte_idx += 1
res.resize(byte_idx)
return res
## requires an u8 int array, which is JIS 8 encoded
## unknown characters are skipped
static func get_string_from_jis_8(arr: PackedByteArray) -> String:
var res: String = ""
for idx: int in range(arr.size()):
var unicode: int = _SHIFT_JIS_TO_UNICODE_TABLE.get(arr.decode_u8(idx), -1)
if unicode != -1:
res += char(unicode)
return res
## Shift_JIS-2004 (JIS X 0213:2004 Appendix 1) vs Unicode mapping table
##
## Date: 3 May 2009
## License:
## Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
## Copyright (C) 2001 I'O, All Rights Reserved.
## Copyright (C) 2006, 2009 Project X0213, All Rights Reserved.
## You can use, modify, distribute this table freely.
## Note:
## [1983] JIS codepoint defined by JIS X 0208-1983
## [1990] JIS codepoint defined by JIS X 0208-1990
## [2000] JIS codepoint defined by JIS X 0213:2000
## [2004] JIS codepoint defined by JIS X 0213:2004
## [Unicode3.1] UCS codepoint defined by Unicode 3.1
## [Unicode3.2] UCS codepoint defined by Unicode 3.2
## Fullwidth UCS fullwidth form (U+Fxxx)
## Windows Windows (CP932) mapping
const _UNICODE_TO_SHIFT_JIS_TABLE: Dictionary = {
0x0000: 0x00, # <control>
0x0001: 0x01, # <control>
0x0002: 0x02, # <control>
0x0003: 0x03, # <control>
0x0004: 0x04, # <control>
0x0005: 0x05, # <control>
0x0006: 0x06, # <control>
0x0007: 0x07, # <control>
0x0008: 0x08, # <control>
0x0009: 0x09, # <control>
0x000A: 0x0A, # <control>
0x000B: 0x0B, # <control>
0x000C: 0x0C, # <control>
0x000D: 0x0D, # <control>
0x000E: 0x0E, # <control>
0x000F: 0x0F, # <control>
0x0010: 0x10, # <control>
0x0011: 0x11, # <control>
0x0012: 0x12, # <control>
0x0013: 0x13, # <control>
0x0014: 0x14, # <control>
0x0015: 0x15, # <control>
0x0016: 0x16, # <control>
0x0017: 0x17, # <control>
0x0018: 0x18, # <control>
0x0019: 0x19, # <control>
0x001A: 0x1A, # <control>
0x001B: 0x1B, # <control>
0x001C: 0x1C, # <control>
0x001D: 0x1D, # <control>
0x001E: 0x1E, # <control>
0x001F: 0x1F, # <control>
0x0020: 0x20, # SPACE
0x0021: 0x21, # EXCLAMATION MARK
0x0022: 0x22, # QUOTATION MARK
0x0023: 0x23, # NUMBER SIGN
0x0024: 0x24, # DOLLAR SIGN
0x0025: 0x25, # PERCENT SIGN
0x0026: 0x26, # AMPERSAND
0x0027: 0x27, # APOSTROPHE
0x0028: 0x28, # LEFT PARENTHESIS
0x0029: 0x29, # RIGHT PARENTHESIS
0x002A: 0x2A, # ASTERISK
0x002B: 0x2B, # PLUS SIGN
0x002C: 0x2C, # COMMA
0x002D: 0x2D, # HYPHEN-MINUS
0x002E: 0x2E, # FULL STOP
0x002F: 0x2F, # SOLIDUS
0x0030: 0x30, # DIGIT ZERO
0x0031: 0x31, # DIGIT ONE
0x0032: 0x32, # DIGIT TWO
0x0033: 0x33, # DIGIT THREE
0x0034: 0x34, # DIGIT FOUR
0x0035: 0x35, # DIGIT FIVE
0x0036: 0x36, # DIGIT SIX
0x0037: 0x37, # DIGIT SEVEN
0x0038: 0x38, # DIGIT EIGHT
0x0039: 0x39, # DIGIT NINE
0x003A: 0x3A, # COLON
0x003B: 0x3B, # SEMICOLON
0x003C: 0x3C, # LESS-THAN SIGN
0x003D: 0x3D, # EQUALS SIGN
0x003E: 0x3E, # GREATER-THAN SIGN
0x003F: 0x3F, # QUESTION MARK
0x0040: 0x40, # COMMERCIAL AT
0x0041: 0x41, # LATIN CAPITAL LETTER A
0x0042: 0x42, # LATIN CAPITAL LETTER B
0x0043: 0x43, # LATIN CAPITAL LETTER C
0x0044: 0x44, # LATIN CAPITAL LETTER D
0x0045: 0x45, # LATIN CAPITAL LETTER E
0x0046: 0x46, # LATIN CAPITAL LETTER F
0x0047: 0x47, # LATIN CAPITAL LETTER G
0x0048: 0x48, # LATIN CAPITAL LETTER H
0x0049: 0x49, # LATIN CAPITAL LETTER I
0x004A: 0x4A, # LATIN CAPITAL LETTER J
0x004B: 0x4B, # LATIN CAPITAL LETTER K
0x004C: 0x4C, # LATIN CAPITAL LETTER L
0x004D: 0x4D, # LATIN CAPITAL LETTER M
0x004E: 0x4E, # LATIN CAPITAL LETTER N
0x004F: 0x4F, # LATIN CAPITAL LETTER O
0x0050: 0x50, # LATIN CAPITAL LETTER P
0x0051: 0x51, # LATIN CAPITAL LETTER Q
0x0052: 0x52, # LATIN CAPITAL LETTER R
0x0053: 0x53, # LATIN CAPITAL LETTER S
0x0054: 0x54, # LATIN CAPITAL LETTER T
0x0055: 0x55, # LATIN CAPITAL LETTER U
0x0056: 0x56, # LATIN CAPITAL LETTER V
0x0057: 0x57, # LATIN CAPITAL LETTER W
0x0058: 0x58, # LATIN CAPITAL LETTER X
0x0059: 0x59, # LATIN CAPITAL LETTER Y
0x005A: 0x5A, # LATIN CAPITAL LETTER Z
0x005B: 0x5B, # LEFT SQUARE BRACKET
0x00A5: 0x5C, # YEN SIGN
0x005D: 0x5D, # RIGHT SQUARE BRACKET
0x005E: 0x5E, # CIRCUMFLEX ACCENT
0x005F: 0x5F, # LOW LINE
0x0060: 0x60, # GRAVE ACCENT
0x0061: 0x61, # LATIN SMALL LETTER A
0x0062: 0x62, # LATIN SMALL LETTER B
0x0063: 0x63, # LATIN SMALL LETTER C
0x0064: 0x64, # LATIN SMALL LETTER D
0x0065: 0x65, # LATIN SMALL LETTER E
0x0066: 0x66, # LATIN SMALL LETTER F
0x0067: 0x67, # LATIN SMALL LETTER G
0x0068: 0x68, # LATIN SMALL LETTER H
0x0069: 0x69, # LATIN SMALL LETTER I
0x006A: 0x6A, # LATIN SMALL LETTER J
0x006B: 0x6B, # LATIN SMALL LETTER K
0x006C: 0x6C, # LATIN SMALL LETTER L
0x006D: 0x6D, # LATIN SMALL LETTER M
0x006E: 0x6E, # LATIN SMALL LETTER N
0x006F: 0x6F, # LATIN SMALL LETTER O
0x0070: 0x70, # LATIN SMALL LETTER P
0x0071: 0x71, # LATIN SMALL LETTER Q
0x0072: 0x72, # LATIN SMALL LETTER R
0x0073: 0x73, # LATIN SMALL LETTER S
0x0074: 0x74, # LATIN SMALL LETTER T
0x0075: 0x75, # LATIN SMALL LETTER U
0x0076: 0x76, # LATIN SMALL LETTER V
0x0077: 0x77, # LATIN SMALL LETTER W
0x0078: 0x78, # LATIN SMALL LETTER X
0x0079: 0x79, # LATIN SMALL LETTER Y
0x007A: 0x7A, # LATIN SMALL LETTER Z
0x007B: 0x7B, # LEFT CURLY BRACKET
0x007C: 0x7C, # VERTICAL LINE
0x007D: 0x7D, # RIGHT CURLY BRACKET
0x203E: 0x7E, # OVERLINE
0x007F: 0x7F, # <control>
# 0x80 - <reserved>
# 0x81 - <doublebytes>
# 0x82 - <doublebytes>
# 0x83 - <doublebytes>
# 0x84 - <doublebytes>
# 0x85 - <doublebytes>
# 0x86 - <doublebytes>
# 0x87 - <doublebytes>
# 0x88 - <doublebytes>
# 0x89 - <doublebytes>
# 0x8A - <doublebytes>
# 0x8B - <doublebytes>
# 0x8C - <doublebytes>
# 0x8D - <doublebytes>
# 0x8E - <doublebytes>
# 0x8F - <doublebytes>
# 0x90 - <doublebytes>
# 0x91 - <doublebytes>
# 0x92 - <doublebytes>
# 0x93 - <doublebytes>
# 0x94 - <doublebytes>
# 0x95 - <doublebytes>
# 0x96 - <doublebytes>
# 0x97 - <doublebytes>
# 0x98 - <doublebytes>
# 0x99 - <doublebytes>
# 0x9A - <doublebytes>
# 0x9B - <doublebytes>
# 0x9C - <doublebytes>
# 0x9D - <doublebytes>
# 0x9E - <doublebytes>
# 0x9F - <doublebytes>
# 0xA0 - <reserved>
0xFF61: 0xA1, # HALFWIDTH IDEOGRAPHIC FULL STOP
0xFF62: 0xA2, # HALFWIDTH LEFT CORNER BRACKET
0xFF63: 0xA3, # HALFWIDTH RIGHT CORNER BRACKET
0xFF64: 0xA4, # HALFWIDTH IDEOGRAPHIC COMMA
0xFF65: 0xA5, # HALFWIDTH KATAKANA MIDDLE DOT
0xFF66: 0xA6, # HALFWIDTH KATAKANA LETTER WO
0xFF67: 0xA7, # HALFWIDTH KATAKANA LETTER SMALL A
0xFF68: 0xA8, # HALFWIDTH KATAKANA LETTER SMALL I
0xFF69: 0xA9, # HALFWIDTH KATAKANA LETTER SMALL U
0xFF6A: 0xAA, # HALFWIDTH KATAKANA LETTER SMALL E
0xFF6B: 0xAB, # HALFWIDTH KATAKANA LETTER SMALL O
0xFF6C: 0xAC, # HALFWIDTH KATAKANA LETTER SMALL YA
0xFF6D: 0xAD, # HALFWIDTH KATAKANA LETTER SMALL YU
0xFF6E: 0xAE, # HALFWIDTH KATAKANA LETTER SMALL YO
0xFF6F: 0xAF, # HALFWIDTH KATAKANA LETTER SMALL TU
0xFF70: 0xB0, # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
0xFF71: 0xB1, # HALFWIDTH KATAKANA LETTER A
0xFF72: 0xB2, # HALFWIDTH KATAKANA LETTER I
0xFF73: 0xB3, # HALFWIDTH KATAKANA LETTER U
0xFF74: 0xB4, # HALFWIDTH KATAKANA LETTER E
0xFF75: 0xB5, # HALFWIDTH KATAKANA LETTER O
0xFF76: 0xB6, # HALFWIDTH KATAKANA LETTER KA
0xFF77: 0xB7, # HALFWIDTH KATAKANA LETTER KI
0xFF78: 0xB8, # HALFWIDTH KATAKANA LETTER KU
0xFF79: 0xB9, # HALFWIDTH KATAKANA LETTER KE
0xFF7A: 0xBA, # HALFWIDTH KATAKANA LETTER KO
0xFF7B: 0xBB, # HALFWIDTH KATAKANA LETTER SA
0xFF7C: 0xBC, # HALFWIDTH KATAKANA LETTER SI
0xFF7D: 0xBD, # HALFWIDTH KATAKANA LETTER SU
0xFF7E: 0xBE, # HALFWIDTH KATAKANA LETTER SE
0xFF7F: 0xBF, # HALFWIDTH KATAKANA LETTER SO
0xFF80: 0xC0, # HALFWIDTH KATAKANA LETTER TA
0xFF81: 0xC1, # HALFWIDTH KATAKANA LETTER TI
0xFF82: 0xC2, # HALFWIDTH KATAKANA LETTER TU
0xFF83: 0xC3, # HALFWIDTH KATAKANA LETTER TE
0xFF84: 0xC4, # HALFWIDTH KATAKANA LETTER TO
0xFF85: 0xC5, # HALFWIDTH KATAKANA LETTER NA
0xFF86: 0xC6, # HALFWIDTH KATAKANA LETTER NI
0xFF87: 0xC7, # HALFWIDTH KATAKANA LETTER NU
0xFF88: 0xC8, # HALFWIDTH KATAKANA LETTER NE
0xFF89: 0xC9, # HALFWIDTH KATAKANA LETTER NO
0xFF8A: 0xCA, # HALFWIDTH KATAKANA LETTER HA
0xFF8B: 0xCB, # HALFWIDTH KATAKANA LETTER HI
0xFF8C: 0xCC, # HALFWIDTH KATAKANA LETTER HU
0xFF8D: 0xCD, # HALFWIDTH KATAKANA LETTER HE
0xFF8E: 0xCE, # HALFWIDTH KATAKANA LETTER HO
0xFF8F: 0xCF, # HALFWIDTH KATAKANA LETTER MA
0xFF90: 0xD0, # HALFWIDTH KATAKANA LETTER MI
0xFF91: 0xD1, # HALFWIDTH KATAKANA LETTER MU
0xFF92: 0xD2, # HALFWIDTH KATAKANA LETTER ME
0xFF93: 0xD3, # HALFWIDTH KATAKANA LETTER MO
0xFF94: 0xD4, # HALFWIDTH KATAKANA LETTER YA
0xFF95: 0xD5, # HALFWIDTH KATAKANA LETTER YU
0xFF96: 0xD6, # HALFWIDTH KATAKANA LETTER YO
0xFF97: 0xD7, # HALFWIDTH KATAKANA LETTER RA
0xFF98: 0xD8, # HALFWIDTH KATAKANA LETTER RI
0xFF99: 0xD9, # HALFWIDTH KATAKANA LETTER RU
0xFF9A: 0xDA, # HALFWIDTH KATAKANA LETTER RE
0xFF9B: 0xDB, # HALFWIDTH KATAKANA LETTER RO
0xFF9C: 0xDC, # HALFWIDTH KATAKANA LETTER WA
0xFF9D: 0xDD, # HALFWIDTH KATAKANA LETTER N
0xFF9E: 0xDE, # HALFWIDTH KATAKANA VOICED SOUND MARK
0xFF9F: 0xDF, # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
# 0xE0 - <doublebytes>
# 0xE1 - <doublebytes>
# 0xE2 - <doublebytes>
# 0xE3 - <doublebytes>
# 0xE4 - <doublebytes>
# 0xE5 - <doublebytes>
# 0xE6 - <doublebytes>
# 0xE7 - <doublebytes>
# 0xE8 - <doublebytes>
# 0xE9 - <doublebytes>
# 0xEA - <doublebytes>
# 0xEB - <doublebytes>
# 0xEC - <doublebytes>
# 0xED - <doublebytes>
# 0xEE - <doublebytes>
# 0xEF - <doublebytes>
# 0xF0 - <doublebytes>
# 0xF1 - <doublebytes>
# 0xF2 - <doublebytes>
# 0xF3 - <doublebytes>
# 0xF4 - <doublebytes>
# 0xF5 - <doublebytes>
# 0xF6 - <doublebytes>
# 0xF7 - <doublebytes>
# 0xF8 - <doublebytes>
# 0xF9 - <doublebytes>
# 0xFA - <doublebytes>
# 0xFB - <doublebytes>
# 0xFC - <doublebytes>
# 0xFD - <reserved>
# 0xFE - <reserved>
# 0xFF - <reserved>
0x3000: 0x8140, # IDEOGRAPHIC SPACE
0x3001: 0x8141, # IDEOGRAPHIC COMMA
0x3002: 0x8142, # IDEOGRAPHIC FULL STOP
0xFF0C: 0x8143, # FULLWIDTH COMMA
0xFF0E: 0x8144, # FULLWIDTH FULL STOP
0x30FB: 0x8145, # KATAKANA MIDDLE DOT
0xFF1A: 0x8146, # FULLWIDTH COLON
0xFF1B: 0x8147, # FULLWIDTH SEMICOLON
0xFF1F: 0x8148, # FULLWIDTH QUESTION MARK
0xFF01: 0x8149, # FULLWIDTH EXCLAMATION MARK
0x309B: 0x814A, # KATAKANA-HIRAGANA VOICED SOUND MARK
0x309C: 0x814B, # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
0x00B4: 0x814C, # ACUTE ACCENT
0xFF40: 0x814D, # FULLWIDTH GRAVE ACCENT
0x00A8: 0x814E, # DIAERESIS
0xFF3E: 0x814F, # FULLWIDTH CIRCUMFLEX ACCENT
0xFFE3: 0x8150, # FULLWIDTH MACRON
0xFF3F: 0x8151, # FULLWIDTH LOW LINE
0x30FD: 0x8152, # KATAKANA ITERATION MARK
0x30FE: 0x8153, # KATAKANA VOICED ITERATION MARK
0x309D: 0x8154, # HIRAGANA ITERATION MARK
0x309E: 0x8155, # HIRAGANA VOICED ITERATION MARK
0x3003: 0x8156, # DITTO MARK
0x4EDD: 0x8157, # <cjk>
0x3005: 0x8158, # IDEOGRAPHIC ITERATION MARK
0x3006: 0x8159, # IDEOGRAPHIC CLOSING MARK
0x3007: 0x815A, # IDEOGRAPHIC NUMBER ZERO
0x30FC: 0x815B, # KATAKANA-HIRAGANA PROLONGED SOUND MARK
0x2014: 0x815C, # EM DASH Windows: U+2015
0x2010: 0x815D, # HYPHEN
0xFF0F: 0x815E, # FULLWIDTH SOLIDUS
0x005C: 0x815F, # REVERSE SOLIDUS Fullwidth: U+FF3C
0x301C: 0x8160, # WAVE DASH Windows: U+FF5E
0x2016: 0x8161, # DOUBLE VERTICAL LINE Windows: U+2225
0xFF5C: 0x8162, # FULLWIDTH VERTICAL LINE
0x2026: 0x8163, # HORIZONTAL ELLIPSIS
0x2025: 0x8164, # TWO DOT LEADER
0x2018: 0x8165, # LEFT SINGLE QUOTATION MARK
0x2019: 0x8166, # RIGHT SINGLE QUOTATION MARK
0x201C: 0x8167, # LEFT DOUBLE QUOTATION MARK
0x201D: 0x8168, # RIGHT DOUBLE QUOTATION MARK
0xFF08: 0x8169, # FULLWIDTH LEFT PARENTHESIS
0xFF09: 0x816A, # FULLWIDTH RIGHT PARENTHESIS
0x3014: 0x816B, # LEFT TORTOISE SHELL BRACKET
0x3015: 0x816C, # RIGHT TORTOISE SHELL BRACKET
0xFF3B: 0x816D, # FULLWIDTH LEFT SQUARE BRACKET
0xFF3D: 0x816E, # FULLWIDTH RIGHT SQUARE BRACKET
0xFF5B: 0x816F, # FULLWIDTH LEFT CURLY BRACKET
0xFF5D: 0x8170, # FULLWIDTH RIGHT CURLY BRACKET
0x3008: 0x8171, # LEFT ANGLE BRACKET
0x3009: 0x8172, # RIGHT ANGLE BRACKET
0x300A: 0x8173, # LEFT DOUBLE ANGLE BRACKET
0x300B: 0x8174, # RIGHT DOUBLE ANGLE BRACKET
0x300C: 0x8175, # LEFT CORNER BRACKET
0x300D: 0x8176, # RIGHT CORNER BRACKET
0x300E: 0x8177, # LEFT WHITE CORNER BRACKET
0x300F: 0x8178, # RIGHT WHITE CORNER BRACKET
0x3010: 0x8179, # LEFT BLACK LENTICULAR BRACKET
0x3011: 0x817A, # RIGHT BLACK LENTICULAR BRACKET
0xFF0B: 0x817B, # FULLWIDTH PLUS SIGN
0x2212: 0x817C, # MINUS SIGN Windows: U+FF0D
0x00B1: 0x817D, # PLUS-MINUS SIGN
0x00D7: 0x817E, # MULTIPLICATION SIGN
0x00F7: 0x8180, # DIVISION SIGN
0xFF1D: 0x8181, # FULLWIDTH EQUALS SIGN
0x2260: 0x8182, # NOT EQUAL TO
0xFF1C: 0x8183, # FULLWIDTH LESS-THAN SIGN
0xFF1E: 0x8184, # FULLWIDTH GREATER-THAN SIGN
0x2266: 0x8185, # LESS-THAN OVER EQUAL TO
0x2267: 0x8186, # GREATER-THAN OVER EQUAL TO
0x221E: 0x8187, # INFINITY
0x2234: 0x8188, # THEREFORE
0x2642: 0x8189, # MALE SIGN
0x2640: 0x818A, # FEMALE SIGN
0x00B0: 0x818B, # DEGREE SIGN
0x2032: 0x818C, # PRIME
0x2033: 0x818D, # DOUBLE PRIME
0x2103: 0x818E, # DEGREE CELSIUS
0xFFE5: 0x818F, # FULLWIDTH YEN SIGN
0xFF04: 0x8190, # FULLWIDTH DOLLAR SIGN
0x00A2: 0x8191, # CENT SIGN Windows: U+FFE0
0x00A3: 0x8192, # POUND SIGN Windows: U+FFE1
0xFF05: 0x8193, # FULLWIDTH PERCENT SIGN
0xFF03: 0x8194, # FULLWIDTH NUMBER SIGN
0xFF06: 0x8195, # FULLWIDTH AMPERSAND
0xFF0A: 0x8196, # FULLWIDTH ASTERISK
0xFF20: 0x8197, # FULLWIDTH COMMERCIAL AT
0x00A7: 0x8198, # SECTION SIGN
0x2606: 0x8199, # WHITE STAR
0x2605: 0x819A, # BLACK STAR
0x25CB: 0x819B, # WHITE CIRCLE
0x25CF: 0x819C, # BLACK CIRCLE
0x25CE: 0x819D, # BULLSEYE
0x25C7: 0x819E, # WHITE DIAMOND
0x25C6: 0x819F, # BLACK DIAMOND
0x25A1: 0x81A0, # WHITE SQUARE
0x25A0: 0x81A1, # BLACK SQUARE
0x25B3: 0x81A2, # WHITE UP-POINTING TRIANGLE
0x25B2: 0x81A3, # BLACK UP-POINTING TRIANGLE
0x25BD: 0x81A4, # WHITE DOWN-POINTING TRIANGLE
0x25BC: 0x81A5, # BLACK DOWN-POINTING TRIANGLE
0x203B: 0x81A6, # REFERENCE MARK
0x3012: 0x81A7, # POSTAL MARK
0x2192: 0x81A8, # RIGHTWARDS ARROW
0x2190: 0x81A9, # LEFTWARDS ARROW
0x2191: 0x81AA, # UPWARDS ARROW
0x2193: 0x81AB, # DOWNWARDS ARROW
0x3013: 0x81AC, # GETA MARK
0xFF07: 0x81AD, # FULLWIDTH APOSTROPHE [2000]
0xFF02: 0x81AE, # FULLWIDTH QUOTATION MARK [2000]
0xFF0D: 0x81AF, # FULLWIDTH HYPHEN-MINUS [2000]
0x007E: 0x81B0, # TILDE [2000] Fullwidth: U+FF5E
0x3033: 0x81B1, # VERTICAL KANA REPEAT MARK UPPER HALF [2000]
0x3034: 0x81B2, # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF [2000]
0x3035: 0x81B3, # VERTICAL KANA REPEAT MARK LOWER HALF [2000]
0x303B: 0x81B4, # VERTICAL IDEOGRAPHIC ITERATION MARK [2000] [Unicode3.2]
0x303C: 0x81B5, # MASU MARK [2000] [Unicode3.2]
0x30FF: 0x81B6, # KATAKANA DIGRAPH KOTO [2000] [Unicode3.2]
0x309F: 0x81B7, # HIRAGANA DIGRAPH YORI [2000] [Unicode3.2]
0x2208: 0x81B8, # ELEMENT OF [1983]
0x220B: 0x81B9, # CONTAINS AS MEMBER [1983]
0x2286: 0x81BA, # SUBSET OF OR EQUAL TO [1983]
0x2287: 0x81BB, # SUPERSET OF OR EQUAL TO [1983]
0x2282: 0x81BC, # SUBSET OF [1983]
0x2283: 0x81BD, # SUPERSET OF [1983]
0x222A: 0x81BE, # UNION [1983]
0x2229: 0x81BF, # INTERSECTION [1983]
0x2284: 0x81C0, # NOT A SUBSET OF [2000]
0x2285: 0x81C1, # NOT A SUPERSET OF [2000]
0x228A: 0x81C2, # SUBSET OF WITH NOT EQUAL TO [2000]
0x228B: 0x81C3, # SUPERSET OF WITH NOT EQUAL TO [2000]
0x2209: 0x81C4, # NOT AN ELEMENT OF [2000]
0x2205: 0x81C5, # EMPTY SET [2000]
0x2305: 0x81C6, # PROJECTIVE [2000]
0x2306: 0x81C7, # PERSPECTIVE [2000]
0x2227: 0x81C8, # LOGICAL AND [1983]
0x2228: 0x81C9, # LOGICAL OR [1983]
0x00AC: 0x81CA, # NOT SIGN [1983] Windows: U+FFE2
0x21D2: 0x81CB, # RIGHTWARDS DOUBLE ARROW [1983]
0x21D4: 0x81CC, # LEFT RIGHT DOUBLE ARROW [1983]
0x2200: 0x81CD, # FOR ALL [1983]
0x2203: 0x81CE, # THERE EXISTS [1983]
0x2295: 0x81CF, # CIRCLED PLUS [2000]
0x2296: 0x81D0, # CIRCLED MINUS [2000]
0x2297: 0x81D1, # CIRCLED TIMES [2000]
0x2225: 0x81D2, # PARALLEL TO [2000]
0x2226: 0x81D3, # NOT PARALLEL TO [2000]
0xFF5F: 0x81D4, # FULLWIDTH LEFT WHITE PARENTHESIS [2000] [Unicode3.2]
0xFF60: 0x81D5, # FULLWIDTH RIGHT WHITE PARENTHESIS [2000] [Unicode3.2]
0x3018: 0x81D6, # LEFT WHITE TORTOISE SHELL BRACKET [2000]
0x3019: 0x81D7, # RIGHT WHITE TORTOISE SHELL BRACKET [2000]
0x3016: 0x81D8, # LEFT WHITE LENTICULAR BRACKET [2000]
0x3017: 0x81D9, # RIGHT WHITE LENTICULAR BRACKET [2000]
0x2220: 0x81DA, # ANGLE [1983]
0x22A5: 0x81DB, # UP TACK [1983]
0x2312: 0x81DC, # ARC [1983]
0x2202: 0x81DD, # PARTIAL DIFFERENTIAL [1983]
0x2207: 0x81DE, # NABLA [1983]
0x2261: 0x81DF, # IDENTICAL TO [1983]
0x2252: 0x81E0, # APPROXIMATELY EQUAL TO OR THE IMAGE OF [1983]
0x226A: 0x81E1, # MUCH LESS-THAN [1983]
0x226B: 0x81E2, # MUCH GREATER-THAN [1983]
0x221A: 0x81E3, # SQUARE ROOT [1983]
0x223D: 0x81E4, # REVERSED TILDE [1983]
0x221D: 0x81E5, # PROPORTIONAL TO [1983]
0x2235: 0x81E6, # BECAUSE [1983]
0x222B: 0x81E7, # INTEGRAL [1983]
0x222C: 0x81E8, # DOUBLE INTEGRAL [1983]
0x2262: 0x81E9, # NOT IDENTICAL TO [2000]
0x2243: 0x81EA, # ASYMPTOTICALLY EQUAL TO [2000]
0x2245: 0x81EB, # APPROXIMATELY EQUAL TO [2000]
0x2248: 0x81EC, # ALMOST EQUAL TO [2000]
0x2276: 0x81ED, # LESS-THAN OR GREATER-THAN [2000]
0x2277: 0x81EE, # GREATER-THAN OR LESS-THAN [2000]
0x2194: 0x81EF, # LEFT RIGHT ARROW [2000]
0x212B: 0x81F0, # ANGSTROM SIGN [1983]
0x2030: 0x81F1, # PER MILLE SIGN [1983]
0x266F: 0x81F2, # MUSIC SHARP SIGN [1983]
0x266D: 0x81F3, # MUSIC FLAT SIGN [1983]
0x266A: 0x81F4, # EIGHTH NOTE [1983]
0x2020: 0x81F5, # DAGGER [1983]
0x2021: 0x81F6, # DOUBLE DAGGER [1983]
0x00B6: 0x81F7, # PILCROW SIGN [1983]
0x266E: 0x81F8, # MUSIC NATURAL SIGN [2000]
0x266B: 0x81F9, # BEAMED EIGHTH NOTES [2000]
0x266C: 0x81FA, # BEAMED SIXTEENTH NOTES [2000]
0x2669: 0x81FB, # QUARTER NOTE [2000]
0x25EF: 0x81FC, # LARGE CIRCLE [1983]
0x25B7: 0x8240, # WHITE RIGHT-POINTING TRIANGLE [2000]
0x25B6: 0x8241, # BLACK RIGHT-POINTING TRIANGLE [2000]
0x25C1: 0x8242, # WHITE LEFT-POINTING TRIANGLE [2000]
0x25C0: 0x8243, # BLACK LEFT-POINTING TRIANGLE [2000]
0x2197: 0x8244, # NORTH EAST ARROW [2000]
0x2198: 0x8245, # SOUTH EAST ARROW [2000]
0x2196: 0x8246, # NORTH WEST ARROW [2000]
0x2199: 0x8247, # SOUTH WEST ARROW [2000]
0x21C4: 0x8248, # RIGHTWARDS ARROW OVER LEFTWARDS ARROW [2000]
0x21E8: 0x8249, # RIGHTWARDS WHITE ARROW [2000]
0x21E6: 0x824A, # LEFTWARDS WHITE ARROW [2000]
0x21E7: 0x824B, # UPWARDS WHITE ARROW [2000]
0x21E9: 0x824C, # DOWNWARDS WHITE ARROW [2000]
0x2934: 0x824D, # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS [2000] [Unicode3.2]
0x2935: 0x824E, # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS [2000] [Unicode3.2]
0xFF10: 0x824F, # FULLWIDTH DIGIT ZERO
0xFF11: 0x8250, # FULLWIDTH DIGIT ONE
0xFF12: 0x8251, # FULLWIDTH DIGIT TWO
0xFF13: 0x8252, # FULLWIDTH DIGIT THREE
0xFF14: 0x8253, # FULLWIDTH DIGIT FOUR
0xFF15: 0x8254, # FULLWIDTH DIGIT FIVE
0xFF16: 0x8255, # FULLWIDTH DIGIT SIX
0xFF17: 0x8256, # FULLWIDTH DIGIT SEVEN
0xFF18: 0x8257, # FULLWIDTH DIGIT EIGHT
0xFF19: 0x8258, # FULLWIDTH DIGIT NINE
0x29BF: 0x8259, # CIRCLED BULLET [2000] [Unicode3.2]
0x25C9: 0x825A, # FISHEYE [2000]
0x303D: 0x825B, # PART ALTERNATION MARK [2000] [Unicode3.2]
0xFE46: 0x825C, # WHITE SESAME DOT [2000] [Unicode3.2]
0xFE45: 0x825D, # SESAME DOT [2000] [Unicode3.2]
0x25E6: 0x825E, # WHITE BULLET [2000]
0x2022: 0x825F, # BULLET [2000]
0xFF21: 0x8260, # FULLWIDTH LATIN CAPITAL LETTER A
0xFF22: 0x8261, # FULLWIDTH LATIN CAPITAL LETTER B
0xFF23: 0x8262, # FULLWIDTH LATIN CAPITAL LETTER C
0xFF24: 0x8263, # FULLWIDTH LATIN CAPITAL LETTER D
0xFF25: 0x8264, # FULLWIDTH LATIN CAPITAL LETTER E
0xFF26: 0x8265, # FULLWIDTH LATIN CAPITAL LETTER F
0xFF27: 0x8266, # FULLWIDTH LATIN CAPITAL LETTER G
0xFF28: 0x8267, # FULLWIDTH LATIN CAPITAL LETTER H
0xFF29: 0x8268, # FULLWIDTH LATIN CAPITAL LETTER I
0xFF2A: 0x8269, # FULLWIDTH LATIN CAPITAL LETTER J
0xFF2B: 0x826A, # FULLWIDTH LATIN CAPITAL LETTER K
0xFF2C: 0x826B, # FULLWIDTH LATIN CAPITAL LETTER L
0xFF2D: 0x826C, # FULLWIDTH LATIN CAPITAL LETTER M
0xFF2E: 0x826D, # FULLWIDTH LATIN CAPITAL LETTER N
0xFF2F: 0x826E, # FULLWIDTH LATIN CAPITAL LETTER O
0xFF30: 0x826F, # FULLWIDTH LATIN CAPITAL LETTER P
0xFF31: 0x8270, # FULLWIDTH LATIN CAPITAL LETTER Q
0xFF32: 0x8271, # FULLWIDTH LATIN CAPITAL LETTER R
0xFF33: 0x8272, # FULLWIDTH LATIN CAPITAL LETTER S
0xFF34: 0x8273, # FULLWIDTH LATIN CAPITAL LETTER T
0xFF35: 0x8274, # FULLWIDTH LATIN CAPITAL LETTER U
0xFF36: 0x8275, # FULLWIDTH LATIN CAPITAL LETTER V
0xFF37: 0x8276, # FULLWIDTH LATIN CAPITAL LETTER W
0xFF38: 0x8277, # FULLWIDTH LATIN CAPITAL LETTER X
0xFF39: 0x8278, # FULLWIDTH LATIN CAPITAL LETTER Y
0xFF3A: 0x8279, # FULLWIDTH LATIN CAPITAL LETTER Z
0x2213: 0x827A, # MINUS-OR-PLUS SIGN [2000]
0x2135: 0x827B, # ALEF SYMBOL [2000]
0x210F: 0x827C, # PLANCK CONSTANT OVER TWO PI [2000]
0x33CB: 0x827D, # SQUARE HP [2000]
0x2113: 0x827E, # SCRIPT SMALL L [2000]
0x2127: 0x8280, # INVERTED OHM SIGN [2000]
0xFF41: 0x8281, # FULLWIDTH LATIN SMALL LETTER A
0xFF42: 0x8282, # FULLWIDTH LATIN SMALL LETTER B
0xFF43: 0x8283, # FULLWIDTH LATIN SMALL LETTER C
0xFF44: 0x8284, # FULLWIDTH LATIN SMALL LETTER D
0xFF45: 0x8285, # FULLWIDTH LATIN SMALL LETTER E
0xFF46: 0x8286, # FULLWIDTH LATIN SMALL LETTER F
0xFF47: 0x8287, # FULLWIDTH LATIN SMALL LETTER G
0xFF48: 0x8288, # FULLWIDTH LATIN SMALL LETTER H
0xFF49: 0x8289, # FULLWIDTH LATIN SMALL LETTER I
0xFF4A: 0x828A, # FULLWIDTH LATIN SMALL LETTER J
0xFF4B: 0x828B, # FULLWIDTH LATIN SMALL LETTER K
0xFF4C: 0x828C, # FULLWIDTH LATIN SMALL LETTER L
0xFF4D: 0x828D, # FULLWIDTH LATIN SMALL LETTER M
0xFF4E: 0x828E, # FULLWIDTH LATIN SMALL LETTER N
0xFF4F: 0x828F, # FULLWIDTH LATIN SMALL LETTER O
0xFF50: 0x8290, # FULLWIDTH LATIN SMALL LETTER P
0xFF51: 0x8291, # FULLWIDTH LATIN SMALL LETTER Q
0xFF52: 0x8292, # FULLWIDTH LATIN SMALL LETTER R
0xFF53: 0x8293, # FULLWIDTH LATIN SMALL LETTER S
0xFF54: 0x8294, # FULLWIDTH LATIN SMALL LETTER T
0xFF55: 0x8295, # FULLWIDTH LATIN SMALL LETTER U
0xFF56: 0x8296, # FULLWIDTH LATIN SMALL LETTER V
0xFF57: 0x8297, # FULLWIDTH LATIN SMALL LETTER W
0xFF58: 0x8298, # FULLWIDTH LATIN SMALL LETTER X
0xFF59: 0x8299, # FULLWIDTH LATIN SMALL LETTER Y
0xFF5A: 0x829A, # FULLWIDTH LATIN SMALL LETTER Z
0x30A0: 0x829B, # KATAKANA-HIRAGANA DOUBLE HYPHEN [2000] [Unicode3.2]
0x2013: 0x829C, # EN DASH [2000]
0x29FA: 0x829D, # DOUBLE PLUS [2000] [Unicode3.2]
0x29FB: 0x829E, # TRIPLE PLUS [2000] [Unicode3.2]
0x3041: 0x829F, # HIRAGANA LETTER SMALL A
0x3042: 0x82A0, # HIRAGANA LETTER A
0x3043: 0x82A1, # HIRAGANA LETTER SMALL I
0x3044: 0x82A2, # HIRAGANA LETTER I
0x3045: 0x82A3, # HIRAGANA LETTER SMALL U
0x3046: 0x82A4, # HIRAGANA LETTER U
0x3047: 0x82A5, # HIRAGANA LETTER SMALL E
0x3048: 0x82A6, # HIRAGANA LETTER E
0x3049: 0x82A7, # HIRAGANA LETTER SMALL O
0x304A: 0x82A8, # HIRAGANA LETTER O
0x304B: 0x82A9, # HIRAGANA LETTER KA
0x304C: 0x82AA, # HIRAGANA LETTER GA
0x304D: 0x82AB, # HIRAGANA LETTER KI
0x304E: 0x82AC, # HIRAGANA LETTER GI
0x304F: 0x82AD, # HIRAGANA LETTER KU
0x3050: 0x82AE, # HIRAGANA LETTER GU
0x3051: 0x82AF, # HIRAGANA LETTER KE
0x3052: 0x82B0, # HIRAGANA LETTER GE
0x3053: 0x82B1, # HIRAGANA LETTER KO
0x3054: 0x82B2, # HIRAGANA LETTER GO
0x3055: 0x82B3, # HIRAGANA LETTER SA
0x3056: 0x82B4, # HIRAGANA LETTER ZA
0x3057: 0x82B5, # HIRAGANA LETTER SI
0x3058: 0x82B6, # HIRAGANA LETTER ZI
0x3059: 0x82B7, # HIRAGANA LETTER SU
0x305A: 0x82B8, # HIRAGANA LETTER ZU
0x305B: 0x82B9, # HIRAGANA LETTER SE
0x305C: 0x82BA, # HIRAGANA LETTER ZE
0x305D: 0x82BB, # HIRAGANA LETTER SO
0x305E: 0x82BC, # HIRAGANA LETTER ZO
0x305F: 0x82BD, # HIRAGANA LETTER TA
0x3060: 0x82BE, # HIRAGANA LETTER DA
0x3061: 0x82BF, # HIRAGANA LETTER TI
0x3062: 0x82C0, # HIRAGANA LETTER DI
0x3063: 0x82C1, # HIRAGANA LETTER SMALL TU
0x3064: 0x82C2, # HIRAGANA LETTER TU
0x3065: 0x82C3, # HIRAGANA LETTER DU
0x3066: 0x82C4, # HIRAGANA LETTER TE
0x3067: 0x82C5, # HIRAGANA LETTER DE
0x3068: 0x82C6, # HIRAGANA LETTER TO
0x3069: 0x82C7, # HIRAGANA LETTER DO
0x306A: 0x82C8, # HIRAGANA LETTER NA
0x306B: 0x82C9, # HIRAGANA LETTER NI
0x306C: 0x82CA, # HIRAGANA LETTER NU
0x306D: 0x82CB, # HIRAGANA LETTER NE
0x306E: 0x82CC, # HIRAGANA LETTER NO
0x306F: 0x82CD, # HIRAGANA LETTER HA
0x3070: 0x82CE, # HIRAGANA LETTER BA
0x3071: 0x82CF, # HIRAGANA LETTER PA
0x3072: 0x82D0, # HIRAGANA LETTER HI
0x3073: 0x82D1, # HIRAGANA LETTER BI
0x3074: 0x82D2, # HIRAGANA LETTER PI
0x3075: 0x82D3, # HIRAGANA LETTER HU
0x3076: 0x82D4, # HIRAGANA LETTER BU
0x3077: 0x82D5, # HIRAGANA LETTER PU
0x3078: 0x82D6, # HIRAGANA LETTER HE
0x3079: 0x82D7, # HIRAGANA LETTER BE
0x307A: 0x82D8, # HIRAGANA LETTER PE
0x307B: 0x82D9, # HIRAGANA LETTER HO
0x307C: 0x82DA, # HIRAGANA LETTER BO
0x307D: 0x82DB, # HIRAGANA LETTER PO
0x307E: 0x82DC, # HIRAGANA LETTER MA
0x307F: 0x82DD, # HIRAGANA LETTER MI
0x3080: 0x82DE, # HIRAGANA LETTER MU
0x3081: 0x82DF, # HIRAGANA LETTER ME
0x3082: 0x82E0, # HIRAGANA LETTER MO
0x3083: 0x82E1, # HIRAGANA LETTER SMALL YA
0x3084: 0x82E2, # HIRAGANA LETTER YA
0x3085: 0x82E3, # HIRAGANA LETTER SMALL YU
0x3086: 0x82E4, # HIRAGANA LETTER YU
0x3087: 0x82E5, # HIRAGANA LETTER SMALL YO
0x3088: 0x82E6, # HIRAGANA LETTER YO
0x3089: 0x82E7, # HIRAGANA LETTER RA
0x308A: 0x82E8, # HIRAGANA LETTER RI
0x308B: 0x82E9, # HIRAGANA LETTER RU
0x308C: 0x82EA, # HIRAGANA LETTER RE
0x308D: 0x82EB, # HIRAGANA LETTER RO
0x308E: 0x82EC, # HIRAGANA LETTER SMALL WA
0x308F: 0x82ED, # HIRAGANA LETTER WA
0x3090: 0x82EE, # HIRAGANA LETTER WI
0x3091: 0x82EF, # HIRAGANA LETTER WE
0x3092: 0x82F0, # HIRAGANA LETTER WO
0x3093: 0x82F1, # HIRAGANA LETTER N
0x3094: 0x82F2, # HIRAGANA LETTER VU [2000]
0x3095: 0x82F3, # HIRAGANA LETTER SMALL KA [2000] [Unicode3.2]
0x3096: 0x82F4, # HIRAGANA LETTER SMALL KE [2000] [Unicode3.2]
0x304B309A: 0x82F5, # [2000]
0x304D309A: 0x82F6, # [2000]
0x304F309A: 0x82F7, # [2000]
0x3051309A: 0x82F8, # [2000]
0x3053309A: 0x82F9, # [2000]
# 0x82FA - <reserved>
# 0x82FB - <reserved>
# 0x82FC - <reserved>
0x30A1: 0x8340, # KATAKANA LETTER SMALL A
0x30A2: 0x8341, # KATAKANA LETTER A
0x30A3: 0x8342, # KATAKANA LETTER SMALL I
0x30A4: 0x8343, # KATAKANA LETTER I
0x30A5: 0x8344, # KATAKANA LETTER SMALL U
0x30A6: 0x8345, # KATAKANA LETTER U
0x30A7: 0x8346, # KATAKANA LETTER SMALL E
0x30A8: 0x8347, # KATAKANA LETTER E
0x30A9: 0x8348, # KATAKANA LETTER SMALL O
0x30AA: 0x8349, # KATAKANA LETTER O
0x30AB: 0x834A, # KATAKANA LETTER KA
0x30AC: 0x834B, # KATAKANA LETTER GA
0x30AD: 0x834C, # KATAKANA LETTER KI
0x30AE: 0x834D, # KATAKANA LETTER GI
0x30AF: 0x834E, # KATAKANA LETTER KU
0x30B0: 0x834F, # KATAKANA LETTER GU
0x30B1: 0x8350, # KATAKANA LETTER KE
0x30B2: 0x8351, # KATAKANA LETTER GE
0x30B3: 0x8352, # KATAKANA LETTER KO
0x30B4: 0x8353, # KATAKANA LETTER GO
0x30B5: 0x8354, # KATAKANA LETTER SA
0x30B6: 0x8355, # KATAKANA LETTER ZA
0x30B7: 0x8356, # KATAKANA LETTER SI
0x30B8: 0x8357, # KATAKANA LETTER ZI
0x30B9: 0x8358, # KATAKANA LETTER SU
0x30BA: 0x8359, # KATAKANA LETTER ZU
0x30BB: 0x835A, # KATAKANA LETTER SE
0x30BC: 0x835B, # KATAKANA LETTER ZE
0x30BD: 0x835C, # KATAKANA LETTER SO
0x30BE: 0x835D, # KATAKANA LETTER ZO
0x30BF: 0x835E, # KATAKANA LETTER TA
0x30C0: 0x835F, # KATAKANA LETTER DA
0x30C1: 0x8360, # KATAKANA LETTER TI
0x30C2: 0x8361, # KATAKANA LETTER DI
0x30C3: 0x8362, # KATAKANA LETTER SMALL TU
0x30C4: 0x8363, # KATAKANA LETTER TU
0x30C5: 0x8364, # KATAKANA LETTER DU
0x30C6: 0x8365, # KATAKANA LETTER TE
0x30C7: 0x8366, # KATAKANA LETTER DE
0x30C8: 0x8367, # KATAKANA LETTER TO
0x30C9: 0x8368, # KATAKANA LETTER DO
0x30CA: 0x8369, # KATAKANA LETTER NA
0x30CB: 0x836A, # KATAKANA LETTER NI
0x30CC: 0x836B, # KATAKANA LETTER NU
0x30CD: 0x836C, # KATAKANA LETTER NE
0x30CE: 0x836D, # KATAKANA LETTER NO
0x30CF: 0x836E, # KATAKANA LETTER HA
0x30D0: 0x836F, # KATAKANA LETTER BA
0x30D1: 0x8370, # KATAKANA LETTER PA
0x30D2: 0x8371, # KATAKANA LETTER HI
0x30D3: 0x8372, # KATAKANA LETTER BI
0x30D4: 0x8373, # KATAKANA LETTER PI
0x30D5: 0x8374, # KATAKANA LETTER HU
0x30D6: 0x8375, # KATAKANA LETTER BU
0x30D7: 0x8376, # KATAKANA LETTER PU
0x30D8: 0x8377, # KATAKANA LETTER HE
0x30D9: 0x8378, # KATAKANA LETTER BE
0x30DA: 0x8379, # KATAKANA LETTER PE
0x30DB: 0x837A, # KATAKANA LETTER HO
0x30DC: 0x837B, # KATAKANA LETTER BO
0x30DD: 0x837C, # KATAKANA LETTER PO
0x30DE: 0x837D, # KATAKANA LETTER MA
0x30DF: 0x837E, # KATAKANA LETTER MI
0x30E0: 0x8380, # KATAKANA LETTER MU
0x30E1: 0x8381, # KATAKANA LETTER ME
0x30E2: 0x8382, # KATAKANA LETTER MO
0x30E3: 0x8383, # KATAKANA LETTER SMALL YA
0x30E4: 0x8384, # KATAKANA LETTER YA
0x30E5: 0x8385, # KATAKANA LETTER SMALL YU
0x30E6: 0x8386, # KATAKANA LETTER YU
0x30E7: 0x8387, # KATAKANA LETTER SMALL YO
0x30E8: 0x8388, # KATAKANA LETTER YO
0x30E9: 0x8389, # KATAKANA LETTER RA
0x30EA: 0x838A, # KATAKANA LETTER RI
0x30EB: 0x838B, # KATAKANA LETTER RU
0x30EC: 0x838C, # KATAKANA LETTER RE
0x30ED: 0x838D, # KATAKANA LETTER RO
0x30EE: 0x838E, # KATAKANA LETTER SMALL WA
0x30EF: 0x838F, # KATAKANA LETTER WA
0x30F0: 0x8390, # KATAKANA LETTER WI
0x30F1: 0x8391, # KATAKANA LETTER WE
0x30F2: 0x8392, # KATAKANA LETTER WO
0x30F3: 0x8393, # KATAKANA LETTER N
0x30F4: 0x8394, # KATAKANA LETTER VU
0x30F5: 0x8395, # KATAKANA LETTER SMALL KA
0x30F6: 0x8396, # KATAKANA LETTER SMALL KE
0x30AB309A: 0x8397, # [2000]
0x30AD309A: 0x8398, # [2000]
0x30AF309A: 0x8399, # [2000]
0x30B1309A: 0x839A, # [2000]
0x30B3309A: 0x839B, # [2000]
0x30BB309A: 0x839C, # [2000]
0x30C4309A: 0x839D, # [2000]
0x30C8309A: 0x839E, # [2000]
0x0391: 0x839F, # GREEK CAPITAL LETTER ALPHA
0x0392: 0x83A0, # GREEK CAPITAL LETTER BETA
0x0393: 0x83A1, # GREEK CAPITAL LETTER GAMMA
0x0394: 0x83A2, # GREEK CAPITAL LETTER DELTA
0x0395: 0x83A3, # GREEK CAPITAL LETTER EPSILON
0x0396: 0x83A4, # GREEK CAPITAL LETTER ZETA
0x0397: 0x83A5, # GREEK CAPITAL LETTER ETA
0x0398: 0x83A6, # GREEK CAPITAL LETTER THETA
0x0399: 0x83A7, # GREEK CAPITAL LETTER IOTA
0x039A: 0x83A8, # GREEK CAPITAL LETTER KAPPA
0x039B: 0x83A9, # GREEK CAPITAL LETTER LAMDA
0x039C: 0x83AA, # GREEK CAPITAL LETTER MU
0x039D: 0x83AB, # GREEK CAPITAL LETTER NU
0x039E: 0x83AC, # GREEK CAPITAL LETTER XI
0x039F: 0x83AD, # GREEK CAPITAL LETTER OMICRON
0x03A0: 0x83AE, # GREEK CAPITAL LETTER PI
0x03A1: 0x83AF, # GREEK CAPITAL LETTER RHO
0x03A3: 0x83B0, # GREEK CAPITAL LETTER SIGMA
0x03A4: 0x83B1, # GREEK CAPITAL LETTER TAU
0x03A5: 0x83B2, # GREEK CAPITAL LETTER UPSILON
0x03A6: 0x83B3, # GREEK CAPITAL LETTER PHI
0x03A7: 0x83B4, # GREEK CAPITAL LETTER CHI
0x03A8: 0x83B5, # GREEK CAPITAL LETTER PSI
0x03A9: 0x83B6, # GREEK CAPITAL LETTER OMEGA
0x2664: 0x83B7, # WHITE SPADE SUIT [2000]
0x2660: 0x83B8, # BLACK SPADE SUIT [2000]
0x2662: 0x83B9, # WHITE DIAMOND SUIT [2000]
0x2666: 0x83BA, # BLACK DIAMOND SUIT [2000]
0x2661: 0x83BB, # WHITE HEART SUIT [2000]
0x2665: 0x83BC, # BLACK HEART SUIT [2000]
0x2667: 0x83BD, # WHITE CLUB SUIT [2000]
0x2663: 0x83BE, # BLACK CLUB SUIT [2000]
0x03B1: 0x83BF, # GREEK SMALL LETTER ALPHA
0x03B2: 0x83C0, # GREEK SMALL LETTER BETA
0x03B3: 0x83C1, # GREEK SMALL LETTER GAMMA
0x03B4: 0x83C2, # GREEK SMALL LETTER DELTA
0x03B5: 0x83C3, # GREEK SMALL LETTER EPSILON
0x03B6: 0x83C4, # GREEK SMALL LETTER ZETA
0x03B7: 0x83C5, # GREEK SMALL LETTER ETA
0x03B8: 0x83C6, # GREEK SMALL LETTER THETA
0x03B9: 0x83C7, # GREEK SMALL LETTER IOTA
0x03BA: 0x83C8, # GREEK SMALL LETTER KAPPA
0x03BB: 0x83C9, # GREEK SMALL LETTER LAMDA
0x03BC: 0x83CA, # GREEK SMALL LETTER MU
0x03BD: 0x83CB, # GREEK SMALL LETTER NU
0x03BE: 0x83CC, # GREEK SMALL LETTER XI
0x03BF: 0x83CD, # GREEK SMALL LETTER OMICRON
0x03C0: 0x83CE, # GREEK SMALL LETTER PI
0x03C1: 0x83CF, # GREEK SMALL LETTER RHO
0x03C3: 0x83D0, # GREEK SMALL LETTER SIGMA
0x03C4: 0x83D1, # GREEK SMALL LETTER TAU
0x03C5: 0x83D2, # GREEK SMALL LETTER UPSILON
0x03C6: 0x83D3, # GREEK SMALL LETTER PHI
0x03C7: 0x83D4, # GREEK SMALL LETTER CHI
0x03C8: 0x83D5, # GREEK SMALL LETTER PSI
0x03C9: 0x83D6, # GREEK SMALL LETTER OMEGA
0x03C2: 0x83D7, # GREEK SMALL LETTER FINAL SIGMA [2000]
0x24F5: 0x83D8, # DOUBLE CIRCLED DIGIT ONE [2000] [Unicode3.2]
0x24F6: 0x83D9, # DOUBLE CIRCLED DIGIT TWO [2000] [Unicode3.2]
0x24F7: 0x83DA, # DOUBLE CIRCLED DIGIT THREE [2000] [Unicode3.2]
0x24F8: 0x83DB, # DOUBLE CIRCLED DIGIT FOUR [2000] [Unicode3.2]
0x24F9: 0x83DC, # DOUBLE CIRCLED DIGIT FIVE [2000] [Unicode3.2]
0x24FA: 0x83DD, # DOUBLE CIRCLED DIGIT SIX [2000] [Unicode3.2]
0x24FB: 0x83DE, # DOUBLE CIRCLED DIGIT SEVEN [2000] [Unicode3.2]
0x24FC: 0x83DF, # DOUBLE CIRCLED DIGIT EIGHT [2000] [Unicode3.2]
0x24FD: 0x83E0, # DOUBLE CIRCLED DIGIT NINE [2000] [Unicode3.2]
0x24FE: 0x83E1, # DOUBLE CIRCLED NUMBER TEN [2000] [Unicode3.2]
0x2616: 0x83E2, # WHITE SHOGI PIECE [2000] [Unicode3.2]
0x2617: 0x83E3, # BLACK SHOGI PIECE [2000] [Unicode3.2]
0x3020: 0x83E4, # POSTAL MARK FACE [2000]
0x260E: 0x83E5, # BLACK TELEPHONE [2000]
0x2600: 0x83E6, # BLACK SUN WITH RAYS [2000]
0x2601: 0x83E7, # CLOUD [2000]
0x2602: 0x83E8, # UMBRELLA [2000]
0x2603: 0x83E9, # SNOWMAN [2000]
0x2668: 0x83EA, # HOT SPRINGS [2000]
0x25B1: 0x83EB, # WHITE PARALLELOGRAM [2000]
0x31F0: 0x83EC, # KATAKANA LETTER SMALL KU [2000] [Unicode3.2]
0x31F1: 0x83ED, # KATAKANA LETTER SMALL SI [2000] [Unicode3.2]
0x31F2: 0x83EE, # KATAKANA LETTER SMALL SU [2000] [Unicode3.2]
0x31F3: 0x83EF, # KATAKANA LETTER SMALL TO [2000] [Unicode3.2]
0x31F4: 0x83F0, # KATAKANA LETTER SMALL NU [2000] [Unicode3.2]
0x31F5: 0x83F1, # KATAKANA LETTER SMALL HA [2000] [Unicode3.2]
0x31F6: 0x83F2, # KATAKANA LETTER SMALL HI [2000] [Unicode3.2]
0x31F7: 0x83F3, # KATAKANA LETTER SMALL HU [2000] [Unicode3.2]
0x31F8: 0x83F4, # KATAKANA LETTER SMALL HE [2000] [Unicode3.2]
0x31F9: 0x83F5, # KATAKANA LETTER SMALL HO [2000] [Unicode3.2]
0x31F7309A: 0x83F6, # [2000]
0x31FA: 0x83F7, # KATAKANA LETTER SMALL MU [2000] [Unicode3.2]
0x31FB: 0x83F8, # KATAKANA LETTER SMALL RA [2000] [Unicode3.2]
0x31FC: 0x83F9, # KATAKANA LETTER SMALL RI [2000] [Unicode3.2]
0x31FD: 0x83FA, # KATAKANA LETTER SMALL RU [2000] [Unicode3.2]
0x31FE: 0x83FB, # KATAKANA LETTER SMALL RE [2000] [Unicode3.2]
0x31FF: 0x83FC, # KATAKANA LETTER SMALL RO [2000] [Unicode3.2]
0x0410: 0x8440, # CYRILLIC CAPITAL LETTER A
0x0411: 0x8441, # CYRILLIC CAPITAL LETTER BE
0x0412: 0x8442, # CYRILLIC CAPITAL LETTER VE
0x0413: 0x8443, # CYRILLIC CAPITAL LETTER GHE
0x0414: 0x8444, # CYRILLIC CAPITAL LETTER DE
0x0415: 0x8445, # CYRILLIC CAPITAL LETTER IE
0x0401: 0x8446, # CYRILLIC CAPITAL LETTER IO
0x0416: 0x8447, # CYRILLIC CAPITAL LETTER ZHE
0x0417: 0x8448, # CYRILLIC CAPITAL LETTER ZE
0x0418: 0x8449, # CYRILLIC CAPITAL LETTER I
0x0419: 0x844A, # CYRILLIC CAPITAL LETTER SHORT I
0x041A: 0x844B, # CYRILLIC CAPITAL LETTER KA
0x041B: 0x844C, # CYRILLIC CAPITAL LETTER EL
0x041C: 0x844D, # CYRILLIC CAPITAL LETTER EM
0x041D: 0x844E, # CYRILLIC CAPITAL LETTER EN
0x041E: 0x844F, # CYRILLIC CAPITAL LETTER O
0x041F: 0x8450, # CYRILLIC CAPITAL LETTER PE
0x0420: 0x8451, # CYRILLIC CAPITAL LETTER ER
0x0421: 0x8452, # CYRILLIC CAPITAL LETTER ES
0x0422: 0x8453, # CYRILLIC CAPITAL LETTER TE
0x0423: 0x8454, # CYRILLIC CAPITAL LETTER U
0x0424: 0x8455, # CYRILLIC CAPITAL LETTER EF
0x0425: 0x8456, # CYRILLIC CAPITAL LETTER HA
0x0426: 0x8457, # CYRILLIC CAPITAL LETTER TSE
0x0427: 0x8458, # CYRILLIC CAPITAL LETTER CHE
0x0428: 0x8459, # CYRILLIC CAPITAL LETTER SHA
0x0429: 0x845A, # CYRILLIC CAPITAL LETTER SHCHA
0x042A: 0x845B, # CYRILLIC CAPITAL LETTER HARD SIGN
0x042B: 0x845C, # CYRILLIC CAPITAL LETTER YERU
0x042C: 0x845D, # CYRILLIC CAPITAL LETTER SOFT SIGN
0x042D: 0x845E, # CYRILLIC CAPITAL LETTER E
0x042E: 0x845F, # CYRILLIC CAPITAL LETTER YU
0x042F: 0x8460, # CYRILLIC CAPITAL LETTER YA
0x23BE: 0x8461, # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT [2000] [Unicode3.2]
0x23BF: 0x8462, # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT [2000] [Unicode3.2]
0x23C0: 0x8463, # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE [2000] [Unicode3.2]
0x23C1: 0x8464, # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE [2000] [Unicode3.2]
0x23C2: 0x8465, # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE [2000] [Unicode3.2]
0x23C3: 0x8466, # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE [2000] [Unicode3.2]
0x23C4: 0x8467, # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE [2000] [Unicode3.2]
0x23C5: 0x8468, # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE [2000] [Unicode3.2]
0x23C6: 0x8469, # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE [2000] [Unicode3.2]
0x23C7: 0x846A, # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE [2000] [Unicode3.2]
0x23C8: 0x846B, # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE [2000] [Unicode3.2]
0x23C9: 0x846C, # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL [2000] [Unicode3.2]
0x23CA: 0x846D, # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL [2000] [Unicode3.2]
0x23CB: 0x846E, # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT [2000] [Unicode3.2]
0x23CC: 0x846F, # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT [2000] [Unicode3.2]
0x0430: 0x8470, # CYRILLIC SMALL LETTER A
0x0431: 0x8471, # CYRILLIC SMALL LETTER BE
0x0432: 0x8472, # CYRILLIC SMALL LETTER VE
0x0433: 0x8473, # CYRILLIC SMALL LETTER GHE
0x0434: 0x8474, # CYRILLIC SMALL LETTER DE
0x0435: 0x8475, # CYRILLIC SMALL LETTER IE
0x0451: 0x8476, # CYRILLIC SMALL LETTER IO
0x0436: 0x8477, # CYRILLIC SMALL LETTER ZHE
0x0437: 0x8478, # CYRILLIC SMALL LETTER ZE
0x0438: 0x8479, # CYRILLIC SMALL LETTER I
0x0439: 0x847A, # CYRILLIC SMALL LETTER SHORT I
0x043A: 0x847B, # CYRILLIC SMALL LETTER KA
0x043B: 0x847C, # CYRILLIC SMALL LETTER EL
0x043C: 0x847D, # CYRILLIC SMALL LETTER EM
0x043D: 0x847E, # CYRILLIC SMALL LETTER EN
0x043E: 0x8480, # CYRILLIC SMALL LETTER O
0x043F: 0x8481, # CYRILLIC SMALL LETTER PE
0x0440: 0x8482, # CYRILLIC SMALL LETTER ER
0x0441: 0x8483, # CYRILLIC SMALL LETTER ES
0x0442: 0x8484, # CYRILLIC SMALL LETTER TE
0x0443: 0x8485, # CYRILLIC SMALL LETTER U
0x0444: 0x8486, # CYRILLIC SMALL LETTER EF
0x0445: 0x8487, # CYRILLIC SMALL LETTER HA
0x0446: 0x8488, # CYRILLIC SMALL LETTER TSE
0x0447: 0x8489, # CYRILLIC SMALL LETTER CHE
0x0448: 0x848A, # CYRILLIC SMALL LETTER SHA
0x0449: 0x848B, # CYRILLIC SMALL LETTER SHCHA
0x044A: 0x848C, # CYRILLIC SMALL LETTER HARD SIGN
0x044B: 0x848D, # CYRILLIC SMALL LETTER YERU
0x044C: 0x848E, # CYRILLIC SMALL LETTER SOFT SIGN
0x044D: 0x848F, # CYRILLIC SMALL LETTER E
0x044E: 0x8490, # CYRILLIC SMALL LETTER YU
0x044F: 0x8491, # CYRILLIC SMALL LETTER YA
0x30F7: 0x8492, # KATAKANA LETTER VA [2000]
0x30F8: 0x8493, # KATAKANA LETTER VI [2000]
0x30F9: 0x8494, # KATAKANA LETTER VE [2000]
0x30FA: 0x8495, # KATAKANA LETTER VO [2000]
0x22DA: 0x8496, # LESS-THAN EQUAL TO OR GREATER-THAN [2000]