summaryrefslogtreecommitdiff
path: root/tools/makefont/u_data.pas
blob: bb2ae9801af77eec59a695b3aab2ea27123dfd1a (plain)
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
unit u_data;

{$mode objfpc}

interface

uses
  Classes, SysUtils;

const
  cp874_n: array[0..255] of string =
    ('.notdef',           '.notdef',          '.notdef',        '.notdef',            // 00 to 03
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 04 to 07
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 10 to 13
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 14 to 17
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 1C to 1F
     'space',             'exclam',           'quotedbl',       'numbersign',         // 20 to 23
     'dollar',            'percent',          'ampersand',      'quotesingle',        // 24 to 27
     'parenleft',         'parenright',       'asterisk',       'plus',               // 28 to 2B
     'comma',             'hyphen',           'period',         'slash',              // 2C to 2F
     'zero',              'one',              'two',            'three',              // 30 to 33
     'four',              'five',             'six',            'seven',              // 34 to 37
     'eight',             'nine',             'colon',          'semicolon',          // 38 to 3B
     'less',              'equal',            'greater',        'question',           // 3C to 3F
     'at',                'A',                'B',              'C',                  // 40 to 43
     'D',                 'E',                'F',              'G',                  // 44 to 47
     'H',                 'I',                'J',              'K',                  // 48 to 4B
     'L',                 'M',                'N',              'O',                  // 4C to 4F
     'P',                 'Q',                'R',              'S',                  // 50 to 53
     'T',                 'U',                'V',              'W',                  // 54 to 57
     'X',                 'Y',                'Z',              'bracketleft',        // 58 to 5B
     'backslash',         'bracketright',     'asciicircum',    'underscore',         // 5C to 5F
     'grave',             'a',                'b',              'c',                  // 60 to 63
     'd',                 'e',                'f',              'g',                  // 64 to 67
     'h',                 'i',                'j',              'k',                  // 68 to 6B
     'l',                 'm',                'n',              'o',                  // 6C to 6F
     'p',                 'q',                'r',              's',                  // 70 to 73
     't',                 'u',                'v',              'w',                  // 74 to 77
     'x',                 'y',                'z',              'braceleft',          // 78 to 7B
     'bar',               'braceright',       'asciitilde',     '.notdef',            // 7C to 7F
     'Euro',              '.notdef',          '.notdef',        '.notdef',            // 80 to 83
     '.notdef',           'ellipsis',         '.notdef',        '.notdef',            // 84 to 87
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 88 to 8B
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 8C to 8F
     '.notdef',           'quoteleft',        'quoteright',     'quotedblleft',       // 90 to 93
     'quotedblright',     'bullet',           'endash',         'emdash',             // 94 to 97
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 98 to 9B
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 9C to 9F
     'space',             'kokaithai',        'khokhaithai',    'khokhuatthai',       // A0 to A3
     'khokhwaithai',      'khokhonthai',      'khorakhangthai', 'ngonguthai',         // A4 to A7
     'chochanthai',       'chochingthai',     'chochangthai',   'sosothai',           // A8 to AB
     'chochoethai',       'yoyingthai',       'dochadathai',    'topatakthai',        // AC to AF
     'thothanthai',       'thonangmonthothai','thophuthaothai', 'nonenthai',          // B0 to B3
     'dodekthai',         'totaothai',        'thothungthai',   'thothahanthai',      // B4 to B7
     'thothongthai',      'nonuthai',         'bobaimaithai',   'poplathai',          // B8 to BB
     'phophungthai',      'fofathai',         'phophanthai',    'fofanthai',          // BC to BF
     'phosamphaothai',    'momathai',         'yoyakthai',      'roruathai',          // C0 to C3
     'ruthai',            'lolingthai',       'luthai',         'wowaenthai',         // C4 to C7
     'sosalathai',        'sorusithai',       'sosuathai',      'hohipthai',          // C8 to CB
     'lochulathai',       'oangthai',         'honokhukthai',   'paiyannoithai',      // CC to CF
     'saraathai',         'maihanakatthai',   'saraaathai',     'saraamthai',         // D0 to D3
     'saraithai',         'saraiithai',       'sarauethai',     'saraueethai',        // D4 to D7
     'sarauthai',         'sarauuthai',       'phinthuthai',    '.notdef',            // D8 to DB
     '.notdef',           '.notdef',          '.notdef',        'bahtthai',           // DC to DF
     'saraethai',         'saraaethai',       'saraothai',      'saraaimaimuanthai',  // E0 to E3
     'saraaimaimalaithai','lakkhangyaothai',  'maiyamokthai',   'maitaikhuthai',      // E4 to E7
     'maiekthai',         'maithothai',       'maitrithai',     'maichattawathai',    // E8 to EB
     'thanthakhatthai',   'nikhahitthai',     'yamakkanthai',   'fongmanthai',        // EC to EF
     'zerothai',          'onethai',          'twothai',        'threethai',          // F0 to F3
     'fourthai',          'fivethai',         'sixthai',        'seventhai',          // F4 to F7
     'eightthai',         'ninethai',         'angkhankhuthai', 'khomutthai',         // F8 to FB
     '.notdef',           '.notdef',          '.notdef',        '.notdef');           // FC to FF

const
  cp874_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     8364,    -1,      -1,      -1,      -1,       8230,    -1,      -1,        // 80 to 87
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      8216,    8217,    8220,    8221,     8226,    8211,    8212,      // 90 to 97
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 98 to 9F
     160,     3585,    3586,    3587,    3588,     3589,    3590,    3591,      // A0 to A7
     3592,    3593,    3594,    3595,    3596,     3597,    3598,    3599,      // A8 to AF
     3600,    3601,    3602,    3603,    3604,     3605,    3606,    3607,      // B0 to B7
     3608,    3609,    3610,    3611,    3612,     3613,    3614,    3615,      // B8 to BF
     3616,    3617,    3618,    3619,    3620,     3621,    3622,    3623,      // C0 to C7
     3624,    3625,    3626,    3627,    3628,     3629,    3630,    3631,      // C8 to CF
     3632,    3633,    3634,    3635,    3636,     3637,    3638,    3639,      // D0 to D7
     3640,    3641,    3642,    -1,      -1,       -1,      -1,      3647,      // D8 to DF
     3648,    3649,    3650,    3651,    3652,     3653,    3654,    3655,      // E0 to E7
     3656,    3657,    3658,    3659,    3660,     3661,    3662,    3663,      // E8 to EF
     3664,    3665,    3666,    3667,    3668,     3669,    3670,    3671,      // F0 to F7
     3672,    3673,    3674,    3675,    -1,       -1,      -1,      -1);       // F8 to FF

const
  cp1250_n: array[0..255] of string =
    ('.notdef',       '.notdef',      '.notdef',        '.notdef',            // 00 to 03
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 04 to 07
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 10 to 13
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 14 to 17
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 1C to 1F
     'space',         'exclam',       'quotedbl',       'numbersign',         // 20 to 23
     'dollar',        'percent',      'ampersand',      'quotesingle',        // 24 to 27
     'parenleft',     'parenright',   'asterisk',       'plus',               // 28 to 2B
     'comma',         'hyphen',       'period',         'slash',              // 2C to 2F
     'zero',          'one',          'two',            'three',              // 30 to 33
     'four',          'five',         'six',            'seven',              // 34 to 37
     'eight',         'nine',         'colon',          'semicolon',          // 38 to 3B
     'less',          'equal',        'greater',        'question',           // 3C to 3F
     'at',            'A',            'B',              'C',                  // 40 to 43
     'D',             'E',            'F',              'G',                  // 44 to 47
     'H',             'I',            'J',              'K',                  // 48 to 4B
     'L',             'M',            'N',              'O',                  // 4C to 4F
     'P',             'Q',            'R',              'S',                  // 50 to 53
     'T',             'U',            'V',              'W',                  // 54 to 57
     'X',             'Y',            'Z',              'bracketleft',        // 58 to 5B
     'backslash',     'bracketright', 'asciicircum',    'underscore',         // 5C to 5F
     'grave',         'a',            'b',              'c',                  // 60 to 63
     'd',             'e',            'f',              'g',                  // 64 to 67
     'h',             'i',            'j',              'k',                  // 68 to 6B
     'l',             'm',            'n',              'o',                  // 6C to 6F
     'p',             'q',            'r',              's',                  // 70 to 73
     't',             'u',            'v',              'w',                  // 74 to 77
     'x',             'y',            'z',              'braceleft',          // 78 to 7B
     'bar',           'braceright',   'asciitilde',     '.notdef',            // 7C to 7F
     'Euro',          '.notdef',      'quotesinglbase', '.notdef',            // 80 to 83
     'quotedblbase',  'ellipsis',     'dagger',         'daggerdbl',          // 84 to 87
     '.notdef',       'perthousand',  'Scaron',         'guilsinglleft',      // 88 to 8B
     'Sacute',        'Tcaron',       'Zcaron',         'Zacute',             // 8C to 8F
     '.notdef',       'quoteleft',    'quoteright',     'quotedblleft',       // 90 to 93
     'quotedblright', 'bullet',       'endash',         'emdash',             // 94 to 97
     '.notdef',       'trademark',    'scaron',         'guilsinglright',     // 98 to 9B
     'sacute',        'tcaron',       'zcaron',         'zacute',             // 9C to 9F
     'space',         'caron',        'breve',          'Lslash',             // A0 to A3
     'currency',      'Aogonek',      'brokenbar',      'section',            // A4 to A7
     'dieresis',      'copyright',    'Scedilla',       'guillemotleft',      // A8 to AB
     'logicalnot',    'hyphen',       'registered',     'Zdotaccent',         // AC to AF
     'degree',        'plusminus',    'ogonek',         'lslash',             // B0 to B3
     'acute',         'mu',           'paragraph',      'periodcentered',     // B4 to B7
     'cedilla',       'aogonek',      'scedilla',       'guillemotright',     // B8 to BB
     'Lcaron',        'hungarumlaut', 'lcaron',         'zdotaccent',         // BC to BF
     'Racute',        'Aacute',       'Acircumflex',    'Abreve',             // C0 to C3
     'Adieresis',     'Lacute',       'Cacute',         'Ccedilla',           // C4 to C7
     'Ccaron',        'Eacute',       'Eogonek',        'Edieresis',          // C8 to CB
     'Ecaron',        'Iacute',       'Icircumflex',    'Dcaron',             // CC to CF
     'Dcroat',        'Nacute',       'Ncaron',         'Oacute',             // D0 to D3
     'Ocircumflex',   'Ohungarumlaut','Odieresis',      'multiply',           // D4 to D7
     'Rcaron',        'Uring',        'Uacute',         'Uhungarumlaut',      // D8 to DB
     'Udieresis',     'Yacute',       'Tcommaaccent',   'germandbls',         // DC to DF
     'racute',        'aacute',       'acircumflex',    'abreve',             // E0 to E3
     'adieresis',     'lacute',       'cacute',         'ccedilla',           // E4 to E7
     'ccaron',        'eacute',       'eogonek',        'edieresis',          // E8 to EB
     'ecaron',        'iacute',       'icircumflex',    'dcaron',             // EC to EF
     'dcroat',        'nacute',       'ncaron',         'oacute',             // F0 to F3
     'ocircumflex',   'ohungarumlaut','odieresis',      'divide',             // F4 to F7
     'rcaron',        'uring',        'uacute',         'uhungarumlaut',      // F8 to FB
     'udieresis',     'yacute',       'tcommaaccent',   'dotaccent');         // FC to FF

const
  cp1250_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     8364,    -1,      8218,    -1,      8222,     8230,    8224,    8225,      // 80 to 87
     -1,      8240,    352,     8249,    346,      356,     381,     377,       // 88 to 8F
     -1,      8216,    8217,    8220,    8221,     8226,    8211,    8212,      // 90 to 97
     -1,      8482,    353,     8250,    347,      357,     382,     378,       // 98 to 9F
     160,     711,     728,     321,     164,      260,     166,     167,       // A0 to A7
     168,     169,     350,     171,     172,      173,     174,     379,       // A8 to AF
     176,     177,     731,     322,     180,      181,     182,     183,       // B0 to B7
     184,     261,     351,     187,     317,      733,     318,     380,       // B8 to BF
     340,     193,     194,     258,     196,      313,     262,     199,       // C0 to C7
     268,     201,     280,     203,     282,      205,     206,     270,       // C8 to CF
     272,     323,     327,     211,     212,      336,     214,     215,       // D0 to D7
     344,     366,     218,     368,     220,      221,     354,     354,       // D8 to DF
     341,     225,     226,     259,     228,      314,     263,     231,       // E0 to E7
     269,     233,     281,     235,     283,      237,     238,     271,       // E8 to EF
     273,     324,     328,     243,     244,      337,     246,     247,       // F0 to F7
     345,     367,     250,     369,     252,      253,     355,     729);      // F8 to FF

const
  cp1251_n: array[0..255] of string =
    ('.notdef',       '.notdef',      '.notdef',        '.notdef',            // 00 to 03
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 04 to 07
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 10 to 13
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 14 to 17
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 1C to 1F
     'space',         'exclam',       'quotedbl',       'numbersign',         // 20 to 23
     'dollar',        'percent',      'ampersand',      'quotesingle',        // 24 to 27
     'parenleft',     'parenright',   'asterisk',       'plus',               // 28 to 2B
     'comma',         'hyphen',       'period',         'slash',              // 2C to 2F
     'zero',          'one',          'two',            'three',              // 30 to 33
     'four',          'five',         'six',            'seven',              // 34 to 37
     'eight',         'nine',         'colon',          'semicolon',          // 38 to 3B
     'less',          'equal',        'greater',        'question',           // 3C to 3F
     'at',            'A',            'B',              'C',                  // 40 to 43
     'D',             'E',            'F',              'G',                  // 44 to 47
     'H',             'I',            'J',              'K',                  // 48 to 4B
     'L',             'M',            'N',              'O',                  // 4C to 4F
     'P',             'Q',            'R',              'S',                  // 50 to 53
     'T',             'U',            'V',              'W',                  // 54 to 57
     'X',             'Y',            'Z',              'bracketleft',        // 58 to 5B
     'backslash',     'bracketright', 'asciicircum',    'underscore',         // 5C to 5F
     'grave',         'a',            'b',              'c',                  // 60 to 63
     'd',             'e',            'f',              'g',                  // 64 to 67
     'h',             'i',            'j',              'k',                  // 68 to 6B
     'l',             'm',            'n',              'o',                  // 6C to 6F
     'p',             'q',            'r',              's',                  // 70 to 73
     't',             'u',            'v',              'w',                  // 74 to 77
     'x',             'y',            'z',              'braceleft',          // 78 to 7B
     'bar',           'braceright',   'asciitilde',     '.notdef',            // 7C to 7F
     'afii10051',     'afii10052',    'quotesinglbase', 'afii10100',          // 80 to 83
     'quotedblbase',  'ellipsis',     'dagger',         'daggerdbl',          // 84 to 87
     'Euro',          'perthousand',  'afii10058',      'guilsinglleft',      // 88 to 8B
     'afii10059',     'afii10061',    'afii10060',      'afii10145',          // 8C to 8F
     'afii10099',     'quoteleft',    'quoteright',     'quotedblleft',       // 90 to 93
     'quotedblright', 'bullet',       'endash',         'emdash',             // 94 to 97
     '.notdef',       'trademark',    'afii10106',      'guilsinglright',     // 98 to 9B
     'afii10107',     'afii10109',    'afii10108',      'afii10193',          // 9C to 9F
     'space',         'afii10062',    'afii10110',      'afii10057',          // A0 to A3
     'currency',      'afii10050',    'brokenbar',      'section',            // A4 to A7
     'afii10023',     'copyright',    'afii10053',      'guillemotleft',      // A8 to AB
     'logicalnot',    'hyphen',       'registered',     'afii10056',          // AC to AF
     'degree',        'plusminus',    'afii10055',      'afii10103',          // B0 to B3
     'afii10098',     'mu',           'paragraph',      'periodcentered',     // B4 to B7
     'afii10071',     'afii61352',    'afii10101',      'guillemotright',     // B8 to BB
     'afii10105',     'afii10054',    'afii10102',      'afii10104',          // BC to BF
     'afii10017',     'afii10018',    'afii10019',      'afii10020',          // C0 to C3
     'afii10021',     'afii10022',    'afii10024',      'afii10025',          // C4 to C7
     'afii10026',     'afii10027',    'afii10028',      'afii10029',          // C8 to CB
     'afii10030',     'afii10031',    'afii10032',      'afii10033',          // CC to CF
     'afii10034',     'afii10035',    'afii10036',      'afii10037',          // D0 to D3
     'afii10038',     'afii10039',    'afii10040',      'afii10041',          // D4 to D7
     'afii10042',     'afii10043',    'afii10044',      'afii10045',          // D8 to DB
     'afii10046',     'afii10047',    'afii10048',      'afii10049',          // DC to DF
     'afii10065',     'afii10066',    'afii10067',      'afii10068',          // E0 to E3
     'afii10069',     'afii10070',    'afii10072',      'afii10073',          // E4 to E7
     'afii10074',     'afii10075',    'afii10076',      'afii10077',          // E8 to EB
     'afii10078',     'afii10079',    'afii10080',      'afii10081',          // EC to EF
     'afii10082',     'afii10083',    'afii10084',      'afii10085',          // F0 to F3
     'afii10086',     'afii10087',    'afii10088',      'afii10089',          // F4 to F7
     'afii10090',     'afii10091',    'afii10092',      'afii10093',          // F8 to FB
     'afii10094',     'afii10095',    'afii10095',      'afii10097');         // FC to FF

const
  cp1251_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     1026,    1027,    8218,    1107,    8222,     8230,    8224,    8225,      // 80 to 87
     8364,    8240,    1033,    8249,    1034,     1036,    1035,    1039,      // 88 to 8F
     1106,    8216,    8217,    8220,    8221,     8226,    8211,    8212,      // 90 to 97
     -1,      8482,    1113,    8250,    1114,     1116,    1115,    1119,      // 98 to 9F
     160,     1038,    1118,    1032,    164,      1168,    166,     167,       // A0 to A7
     1025,    169,     1028,    171,     172,      173,     174,     1031,      // A8 to AF
     176,     177,     1030,    1110,    1169,     181,     182,     183,       // B0 to B7
     1105,    8470,    1108,    187,     1112,     1029,    1109,    1111,      // B8 to BF
     1040,    1041,    1042,    1043,    1044,     1045,    1046,    1047,      // C0 to C7
     1048,    1049,    1050,    1051,    1052,     1053,    1054,    1055,      // C8 to CF
     1056,    1057,    1058,    1059,    1060,     1061,    1062,    1063,      // D8 to D7
     1064,    1065,    1066,    1067,    1068,     1069,    1070,    1071,      // D8 to DF
     1072,    1073,    1074,    1075,    1076,     1077,    1078,    1079,      // E0 to E7
     1080,    1081,    1082,    1083,    1084,     1085,    1086,    1087,      // E8 to EF
     1088,    1089,    1090,    1091,    1092,     1093,    1094,    1095,      // F0 to F7
     1096,    1097,    1098,    1099,    1100,     1101,    1102,    1103);     // F8 to FF

const
  cp1252_n: array[0..255] of string =
    ('.notdef',       '.notdef',      '.notdef',        '.notdef',            // 00 to 03
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 04 to 07
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 10 to 13
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 14 to 17
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 1C to 1F
     'space',         'exclam',       'quotedbl',       'numbersign',         // 20 to 23
     'dollar',        'percent',      'ampersand',      'quotesingle',        // 24 to 27
     'parenleft',     'parenright',   'asterisk',       'plus',               // 28 to 2B
     'comma',         'hyphen',       'period',         'slash',              // 2C to 2F
     'zero',          'one',          'two',            'three',              // 30 to 33
     'four',          'five',         'six',            'seven',              // 34 to 37
     'eight',         'nine',         'colon',          'semicolon',          // 38 to 3B
     'less',          'equal',        'greater',        'question',           // 3C to 3F
     'at',            'A',            'B',              'C',                  // 40 to 43
     'D',             'E',            'F',              'G',                  // 44 to 47
     'H',             'I',            'J',              'K',                  // 48 to 4B
     'L',             'M',            'N',              'O',                  // 4C to 4F
     'P',             'Q',            'R',              'S',                  // 50 to 53
     'T',             'U',            'V',              'W',                  // 54 to 57
     'X',             'Y',            'Z',              'bracketleft',        // 58 to 5B
     'backslash',     'bracketright', 'asciicircum',    'underscore',         // 5C to 5F
     'grave',         'a',            'b',              'c',                  // 60 to 63
     'd',             'e',            'f',              'g',                  // 64 to 67
     'h',             'i',            'j',              'k',                  // 68 to 6B
     'l',             'm',            'n',              'o',                  // 6C to 6F
     'p',             'q',            'r',              's',                  // 70 to 73
     't',             'u',            'v',              'w',                  // 74 to 77
     'x',             'y',            'z',              'braceleft',          // 78 to 7B
     'bar',           'braceright',   'asciitilde',     '.notdef',            // 7C to 7F
     'Euro',          '.notdef',      'quotesinglbase', 'florin',             // 80 to 83
     'quotedblbase',  'ellipsis',     'dagger',         'daggerdbl',          // 84 to 87
     'circumflex',    'perthousand',  'Scaron',         'guilsinglleft',      // 88 to 8B
     'OE',            '.notdef',      'Zcaron',         '.notdef',            // 8C to 8F
     '.notdef',       'quoteleft',    'quoteright',     'quotedblleft',       // 90 to 93
     'quotedblright', 'bullet',       'endash',         'emdash',             // 94 to 97
     'tilde',         'trademark',    'scaron',         'guilsinglright',     // 98 to 9B
     'oe',            '.notdef',      'zcaron',         'Ydieresis',          // 9C to 9F
     'space',         'exclamdown',   'cent',           'sterling',           // A0 to A3
     'currency',      'yen',          'brokenbar',      'section',            // A4 to A7
     'dieresis',      'copyright',    'ordfeminine',    'guillemotleft',      // A8 to AB
     'logicalnot',    'hyphen',       'registered',     'macron',             // AC to AF
     'degree',        'plusminus',    'twosuperior',    'threesuperior',      // B0 to B3
     'acute',         'mu',           'paragraph',      'periodcentered',     // B4 to B7
     'cedilla',       'onesuperior',  'ordmasculine',   'guillemotright',     // B8 to BB
     'onequarter',    'onehalf',      'threequarters',  'questiondown',       // BC to BF
     'Agrave',        'Aacute',       'Acircumflex',    'Atilde',             // C0 to C3
     'Adieresis',     'Aring',        'AE',             'Ccedilla',           // C4 to C7
     'Egrave',        'Eacute',       'Ecircumflex',    'Edieresis',          // C8 to CB
     'Igrave',        'Iacute',       'Icircumflex',    'Idieresis',          // CC to CF
     'Eth',           'Ntilde',       'Ograve',         'Oacute',             // D0 to D3
     'Ocircumflex',   'Otilde',       'Odieresis',      'multiply',           // D4 to D7
     'Oslash',        'Ugrave',       'Uacute',         'Ucircumflex',        // D8 to DB
     'Udieresis',     'Yacute',       'Thorn',          'germandbls',         // DC to DF
     'agrave',        'aacute',       'acircumflex',    'atilde',             // E0 to E3
     'adieresis',     'aring',        'ae',             'ccedilla',           // E4 to E7
     'egrave',        'eacute',       'ecircumflex',    'edieresis',          // E8 to EB
     'igrave',        'iacute',       'icircumflex',    'idieresis',          // EC to EF
     'eth',           'ntilde',       'ograve',         'oacute',             // F0 to F3
     'ocircumflex',   'otilde',       'odieresis',      'divide',             // F4 to F7
     'oslash',        'ugrave',       'uacute',         'ucircumflex',        // F8 to FB
     'udieresis',     'yacute',       'thorn',          'ydieresis');         // FC to FF

const
  cp1252_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     8364,    -1,     8218,    402,     8222,     8230,    8224,    8225,      // 80 to 87
     710,     8240,    352,     8249,    338,      -1,      381,     -1,        // 88 to 8F
     -1,      8216,    8217,    8220,    8221,     8226,    8211,    8212,      // 90 to 97
     732,     8482,    353,     8250,    339,      -1,      382,     376,       // 98 to 9F
     160,     161,     162,     163,     164,      165,     166,     167,       // A0 to A7
     168,     169,     170,     171,     172,      173,     174,     175,       // A8 to AF
     176,     177,     178,     179,     180,      181,     182,     183,       // B0 to B7
     184,     185,     186,     187,     188,      189,     190,     191,       // B8 to BF
     192,     193,     194,     195,     196,      197,     198,     199,       // C0 to C7
     200,     201,     202,     203,     204,      205,     206,     207,       // C8 to CF
     208,     209,     210,     211,     212,      213,     214,     215,       // D0 to D7
     216,     217,     218,     219,     220,      221,     222,     223,       // D8 to DF
     224,     225,     226,     227,     228,      229,     230,     231,       // E0 to E7
     232,     233,     234,     235,     236,      237,     238,     239,       // E8 to EF
     240,     241,     242,     243,     244,      245,     246,     247,       // F0 to F7
     248,     249,     250,     251,     252,      253,     254,     255);      // F8 to FF

const
  cp1253_n: array[0..255] of string =
    ('.notdef',             '.notdef',      '.notdef',        '.notdef',            // 00 to 03
     '.notdef',             '.notdef',      '.notdef',        '.notdef',            // 04 to 07
     '.notdef',             '.notdef',      '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',             '.notdef',      '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',             '.notdef',      '.notdef',        '.notdef',            // 10 to 13
     '.notdef',             '.notdef',      '.notdef',        '.notdef',            // 14 to 17
     '.notdef',             '.notdef',      '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',             '.notdef',      '.notdef',        '.notdef',            // 1C to 1F
     'space',               'exclam',       'quotedbl',       'numbersign',         // 20 to 23
     'dollar',              'percent',      'ampersand',      'quotesingle',        // 24 to 27
     'parenleft',           'parenright',   'asterisk',       'plus',               // 28 to 2B
     'comma',               'hyphen',       'period',         'slash',              // 2C to 2F
     'zero',                'one',          'two',            'three',              // 30 to 33
     'four',                'five',         'six',            'seven',              // 34 to 37
     'eight',               'nine',         'colon',          'semicolon',          // 38 to 3B
     'less',                'equal',        'greater',        'question',           // 3C to 3F
     'at',                  'A',            'B',              'C',                  // 40 to 43
     'D',                   'E',            'F',              'G',                  // 44 to 47
     'H',                   'I',            'J',              'K',                  // 48 to 4B
     'L',                   'M',            'N',              'O',                  // 4C to 4F
     'P',                   'Q',            'R',              'S',                  // 50 to 53
     'T',                   'U',            'V',              'W',                  // 54 to 57
     'X',                   'Y',            'Z',              'bracketleft',        // 58 to 5B
     'backslash',           'bracketright', 'asciicircum',    'underscore',         // 5C to 5F
     'grave',               'a',            'b',              'c',                  // 60 to 63
     'd',                   'e',            'f',              'g',                  // 64 to 67
     'h',                   'i',            'j',              'k',                  // 68 to 6B
     'l',                   'm',            'n',              'o',                  // 6C to 6F
     'p',                   'q',            'r',              's',                  // 70 to 73
     't',                   'u',            'v',              'w',                  // 74 to 77
     'x',                   'y',            'z',              'braceleft',          // 78 to 7B
     'bar',                 'braceright',   'asciitilde',     '.notdef',            // 7C to 7F
     'Euro',                '.notdef',      'quotesinglbase', 'florin',             // 80 to 83
     'quotedblbase',        'ellipsis',     'dagger',         'daggerdbl',          // 84 to 87
     '.notdef',             'perthousand',  '.notdef',        'guilsinglleft',      // 88 to 8B
     '.notdef',             '.notdef',      '.notdef',        '.notdef',            // 8C to 8F
     '.notdef',             'quoteleft',    'quoteright',     'quotedblleft',       // 90 to 93
     'quotedblright',       'bullet',       'endash',         'emdash',             // 94 to 97
     '.notdef',             'trademark',    '.notdef',        'guilsinglright',     // 98 to 9B
     '.notdef',             '.notdef',      '.notdef',        '.notdef',            // 9C to 9F
     'space',               'dieresistonos','Alphatonos',     'sterling',           // A0 to A3
     'currency',            'yen',          'brokenbar',      'section',            // A4 to A7
     'dieresis',            'copyright',    '.notdef',        'guillemotleft',      // A8 to AB
     'logicalnot',          'hyphen',       'registered',     'afii00208',          // AC to AF
     'degree',              'plusminus',    'twosuperior',    'threesuperior',      // B0 to B3
     'tonos',               'mu',           'paragraph',      'periodcentered',     // B4 to B7
     'Epsilontonos',        'Etatonos',     'Iotatonos',      'guillemotright',     // B8 to BB
     'Omicrontonos',        'onehalf',      'Upsilontonos',   'Omegatonos',         // BC to BF
     'iotadieresistonos',   'Alpha',        'Beta',           'Gamma',              // C0 to C3
     'Delta',               'Epsilon',      'Zeta',           'Eta',                // C4 to C7
     'Theta',               'Iota',         'Kappa',          'Lambda',             // C8 to CB
     'Mu',                  'Nu',           'Xi',             'Omicron',            // CC to CF
     'Pi',                  'Rho',          '.notdef',        'Sigma',              // D0 to D3
     'Tau',                 'Upsilon',      'Phi',            'Chi',                // D4 to D7
     'Psi',                 'Omega',        'Iotadieresis',   'Upsilondieresis',    // D8 to DB
     'alphatonos',          'epsilontonos', 'etatonos',       'iotatonos',          // DC to DF
     'upsilondieresistonos','alpha',        'beta',           'gamma',              // E0 to E3
     'delta',               'epsilon',      'zeta',           'eta',                // E4 to E7
     'theta',               'iota',         'kappa',          'lambda',             // E8 to EB
     'mu',                  'nu',           'xi',             'omicron',            // EC to EF
     'pi',                  'rho',          'sigma1',         'sigma',              // F0 to F3
     'tau',                 'upsilon',      'phi',            'chi',                // F4 to F7
     'psi',                 'omega',        'iotadieresis',   'upsilondieresis',    // F8 to FB
     'omicrontonos',        'upsilontonos', 'omegatonos',     '.notdef');           // FC to FF

const
  cp1253_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     8364,    -1,      8218,    402,     8222,     8230,    8224,    8225,      // 80 to 87
     -1,      8240,    -1,      8249,    -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      8216,    8217,    8220,    8221,     8226,    8211,    8212,      // 90 to 97
     -1,      8482,    -1,      8250,    -1,       -1,      -1,      -1,        // 98 to 9F
     160,     901,     902,     163,     164,      165,     166,     167,       // A0 to A7
     168,     169,     -1,      171,     172,      173,     174,     8213,      // A8 to AF
     176,     177,     178,     179,     900,      181,     182,     183,       // B0 to B7
     904,     905,     906,     187,     908,      189,     910,     911,       // B8 to BF
     912,     913,     914,     915,     916,      917,     918,     919,       // C0 to C7
     920,     921,     922,     923,     924,      925,     926,     927,       // C8 to CF
     928,     929,     -1,      931,     932,      933,     934,     935,       // D0 to D7
     936,     937,     938,     939,     940,      941,     942,     943,       // D8 to DF
     944,     945,     946,     947,     948,      949,     950,     951,       // E0 to E7
     952,     953,     954,     955,     956,      957,     958,     959,       // E8 to EF
     960,     961,     962,     963,     964,      965,     966,     967,       // F0 to F7
     968,     969,     970,     971,     972,      973,     974,     -1);           // F8 to FF

const
  cp1254_n: array[0..255] of string =
    ('.notdef',       '.notdef',      '.notdef',        '.notdef',            // 00 to 03
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 04 to 07
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 10 to 13
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 14 to 17
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 1C to 1F
     'space',         'exclam',       'quotedbl',       'numbersign',         // 20 to 23
     'dollar',        'percent',      'ampersand',      'quotesingle',        // 24 to 27
     'parenleft',     'parenright',   'asterisk',       'plus',               // 28 to 2B
     'comma',         'hyphen',       'period',         'slash',              // 2C to 2F
     'zero',          'one',          'two',            'three',              // 30 to 33
     'four',          'five',         'six',            'seven',              // 34 to 37
     'eight',         'nine',         'colon',          'semicolon',          // 38 to 3B
     'less',          'equal',        'greater',        'question',           // 3C to 3F
     'at',            'A',            'B',              'C',                  // 40 to 43
     'D',             'E',            'F',              'G',                  // 44 to 47
     'H',             'I',            'J',              'K',                  // 48 to 4B
     'L',             'M',            'N',              'O',                  // 4C to 4F
     'P',             'Q',            'R',              'S',                  // 50 to 53
     'T',             'U',            'V',              'W',                  // 54 to 57
     'X',             'Y',            'Z',              'bracketleft',        // 58 to 5B
     'backslash',     'bracketright', 'asciicircum',    'underscore',         // 5C to 5F
     'grave',         'a',            'b',              'c',                  // 60 to 63
     'd',             'e',            'f',              'g',                  // 64 to 67
     'h',             'i',            'j',              'k',                  // 68 to 6B
     'l',             'm',            'n',              'o',                  // 6C to 6F
     'p',             'q',            'r',              's',                  // 70 to 73
     't',             'u',            'v',              'w',                  // 74 to 77
     'x',             'y',            'z',              'braceleft',          // 78 to 7B
     'bar',           'braceright',   'asciitilde',     '.notdef',            // 7C to 7F
     'Euro',          '.notdef',      'quotesinglbase', 'florin',             // 80 to 83
     'quotedblbase',  'ellipsis',     'dagger',         'daggerdbl',          // 84 to 87
     'circumflex',    'perthousand',  'Scaron',         'guilsinglleft',      // 88 to 8B
     'OE',            '.notdef',      '.notdef',        '.notdef',            // 8C to 8F
     '.notdef',       'quoteleft',    'quoteright',     'quotedblleft',       // 90 to 93
     'quotedblright', 'bullet',       'endash',         'emdash',             // 94 to 97
     'tilde',         'trademark',    'scaron',         'guilsinglright',     // 98 to 9B
     'oe',            '.notdef',      '.notdef',        'Ydieresis',          // 9C to 9F
     'space',         'exclamdown',   'cent',           'sterling',           // A0 to A3
     'currency',      'yen',          'brokenbar',      'section',            // A4 to A7
     'dieresis',      'copyright',    'ordfeminine',    'guillemotleft',      // A8 to AB
     'logicalnot',    'hyphen',       'registered',     'macron',             // AC to AF
     'degree',        'plusminus',    'twosuperior',    'threesuperior',      // B0 to B3
     'acute',         'mu',           'paragraph',      'periodcentered',     // B4 to B7
       'cedilla',       'onesuperior','ordmasculine',   'guillemotright',     // B8 to BB
     'onequarter',    'onehalf',      'threequarters',  'questiondown',       // BC to BF
     'Agrave',        'Aacute',       'Acircumflex',    'Atilde',             // C0 to C3
     'Adieresis',     'Aring',        'AE',             'Ccedilla',           // C4 to C7
     'Egrave',        'Eacute',       'Ecircumflex',    'Edieresis',          // C8 to CB
     'Igrave',        'Iacute',       'Icircumflex',    'Idieresis',          // CC to CF
     'Gbreve',        'Ntilde',       'Ograve',         'Oacute',             // D0 to D3
     'Ocircumflex',   'Otilde',       'Odieresis',      'multiply',           // D4 to D7
     'Oslash',        'Ugrave',       'Uacute',         'Ucircumflex',        // D8 to DB
     'Udieresis',     'Idotaccent',   'Scedilla',       'germandbls',         // DC to DF
     'agrave',        'aacute',       'acircumflex',    'atilde',             // E0 to E3
     'adieresis',     'aring',        'ae',             'ccedilla',           // E4 to E7
     'egrave',        'eacute',       'ecircumflex',    'edieresis',          // E8 to EB
     'igrave',        'iacute',       'icircumflex',    'idieresis',          // EC to EF
     'gbreve',        'ntilde',       'ograve',         'oacute',             // F0 to F3
     'ocircumflex',   'otilde',       'odieresis',      'divide',             // F4 to F7
     'oslash',        'ugrave',       'uacute',         'ucircumflex',        // F8 to FB
     'udieresis',     'dotlessi',     'scedilla',       'ydieresis');         // FC to FF

const
  cp1254_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     8364,    -1,      8218,    402,     8222,     8230,    8224,    8225,      // 80 to 87
     710,     8240,    352,     8249,    338,      -1,      -1,      -1,        // 88 to 8F
     -1,      8216,    8217,    8220,    8221,     8226,    8211,    8212,      // 90 to 97
     732,     8482,    353,     8250,    339,      -1,      -1,      376,       // 98 to 9F
     160,     161,     162,     163,     164,      165,     166,     167,       // A0 to A7
     168,     169,     170,     171,     172,      173,     174,     175,       // A8 to AF
     176,     177,     178,     179,     180,      181,     182,     183,       // B0 to B7
     184,     185,     186,     187,     188,      189,     190,     191,       // B8 to BF
     192,     193,     194,     195,     196,      197,     198,     199,       // C0 to C7
     200,     201,     202,     203,     204,      205,     206,     207,       // C8 to CF
     286,     209,     210,     211,     212,      213,     214,     215,       // D0 to D7
     216,     217,     218,     219,     220,      304,     350,     223,       // D8 to DF
     224,     225,     226,     227,     228,      229,     230,     231,       // E0 to E7
     232,     233,     234,     235,     236,      237,     238,     239,       // E8 to EF
     287,     241,     242,     243,     244,      245,     246,     247,       // F0 to F7
     248,     249,     250,     251,     252,      305,     351,     255);      // F8 to FF

const
  cp1255_n: array[0..255] of string =
    ('.notdef',         '.notdef',      '.notdef',        '.notdef',            // 00 to 03
     '.notdef',         '.notdef',      '.notdef',        '.notdef',            // 04 to 07
     '.notdef',         '.notdef',      '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',         '.notdef',      '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',         '.notdef',      '.notdef',        '.notdef',            // 10 to 13
     '.notdef',         '.notdef',      '.notdef',        '.notdef',            // 14 to 17
     '.notdef',         '.notdef',      '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',         '.notdef',      '.notdef',        '.notdef',            // 1C to 1F
     'space',           'exclam',       'quotedbl',       'numbersign',         // 20 to 23
     'dollar',          'percent',      'ampersand',      'quotesingle',        // 24 to 27
     'parenleft',       'parenright',   'asterisk',       'plus',               // 28 to 2B
     'comma',           'hyphen',       'period',         'slash',              // 2C to 2F
     'zero',            'one',          'two',            'three',              // 30 to 33
     'four',            'five',         'six',            'seven',              // 34 to 37
     'eight',           'nine',         'colon',          'semicolon',          // 38 to 3B
     'less',            'equal',        'greater',        'question',           // 3C to 3F
     'at',              'A',            'B',              'C',                  // 40 to 43
     'D',               'E',            'F',              'G',                  // 44 to 47
     'H',               'I',            'J',              'K',                  // 48 to 4B
     'L',               'M',            'N',              'O',                  // 4C to 4F
     'P',               'Q',            'R',              'S',                  // 50 to 53
     'T',               'U',            'V',              'W',                  // 54 to 57
     'X',               'Y',            'Z',              'bracketleft',        // 58 to 5B
     'backslash',       'bracketright', 'asciicircum',    'underscore',         // 5C to 5F
     'grave',           'a',            'b',              'c',                  // 60 to 63
     'd',               'e',            'f',              'g',                  // 64 to 67
     'h',               'i',            'j',              'k',                  // 68 to 6B
     'l',               'm',            'n',              'o',                  // 6C to 6F
     'p',               'q',            'r',              's',                  // 70 to 73
     't',               'u',            'v',              'w',                  // 74 to 77
     'x',               'y',            'z',              'braceleft',          // 78 to 7B
     'bar',             'braceright',   'asciitilde',     '.notdef',            // 7C to 7F
     'Euro',            '.notdef',      'quotesinglbase', 'florin',             // 80 to 83
     'quotedblbase',    'ellipsis',     'dagger',         'daggerdbl',          // 84 to 87
     'circumflex',      'perthousand',  '.notdef',        'guilsinglleft',      // 88 to 8B
     '.notdef',         '.notdef',      '.notdef',        '.notdef',            // 8C to 8F
     '.notdef',         'quoteleft',    'quoteright',     'quotedblleft',       // 90 to 93
     'quotedblright',   'bullet',       'endash',         'emdash',             // 94 to 97
     'tilde',           'trademark',    '.notdef',        'guilsinglright',     // 98 to 9B
     '.notdef',         '.notdef',      '.notdef',        '.notdef',            // 9C to 9F
     'space',           'exclamdown',   'cent',           'sterling',           // A0 to A3
     'afii57636',       'yen',          'brokenbar',      'section',            // A4 to A7
     'dieresis',        'copyright',    'multiply',       'guillemotleft',      // A8 to AB
     'logicalnot',      'sfthyphen',    'registered',     'macron',             // AC to AF
     'degree',          'plusminus',    'twosuperior',    'threesuperior',      // B0 to B3
     'acute',           'mu',           'paragraph',      'middot',             // B4 to B7
     'cedilla',         'onesuperior',  'divide',         'guillemotright',     // B8 to BB
     'onequarter',      'onehalf',      'threequarters',  'questiondown',       // BC to BF
     'afii57799',       'afii57801',    'afii57800',      'afii57802',          // C0 to C3
     'afii57793',       'afii57794',    'afii57795',      'afii57798',          // C4 to C7
     'afii57797',       'afii57806',    '.notdef',        'afii57796',          // C8 to CB
     'afii57807',       'afii57839',    'afii57645',      'afii57841',          // CC to CF
     'afii57842',       'afii57804',    'afii57803',      'afii57658',          // D0 to D3
     'afii57716',       'afii57717',    'afii57718',      'gereshhebrew',       // D4 to D7
     'gershayimhebrew', '.notdef',      '.notdef',        '.notdef',            // D8 to DB
     '.notdef',         '.notdef',      '.notdef',        '.notdef',            // DC to DF
     'afii57664',       'afii57665',    'afii57666',      'afii57667',          // E0 to E3
     'afii57668',       'afii57669',    'afii57670',      'afii57671',          // E4 to E7
     'afii57672',       'afii57673',    'afii57674',      'afii57675',          // E8 to EB
     'afii57676',       'afii57677',    'afii57678',      'afii57679',          // EC to EF
     'afii57680',       'afii57681',    'afii57682',      'afii57683',          // F0 to F3
     'afii57684',       'afii57685',    'afii57686',      'afii57687',          // F4 to F7
     'afii57688',       'afii57689',    'afii57690',      '.notdef',            // F8 to FB
     '.notdef',         'afii299',      'afii300',        '.notdef');           // FC to FF

const
  cp1255_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     8364,    -1,      8218,    402,     8222,     8230,    8224,    8225,      // 80 to 87
     710,     8240,    -1,      8249,    -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      8216,    8217,    8220,    8221,     8226,    8211,    8212,      // 90 to 97
     732,     8482,    -1,      8250,    -1,       -1,      -1,      -1,        // 98 to 9F
     160,     161,     162,     163,     8362,     165,     166,     167,       // A0 to A7
     168,     169,     215,     171,     172,      173,     174,     175,       // A8 to AF
     176,     177,     178,     179,     180,      181,     182,     183,       // B0 to B7
     184,     185,     247,     187,     188,      189,     190,     191,       // B8 to BF
     1456,    1457,    1458,    1459,    1460,     1461,    1462,    1463,      // C0 to C7
     1464,    1465,    -1,      1467,    1468,     1469,    1470,    1471,      // C8 to CF
     1472,    1473,    1474,    1475,    1520,     1521,    1522,    1523,      // D0 to D7
     1524,    -1,      -1,      -1,      -1,       -1,      -1,      -1,        // D8 to DF
     1488,    1489,    1490,    1491,    1492,     1493,    1494,    1495,      // E0 to E7
     1496,    1497,    1498,    1499,    1500,     1501,    1502,    1503,      // E8 to EF
     1504,    1505,    1506,    1507,    1508,     1509,    1510,    1511,      // F0 to F7
     1512,    1513,    1514,    -1,      -1,       8206,    8207,    -1);       // F8 to FF

const
  cp1257_n: array[0..255] of string =
    ('.notdef',       '.notdef',      '.notdef',        '.notdef',            // 00 to 03
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 04 to 07
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 10 to 13
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 14 to 17
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 1C to 1F
     'space',         'exclam',       'quotedbl',       'numbersign',         // 20 to 23
     'dollar',        'percent',      'ampersand',      'quotesingle',        // 24 to 27
     'parenleft',     'parenright',   'asterisk',       'plus',               // 28 to 2B
     'comma',         'hyphen',       'period',         'slash',              // 2C to 2F
     'zero',          'one',          'two',            'three',              // 30 to 33
     'four',          'five',         'six',            'seven',              // 34 to 37
     'eight',         'nine',         'colon',          'semicolon',          // 38 to 3B
     'less',          'equal',        'greater',        'question',           // 3C to 3F
     'at',            'A',            'B',              'C',                  // 40 to 43
     'D',             'E',            'F',              'G',                  // 44 to 47
     'H',             'I',            'J',              'K',                  // 48 to 4B
     'L',             'M',            'N',              'O',                  // 4C to 4F
     'P',             'Q',            'R',              'S',                  // 50 to 53
     'T',             'U',            'V',              'W',                  // 54 to 57
     'X',             'Y',            'Z',              'bracketleft',        // 58 to 5B
     'backslash',     'bracketright', 'asciicircum',    'underscore',         // 5C to 5F
     'grave',         'a',            'b',              'c',                  // 60 to 63
     'd',             'e',            'f',              'g',                  // 64 to 67
     'h',             'i',            'j',              'k',                  // 68 to 6B
     'l',             'm',            'n',              'o',                  // 6C to 6F
     'p',             'q',            'r',              's',                  // 70 to 73
     't',             'u',            'v',              'w',                  // 74 to 77
     'x',             'y',            'z',              'braceleft',          // 78 to 7B
     'bar',           'braceright',   'asciitilde',     '.notdef',            // 7C to 7F
     'Euro',          '.notdef',      'quotesinglbase', '.notdef',            // 80 to 83
     'quotedblbase',  'ellipsis',     'dagger',         'daggerdbl',          // 84 to 87
     '.notdef',       'perthousand',  '.notdef',        'guilsinglleft',      // 88 to 8B
     '.notdef',       'dieresis',     'caron',          'cedilla',            // 8C to 8F
     '.notdef',       'quoteleft',    'quoteright',     'quotedblleft',       // 90 to 93
     'quotedblright', 'bullet',       'endash',         'emdash',             // 94 to 97
     '.notdef',       'trademark',    '.notdef',        'guilsinglright',     // 98 to 9B
     '.notdef',       'macron',       'ogonek',         '.notdef',            // 9C to 9F
     'space',         '.notdef',      'cent',           'sterling',           // A0 to A3
     'currency',      '.notdef',      'brokenbar',      'section',            // A4 to A7
     'Oslash',        'copyright',    'Rcommaaccent',   'guillemotleft',      // A8 to AB
     'logicalnot',    'hyphen',       'registered',     'AE',                 // AC to AF
     'degree',        'plusminus',    'twosuperior',    'threesuperior',      // B0 to B3
     'acute',         'mu',           'paragraph',      'periodcentered',     // B4 to B7
     'oslash',        'onesuperior',  'rcommaaccent',   'guillemotright',     // B8 to BB
     'onequarter',    'onehalf',      'threequarters',  'ae',                 // BC to BF
     'Aogonek',       'Iogonek',      'Amacron',        'Cacute',             // C0 to C3
     'Adieresis',     'Aring',        'Eogonek',        'Emacron',            // C4 to C7
     'Ccaron',        'Eacute',       'Zacute',         'Edotaccent',         // C8 to CB
     'Gcommaaccent',  'Kcommaaccent', 'Imacron',        'Lcommaaccent',       // CC to CF
     'Scaron',        'Nacute',       'Ncommaaccent',   'Oacute',             // D0 to D3
     'Omacron',       'Otilde',       'Odieresis',      'multiply',           // D4 to D7
     'Uogonek',       'Lslash',       'Sacute',         'Umacron',            // D8 to DB
     'Udieresis',     'Zdotaccent',   'Zcaron',         'germandbls',         // DC to DF
     'aogonek',       'iogonek',      'amacron',        'cacute',             // E0 to E3
     'adieresis',     'aring',        'eogonek',        'emacron',            // E4 to E7
     'ccaron',        'eacute',       'zacute',         'edotaccent',         // E8 to EB
     'gcommaaccent',  'kcommaaccent', 'imacron',        'lcommaaccent',       // EC to EF
     'scaron',        'nacute',       'ncommaaccent',   'oacute',             // F0 to F3
     'omacron',       'otilde',       'odieresis',      'divide',             // F4 to F7
     'uogonek',       'lslash',       'sacute',         'umacron',            // F8 to FB
     'udieresis',     'zdotaccent',   'zcaron',         'dotaccent');         // FC to FF

const
  cp1257_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     8364,    -1,      8218,    -1,      8222,     8230,    8224,    8225,      // 80 to 87
     -1,      8240,    -1,      8249,    -1,       168,     711,     184,       // 88 to 8F
     -1,      8216,    8217,    8220,    8221,     8226,    8211,    8212,      // 90 to 97
     -1,      8482,    -1,      8250,    -1,       175,     731,     -1,        // 98 to 9F
     160,     -1,      162,     163,     164,      -1,      166,     167,       // A0 to A7
     216,     169,     342,     171,     172,      173,     174,     198,       // A0 to AF
     176,     177,     178,     179,     180,      181,     182,     183,       // B0 to B7
     248,     185,     343,     187,     188,      189,     190,     230,       // B8 to BF
     260,     302,     256,     262,     196,      197,     280,     274,       // C0 to C7
     268,     201,     377,     278,     290,      310,     298,     315,       // C8 to CF
     352,     323,     325,     211,     332,      213,     214,     215,       // D0 to D7
     370,     321,     346,     362,     220,      379,     381,     223,       // D8 to DF
     261,     303,     257,     263,     228,      229,     281,     275,       // E0 to E7
     269,     233,     378,     279,     291,      311,     299,     316,       // E8 to EF
     353,     324,     326,     243,     333,      245,     246,     247,       // F0 to F7
     371,     322,     347,     363,     252,      380,     382,     729);      // F8 to FF

const
  cp1258_n: array[0..255] of string =
    ('.notdef',       '.notdef',      '.notdef',        '.notdef',            // 00 to 03
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 04 to 07
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 10 to 13
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 14 to 17
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',       '.notdef',      '.notdef',        '.notdef',            // 1C to 1F
     'space',         'exclam',       'quotedbl',       'numbersign',         // 20 to 23
     'dollar',        'percent',      'ampersand',      'quotesingle',        // 24 to 27
     'parenleft',     'parenright',   'asterisk',       'plus',               // 28 to 2B
     'comma',         'hyphen',       'period',         'slash',              // 2C to 2F
     'zero',          'one',          'two',            'three',              // 30 to 33
     'four',          'five',         'six',            'seven',              // 34 to 37
     'eight',         'nine',         'colon',          'semicolon',          // 38 to 3B
     'less',          'equal',        'greater',        'question',           // 3C to 3F
     'at',            'A',            'B',              'C',                  // 40 to 43
     'D',             'E',            'F',              'G',                  // 44 to 47
     'H',             'I',            'J',              'K',                  // 48 to 4B
     'L',             'M',            'N',              'O',                  // 4C to 4F
     'P',             'Q',            'R',              'S',                  // 50 to 53
     'T',             'U',            'V',              'W',                  // 54 to 57
     'X',             'Y',            'Z',              'bracketleft',        // 58 to 5B
     'backslash',     'bracketright', 'asciicircum',    'underscore',         // 5C to 5F
     'grave',         'a',            'b',              'c',                  // 60 to 63
     'd',             'e',            'f',              'g',                  // 64 to 67
     'h',             'i',            'j',              'k',                  // 68 to 6B
     'l',             'm',            'n',              'o',                  // 6C to 6F
     'p',             'q',            'r',              's',                  // 70 to 73
     't',             'u',            'v',              'w',                  // 74 to 77
     'x',             'y',            'z',              'braceleft',          // 78 to 7B
     'bar',           'braceright',   'asciitilde',     '.notdef',            // 7C to 7F
     'Euro',          '.notdef',      'quotesinglbase', 'florin',             // 80 to 83
     'quotedblbase',  'ellipsis',     'dagger',         'daggerdbl',          // 84 to 87
     'circumflex',    'perthousand',  '.notdef',        'guilsinglleft',      // 88 to 8B
     'OE',            '.notdef',      '.notdef',        '.notdef',            // 8C to 8F
     '.notdef',       'quoteleft',    'quoteright',     'quotedblleft',       // 90 to 93
     'quotedblright', 'bullet',       'endash',         'emdash',             // 94 to 97
     'tilde',         'trademark',    '.notdef',        'guilsinglright',     // 98 to 9B
     'oe',            '.notdef',      '.notdef',        'Ydieresis',          // 9C to 9F
     'space',         'exclamdown',   'cent',           'sterling',           // A0 to A3
     'currency',      'yen',          'brokenbar',      'section',            // A4 to A7
     'dieresis',      'copyright',    'ordfeminine',    'guillemotleft',      // A8 to AB
     'logicalnot',    'hyphen',       'registered',     'macron',             // AC to AF
     'degree',        'plusminus',    'twosuperior',    'threesuperior',      // B0 to B3
     'acute',         'mu',           'paragraph',             'periodcentered',     // B4 to B7
     'cedilla',       'onesuperior',  'ordmasculine',   'guillemotright',     // B8 to BB
     'onequarter',    'onehalf',      'threequarters',  'questiondown',       // BC to BF
     'Agrave',        'Aacute',       'Acircumflex',    'Abreve',             // C0 to C3
     'Adieresis',     'Aring',        'AE',             'Ccedilla',           // C4 to C7
     'Egrave',        'Eacute',       'Ecircumflex',    'Edieresis',          // C8 to CB
     'gravecomb',     'Iacute',       'Icircumflex',    'Idieresis',          // CC to CF
     'Dcroat',        'Ntilde',       'hookabovecomb',  'Oacute',             // D0 to D3
     'Ocircumflex',   'Ohorn',        'Odieresis',      'multiply',           // D4 to D7
     'Oslash',        'Ugrave',       'Uacute',         'Ucircumflex',        // D8 to DB
     'Udieresis',     'Uhorn',        'tildecomb',      'germandbls',         // DC to DF
     'agrave',        'aacute',       'acircumflex',    'abreve',             // E0 to E3
     'adieresis',     'aring',        'ae',             'ccedilla',           // E4 to E7
     'egrave',        'eacute',       'ecircumflex',    'edieresis',          // E8 to EB
     'acutecomb',     'iacute',       'icircumflex',    'idieresis',          // EC to EF
     'dcroat',        'ntilde',       'dotbelowcomb',   'oacute',             // F0 to F3
     'ocircumflex',   'ohorn',        'odieresis',      'divide',             // F4 to F7
     'oslash',        'ugrave',       'uacute',         'ucircumflex',        // F8 to FB
     'udieresis',     'uhorn',        'dong',           'ydieresis');         // FC to FF

const
  cp1258_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     8264,    -1,      8218,    402,     8222,     8230,    8224,    8225,      // 80 to 87
     710,     8240,    -1,      8249,    338,      -1,      -1,      -1,        // 88 to 8F
     -1,      8216,    8217,    8220,    8221,     8226,    8211,    8212,      // 90 to 97
     732,     8482,    -1,      8250,    339,      -1,      -1,      376,       // 98 to 9F
     160,     161,     162,     163,     164,      165,     166,     167,       // A0 to A7
     168,     169,     170,     171,     172,      173,     174,     175,       // A8 to AF
     176,     177,     178,     179,     180,      181,     182,     183,       // B0 to B7
     184,     185,     186,     187,     188,      189,     190,     191,       // B8 to BF
     192,     193,     194,     258,     196,      197,     198,     199,       // C0 to C7
     200,     201,     202,     203,     768,      205,     206,     207,       // C8 to CF
     272,     209,     777,     211,     212,      416,     214,     215,       // D0 to D7
     216,     217,     218,     219,     220,      431,     771,     223,       // D8 to DF
     224,     225,     226,     259,     228,      229,     230,     231,       // E0 to E7
     232,     233,     234,     235,     769,      237,     238,     239,       // E8 to EF
     273,     241,     803,     243,     244,      417,     246,     247,       // F0 to F7
     248,     249,     250,     251,     252,      432,     8363,    255);      // F8 to FF

const
  iso_8859_1_n: array[0..255] of string =
    ('.notdef',     '.notdef',      '.notdef',      '.notdef',            // 00 to 03
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 04 to 07
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 08 to 0B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 0C to 0F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 10 to 13
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 14 to 17
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 18 to 1B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 1C to 1F
     'space',       'exclam',       'quotedbl',     'numbersign',         // 20 to 23
     'dollar',      'percent',      'ampersand',    'quotesingle',        // 24 to 27
     'parenleft',   'parenright',   'asterisk',     'plus',               // 28 to 2B
     'comma',       'hyphen',       'period',       'slash',              // 2C to 2F
     'zero',        'one',          'two',          'three',              // 30 to 33
     'four',        'five',         'six',          'seven',              // 34 to 37
     'eight',       'nine',         'colon',        'semicolon',          // 38 to 3B
     'less',        'equal',        'greater',      'question',           // 3C to 3F
     'at',          'A',            'B',            'C',                  // 40 to 43
     'D',           'E',            'F',            'G',                  // 44 to 47
     'H',           'I',            'J',            'K',                  // 48 to 4B
     'L',           'M',            'N',            'O',                  // 4C to 4F
     'P',           'Q',            'R',            'S',                  // 50 to 53
     'T',           'U',            'V',            'W',                  // 54 to 57
     'X',           'Y',            'Z',            'bracketleft',        // 58 to 5B
     'backslash',   'bracketright', 'asciicircum',  'underscore',         // 5C to 5F
     'grave',       'a',            'b',            'c',                  // 60 to 63
     'd',           'e',            'f',            'g',                  // 64 to 67
     'h',           'i',            'j',            'k',                  // 68 to 6B
     'l',           'm',            'n',            'o',                  // 6C to 6F
     'p',           'q',            'r',            's',                  // 70 to 73
     't',           'u',            'v',            'w',                  // 74 to 77
     'x',           'y',            'z',            'braceleft',          // 78 to 7B
     'bar',         'braceright',   'asciitilde',   '.notdef',            // 7C to 7F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 80 to 83
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 84 to 87
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 88 to 8B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 8C to 8F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 90 to 93
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 94 to 97
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 98 to 9B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 9C to 9F
     'space',       'exclamdown',   'cent',         'sterling',           // A0 to A3
     'currency',    'yen',          'brokenbar',    'section',            // A4 to A7
     'dieresis',    'copyright',    'ordfeminine',  'guillemotleft',      // A8 to AB
     'logicalnot',  'hyphen',       'registered',   'macron',             // AC to AF
     'degree',      'plusminus',    'twosuperior',  'threesuperior',      // B0 to B3
     'acute',       'mu',           'paragraph',    'periodcentered',     // B4 to B7
     'cedilla',     'onesuperior',  'ordmasculine', 'guillemotright',     // B8 to BB
     'onequarter',  'onehalf',      'threequarters','questiondown',       // BC to BF
     'Agrave',      'Aacute',       'Acircumflex',  'Atilde',             // C0 to C3
     'Adieresis',   'Aring',        'AE',           'Ccedilla',           // C4 to C7
     'Egrave',      'Eacute',       'Ecircumflex',  'Edieresis',          // C8 to CB
     'Igrave',      'Iacute',       'Icircumflex',  'Idieresis',          // CC to CF
     'Eth',         'Ntilde',       'Ograve',       'Oacute',             // D0 to D3
     'Ocircumflex', 'Otilde',       'Odieresis',    'multiply',           // D4 to D7
     'Oslash',      'Ugrave',       'Uacute',       'Ucircumflex',        // D8 to DB
     'Udieresis',   'Yacute',       'Thorn',        'germandbls',         // DC to DF
     'agrave',      'aacute',       'acircumflex',  'atilde',             // E0 to E3
     'adieresis',   'aring',        'ae',           'ccedilla',           // E4 to E7
     'egrave',      'eacute',       'ecircumflex',  'edieresis',          // E8 to EB
     'igrave',      'iacute',       'icircumflex',  'idieresis',          // EC to EF
     'eth',         'ntilde',       'ograve',       'oacute',             // F0 to F3
     'ocircumflex', 'otilde',       'odieresis',    'divide',             // F4 to F7
     'oslash',      'ugrave',       'uacute',       'ucircumflex',        // F8 to FB
     'udieresis',   'yacute',       'thorn',        'ydieresis');         // FC to FF

const
  iso_8859_1_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 80 to 87
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 90 to 97
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 98 to 9F
     160,     161,     162,     163,     164,      165,     166,     167,       // A0 to A7
     168,     169,     170,     171,     172,      173,     174,     175,       // A8 to AF
     176,     177,     178,     179,     180,      181,     182,     183,       // B0 to B7
     184,     185,     186,     187,     188,      189,     190,     191,       // B8 to BF
     192,     193,     194,     195,     196,      197,     198,     199,       // C0 to C7
     200,     201,     202,     203,     204,      205,     206,     207,       // C8 to CF
     208,     209,     210,     211,     212,      213,     214,     215,       // D0 to D7
     216,     217,     218,     219,     220,      221,     222,     223,       // D8 to DF
     224,     225,     226,     227,     228,      229,     230,     231,       // E0 to E7
     232,     233,     234,     235,     236,      237,     238,     239,       // E8 to EF
     240,     241,     242,     243,     244,      245,     246,     247,       // F0 to F7
     248,     249,     250,     251,     252,      253,     254,     255);      // F8 to FF

const
  iso_8859_2_n: array[0..255] of string =
    ('.notdef',     '.notdef',      '.notdef',      '.notdef',            // 00 to 03
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 04 to 07
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 08 to 0B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 0C to 0F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 10 to 13
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 14 to 17
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 18 to 1B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 1C to 1F
     'space',       'exclam',       'quotedbl',     'numbersign',         // 20 to 23
     'dollar',      'percent',      'ampersand',    'quotesingle',        // 24 to 27
     'parenleft',   'parenright',   'asterisk',     'plus',               // 28 to 2B
     'comma',       'hyphen',       'period',       'slash',              // 2C to 2F
     'zero',        'one',          'two',          'three',              // 30 to 33
     'four',        'five',         'six',          'seven',              // 34 to 37
     'eight',       'nine',         'colon',        'semicolon',          // 38 to 3B
     'less',        'equal',        'greater',      'question',           // 3C to 3F
     'at',          'A',            'B',            'C',                  // 40 to 43
     'D',           'E',            'F',            'G',                  // 44 to 47
     'H',           'I',            'J',            'K',                  // 48 to 4B
     'L',           'M',            'N',            'O',                  // 4C to 4F
     'P',           'Q',            'R',            'S',                  // 50 to 53
     'T',           'U',            'V',            'W',                  // 54 to 57
     'X',           'Y',            'Z',            'bracketleft',        // 58 to 5B
     'backslash',   'bracketright', 'asciicircum',  'underscore',         // 5C to 5F
     'grave',       'a',            'b',            'c',                  // 60 to 63
     'd',           'e',            'f',            'g',                  // 64 to 67
     'h',           'i',            'j',            'k',                  // 68 to 6B
     'l',           'm',            'n',            'o',                  // 6C to 6F
     'p',           'q',            'r',            's',                  // 70 to 73
     't',           'u',            'v',            'w',                  // 74 to 77
     'x',           'y',            'z',            'braceleft',          // 78 to 7B
     'bar',         'braceright',   'asciitilde',   '.notdef',            // 7C to 7F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 80 to 83
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 84 to 87
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 88 to 8B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 8C to 8F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 90 to 93
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 94 to 97
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 98 to 9B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 9C to 9F
     'space',       'Aogonek',      'breve',        'Lslash',             // A0 to A3
     'currency',    'Lcaron',       'Sacute',       'section',            // A4 to A7
     'dieresis',    'Scaron',       'Scedilla',     'Tcaron',             // A8 to AB
     'Zacute',      'hyphen',       'Zcaron',       'Zdotaccent',         // AC to AF
     'degree',      'aogonek',      'ogonek',       'lslash',             // B0 to B3
     'acute',       'lcaron',       'sacute',       'caron',              // B4 to B7
     'cedilla',     'scaron',       'scedilla',     'tcaron',             // B8 to BB
     'zacute',      'hungarumlaut', 'zcaron',       'zdotaccent',         // BC to BF
     'Racute',      'Aacute',       'Acircumflex',  'Abreve',             // C0 to C3
     'Adieresis',   'Lacute',       'Cacute',       'Ccedilla',           // C4 to C7
     'Ccaron',      'Eacute',       'Eogonek',      'Edieresis',          // C8 to CB
     'Ecaron',      'Iacute',       'Icircumflex',  'Dcaron',             // CC to CF
     'Dcroat',      'Nacute',       'Ncaron',       'Oacute',             // D0 to D3
     'Ocircumflex', 'Ohungarumlaut','Odieresis',    'multiply',           // D4 to D7
     'Rcaron',      'Uring',        'Uacute',       'Uhungarumlaut',      // D8 to DB
     'Udieresis',   'Yacute',       'Tcommaaccent', 'germandbls',         // DC to DF
     'racute',      'aacute',       'acircumflex',  'abreve',             // E0 to E3
     'adieresis',   'lacute',       'cacute',       'ccedilla',           // E4 to E7
     'ccaron',      'eacute',       'eogonek',      'edieresis',          // E8 to EB
     'ecaron',      'iacute',       'icircumflex',  'dcaron',             // EC to EF
     'dcroat',      'nacute',       'ncaron',       'oacute',             // F0 to F3
     'ocircumflex', 'ohungarumlaut','odieresis',    'divide',             // F4 to F7
     'rcaron',      'uring',        'uacute',       'uhungarumlaut',      // F8 to FB
     'udieresis',   'yacute',       'tcommaaccent', 'dotaccent');         // FC to FF

const
  iso_8859_2_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 80 to 87
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 90 to 97
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 98 to 9F
     160,     260,     728,     321,     164,      317,     346,     167,       // A0 to A7
     168,     352,     350,     356,     377,      173,     381,     379,       // A8 to AF
     176,     261,     731,     322,     180,      318,     347,     711,       // B0 to B7
     184,     353,     351,     357,     378,      733,     382,     380,       // B8 to BF
     340,     193,     194,     258,     196,      313,     262,     199,       // C0 to C7
     268,     201,     280,     203,     282,      205,     206,     270,       // C8 to CF
     272,     323,     327,     211,     212,      336,     214,     215,       // D0 to D7
     344,     366,     218,     368,     220,      221,     354,     223,       // D8 to DF
     341,     225,     226,     259,     228,      314,     263,     231,       // E0 to E7
     269,     233,     281,     235,     283,      237,     238,     271,       // E8 to EF
     273,     324,     328,     243,     244,      337,     246,     247,       // F0 to F7
     345,     367,     250,     369,     252,      253,     355,     729);      // F8 to FF

const
  iso_8859_4_n: array[0..255] of string =
    ('.notdef',     '.notdef',      '.notdef',      '.notdef',            // 00 to 03
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 04 to 07
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 08 to 0B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 0C to 0F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 10 to 13
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 14 to 17
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 18 to 1B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 1C to 1F
     'space',       'exclam',       'quotedbl',     'numbersign',         // 20 to 23
     'dollar',      'percent',      'ampersand',    'quotesingle',        // 24 to 27
     'parenleft',   'parenright',   'asterisk',     'plus',               // 28 to 2B
     'comma',       'hyphen',       'period',       'slash',              // 2C to 2F
     'zero',        'one',          'two',          'three',              // 30 to 33
     'four',        'five',         'six',          'seven',              // 34 to 37
     'eight',       'nine',         'colon',        'semicolon',          // 38 to 3B
     'less',        'equal',        'greater',      'question',           // 3C to 3F
     'at',          'A',            'B',            'C',                  // 40 to 43
     'D',           'E',            'F',            'G',                  // 44 to 47
     'H',           'I',            'J',            'K',                  // 48 to 4B
     'L',           'M',            'N',            'O',                  // 4C to 4F
     'P',           'Q',            'R',            'S',                  // 50 to 53
     'T',           'U',            'V',            'W',                  // 54 to 57
     'X',           'Y',            'Z',            'bracketleft',        // 58 to 5B
     'backslash',   'bracketright', 'asciicircum',  'underscore',         // 5C to 5F
     'grave',       'a',            'b',            'c',                  // 60 to 63
     'd',           'e',            'f',            'g',                  // 64 to 67
     'h',           'i',            'j',            'k',                  // 68 to 6B
     'l',           'm',            'n',            'o',                  // 6C to 6F
     'p',           'q',            'r',            's',                  // 70 to 73
     't',           'u',            'v',            'w',                  // 74 to 77
     'x',           'y',            'z',            'braceleft',          // 78 to 7B
     'bar',         'braceright',   'asciitilde',   '.notdef',            // 7C to 7F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 80 to 83
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 84 to 87
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 88 to 8B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 8C to 8F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 90 to 93
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 94 to 97
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 98 to 9B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 9C to 9F
     'space',       'Aogonek',      'kgreenlandic', 'Rcommaaccent',       // A0 to A3
     'currency',    'Itilde',       'Lcommaaccent', 'section',            // A4 to A7
     'dieresis',    'Scaron',       'Emacron',      'Gcommaaccent',       // A8 to AB
     'Tbar',        'hyphen',       'Zcaron',       'macron',             // AC to AF
     'degree',      'aogonek',      'ogonek',       'rcommaaccent',       // B0 to B3
     'acute',       'itilde',       'lcommaaccent', 'caron',              // B4 to B7
     'cedilla',     'scaron',       'emacron',      'gcommaaccent',       // B8 to BB
     'tbar',        'Eng',          'zcaron',       'eng',                // BC to BF
     'Amacron',     'Aacute',       'Acircumflex',  'Atilde',             // C0 to C3
     'Adieresis',   'Aring',        'AE',           'Iogonek',            // C4 to C7
     'Ccaron',      'Eacute',       'Eogonek',      'Edieresis',          // C8 to CB
     'Edotaccent',  'Iacute',       'Icircumflex',  'Imacron',            // CC to CF
     'Dcroat',      'Ncommaaccent', 'Omacron',      'Kcommaaccent',       // D0 to D3
     'Ocircumflex', 'Otilde',       'Odieresis',    'multiply',           // D4 to D7
     'Oslash',      'Uogonek',      'Uacute',       'Ucircumflex',        // D8 to DB
     'Udieresis',   'Utilde',       'Umacron',      'germandbls',         // DC to DF
     'amacron',     'aacute',       'acircumflex',  'atilde',             // E0 to E3
     'adieresis',   'aring',        'ae',           'iogonek',            // E4 to E7
     'ccaron',      'eacute',       'eogonek',      'edieresis',          // E8 to EB
     'edotaccent',  'iacute',       'icircumflex',  'imacron',            // EC to EF
     'dcroat',      'ncommaaccent', 'omacron',      'kcommaaccent',       // F0 to F3
     'ocircumflex', 'otilde',       'odieresis',    'divide',             // F4 to F7
     'oslash',      'uogonek',      'uacute',       'ucircumflex',        // F8 to FB
     'udieresis',   'utilde',       'umacron',      'dotaccent');         // FC to FF

const
  iso_8859_4_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 80 to 87
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 90 to 97
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 98 to 9F
     160,     260,     312,     342,     164,      296,     315,     167,       // A4 to A7
     168,     352,     274,     290,     358,      173,     381,     175,       // AC to AF
     176,     261,     731,     343,     180,      297,     316,     711,       // B4 to B7
     184,     353,     275,     291,     359,      330,     382,     331,       // BC to BF
     256,     193,     194,     195,     196,      197,     198,     302,       // C4 to C7
     268,     201,     280,     203,     278,      205,     206,     298,       // CC to CF
     272,     325,     332,     310,     212,      213,     214,     215,       // D4 to D7
     216,     370,     218,     219,     220,      360,     362,     223,       // DC to DF
     257,     225,     226,     227,     228,      229,     230,     303,       // E4 to E7
     269,     233,     281,     235,     279,      237,     238,     299,       // EC to EF
     273,     326,     333,     311,     244,      245,     246,     247,       // F4 to F7
     248,     371,     250,     251,     252,      361,     363,     729);      // FC to FF

const
  iso_8859_5_n: array[0..255] of string =
    ('.notdef',   '.notdef',      '.notdef',    '.notdef',            // 00 to 03
     '.notdef',   '.notdef',      '.notdef',    '.notdef',            // 04 to 07
     '.notdef',   '.notdef',      '.notdef',    '.notdef',            // 08 to 0B
     '.notdef',   '.notdef',      '.notdef',    '.notdef',            // 0C to 0F
     '.notdef',   '.notdef',      '.notdef',    '.notdef',            // 10 to 13
     '.notdef',   '.notdef',      '.notdef',    '.notdef',            // 14 to 17
     '.notdef',   '.notdef',      '.notdef',    '.notdef',            // 18 to 1B
     '.notdef',   '.notdef',      '.notdef',    '.notdef',            // 1C to 1F
     'space',     'exclam',       'quotedbl',   'numbersign',         // 20 to 23
     'dollar',    'percent',      'ampersand',  'quotesingle',        // 24 to 27
     'parenleft', 'parenright',   'asterisk',   'plus',               // 28 to 2B
     'comma',     'hyphen',       'period',     'slash',              // 2C to 2F
     'zero',      'one',          'two',        'three',              // 30 to 33
     'four',      'five',         'six',        'seven',              // 34 to 37
     'eight',     'nine',         'colon',      'semicolon',          // 38 to 3B
     'less',      'equal',        'greater',    'question',           // 3C to 3F
     'at',        'A',            'B',          'C',                  // 40 to 43
     'D',         'E',            'F',          'G',                  // 44 to 47
     'H',         'I',            'J',          'K',                  // 48 to 4B
     'L',         'M',            'N',          'O',                  // 4C to 4F
     'P',         'Q',            'R',          'S',                  // 50 to 53
     'T',         'U',            'V',          'W',                  // 54 to 57
     'X',         'Y',            'Z',          'bracketleft',        // 58 to 5B
     'backslash', 'bracketright', 'asciicircum','underscore',         // 5C to 5F
     'grave',     'a',            'b',          'c',                  // 60 to 63
     'd',         'e',            'f',          'g',                  // 64 to 67
     'h',         'i',            'j',          'k',                  // 68 to 6B
     'l',         'm',            'n',          'o',                  // 6C to 6F
     'p',         'q',            'r',          's',                  // 70 to 73
     't',         'u',            'v',          'w',                  // 74 to 77
     'x',         'y',            'z',          'braceleft',          // 78 to 7B
     'bar',       'braceright',   'asciitilde', '.notdef',            // 7C to 7F
     '.notdef',   '.notdef',      '.notdef',    '.notdef',     // 80 to 83
     '.notdef',   '.notdef',      '.notdef',    '.notdef',     // 84 to 87
     '.notdef',   '.notdef',      '.notdef',    '.notdef',     // 88 to 8B
     '.notdef',   '.notdef',      '.notdef',    '.notdef',     // 8C to 8F
     '.notdef',   '.notdef',      '.notdef',    '.notdef',     // 90 to 93
     '.notdef',   '.notdef',      '.notdef',    '.notdef',     // 94 to 97
     '.notdef',   '.notdef',      '.notdef',    '.notdef',     // 98 to 9B
     '.notdef',   '.notdef',      '.notdef',    '.notdef',     // 9C to 9F
     'space',     'afii10023',    'afii10051',  'afii10052',     // A0 to A3
     'afii10053', 'afii10054',    'afii10055',  'afii10056',     // A4 to A7
     'afii10057', 'afii10058',    'afii10059',  'afii10060',     // A8 to AB
     'afii10061', 'hyphen',       'afii10062',  'afii10145',     // AC to AF
     'afii10017', 'afii10018',    'afii10019',  'afii10020',     // B0 to B3
     'afii10021', 'afii10022',    'afii10024',  'afii10025',     // B4 to B7
     'afii10026', 'afii10027',    'afii10028',  'afii10029',     // B8 to BB
     'afii10030', 'afii10031',    'afii10032',  'afii10033',     // BC to BF
     'afii10034', 'afii10035',    'afii10036',  'afii10037',     // C0 to C3
     'afii10038', 'afii10039',    'afii10040',  'afii10041',     // C4 to C7
     'afii10042', 'afii10043',    'afii10044',  'afii10045',     // C8 to CB
     'afii10046', 'afii10047',    'afii10048',  'afii10049',     // CC to CF
     'afii10065', 'afii10065',    'afii10067',  'afii10068',     // D0 to D3
     'afii10069', 'afii10070',    'afii10072',  'afii10073',     // D4 to D7
     'afii10074', 'afii10075',    'afii10076',  'afii10077',     // D8 to DB
     'afii10078', 'afii10079',    'afii10080',  'afii10081',     // DC to DF
     'afii10082', 'afii10083',    'afii10084',  'afii10085',     // E0 to E3
     'afii10086', 'afii10087',    'afii10088',  'afii10089',     // E4 to E7
     'afii10090', 'afii10091',    'afii10092',  'afii10093',     // E8 to EB
     'afii10094', 'afii10095',    'afii10096',  'afii10097',     // EC to EF
     'afii61352', 'afii10071',    'afii10099',  'afii10100',     // F0 to F3
     'afii10101', 'afii10102',    'afii10103',  'afii10104',     // F4 to F7
     'afii10105', 'afii10106',    'afii10107',  'afii10108',     // F8 to FB
     'afii10109', 'section',      'afii10110',  'afii10193');    // FC to FF

const
  iso_8859_5_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 80 to 87
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 90 to 97
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 98 to 9F
     160,     1025,    1026,    1027,    1028,     1029,    1030,    1031,      // A0 to A7
     1032,    1033,    1034,    1035,    1036,     173,     1038,    1039,      // A8 to AF
     1040,    1041,    1042,    1043,    1044,     1045,    1046,    1047,      // B0 to B7
     1048,    1049,    1050,    1051,    1052,     1053,    1054,    1055,      // B8 to BF
     1056,    1057,    1058,    1059,    1060,     1061,    1062,    1063,      // C0 to C7
     1064,    1065,    1066,    1067,    1068,     1069,    1070,    1071,      // C8 to CF
     1072,    1073,    1074,    1075,    1076,     1077,    1078,    1079,      // D0 to D7
     1080,    1081,    1082,    1083,    1084,     1085,    1086,    1087,      // D8 to DF
     1088,    1089,    1090,    1091,    1092,     1093,    1094,    1095,      // E0 to E7
     1096,    1097,    1098,    1099,    1100,     1101,    1102,    1103,      // E8 to EF
     8470,    1105,    1106,    1107,    1108,     1109,    1110,    1111,      // F0 to F7
     1112,    1113,    1114,    1115,    1116,     167,     1118,    1119);     // F8 to FF

const
  iso_8859_7_n: array[0..255] of string =
    ('.notdef',           '.notdef',      '.notdef',        '.notdef',                // 00 to 03
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 04 to 07
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 08 to 0B
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 0C to 0F
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 10 to 13
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 14 to 17
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 18 to 1B
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 1C to 1F
     'space',             'exclam',       'quotedbl',       'numbersign',             // 20 to 23
     'dollar',            'percent',      'ampersand',      'quotesingle',            // 24 to 27
     'parenleft',         'parenright',   'asterisk',       'plus',                   // 28 to 2B
     'comma',             'hyphen',       'period',         'slash',                  // 2C to 2F
     'zero',              'one',          'two',            'three',                  // 30 to 33
     'four',              'five',         'six',            'seven',                  // 34 to 37
     'eight',             'nine',         'colon',          'semicolon',              // 38 to 3B
     'less',              'equal',        'greater',        'question',               // 3C to 3F
     'at',                'A',            'B',              'C',                      // 40 to 43
     'D',                 'E',            'F',              'G',                      // 44 to 47
     'H',                 'I',            'J',              'K',                      // 48 to 4B
     'L',                 'M',            'N',              'O',                      // 4C to 4F
     'P',                 'Q',            'R',              'S',                      // 50 to 53
     'T',                 'U',            'V',              'W',                      // 54 to 57
     'X',                 'Y',            'Z',              'bracketleft',            // 58 to 5B
     'backslash',         'bracketright', 'asciicircum',    'underscore',             // 5C to 5F
     'grave',             'a',            'b',              'c',                      // 60 to 63
     'd',                 'e',            'f',              'g',                      // 64 to 67
     'h',                 'i',            'j',              'k',                      // 68 to 6B
     'l',                 'm',            'n',              'o',                      // 6C to 6F
     'p',                 'q',            'r',              's',                      // 70 to 73
     't',                 'u',            'v',              'w',                      // 74 to 77
     'x',                 'y',            'z',              'braceleft',              // 78 to 7B
     'bar',               'braceright',   'asciitilde',     '.notdef',                // 7C to 7F
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 80 to 83
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 84 to 87
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 88 to 8B
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 8C to 8F
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 90 to 93
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 94 to 97
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 98 to 9B
     '.notdef',           '.notdef',      '.notdef',        '.notdef',                // 9C to 9F
     'space',             'quoteleft',    'quoteright',     'sterling',               // A0 to A3
     'brokenbar',         'section',      'dieresis',       'copyright',              // A4 to A7
     'guillemotleft',     'logicalnot',   'hyphen',         'afii00208',              // A8 to AB
     'degree',            'plusminus',    'twosuperior',    'threesuperior',          // AC to AF
     'tonos',             'dieresistonos','Alphatonos',     'periodcentered',         // B0 to B3
     'Epsilontonos',      'Etatonos',     'Iotatonos',      'guillemotright',         // B4 to B7
     'Omicrontonos',      'onehalf',      'Upsilontonos',   'Omegatonos',             // B8 to BB
     'iotadieresistonos', 'Alpha',        'Beta',           'Gamma',                  // BC to BF
     'Delta',             'Epsilon',      'Zeta',           'Eta',                    // C0 to C3
     'Theta',             'Iota',         'Kappa',          'Lambda',                 // C4 to C7
     'Mu',                'Nu',           'Xi',             'Omicron',                // C8 to CB
     'Pi',                'Rho',          'Sigma',          'Tau',                    // CC to CF
     'Upsilon',           'Phi',          'Chi',            'Psi',                    // D0 to D3
     'Omega',             'Iotadieresis', 'Upsilondieresis','alphatonos',             // D4 to D7
     'epsilontonos',      'etatonos',     'iotatonos',      'upsilondieresistonos',   // D8 to DB
     'alpha',             'beta',         'gamma',          'delta',                  // DC to DF
     'epsilon',           'zeta',         'eta',            'theta',                  // E0 to E3
     'iota',              'kappa',        'lambda',         'mu',                     // E4 to E7
     'nu',                'xi',           'omicron',        'pi',                     // E8 to EB
     'rho',               'sigma1',       'sigma',          'tau',                    // EC to EF
     'upsilon',           'phi',          'chi',            'psi',                    // F0 to F3
     'omega',             'iotadieresis', 'upsilondieresis','omicrontonos',           // F4 to F7
     'upsilontonos',      'omegatonos',   '.notdef',        '.notdef',                // F8 to FB
     '.notdef',           '.notdef',      '.notdef',        '.notdef');               // FC to FF

const
  iso_8859_7_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 80 to 87
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 90 to 97
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 98 to 9F
     160,     8216,    8217,    163,     166,      167,     168,     169,       // A0 to A7
     171,     172,     173,     8213,    176,      177,     178,     179,       // A8 to AF
     900,     901,     902,     183,     904,      905,     906,     187,       // B0 to B7
     908,     189,     910,     911,     912,      913,     914,     915,       // B8 to BF
     916,     917,     918,     919,     920,      921,     922,     923,       // C0 to C7
     924,     925,     926,     927,     928,      929,     931,     932,       // C8 to CF
     933,     934,     935,     936,     937,      938,     939,     940,       // D0 to D7
     941,     942,     943,     944,     945,      946,     947,     948,       // D8 to DF
     949,     950,     951,     952,     953,      954,     955,     956,       // E0 to E7
     957,     958,     959,     960,     961,      962,     963,     964,       // E8 to EF
     965,     966,     967,     968,     969,      970,     971,     972,       // F0 to F7
     973,     974,     -1,      -1,      -1,       -1,      -1,      -1);       // F8 to FF

const
  iso_8859_9_n: array[0..255] of string =
    ('.notdef',     '.notdef',      '.notdef',      '.notdef',            // 00 to 03
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 04 to 07
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 08 to 0B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 0C to 0F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 10 to 13
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 14 to 17
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 18 to 1B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 1C to 1F
     'space',       'exclam',       'quotedbl',     'numbersign',         // 20 to 23
     'dollar',      'percent',      'ampersand',    'quotesingle',        // 24 to 27
     'parenleft',   'parenright',   'asterisk',     'plus',               // 28 to 2B
     'comma',       'hyphen',       'period',       'slash',              // 2C to 2F
     'zero',        'one',          'two',          'three',              // 30 to 33
     'four',        'five',         'six',          'seven',              // 34 to 37
     'eight',       'nine',         'colon',        'semicolon',          // 38 to 3B
     'less',        'equal',        'greater',      'question',           // 3C to 3F
     'at',          'A',            'B',            'C',                  // 40 to 43
     'D',           'E',            'F',            'G',                  // 44 to 47
     'H',           'I',            'J',            'K',                  // 48 to 4B
     'L',           'M',            'N',            'O',                  // 4C to 4F
     'P',           'Q',            'R',            'S',                  // 50 to 53
     'T',           'U',            'V',            'W',                  // 54 to 57
     'X',           'Y',            'Z',            'bracketleft',        // 58 to 5B
     'backslash',   'bracketright', 'asciicircum',  'underscore',         // 5C to 5F
     'grave',       'a',            'b',            'c',                  // 60 to 63
     'd',           'e',            'f',            'g',                  // 64 to 67
     'h',           'i',            'j',            'k',                  // 68 to 6B
     'l',           'm',            'n',            'o',                  // 6C to 6F
     'p',           'q',            'r',            's',                  // 70 to 73
     't',           'u',            'v',            'w',                  // 74 to 77
     'x',           'y',            'z',            'braceleft',          // 78 to 7B
     'bar',         'braceright',   'asciitilde',   '.notdef',            // 7C to 7F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 80 to 83
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 84 to 87
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 88 to 8B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 8C to 8F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 90 to 93
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 94 to 97
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 98 to 9B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 9C to 9F
     'space',       'exclamdown',   'cent',         'sterling',           // A0 to A3
     'currency',    'yen',          'brokenbar',    'section',            // A4 to A7
     'dieresis',    'copyright',    'ordfeminine',  'guillemotleft',      // A8 to AB
     'logicalnot',  'hyphen',       'registered',   'macron',             // AC to AF
     'degree',      'plusminus',    'twosuperior',  'threesuperior',      // B0 to B3
     'acute',       'mu',           'paragraph',    'periodcentered',     // B4 to B7
     'cedilla',     'onesuperior',  'ordmasculine', 'guillemotright',     // B8 to BB
     'onequarter',  'onehalf',      'threequarters','questiondown',       // BC to BF
     'Agrave',      'Aacute',       'Acircumflex',  'Atilde',             // C0 to C3
     'Adieresis',   'Aring',        'AE',           'Ccedilla',           // C4 to C7
     'Egrave',      'Eacute',       'Ecircumflex',  'Edieresis',          // C8 to CB
     'Igrave',      'Iacute',       'Icircumflex',  'Idieresis',          // CC to CF
     'Gbreve',      'Ntilde',       'Ograve',       'Oacute',             // D0 to D3
     'Ocircumflex', 'Otilde',       'Odieresis',    'multiply',           // D4 to D7
     'Oslash',      'Ugrave',       'Uacute',       'Ucircumflex',        // D8 to DB
     'Udieresis',   'Idotaccent',   'Scedilla',     'germandbls',         // DC to DF
     'agrave',      'aacute',       'acircumflex',  'atilde',             // E0 to E3
     'adieresis',   'aring',        'ae',           'ccedilla',           // E4 to E7
     'egrave',      'eacute',       'ecircumflex',  'edieresis',          // E8 to EB
     'igrave',      'iacute',       'icircumflex',  'idieresis',          // EC to EF
     'gbreve',      'ntilde',       'ograve',       'oacute',             // F0 to F3
     'ocircumflex', 'otilde',       'odieresis',    'divide',             // F4 to F7
     'oslash',      'ugrave',       'uacute',       'ucircumflex',        // F8 to FB
     'udieresis',   'dotlessi',     'scedilla',     'ydieresis');         // FC to FF

const
  iso_8859_9_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 80 to 87
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 90 to 97
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 98 to 9F
     160,     161,     162,     163,     164,      165,     166,     167,       // A0 to A7
     168,     169,     170,     171,     172,      173,     174,     175,       // A8 to AF
     176,     177,     178,     179,     180,      181,     182,     183,       // B0 to B7
     184,     185,     186,     187,     188,      189,     190,     191,       // B8 to BF
     192,     193,     194,     195,     196,      197,     198,     199,       // C0 to C7
     200,     201,     202,     203,     204,      205,     206,     207,       // C8 to CF
     286,     209,     210,     211,     212,      213,     214,     215,       // D0 to D7
     216,     217,     218,     219,     220,      304,     350,     223,       // D8 to DF
     224,     225,     226,     227,     228,      229,     230,     231,       // E0 to E7
     232,     233,     234,     235,     236,      237,     238,     239,       // E8 to EF
     287,     241,     242,     243,     244,      245,     246,     247,       // F0 to F7
     248,     249,     250,     251,     252,      305,     351,     255);      // F8 to FF

const
  iso_8859_11_n: array[0..255] of string =
    ('.notdef',           '.notdef',          '.notdef',        '.notdef',            // 00 to 03
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 04 to 07
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 10 to 13
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 14 to 17
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 1C to 1F
     'space',             'exclam',           'quotedbl',       'numbersign',         // 20 to 23
     'dollar',            'percent',          'ampersand',      'quotesingle',        // 24 to 27
     'parenleft',         'parenright',       'asterisk',       'plus',               // 28 to 2B
     'comma',             'hyphen',           'period',         'slash',              // 2C to 2F
     'zero',              'one',              'two',            'three',              // 30 to 33
     'four',              'five',             'six',            'seven',              // 34 to 37
     'eight',             'nine',             'colon',          'semicolon',          // 38 to 3B
     'less',              'equal',            'greater',        'question',           // 3C to 3F
     'at',                'A',                'B',              'C',                  // 40 to 43
     'D',                 'E',                'F',              'G',                  // 44 to 47
     'H',                 'I',                'J',              'K',                  // 48 to 4B
     'L',                 'M',                'N',              'O',                  // 4C to 4F
     'P',                 'Q',                'R',              'S',                  // 50 to 53
     'T',                 'U',                'V',              'W',                  // 54 to 57
     'X',                 'Y',                'Z',              'bracketleft',        // 58 to 5B
     'backslash',         'bracketright',     'asciicircum',    'underscore',         // 5C to 5F
     'grave',             'a',                'b',              'c',                  // 60 to 63
     'd',                 'e',                'f',              'g',                  // 64 to 67
     'h',                 'i',                'j',              'k',                  // 68 to 6B
     'l',                 'm',                'n',              'o',                  // 6C to 6F
     'p',                 'q',                'r',              's',                  // 70 to 73
     't',                 'u',                'v',              'w',                  // 74 to 77
     'x',                 'y',                'z',              'braceleft',          // 78 to 7B
     'bar',               'braceright',       'asciitilde',     '.notdef',            // 7C to 7F
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 80 to 83
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 84 to 87
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 88 to 8B
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 8C to 8F
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 90 to 93
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 94 to 97
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 98 to 9B
     '.notdef',           '.notdef',          '.notdef',        '.notdef',            // 9C to 9F
     'space',             'kokaithai',        'khokhaithai',    'khokhuatthai',       // A0 to A3
     'khokhwaithai',      'khokhonthai',      'khorakhangthai', 'ngonguthai',         // A4 to A7
     'chochanthai',       'chochingthai',     'chochangthai',   'sosothai',           // A8 to AB
     'chochoethai',       'yoyingthai',       'dochadathai',    'topatakthai',        // AC to AF
     'thothanthai',       'thonangmonthothai','thophuthaothai', 'nonenthai',          // B0 to B3
     'dodekthai',         'totaothai',        'thothungthai',   'thothahanthai',      // B4 to B7
     'thothongthai',      'nonuthai',         'bobaimaithai',   'poplathai',          // B8 to BB
     'phophungthai',      'fofathai',         'phophanthai',    'fofanthai',          // BC to BF
     'phosamphaothai',    'momathai',         'yoyakthai',      'roruathai',          // C0 to C3
     'ruthai',            'lolingthai',       'luthai',         'wowaenthai',         // C4 to C7
     'sosalathai',        'sorusithai',       'sosuathai',      'hohipthai',          // C8 to CB
     'lochulathai',       'oangthai',         'honokhukthai',   'paiyannoithai',      // CC to CF
     'saraathai',         'maihanakatthai',   'saraaathai',     'saraamthai',         // D0 to D3
     'saraithai',         'saraiithai',       'sarauethai',     'saraueethai',        // D4 to D7
     'sarauthai',         'sarauuthai',       'phinthuthai',    '.notdef',            // D8 to DB
     '.notdef',           '.notdef',          '.notdef',        'bahtthai',           // DC to DF
     'saraethai',         'saraaethai',       'saraothai',      'saraaimaimuanthai',  // E0 to E3
     'saraaimaimalaithai','lakkhangyaothai',  'maiyamokthai',   'maitaikhuthai',      // E4 to E7
     'maiekthai',         'maithothai',       'maitrithai',     'maichattawathai',    // E8 to EB
     'thanthakhatthai',   'nikhahitthai',     'yamakkanthai',   'fongmanthai',        // EC to EF
     'zerothai',          'onethai',          'twothai',        'threethai',          // F0 to F3
     'fourthai',          'fivethai',         'sixthai',        'seventhai',          // F4 to F7
     'eightthai',         'ninethai',         'angkhankhuthai', 'khomutthai',         // F8 to FB
     '.notdef',           '.notdef',          '.notdef',        '.notdef');           // FC to FF

const
  iso_8859_11_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 80 to 87
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 90 to 97
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 98 to 9F
     160,     3585,    3586,    3587,    3588,     3589,    3590,    3591,      // A0 to A7
     3592,    3593,    3594,    3595,    3596,     3597,    3598,    3599,      // A8 to AF
     3600,    3601,    3602,    3603,    3604,     3605,    3606,    3607,      // B0 to B7
     3608,    3609,    3610,    3611,    3612,     3613,    3614,    3615,      // B8 to BF
     3616,    3617,    3618,    3619,    3620,     3621,    3622,    3623,      // C0 to C7
     3624,    3625,    3626,    3627,    3628,     3629,    3630,    3631,      // C8 to CF
     3632,    3633,    3634,    3635,    3636,     3637,    3638,    3639,      // D0 to D7
     3640,    3641,    3642,    -1,      -1,       -1,      -1,      3647,      // D8 to DF
     3648,    3649,    3650,    3651,    3652,     3653,    3654,    3655,      // E0 to E7
     3656,    3657,    3658,    3659,    3660,     3661,    3662,    3663,      // E8 to EF
     3664,    3665,    3666,    3667,    3668,     3669,    3670,    3671,      // F0 to F7
     3672,    3673,    3674,    3675,    -1,       -1,      -1,      -1);       // F8 to FF

const
  iso_8859_15_n: array[0..255] of string =
    ('.notdef',     '.notdef',      '.notdef',      '.notdef',            // 00 to 03
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 04 to 07
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 08 to 0B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 0C to 0F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 10 to 13
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 14 to 17
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 18 to 1B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 1C to 1F
     'space',       'exclam',       'quotedbl',     'numbersign',         // 20 to 23
     'dollar',      'percent',      'ampersand',    'quotesingle',        // 24 to 27
     'parenleft',   'parenright',   'asterisk',     'plus',               // 28 to 2B
     'comma',       'hyphen',       'period',       'slash',              // 2C to 2F
     'zero',        'one',          'two',          'three',              // 30 to 33
     'four',        'five',         'six',          'seven',              // 34 to 37
     'eight',       'nine',         'colon',        'semicolon',          // 38 to 3B
     'less',        'equal',        'greater',      'question',           // 3C to 3F
     'at',          'A',            'B',            'C',                  // 40 to 43
     'D',           'E',            'F',            'G',                  // 44 to 47
     'H',           'I',            'J',            'K',                  // 48 to 4B
     'L',           'M',            'N',            'O',                  // 4C to 4F
     'P',           'Q',            'R',            'S',                  // 50 to 53
     'T',           'U',            'V',            'W',                  // 54 to 57
     'X',           'Y',            'Z',            'bracketleft',        // 58 to 5B
     'backslash',   'bracketright', 'asciicircum',  'underscore',         // 5C to 5F
     'grave',       'a',            'b',            'c',                  // 60 to 63
     'd',           'e',            'f',            'g',                  // 64 to 67
     'h',           'i',            'j',            'k',                  // 68 to 6B
     'l',           'm',            'n',            'o',                  // 6C to 6F
     'p',           'q',            'r',            's',                  // 70 to 73
     't',           'u',            'v',            'w',                  // 74 to 77
     'x',           'y',            'z',            'braceleft',          // 78 to 7B
     'bar',         'braceright',   'asciitilde',   '.notdef',            // 7C to 7F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 80 to 83
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 84 to 87
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 88 to 8B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 8C to 8F
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 90 to 93
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 94 to 97
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 98 to 9B
     '.notdef',     '.notdef',      '.notdef',      '.notdef',            // 9C to 9F
     'space',       'exclamdown',   'cent',         'sterling',           // A0 to A3
     'Euro',        'yen',          'Scaron',       'section',            // A4 to A7
     'scaron',      'copyright',    'ordfeminine',  'guillemotleft',      // A8 to AB
     'logicalnot',  'hyphen',       'registered',   'macron',             // AC to AF
     'degree',      'plusminus',    'twosuperior',  'threesuperior',      // B0 to B3
     'Zcaron',      'mu',           'paragraph',    'periodcentered',     // B4 to B7
     'zcaron',      'onesuperior',  'ordmasculine', 'guillemotright',     // B8 to BB
     'OE',          'oe',           'Ydieresis',    'questiondown',       // BC to BF
     'Agrave',      'Aacute',       'Acircumflex',  'Atilde',             // C0 to C3
     'Adieresis',   'Aring',        'AE',           'Ccedilla',           // C4 to C7
     'Egrave',      'Eacute',       'Ecircumflex',  'Edieresis',          // C8 to CB
     'Igrave',      'Iacute',       'Icircumflex',  'Idieresis',          // CC to CF
     'Eth',         'Ntilde',       'Ograve',       'Oacute',             // D0 to D3
     'Ocircumflex', 'Otilde',       'Odieresis',    'multiply',           // D4 to D7
     'Oslash',      'Ugrave',       'Uacute',       'Ucircumflex',        // D8 to DB
     'Udieresis',   'Yacute',       'Thorn',        'germandbls',         // DC to DF
     'agrave',      'aacute',       'acircumflex',  'atilde',             // E0 to E3
     'adieresis',   'aring',        'ae',           'ccedilla',           // E4 to E7
     'egrave',      'eacute',       'ecircumflex',  'edieresis',          // E8 to EB
     'igrave',      'iacute',       'icircumflex',  'idieresis',          // EC to EF
     'eth',         'ntilde',       'ograve',       'oacute',             // F0 to F3
     'ocircumflex', 'otilde',       'odieresis',    'divide',             // F4 to F7
     'oslash',      'ugrave',       'uacute',       'ucircumflex',        // F8 to FB
     'udieresis',   'yacute',       'thorn',        'ydieresis');         // FC to FF

const
  iso_8859_15_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 80 to 87
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 90 to 97
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 98 to 9F
     160,     161,     162,     163,     8364,     165,     352,     167,       // A0 to A7
     353,     169,     170,     171,     172,      173,     174,     175,       // A8 to AF
     176,     177,     178,     179,     381,      181,     182,     183,       // B0 to B7
     382,     185,     186,     187,     338,      339,     376,     191,       // B8 to BF
     192,     193,     194,     195,     196,      197,     198,     199,       // C0 to C7
     200,     201,     202,     203,     204,      205,     206,     207,       // C8 to CF
     208,     209,     210,     211,     212,      213,     214,     215,       // D0 to D7
     216,     217,     218,     219,     220,      221,     222,     223,       // D8 to DF
     224,     225,     226,     227,     228,      229,     230,     231,       // E0 to E7
     232,     233,     234,     235,     236,      237,     238,     239,       // E8 to EF
     240,     241,     242,     243,     244,      245,     246,     247,       // F0 to F7
     248,     249,     250,     251,     252,      253,     254,     255);      // F8 to FF

const
  iso_8859_16_n: array[0..255] of string =
    ('.notdef',       '.notdef',      '.notdef',      '.notdef',            // 00 to 03
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 04 to 07
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 08 to 0B
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 0C to 0F
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 10 to 13
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 14 to 17
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 18 to 1B
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 1C to 1F
     'space',         'exclam',       'quotedbl',     'numbersign',         // 20 to 23
     'dollar',        'percent',      'ampersand',    'quotesingle',        // 24 to 27
     'parenleft',     'parenright',   'asterisk',     'plus',               // 28 to 2B
     'comma',         'hyphen',       'period',       'slash',              // 2C to 2F
     'zero',          'one',          'two',          'three',              // 30 to 33
     'four',          'five',         'six',          'seven',              // 34 to 37
     'eight',         'nine',         'colon',        'semicolon',          // 38 to 3B
     'less',          'equal',        'greater',      'question',           // 3C to 3F
     'at',            'A',            'B',            'C',                  // 40 to 43
     'D',             'E',            'F',            'G',                  // 44 to 47
     'H',             'I',            'J',            'K',                  // 48 to 4B
     'L',             'M',            'N',            'O',                  // 4C to 4F
     'P',             'Q',            'R',            'S',                  // 50 to 53
     'T',             'U',            'V',            'W',                  // 54 to 57
     'X',             'Y',            'Z',            'bracketleft',        // 58 to 5B
     'backslash',     'bracketright', 'asciicircum',  'underscore',         // 5C to 5F
     'grave',         'a',            'b',            'c',                  // 60 to 63
     'd',             'e',            'f',            'g',                  // 64 to 67
     'h',             'i',            'j',            'k',                  // 68 to 6B
     'l',             'm',            'n',            'o',                  // 6C to 6F
     'p',             'q',            'r',            's',                  // 70 to 73
     't',             'u',            'v',            'w',                  // 74 to 77
     'x',             'y',            'z',            'braceleft',          // 78 to 7B
     'bar',           'braceright',   'asciitilde',   '.notdef',            // 7C to 7F
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 80 to 83
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 84 to 87
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 88 to 8B
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 8C to 8F
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 90 to 93
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 94 to 97
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 98 to 9B
     '.notdef',       '.notdef',      '.notdef',      '.notdef',            // 9C to 9F
     'space',         'Aogonek',      'aogonek',      'Lslash',             // A0 to A3
     'Euro',          'quotedblbase', 'Scaron',       'section',            // A4 to A7
     'scaron',        'copyright',    'Scommaaccent', 'guillemotleft',      // A8 to AB
     'Zacute',        'hyphen',       'zacute',       'Zdotaccent',         // AC to AF
     'degree',        'plusminus',    'Ccaron',       'lslash',             // B0 to B3
     'Zcaron',        'quotedblright','paragraph',    'periodcentered',     // B4 to B7
     'zcaron',        'ccaron',       'scommaaccent', 'guillemotright',     // B8 to BB
     'OE',            'oe',           'Ydieresis',    'zdotaccent',         // BC to BF
     'Agrave',        'Aacute',       'Acircumflex',  'Abreve',             // C0 to C3
     'Adieresis',     'Cacute',       'AE',           'Ccedilla',           // C4 to C7
     'Egrave',        'Eacute',       'Ecircumflex',  'Edieresis',          // C8 to CB
     'Igrave',        'Iacute',       'Icircumflex',  'Idieresis',          // CC to CF
     'Dcroat',        'Nacute',       'Ograve',       'Oacute',             // D0 to D3
     'Ocircumflex',   'Ohungarumlaut','Odieresis',    'Sacute',             // D4 to D7
     'Uhungarumlaut', 'Ugrave',       'Uacute',       'Ucircumflex',        // D8 to DB
     'Udieresis',     'Eogonek',      'Tcommaaccent', 'germandbls',         // DC to DF
     'agrave',        'aacute',       'acircumflex',  'abreve',             // E0 to E3
     'adieresis',     'cacute',       'ae',           'ccedilla',           // E4 to E7
     'egrave',        'eacute',       'ecircumflex',  'edieresis',          // E8 to EB
     'igrave',        'iacute',       'icircumflex',  'idieresis',          // EC to EF
     'dcroat',        'nacute',       'ograve',       'oacute',             // F0 to F3
     'ocircumflex',   'ohungarumlaut','odieresis',    'sacute',             // F4 to F7
     'uhungarumlaut', 'ugrave',       'uacute',       'ucircumflex',        // F8 to FB
     'udieresis',     'eogonek',      'tcommaaccent', 'ydieresis');         // FC to FF

const
  iso_8859_16_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 80 to 87
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 88 to 8F
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 90 to 97
     -1,      -1,      -1,      -1,      -1,       -1,      -1,      -1,        // 98 to 9F
     160,     260,     261,     321,     8364,     8222,    352,     167,       // A0 to A7
     353,     169,     536,     171,     377,      173,     378,     379,       // A8 to AF
     176,     177,     268,     322,     381,      8221,    182,     183,       // B0 to B7
     382,     269,     537,     187,     338,      339,     376,     380,       // B8 to BF
     192,     193,     194,     258,     196,      262,     198,     199,       // C0 to C7
     200,     201,     202,     203,     204,      205,     206,     207,       // C8 to CF
     272,     323,     210,     211,     212,      336,     214,     346,       // D0 to D7
     368,     217,     218,     219,     220,      280,     538,     223,       // D8 to DF
     224,     225,     226,     259,     228,      263,     230,     231,       // E0 to E7
     232,     233,     234,     235,     236,      237,     238,     239,       // E8 to EF
     273,     324,     242,     243,     244,      337,     246,     347,       // F0 to F7
     369,     249,     250,     251,     252,      281,     539,     255);      // F8 to FF

const
  koi8_r_n: array[0..255] of string =
    ('.notdef',   '.notdef',        '.notdef',        '.notdef',            // 00 to 03
     '.notdef',   '.notdef',        '.notdef',        '.notdef',            // 04 to 07
     '.notdef',   '.notdef',        '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',   '.notdef',        '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',   '.notdef',        '.notdef',        '.notdef',            // 10 to 13
     '.notdef',   '.notdef',        '.notdef',        '.notdef',            // 14 to 17
     '.notdef',   '.notdef',        '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',   '.notdef',        '.notdef',        '.notdef',            // 1C to 1F
     'space',     'exclam',         'quotedbl',       'numbersign',         // 20 to 23
     'dollar',    'percent',        'ampersand',      'quotesingle',        // 24 to 27
     'parenleft', 'parenright',     'asterisk',       'plus',               // 28 to 2B
     'comma',     'hyphen',         'period',         'slash',              // 2C to 2F
     'zero',      'one',            'two',            'three',              // 30 to 33
     'four',      'five',           'six',            'seven',              // 34 to 37
     'eight',     'nine',           'colon',          'semicolon',          // 38 to 3B
     'less',      'equal',          'greater',        'question',           // 3C to 3F
     'at',        'A',              'B',              'C',                  // 40 to 43
     'D',         'E',              'F',              'G',                  // 44 to 47
     'H',         'I',              'J',              'K',                  // 48 to 4B
     'L',         'M',              'N',              'O',                  // 4C to 4F
     'P',         'Q',              'R',              'S',                  // 50 to 53
     'T',         'U',              'V',              'W',                  // 54 to 57
     'X',         'Y',              'Z',              'bracketleft',        // 58 to 5B
     'backslash', 'bracketright',   'asciicircum',    'underscore',         // 5C to 5F
     'grave',     'a',              'b',              'c',                  // 60 to 63
     'd',         'e',              'f',              'g',                  // 64 to 67
     'h',         'i',              'j',              'k',                  // 68 to 6B
     'l',         'm',              'n',              'o',                  // 6C to 6F
     'p',         'q',              'r',              's',                  // 70 to 73
     't',         'u',              'v',              'w',                  // 74 to 77
     'x',         'y',              'z',              'braceleft',          // 78 to 7B
     'bar',       'braceright',     'asciitilde',     '.notdef',            // 7C to 7F
     'SF100000',  'SF110000',       'SF010000',       'SF030000',           // 80 to 83
     'SF020000',  'SF040000',       'SF080000',       'SF090000',           // 84 to 87
     'SF060000',  'SF070000',       'SF050000',       'upblock',            // 88 to 8B
     'dnblock',   'block',          'lfblock',        'rtblock',            // 8C to 8F
     'ltshade',   'shade',          'dkshade',        'integraltp',         // 90 to 93
     'filledbox', 'periodcentered', 'radical',        'approxequal',        // 94 to 97
     'lessequal', 'greaterequal',   'space',          'integralbt',         // 98 to 9B
     'degree',    'twosuperior',    'periodcentered', 'divide',             // 9C to 9F
     'SF430000',  'SF240000',       'SF510000',       'afii10071',          // A0 to A3
     'SF520000',  'SF390000',       'SF220000',       'SF210000',           // A4 to A7
     'SF250000',  'SF500000',       'SF490000',       'SF380000',           // A8 to AB
     'SF280000',  'SF270000',       'SF260000',       'SF360000',           // AC to AF
     'SF370000',  'SF420000',       'SF190000',       'afii10023',          // B0 to B3
     'SF200000',  'SF230000',       'SF470000',       'SF480000',           // B4 to B7
     'SF410000',  'SF450000',       'SF460000',       'SF400000',           // B8 to BB
     'SF540000',  'SF530000',       'SF440000',       'copyright',          // BC to BF
     'afii10096', 'afii10065',      'afii10066',      'afii10088',          // C0 to C3
     'afii10069', 'afii10070',      'afii10086',      'afii10068',          // C4 to C7
     'afii10087', 'afii10074',      'afii10075',      'afii10076',          // C8 to CB
     'afii10077', 'afii10078',      'afii10079',      'afii10080',          // CC to CF
     'afii10081', 'afii10097',      'afii10082',      'afii10083',          // D0 to D3
     'afii10084', 'afii10085',      'afii10072',      'afii10067',          // D4 to D7
     'afii10094', 'afii10093',      'afii10073',      'afii10090',          // D8 to DB
     'afii10095', 'afii10091',      'afii10089',      'afii10092',          // DC to DF
     'afii10048', 'afii10017',      'afii10018',      'afii10040',          // E0 to E3
     'afii10021', 'afii10022',      'afii10038',      'afii10020',          // E4 to E7
     'afii10039', 'afii10026',      'afii10027',      'afii10028',          // E8 to EB
     'afii10029', 'afii10030',      'afii10031',      'afii10032',          // EC to EF
     'afii10033', 'afii10049',      'afii10034',      'afii10035',          // F0 to F3
     'afii10036', 'afii10037',      'afii10024',      'afii10019',          // F4 to F7
     'afii10046', 'afii10045',      'afii10025',      'afii10042',          // F8 to FB
     'afii10047', 'afii10043',      'afii10041',      'afii10044');         // FC to FF

const
  koi8_r_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     9472,    9474,    9484,    9488,    9492,     9496,    9500,    9508,      // 80 to 87
     9516,    9524,    9532,    9600,    9604,     9608,    9612,    9616,      // 88 to 8F
     9617,    9618,    9619,    8992,    9632,     8729,    8730,    8776,      // 90 to 97
     8804,    8805,    160,     8993,    176,      178,     183,     247,       // 98 to 9F
     9552,    9553,    9554,    1105,    9555,     9556,    9557,    9558,      // A0 to A7
     9559,    9560,    9561,    9562,    9563,     9564,    9565,    9566,      // A8 to AF
     9567,    9568,    9569,    1025,    9570,     9571,    9572,    9573,      // B0 to B7
     9574,    9575,    9576,    9577,    9578,     9579,    9580,    169,       // B8 to BF
     1102,    1072,    1073,    1094,    1076,     1077,    1092,    1075,      // C0 to C7
     1093,    1080,    1081,    1082,    1083,     1084,    1085,    1086,      // C8 to CF
     1087,    1103,    1088,    1089,    1090,     1091,    1078,    1074,      // D0 to D7
     100,     1099,    1079,    1096,    1101,     1097,    1095,    1098,      // D8 to DF
     1070,    1040,    1041,    1062,    1044,     1045,    1060,    1043,      // E0 to E7
     1061,    1048,    1049,    1050,    1051,     1052,    1053,    1054,      // E8 to EF
     1055,    1071,    1056,    1057,    1058,     1059,    1046,    1042,      // F0 to F7
     1068,    1067,    1047,    1064,    1069,     1065,    1063,    1066);     // F8 to FF

const
  koi8_u_n: array[0..255] of string =
    ('.notdef',   '.notdef',      '.notdef',        '.notdef',            // 00 to 03
     '.notdef',   '.notdef',      '.notdef',        '.notdef',            // 04 to 07
     '.notdef',   '.notdef',      '.notdef',        '.notdef',            // 08 to 0B
     '.notdef',   '.notdef',      '.notdef',        '.notdef',            // 0C to 0F
     '.notdef',   '.notdef',      '.notdef',        '.notdef',            // 10 to 13
     '.notdef',   '.notdef',      '.notdef',        '.notdef',            // 14 to 17
     '.notdef',   '.notdef',      '.notdef',        '.notdef',            // 18 to 1B
     '.notdef',   '.notdef',      '.notdef',        '.notdef',            // 1C to 1F
     'space',     'exclam',       'quotedbl',       'numbersign',         // 20 to 23
     'dollar',    'percent',      'ampersand',      'quotesingle',        // 24 to 27
     'parenleft', 'parenright',   'asterisk',       'plus',               // 28 to 2B
     'comma',     'hyphen',       'period',         'slash',              // 2C to 2F
     'zero',      'one',          'two',            'three',              // 30 to 33
     'four',      'five',         'six',            'seven',              // 34 to 37
     'eight',     'nine',         'colon',          'semicolon',          // 38 to 3B
     'less',      'equal',        'greater',        'question',           // 3C to 3F
     'at',        'A',            'B',              'C',                  // 40 to 43
     'D',         'E',            'F',              'G',                  // 44 to 47
     'H',         'I',            'J',              'K',                  // 48 to 4B
     'L',         'M',            'N',              'O',                  // 4C to 4F
     'P',         'Q',            'R',              'S',                  // 50 to 53
     'T',         'U',            'V',              'W',                  // 54 to 57
     'X',         'Y',            'Z',              'bracketleft',        // 58 to 5B
     'backslash', 'bracketright', 'asciicircum',    'underscore',         // 5C to 5F
     'grave',     'a',            'b',              'c',                  // 60 to 63
     'd',         'e',            'f',              'g',                  // 64 to 67
     'h',         'i',            'j',              'k',                  // 68 to 6B
     'l',         'm',            'n',              'o',                  // 6C to 6F
     'p',         'q',            'r',              's',                  // 70 to 73
     't',         'u',            'v',              'w',                  // 74 to 77
     'x',         'y',            'z',              'braceleft',          // 78 to 7B
     'bar',       'braceright',   'asciitilde',     '.notdef',            // 7C to 7F
     'SF100000',  'SF110000',     'SF010000',       'SF030000',           // 80 to 83
     'SF020000',  'SF040000',     'SF080000',       'SF090000',           // 84 to 87
     'SF060000',  'SF070000',     'SF050000',       'upblock',            // 88 to 8B
     'dnblock',   'block',        'lfblock',        'rtblock',            // 8C to 8F
     'ltshade',   'shade',        'dkshade',        'integraltp',         // 90 to 93
     'filledbox', 'bullet',       'radical',        'approxequal',        // 94 to 97
     'lessequal', 'greaterequal', 'space',          'integralbt',         // 98 to 9B
     'degree',    'twosuperior',  'periodcentered', 'divide',             // 9C to 9F
     'SF430000',  'SF240000',     'SF510000',       'afii10071',          // A0 to A3
     'afii10101', 'SF390000',     'afii10103',      'afii10104',          // A4 to A7
     'SF250000',  'SF500000',     'SF490000',       'SF380000',           // A8 to AB
     'SF280000',  'afii10098',    'SF260000',       'SF360000',           // AC to AF
     'SF370000',  'SF420000',     'SF190000',       'afii10023',          // B0 to B3
     'afii10053', 'SF230000',     'afii10055',      'afii10056',          // B4 to B7
     'SF410000',  'SF450000',     'SF460000',       'SF400000',           // B8 to BB
     'SF540000',  'afii10050',    'SF440000',       'copyright',          // BC to BF
     'afii10096', 'afii10065',    'afii10066',      'afii10088',          // C0 to C3
     'afii10069', 'afii10070',    'afii10086',      'afii10068',          // C4 to C7
     'afii10087', 'afii10074',    'afii10075',      'afii10076',          // C8 to CB
     'afii10077', 'afii10078',    'afii10079',      'afii10080',          // CC to CF
     'afii10081', 'afii10097',    'afii10082',      'afii10083',          // D0 to D3
     'afii10084', 'afii10085',    'afii10072',      'afii10067',          // D4 to D7
     'afii10094', 'afii10093',    'afii10073',      'afii10090',          // D8 to DB
     'afii10095', 'afii10091',    'afii10089',      'afii10092',          // DC to DF
     'afii10048', 'afii10017',    'afii10018',      'afii10040',          // E0 to E3
     'afii10021', 'afii10022',    'afii10038',      'afii10020',          // E4 to E7
     'afii10039', 'afii10026',    'afii10027',      'afii10028',          // E8 to EB
     'afii10029', 'afii10030',    'afii10031',      'afii10032',          // EC to EF
     'afii10033', 'afii10049',    'afii10034',      'afii10035',          // F0 to F3
     'afii10036', 'afii10037',    'afii10024',      'afii10019',          // F4 to F7
     'afii10046', 'afii10045',    'afii10025',      'afii10042',          // F8 to FB
     'afii10047', 'afii10043',    'afii10041',      'afii10044');         // FC to FF

const
  koi8_u_v: array[0..255] of Word =
    (0,       1,       2,       3,       4,        5,       6,       7,         // 00 to 07
     8,       9,       10,      11,      12,       13,      14,      15,        // 08 to 0F
     16,      17,      18,      19,      20,       21,      22,      23,        // 10 to 17
     24,      25,      26,      27,      28,       29,      30,      31,        // 18 to 1F
     32,      33,      34,      35,      36,       37,      38,      39,        // 20 to 27
     40,      41,      42,      43,      44,       45,      46,      47,        // 28 to 2F
     48,      49,      50,      51,      52,       53,      54,      55,        // 30 to 37
     56,      57,      58,      59,      60,       61,      62,      63,        // 38 to 3F
     64,      65,      66,      67,      68,       69,      70,      71,        // 40 to 47
     72,      73,      74,      75,      76,       77,      78,      79,        // 48 to 4F
     80,      81,      82,      83,      84,       85,      86,      87,        // 50 to 57
     88,      89,      90,      91,      92,       93,      94,      95,        // 58 to 5F
     96,      97,      98,      99,      100,      101,     102,     103,       // 60 to 67
     104,     105,     106,     107,     108,      109,     110,     111,       // 68 to 6F
     112,     113,     114,     115,     116,      117,     118,     119,       // 70 to 77
     120,     121,     122,     123,     124,      125,     126,     127,       // 78 to 7F
     9472,    9474,    9484,    9488,    9492,     9496,    9500,    9508,      // 80 to 87
     9516,    9524,    9532,    9600,    9604,     9608,    9612,    9616,      // 88 to 8F
     9617,    9618,    9619,    8992,    9632,     8226,    8730,    8776,      // 90 to 97
     8804,    8805,    160,     8993,    176,      178,     183,     247,       // 98 to 9F
     9552,    9553,    9554,    1105,    1108,     9556,    1110,    1111,      // A0 to A7
     9559,    9560,    9561,    9562,    9563,     1169,    9565,    9566,      // A8 to AF
     9567,    9568,    9569,    1025,    1028,     9571,    1030,    1031,      // B0 to B7
     9574,    9575,    9576,    9577,    9578,     1168,    9580,    169,       // B8 to BF
     1102,    1072,    1073,    1094,    1076,     1077,    1092,    1075,      // C0 to C7
     1093,    1080,    1081,    1082,    1083,     1084,    1085,    1086,      // C8 to CF
     1087,    1103,    1088,    1089,    1090,     1091,    1078,    1074,      // D0 to D7
     1100,    1099,    1079,    1096,    1101,     1097,    1095,    1098,      // D8 to DF
     1070,    1040,    1041,    1062,    1044,     1045,    1060,    1043,      // E0 to E7
     1061,    1048,    1049,    1050,    1051,     1052,    1053,    1054,      // E8 to EF
     1055,    1071,    1056,    1057,    1058,     1059,    1046,    1042,      // F0 to F7
     1068,    1067,    1047,    1064,    1069,     1065,    1063,    1066);     // F8 to FF

implementation

end.