ckcuni.c
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:695k
源码类别:

通讯/手机编程

开发平台:

Windows_Unix

  1.     0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
  2.     0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
  3.     0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
  4.     0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
  5. };
  6. struct x_to_unicode u_cp857 = {
  7.     128, 0, X2U_CP, AL_ROMAN,"PC Code Page 857","cp857", 0, NULL,
  8.     0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, /* 0x80 */
  9.     0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0131, 0x00c4, 0x00c5, /* 0x88 */
  10.     0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, /* 0x90 */
  11.     0x0130, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x015e, 0x015f, /* 0x98 */
  12.     0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x011e, 0x011f, /* 0xa0 */
  13.     0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, /* 0xa8 */
  14.     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, /* 0xb0 */
  15.     0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, /* 0xb8 */
  16.     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, /* 0xc0 */
  17.     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, /* 0xc8 */
  18.     0x00ba, 0x00aa, 0x00ca, 0x00cb, 0x00c8, 0x20ac, 0x00cd, 0x00ce, /* 0xd0 */
  19.     0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, /* 0xd8 */
  20.     0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0xfffd, /* 0xe0 */
  21.     0x00d7, 0x00da, 0x00db, 0x00d9, 0x00ec, 0x00ff, 0x00af, 0x00b4, /* 0xe8 */
  22.     0x00ad, 0x00b1, 0xfffd, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, /* 0xf0 */
  23.     0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0  /* 0xf8 */
  24. };
  25. struct x_to_unicode u_cp858 = {
  26.     128, 0, X2U_CP, AL_ROMAN,"PC Code Page 858","cp858", 0, NULL,
  27.     0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
  28.     0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
  29.     0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
  30.     0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192,
  31.     0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
  32.     0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
  33.     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0,
  34.     0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
  35.     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3,
  36.     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
  37.     0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x20ac, 0x00cd, 0x00ce,
  38.     0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580,
  39.     0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe,
  40.     0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4,
  41.     0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
  42.     0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
  43. };
  44. struct x_to_unicode u_cp862 = {
  45.     128, 0, X2U_CP, AL_HEBREW,"PC Code Page 862","cp862", 0, NULL,
  46.     0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
  47.     0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
  48.     0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
  49.     0x05e8, 0x05e9, 0x05ea, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192,
  50.     0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
  51.     0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
  52.     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
  53.     0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
  54.     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
  55.     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
  56.     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
  57.     0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
  58.     0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
  59.     0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
  60.     0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
  61.     0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
  62. };
  63. struct x_to_unicode u_cp864 = {
  64.     128, 0, X2U_CP, AL_ARABIC,"PC Code Page 864","cp864", 0, NULL,
  65.     0x00b0, 0x00b7, 0x2219, 0x221a, 0x2592, 0x2500, 0x2502, 0x253c,
  66.     0x2524, 0x252c, 0x251c, 0x2534, 0x2510, 0x250c, 0x2514, 0x2518,
  67.     0x03b2, 0x221e, 0x03c6, 0x00b1, 0x00bd, 0x00bc, 0x2248, 0x00ab,
  68.     0x00bb, 0xfef7, 0xfef8, 0xfffd, 0xfffd, 0xfefb, 0xfefc, 0xfffd,
  69.     0x00a0, 0x00ad, 0xfe82, 0x00a3, 0x00a4, 0xfe84, 0xfffd, 0xfffd,
  70.     0xfe8e, 0xfe8f, 0xfe95, 0xfe99, 0x060c, 0xfe9d, 0xfea1, 0xfea5,
  71.     0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667,
  72.     0x0668, 0x0669, 0xfed1, 0x061b, 0xfeb1, 0xfeb5, 0xfeb9, 0x061f,
  73.     0x00a2, 0xfe80, 0xfe81, 0xfe83, 0xfe85, 0xfeca, 0xfe8b, 0xfe8d,
  74.     0xfe91, 0xfe93, 0xfe97, 0xfe9b, 0xfe9f, 0xfea3, 0xfea7, 0xfea9,
  75.     0xfeab, 0xfead, 0xfeaf, 0xfeb3, 0xfeb7, 0xfebb, 0xfebf, 0xfec1,
  76.     0xfec5, 0xfecb, 0xfecf, 0x00a6, 0x00ac, 0x00f7, 0x00d7, 0xfec9,
  77.     0x0640, 0xfed3, 0xfed7, 0xfedb, 0xfedf, 0xfee3, 0xfee7, 0xfeeb,
  78.     0xfeed, 0xfeef, 0xfef3, 0xfebd, 0xfecc, 0xfece, 0xfecd, 0xfee1,
  79.     0xfe7d, 0x0651, 0xfee5, 0xfee9, 0xfeec, 0xfef0, 0xfef2, 0xfed0,
  80.     0xfed5, 0xfef5, 0xfef6, 0xfedd, 0xfed9, 0xfef1, 0x25a0, 0xfffd
  81. };
  82. struct x_to_unicode u_cp866 = {
  83.     128, 0, X2U_CP, AL_CYRIL,"PC Code Page 866","cp866", 0, NULL,
  84.     0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
  85.     0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
  86.     0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
  87.     0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
  88.     0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
  89.     0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
  90.     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
  91.     0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
  92.     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
  93.     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
  94.     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
  95.     0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
  96.     0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
  97.     0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
  98.     0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e,
  99.     0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0
  100. };
  101. struct x_to_unicode u_cp869 = {
  102.     128, 0, X2U_CP, AL_GREEK,"PC Code Page 869","cp869", 0, NULL,
  103.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0386, 0xfffd,
  104.     0x00b7, 0x00ac, 0x00a6, 0x2018, 0x2019, 0x0388, 0x2015, 0x0389,
  105.     0x038a, 0x03aa, 0x038c, 0xfffd, 0xfffd, 0x038e, 0x03ab, 0x00a9,
  106.     0x038f, 0x00b2, 0x00b3, 0x03ac, 0x00a3, 0x03ad, 0x03ae, 0x03af,
  107.     0x03ca, 0x0390, 0x03cc, 0x03cd, 0x0391, 0x0392, 0x0393, 0x0394,
  108.     0x0395, 0x0396, 0x0397, 0x00bd, 0x0398, 0x0399, 0x00ab, 0x00bb,
  109.     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039a, 0x039b, 0x039c,
  110.     0x039d, 0x2563, 0x2551, 0x2557, 0x255d, 0x039e, 0x039f, 0x2510,
  111.     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x03a0, 0x03a1,
  112.     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x03a3,
  113.     0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2,
  114.     0x03b3, 0x2518, 0x250c, 0x2588, 0x2584, 0x03b4, 0x03b5, 0x2580,
  115.     0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd,
  116.     0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x0384,
  117.     0x00ad, 0x00b1, 0x03c5, 0x03c6, 0x03c7, 0x00a7, 0x03c8, 0x0385,
  118.     0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0
  119. };
  120. /* Windows code pages */
  121. struct x_to_unicode u_cp1250 = { /* Windows Latin-2 */
  122.     128, 0, X2U_CP, AL_ROMAN,"Windows Code Page 1250","cp1250", 0, NULL,
  123.     0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, /* 80 */
  124.     0x005e, 0x2031, 0x0160, 0x003c, 0x015a, 0x0164, 0x017d, 0x0179, /* 88 */
  125.     0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2012, 0x2014, /* 90 */
  126.     0xfffd, 0x2122, 0x0161, 0x003e, 0x015b, 0x0165, 0x017e, 0x017a, /* 98 */
  127.     0x00A0, 0x02c7, 0x02d8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, /* A0 */
  128.     0x00A8, 0x00a9, 0x015E, 0x00ab, 0x00ac, 0x002D, 0x00ae, 0x017B, /* A8 */
  129.     0x00B0, 0x00b1, 0x02DB, 0x0142, 0x00B4, 0x00b5, 0x00b6, 0x00b7, /* B0 */
  130.     0x00B8, 0x0105, 0x015F, 0x00bb, 0x013d, 0x02DD, 0x013E, 0x017C, /* B8 */
  131.     0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* C0 */
  132.     0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E,
  133.     0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
  134.     0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF,
  135.     0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7,
  136.     0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
  137.     0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
  138.     0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9
  139. };
  140. struct x_to_unicode u_cp1251 = { /* Windows Cyrillic */
  141.     128, 0, X2U_CP, AL_CYRIL,"Windows Code Page 1251","cp1251", 0, NULL,
  142.     0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021, /* 80 */
  143.     0x20ac, 0x2031, 0x0409, 0x003c, 0x040a, 0x040c, 0x040b, 0x040f, /* 88 */
  144.     0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2012, 0x2014, /* 90 */
  145.     0x007e, 0x2122, 0x0459, 0x003e, 0x045a, 0x045c, 0x045b, 0x045f, /* 98 */
  146.     0x00A0, 0x040e, 0x045e, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, /* a0 */
  147.     0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, /* a8 */
  148.     0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, /* b0 */
  149.     0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, /* b8 */
  150.     0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* c0 */
  151.     0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, /* c8 */
  152.     0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* d0 */
  153.     0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, /* d8 */
  154.     0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* e0 */
  155.     0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, /* e8 */
  156.     0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* f0 */
  157.     0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f  /* f8 */
  158. };
  159. struct x_to_unicode u_cp1252 = { /* Windows Latin-1 */
  160. /*
  161.   The following code points added September 1998:
  162.   0x80: Euro
  163.   0x8E: Latin Capital Letter Z with Caron
  164.   0x9E: Latin Small Letter Z with Caron
  165.   Announced by Murray Sargent <murrays@microsoft.com> to Unicode consortium,
  166.   email, 3 September 1998.  The code page was changed in June 1998.  The
  167.   change is reflected in Windows 98 and "recent service packs" for Window 95
  168.   and Windows NT 4.0.
  169. */
  170.     128, 0, X2U_CP, AL_ROMAN,"Windows Code Page 1252","cp1252", 0, NULL,
  171.     0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
  172.     0x005e, 0x2031, 0x0160, 0x003c, 0x0152, 0xfffd, 0x017D, 0xfffd,
  173.     0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2012, 0x2014,
  174.     0x007e, 0x2122, 0x0161, 0x003e, 0x0153, 0xfffd, 0x017E, 0x0178,
  175.     0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  176.     0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  177.     0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  178.     0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
  179.     0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  180.     0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  181.     0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
  182.     0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
  183.     0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  184.     0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  185.     0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
  186.     0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
  187. };
  188. struct x_to_unicode u_cp1253 = { /* Windows Greece */
  189.     128, 0, X2U_CP, AL_GREEK,"Windows Code Page 1253","cp1253", 0, NULL,
  190.     0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, /* 80 */
  191.     0xfffd, 0x2031, 0xfffd, 0x003c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 88 */
  192.     0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2012, 0x2014, /* 90 */
  193.     0xfffd, 0x2122, 0xfffd, 0x003e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 98 */
  194.     0x00A0, 0x00b7, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* a0 */
  195.     0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* a8 */
  196.     0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B7, 0x00B5, 0x00B6, 0x00B7, /* b0 */
  197.     0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, /* b8 */
  198.     0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* c0 */
  199.     0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, /* c8 */
  200.     0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, /* d0 */
  201.     0x03a8, 0x03a9, 0x03aA, 0x03aB, 0x03aC, 0x03aD, 0x03aE, 0x03aF, /* d8 */
  202.     0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, /* e0 */
  203.     0x03b8, 0x03b9, 0x03bA, 0x03bB, 0x03bC, 0x03bD, 0x03bE, 0x03bF, /* e8 */
  204.     0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, /* f0 */
  205.     0x03c8, 0x03c9, 0x03cA, 0x03cB, 0x03cC, 0x03cD, 0x03cE, 0xfffd  /* f8 */
  206. };
  207. struct x_to_unicode u_cp1254 = { /* Windows Turkey */
  208.     128, 0, X2U_CP, AL_ROMAN,"Windows Code Page 1254","cp1254", 0, NULL,
  209.     0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, /* 80 */
  210.     0x005e, 0x2031, 0x0160, 0x003c, 0x0152, 0xfffd, 0xfffd, 0xfffd, /* 88 */
  211.     0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2012, 0x2014, /* 90 */
  212.     0x007e, 0x2122, 0x0161, 0x003e, 0x0153, 0xfffd, 0xfffd, 0x0178, /* 98 */
  213.     0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
  214.     0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
  215.     0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
  216.     0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
  217.     0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  218.     0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  219.     0x011e, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
  220.     0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015e, 0x00DF,
  221.     0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  222.     0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  223.     0x011f, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
  224.     0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015f, 0x00FF
  225. };
  226. struct x_to_unicode u_cp1255 = { /* Windows Hebrew */
  227.     128, 0, X2U_CP, AL_ROMAN,"Windows Code Page 1255 (Hebrew)","cp1255",
  228.     0, NULL,
  229.     0x20AC, 0xFFFD, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
  230.     0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  231.     0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
  232.     0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  233.     0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7,
  234.     0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
  235.     0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
  236.     0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
  237.     0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
  238.     0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
  239.     0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3,
  240.     0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  241.     0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
  242.     0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
  243.     0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
  244.     0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd
  245. };
  246. struct x_to_unicode u_cp1256 = { /* Windows Arabic */
  247.     128, 0, X2U_CP, AL_ROMAN,"Windows Code Page 1256 (Arabic)","cp1256",
  248.     0, NULL,
  249.     0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
  250.     0x02c6, 0x2030, 0xfffd, 0x2039, 0x0152, 0x0686, 0x0698, 0xfffd, /* 88 */
  251.     0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, /* 90 */
  252.     0xfffd, 0x2122, 0xfffd, 0x003a, 0x0153, 0x200c, 0x200d, 0xfffd, /* 98 */
  253.     0x00A0, 0x060c, 0x00A2, 0x00A3, 0x00A4, 0x00a5, 0x00A6, 0x00A7, /* a0 */
  254.     0x00a8, 0x00A9, 0xfffd, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00af, /* a8 */
  255.     0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00b4, 0x00B5, 0x00B6, 0x00B7, /* b0 */
  256.     0x00b8, 0x00B9, 0x061b, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061f, /* b8 */
  257.     0xfffd, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* c0 */
  258.     0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, /* c8 */
  259.     0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7, /* d0 */
  260.     0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643, /* d8 */
  261.     0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7, /* e0 */
  262.     0x00e8, 0x00E9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef, /* e8 */
  263.     0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00F7, /* f0 */
  264.     0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0xfffd  /* f8 */
  265. };
  266. struct x_to_unicode u_cp1257 = { /* Windows Latin-4 */
  267.     128, 0, X2U_CP, AL_ROMAN,"Windows Code Page 1257","cp1257", 0, NULL,
  268.     0x20ac, 0xfffd, 0x201a, 0xfffd, 0x201e, 0x2026, 0x2020, 0x2021, /* 80 */
  269.     0xfffd, 0x2031, 0xfffd, 0x003c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 88 */
  270.     0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2012, 0x2014, /* 90 */
  271.     0xfffd, 0x2122, 0xfffd, 0x003e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 98 */
  272.     0x00A0, 0xfffd, 0x00A2, 0x00A3, 0x00A4, 0xfffd, 0x00A6, 0x00A7, /* a0 */
  273.     0x00d8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00c6, /* a8 */
  274.     0x00B0, 0x00B1, 0x00B2, 0x00B3, 0xfffd, 0x00B5, 0x00B6, 0x00B7, /* b0 */
  275.     0x00f8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00e6, /* b8 */
  276.     0x0104, 0x012e, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, /* c0 */
  277.     0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x00b7, /* c8 */
  278.     0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00D5, 0x00D6, 0x00D7, /* d0 */
  279.     0x0172, 0x0141, 0x015A, 0x016a, 0x00DC, 0x017b, 0x017d, 0x00DF, /* d8 */
  280.     0x0105, 0x012f, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, /* e0 */
  281.     0x010D, 0x00E9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, /* e8 */
  282.     0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00F5, 0x00F6, 0x00F7, /* f0 */
  283.     0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0xfffd  /* f8 */
  284. };
  285. struct x_to_unicode u_cp1258 = { /* Windows Viet Nam */
  286.     128, 0, X2U_CP, AL_ROMAN,"Windows Code Page 1258 (Viet Nam)","cp1258",
  287.     0, NULL,
  288.     0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, /* 80 */
  289.     0x02c6, 0x2030, 0xfffd, 0x2039, 0x0152, 0xfffd, 0xfffd, 0xfffd, /* 88 */
  290.     0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, /* 90 */
  291.     0x02dc, 0x2122, 0xfffd, 0x203a, 0x0153, 0xfffd, 0xfffd, 0x0178, /* 98 */
  292.     0x00A0, 0x00a1, 0x00A2, 0x00A3, 0x00A4, 0x00a5, 0x00A6, 0x00A7, /* a0 */
  293.     0x00a8, 0x00A9, 0x00aa, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00af, /* a8 */
  294.     0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00b4, 0x00B5, 0x00B6, 0x00B7, /* b0 */
  295.     0x00b8, 0x00B9, 0x00ba, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00bf, /* b8 */
  296.     0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00C4, 0x00C5, 0x00c6, 0x00c7, /* c0 */
  297.     0x00c8, 0x00C9, 0x00ca, 0x00cb, 0x0300, 0x00cd, 0x00ce, 0x00cf, /* c8 */
  298.     0x0110, 0x00d1, 0x0309, 0x00d3, 0x00d4, 0x01a0, 0x00D6, 0x00D7, /* d0 */
  299.     0x00d8, 0x00d9, 0x00da, 0x00db, 0x00DC, 0x01af, 0x0303, 0x00DF, /* d8 */
  300.     0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00E4, 0x00E5, 0x00e6, 0x00d7, /* e0 */
  301.     0x00e8, 0x00E9, 0x00ea, 0x00eb, 0x0301, 0x00ed, 0x00ee, 0x00ef, /* e8 */
  302.     0x0111, 0x00f1, 0x0323, 0x00f3, 0x00f4, 0x01a1, 0x00F6, 0x00F7, /* f0 */
  303.     0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x01b0, 0x20ab, 0x00ff  /* f8 */
  304. };
  305. struct x_to_unicode u_cp37 = { /* EBCDIC U.S. */
  306.     256, 0, X2U_CP, AL_ROMAN,"Code Page 037 EBCDIC (U.S.)","cp037", 0, NULL,
  307.     0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F,
  308.     0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
  309.     0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087,
  310.     0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F,
  311.     0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B,
  312.     0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007,
  313.     0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
  314.     0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A,
  315.     0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5,
  316.     0x00E7, 0x00F1, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C,
  317.     0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF,
  318.     0x00EC, 0x00DF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC,
  319.     0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5,
  320.     0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F,
  321.     0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF,
  322.     0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022,
  323.     0x00D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
  324.     0x0068, 0x0069, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1,
  325.     0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070,
  326.     0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4,
  327.     0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
  328.     0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE,
  329.     0x005E, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC,
  330.     0x00BD, 0x00BE, 0x005B, 0x005D, 0x00AF, 0x00A8, 0x00B4, 0x00D7,
  331.     0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  332.     0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5,
  333.     0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050,
  334.     0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF,
  335.     0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
  336.     0x0059, 0x005A, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5,
  337.     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  338.     0x0038, 0x0039, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0x009F
  339. };
  340. /* Other proprietary 8-bit sets */
  341. struct x_to_unicode u_decmcs = {
  342.     96, 32, X2U_DEC|X2U_STD, AL_ROMAN, "DEC Multinational", "dec-mcs", 0, "%5",
  343.     0x00A0, 0x00A1, 0x00A2, 0x00A3, 0xfffd, 0x00A5, 0xfffd, 0x00A7,
  344.     0x00A4, 0x00A9, 0x00AA, 0x00AB, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  345.     0x00B0, 0x00B1, 0x00B2, 0x00B3, 0xfffd, 0x00B5, 0x00B6, 0x00B7,
  346.     0xfffd, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0xfffd, 0x00BF,
  347.     0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
  348.     0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
  349.     0xfffd, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0152,
  350.     0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0xfffd, 0x00DF,
  351.     0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
  352.     0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
  353.     0xfffd, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0153,
  354.     0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0xfffd, 0x00FF
  355. };
  356. struct x_to_unicode u_hproman8 = {
  357.     96, 32, X2U_STD, AL_ROMAN, "Hewlett Packard Roman 8", "hp-roman8", 0, NULL,
  358.     0x00a0, 0x00c0, 0x00c2, 0x00c8, 0x00ca, 0x00cb, 0x00ce, 0x00cf,
  359.     0x00b4, 0x00a6, 0x00a9, 0x00a8, 0x00ac, 0x00d9, 0x00db, 0x20a4,
  360.     0x00af, 0x00dd, 0x00fd, 0x00b0, 0x00c7, 0x00e7, 0x00d1, 0x00f1,
  361.     0x00a1, 0x00bf, 0x00a4, 0x00a3, 0x00a5, 0x00a7, 0x0192, 0x00a2,
  362.     0x00e2, 0x00ea, 0x00f4, 0x00fb, 0x00e1, 0x00e9, 0x00f3, 0x00fa,
  363.     0x00e0, 0x00e8, 0x00f2, 0x00f9, 0x00e4, 0x00eb, 0x00f6, 0x00fc,
  364.     0x00c5, 0x00ee, 0x00d8, 0x00c6, 0x00e5, 0x00ed, 0x00f8, 0x00e6,
  365.     0x00c4, 0x00ec, 0x00d6, 0x00dc, 0x00c9, 0x00ef, 0x00df, 0x00d4,
  366.     0x00c1, 0x00c3, 0x00e3, 0x00d0, 0x00f0, 0x00cd, 0x00cc, 0x00d3,
  367.     0x00d2, 0x00d5, 0x00f5, 0x0160, 0x0161, 0x00da, 0x00b8, 0x00ff,
  368.     0x00de, 0x00fe, 0x00b7, 0x00b5, 0x00b6, 0x00be, 0x2015, 0x00bc,
  369.     0x00bd, 0x00aa, 0x00ba, 0x00ab, 0x2588, 0x00bb, 0x00b1, 0xfffd
  370. };
  371. struct x_to_unicode u_dgi = {
  372.  96,32,X2U_STD,AL_ROMAN,"Data General International","dg-international",0,NULL,
  373.     0x00a0, 0x00ac, 0x00bd, 0x00b5, 0x00b2, 0x00b3, 0x00a4, 0x00a2,
  374.     0x00a3, 0x00aa, 0x00ba, 0x00a1, 0x00bf, 0x00a9, 0x00ae, 0x2021,
  375.     0x00bb, 0x00ab, 0x00b6, 0x2122, 0x0192, 0x00a5, 0x00b1, 0x2264,
  376.     0x2265, 0x00b7, 0x00b8, 0x00a7, 0x00b0, 0x00a8, 0x00b4, 0x2191,
  377.     0x00c1, 0x00c0, 0x00c2, 0x00c4, 0x00c3, 0x00c5, 0x00c6, 0x00c7,
  378.     0x00c9, 0x00c8, 0x00ca, 0x00cb, 0x00cd, 0x00cc, 0x00ce, 0x00cf,
  379.     0x00d1, 0x00d3, 0x00d2, 0x00d4, 0x00d6, 0x00d5, 0x00d8, 0x0276,
  380.     0x00da, 0x00d9, 0x00db, 0x00dc, 0xfffd, 0x0178, 0xfffd, 0xfffd,
  381.     0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e6, 0x00e7,
  382.     0x00e9, 0x00e8, 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef,
  383.     0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00f8, 0x0153,
  384.     0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x00df, 0x00ff, 0xfffd, 0x2588
  385. };
  386. struct x_to_unicode u_nextstep = {
  387.     128, 0, 0, AL_ROMAN,"NeXTSTEP Multinational","next-multinational",0,NULL,
  388.     0x00a0, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c7,
  389.     0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
  390.     0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d9,
  391.     0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00b5, 0x00d7, 0x00f7,
  392.     0x00a9, 0x00a1, 0x00a2, 0x00a3, 0x2044, 0x00a5, 0x0192, 0x00a7,
  393.     0x00a4, 0x2019, 0x201c, 0x00ab, 0x2039, 0x203a, 0xfb01, 0xfb02,
  394.     0x00ae, 0x2013, 0x2020, 0x2021, 0x00b7, 0x00a6, 0x00b6, 0x2022,
  395.     0x201a, 0x201e, 0x201d, 0x00bb, 0x2026, 0x2030, 0x00ac, 0x00bf,
  396.     0x00b9, 0x02cb, 0x00b4, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9,
  397.     0x00a8, 0x00b2, 0x02da, 0x00b8, 0x00b3, 0x02dd, 0x02db, 0x02c7,
  398.     0x2014, 0x00b1, 0x00bc, 0x00bd, 0x00be, 0x00e0, 0x00e1, 0x00e2,
  399.     0x00e3, 0x00e4, 0x00e5, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb,
  400.     0x00ec, 0x00c6, 0x00ed, 0x00aa, 0x00ee, 0x00ef, 0x00f0, 0x00f1,
  401.     0x0141, 0x00d8, 0x0152, 0x00ba, 0x00f2, 0x00f3, 0x00f4, 0x00f5,
  402.     0x00f6, 0x00e6, 0x00f9, 0x00fa, 0x00fb, 0x0131, 0x00fc, 0x00fd,
  403.     0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x00ff, 0xfffd, 0xfffd
  404. };
  405. struct x_to_unicode u_maclatin = {
  406.     128, 0, 0, AL_ROMAN,"Macintosh Latin","maclatin", 0, NULL,
  407.     0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1,
  408.     0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8,
  409.     0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3,
  410.     0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC,
  411.     0x00DD, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF,
  412.     0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8,
  413.     0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211,
  414.     0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x00E6, 0x00F8,
  415.     0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB,
  416.     0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153,
  417.     0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA,
  418.     0x00FF, 0x0178, 0x2044, 0x00A4, 0x00D0, 0x00F0, 0x00DE, 0x00FE,
  419.     0x00FD, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1,
  420.     0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4,
  421.     0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC,
  422.     0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7
  423. };
  424. struct x_to_unicode u_quickdraw = {
  425.     128, 0, 0, AL_ROMAN,"QuickDraw","quickdraw", 0, NULL,
  426.     0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1,
  427.     0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8,
  428.     0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3,
  429.     0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC,
  430.     0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF,
  431.     0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8,
  432.     0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211,
  433.     0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8,
  434.     0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB,
  435.     0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153,
  436.     0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA,
  437.     0x00FF, 0x0178, 0x2044, 0x00A4, 0x2039, 0x203A, 0xFB01, 0xFB02,
  438.     0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1,
  439.     0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4,
  440.     0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC,
  441.     0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7
  442. };
  443. /* DEC special graphics / technical sets for VT emulation */
  444. #ifdef KERMITFONT
  445. struct x_to_unicode u_dectech = {
  446.     94, 33, X2U_DEC|X2U_STD,AL_ROMAN,"DEC Technical", "dec-technical", 0, ">",
  447.             0xE400, 0x250c, 0x2500, 0x2320, 0x2321, 0x2502, 0xE204,
  448.     0xE203, 0xE209, 0xE208, 0xE202, 0xE201, 0xE207, 0xE206, 0xE200,
  449.     0xE205, 0xE20D, 0xE20C, 0x2572, 0x2571, 0xE20E, 0xE20F, 0x232a,
  450.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2264, 0x2260, 0x2265, 0x222b,
  451.     0x2234, 0x221d, 0x221e, 0x00f7, 0x2206, 0x2207, 0x03a6, 0x0393,
  452.     0x223c, 0x2243, 0x0398, 0x00d7, 0x039b, 0x21d4, 0x21d2, 0x2261,
  453.     0x220f, 0x03a8, 0xE401, 0x03a3, 0xFFFD, 0xfffd, 0x221a, 0x03a9,
  454.     0x039e, 0x03d2, 0x2282, 0x2283, 0x2229, 0x222a, 0x2227, 0x2228,
  455.     0x00ac, 0x03b1, 0x03b2, 0x03c7, 0x03b4, 0x03b5, 0x03c6, 0x03b3,
  456.     0x03b7, 0x03b9, 0x03b8, 0x03ba, 0x03bb, 0xFFFD, 0x03bd, 0x2202,
  457.     0x03c0, 0x03c8, 0x03c1, 0x03c3, 0x03c4, 0xFFFD, 0x0192, 0x03c9,
  458.     0x03be, 0x03c5, 0x03b6, 0x2190, 0x2191, 0x2192, 0x2193
  459. };
  460. #else
  461. struct x_to_unicode u_dectech = {
  462.     94, 33, X2U_DEC|X2U_STD,AL_ROMAN,"DEC Technical", "dec-technical", 0, ">",
  463.             0x221a, 0x250c, 0x2500, 0x2320, 0x2321, 0x2502, 0x2308, /* 21-27 */
  464.     0x230a, 0x2309, 0x230b, 0x256d, 0x2570, 0x256e, 0x256f, 0x2525, /* 28-2f */
  465.     0x251d, 0x2211, 0x2211, 0x2572, 0x2571, 0x231d, 0x231f, 0x232a, /* 30-37 */
  466.     0x005b, 0x2022, 0x005d, 0x00b1, 0x2264, 0x2260, 0x2265, 0x222b, /* 38-3f */
  467.     0x2234, 0x221d, 0x221e, 0x00f7, 0x25b3, 0x25bd, 0x03a6, 0x0393, /* 40-47 */
  468.     0x223c, 0x2243, 0x0398, 0x00d7, 0x039b, 0x21d4, 0x21d2, 0x2261, /* 48-4f */
  469.     0x220f, 0x03a8, 0x2218, 0x2211, 0x00a7, 0x00b6, 0x221a, 0x03a9, /* 50-57 */
  470.     0x039e, 0x03d2, 0x2282, 0x2283, 0x2229, 0x222a, 0x2227, 0x2228, /* 58-5f */
  471.     0x00ac, 0x03b1, 0x03b2, 0x03c7, 0x03b4, 0x03b5, 0x03c6, 0x03b3, /* 60-67 */
  472.     0x03b7, 0x03b9, 0x03b8, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x2202, /* 68-6f */
  473.     0x03c0, 0x03c8, 0x03c1, 0x03c3, 0x03c4, 0x0020, 0x0192, 0x03c9, /* 70-77 */
  474.     0x03be, 0x03c5, 0x03b6, 0x2190, 0x2191, 0x2192, 0x2193          /* 78-7e */
  475. };
  476. #endif /* KERMITFONT */
  477. #ifdef KERMITFONT
  478. struct x_to_unicode u_decspec = {
  479.     94,33,X2U_DEC|X2U_STD,AL_ROMAN,"DEC Special Graphics","dec-special",0,"0",
  480.             0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  481.     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
  482.     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  483.     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
  484.     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  485.     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
  486.     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  487.     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
  488.     0x2666, 0x2591, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0, 0x00b1,
  489.     0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 0xE311,
  490.     0xE313, 0xE315, 0xE317, 0xE319, 0x251c, 0x2524, 0x2534, 0x252c,
  491.     0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3, 0x00B7
  492. };
  493. #else
  494. struct x_to_unicode u_decspec = {
  495.     94,33,X2U_DEC|X2U_STD,AL_ROMAN,"DEC Special Graphics","dec-special",0,"0",
  496.             0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  497.     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
  498.     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  499.     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
  500.     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  501.     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
  502.     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  503.     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
  504.     0x2666, 0x2591, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0, 0x00b1,
  505.     0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 0x2594,
  506.     0x2500, 0x2500, 0x2500, 0x2500, 0x251c, 0x2524, 0x2534, 0x252c,
  507.     0x2502, 0x2264, 0x2265, 0x03a0, 0x2260, 0x00a3, 0x00B7
  508. };
  509. #endif /* KERMITFONT */
  510. /*
  511.   Hazeltine 1500/1520 graphic set.  Includes several approximations:
  512.    . (0,9) should be heavy black right arrow.  Unicode has one of these
  513.      at U+27A1 but...
  514.    . (3,9) should be heavy black down arrow; Unicode doesn't have one.
  515.      So we use the white versions of the heavy arrows instead.
  516.    . (1,9) the letters "Pe" in one cell, doesn't exist in Unicode.
  517.      Substitution is just "P".
  518. */
  519. struct x_to_unicode u_hz1500 = {
  520.     94,33,X2U_STD,AL_ROMAN,"Hazeltime Graphics","hz1500-graphics",0,"0",
  521. /*     0       1       2       3       4       5       6       7         */
  522.             0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 0 */
  523.     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, /* 1 */
  524.     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 2 */
  525.     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, /* 3 */
  526.     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4 */
  527.     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, /* 5 */
  528.     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 6 */
  529.     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, /* 7 */
  530.     0x2500, 0x2502, 0x253c, 0x2534, 0x252c, 0x2514, 0x250c, 0x00b1, /* 8 */
  531.     0x21e8, 0x0050, 0x00f7, 0x21e9, 0x2510, 0x2518, 0x251c, 0x2524, /* 9 */
  532.     0x0070, 0x0071, 0x0072, 0x250c, 0x0074, 0x0075, 0x0076, 0x0077, /* a */
  533.     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e     /* b */
  534. };
  535. #ifdef KERMITFONT
  536. struct x_to_unicode u_heath19g = {
  537.     94,33,X2U_STD,AL_ROMAN,"Heath-19 Special Graphics","h19-special",0,NULL,
  538.             0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  539.     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
  540.     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  541.     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
  542.     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  543.     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
  544.     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  545.     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x25cf, 0xe30b,
  546.     0x2502, 0x2500, 0x253c, 0x2510, 0x2518, 0x2514, 0x250c, 0x00b1,
  547.     0x2192, 0x2592, 0x00f7, 0x2193, 0xe321, 0xe320, 0xe322, 0xe328,
  548.     0x2580, 0xe325, 0xe30a, 0x252c, 0x2524, 0x2534, 0x251c, 0x2573,
  549.     0x2571, 0x2572, 0xe311, 0xe319, 0xe300, 0xe309, 0x00b6
  550. };
  551. #else
  552. struct x_to_unicode u_heath19g = {
  553.     94,33,X2U_STD,AL_ROMAN,"Heath-19 Special Graphics","h19-special",0,NULL,
  554.             0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
  555.     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
  556.     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
  557.     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
  558.     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
  559.     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
  560.     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
  561.     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x25cf, 0x25e5,
  562.     0x2502, 0x2500, 0x253c, 0x2510, 0x2518, 0x2514, 0x250c, 0x00b1,
  563.     0x2192, 0x2592, 0x00f7, 0x2193, 0x2590, 0x258c, 0x258c, 0x2590,
  564.     0x2580, 0x2590, 0x25e4, 0x252c, 0x2524, 0x2534, 0x251c, 0x2573,
  565.     0x2571, 0x2572, 0x2500, 0x2500, 0x2502, 0x2502, 0x00b6
  566. };
  567. #endif /* KERMITFONT */
  568. /* DG Graphic sets - "KERMITFONT" these later... */
  569. /* Missing,    backwards question mark
  570.    eighth note
  571.    "DT" control pic
  572.    horizontal scan lines
  573. */
  574. struct x_to_unicode u_dgspec = { /* Needs to be checked */
  575.     94, 33, X2U_STD,AL_ROMAN,"DG Special Graphics","dg-specialgraphics",0,NULL,
  576.             0xfffd, 0xfffd, 0x2424, 0x2594, 0x2594, 0x2581, 0x2581,
  577.     0x25a1, 0x263a, 0x263b, 0x2665, 0x2663, 0x2660, 0x25cf, 0x25d8,
  578.     0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266c, 0x263c, 0x2195,
  579.     0x2583, 0x21a8, 0x231e, 0x2194, 0x2207, 0x00ff, 0x20a7, 0x00aa,
  580.     0x00ba, 0x231c, 0x231d, 0x2591, 0x2591, 0x2593, 0x2561, 0x2562,
  581.     0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b,
  582.     0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550,
  583.     0x256c, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552,
  584.     0x2553, 0x256b, 0x256a, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
  585.     0x0393, 0x03c0, 0x03a3, 0x03a6, 0x0398, 0x03d5, 0x03b5, 0x03a0,
  586.     0x039e, 0x00b7, 0x03b7, 0x25a0, 0x0178, 0xfffd, 0xfffd, 0xfffd,
  587.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd
  588. };
  589. /* Missing: arrow-to-line, various orientations */
  590. struct x_to_unicode u_dgline = {
  591.     94, 33, X2U_STD,AL_ROMAN,"DG Line Drawing","dg-linedrawing",0,NULL,
  592.             0x250c, 0x2510, 0x2514, 0x2518, 0x252c, 0x2524, 0x251c,
  593.     0x2534, 0x253c, 0x2502, 0x2500, 0x219f, 0x21e5, 0x21e4, 0x21a1,
  594.     0x2506, 0x250f, 0x2513, 0x2517, 0x251b, 0x2533, 0x252b, 0x2523,
  595.     0x253b, 0x254b, 0x2503, 0x2501, 0x2504, 0x00f7, 0x00a2, 0x2122,
  596.     0x00ae, 0x00a9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  597.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  598.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  599.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  600.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  601.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  602.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  603.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd
  604. };
  605. struct x_to_unicode u_dgword = {
  606.     94, 33, X2U_STD,AL_ROMAN,"DG Word Processing","dg-wordprocessing",0,NULL,
  607.             0x2308, 0x230a, 0x2309, 0x230b, 0x0192, 0x223c, 0x2202,
  608.     0xfffd, 0xfffd, 0x2320, 0x2321, 0x221a, 0xfffd, 0x221e, 0x221d,
  609.     0x2070, 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x2075, 0x2076, 0x2077,
  610.     0x2078, 0x2079, 0x2260, 0xfffd, 0x21ef, 0xfffd, 0x21e5, 0x00b7,
  611.     0x203c, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
  612.     0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
  613.     0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
  614.     0x03c9, 0x03a9, 0x0394, 0x00b6, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  615.     0x22a6, 0x25c6, 0x25b6, 0x25b7, 0x25c0, 0x25b2, 0x25bc, 0x2327,
  616.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x25e3, 0x25e2,
  617.     0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087,
  618.     0x2088, 0x2089, 0xfffd, 0x2191, 0x2192, 0x2190, 0x2193
  619. };
  620. /* HP Graphic sets - "KERMITFONT" these later... */
  621. /*
  622.   Many are missing from Unicode,
  623.   Single-to-triple-line box-drawing characters.
  624.   Double/double cross & some others.
  625. */
  626. struct x_to_unicode u_hpline = { /* Needs to be checked */
  627.     94, 33, X2U_STD,AL_ROMAN,"HP Line Drawing Graphics",
  628.     "hp-line-drawing",0,NULL,
  629.             0x2520, 0x2528, 0x252f, 0x2537, 0x255f, 0x2562, 0x2564,
  630.     0x2567, 0x2551, 0x2542, 0x253f, 0x2550, 0x230a, 0x2502, 0x253c,
  631.     0x254b, 0x2523, 0x252b, 0x2533, 0x253b, 0x251c, 0x2524, 0x252c,
  632.     0x2534, 0x2550, 0x2503, 0x2501, 0x256b, 0x2308, 0x256a, 0x256c,
  633.     0x255e, 0x2517, 0x2549, 0x2588, 0x258c, 0x258e, 0x2514, 0x2518,
  634.     0x2510, 0x2555, 0x252c, 0x2556, 0x2556, 0x2547, 0x2548, 0x2555,
  635.     0x230b, 0x250f, 0x250c, 0x251b, 0x2510, 0x2524, 0x254a, 0x2513,
  636.     0x2584, 0x2309, 0x2582, 0x2561, 0x2504, 0x2559, 0x2576, 0x2565,
  637.     0x255e, 0x2517, 0x2549, 0x2588, 0x258c, 0x258e, 0x2514, 0x2518,
  638.     0x2510, 0x2555, 0x252c, 0x2556, 0x2556, 0x2547, 0x2548, 0x2555,
  639.     0x230b, 0x250f, 0x250c, 0x251b, 0x2510, 0x2524, 0x254a, 0x2513,
  640.     0x2584, 0x2309, 0x2582, 0x2561, 0x2504, 0x2559, 0x2576
  641. };
  642. struct x_to_unicode u_hpmath = {
  643.     94, 33, X2U_STD,AL_ROMAN,"HP Math/Technical","hp-math/technical",0,NULL,
  644.             0x221a, 0x2223, 0x00a7, 0x2207, 0x00b1, 0x03b1, 0x2320,
  645.     0x00f7, 0x2243, 0x03a0, 0x0393, 0x03c8, 0x2261, 0x03a6, 0x039e,
  646.     0x2070, 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x2075, 0x2076, 0x2077,
  647.     0x2078, 0x2079, 0x03a9, 0x039b, 0x221e, 0x2321, 0x2020, 0x03a3,
  648.     0x00b6, 0x03b1, 0x03b2, 0x03c8, 0x03d5, 0x03b5, 0x2202, 0x03bb,
  649.     0x03b7, 0x03b9, 0x0398, 0x03ba, 0x03c9, 0x03bc, 0x03bd, 0x03c1,
  650.     0x03c0, 0x03b3, 0x03b8, 0x03c3, 0x03c4, 0x03be, 0x0394, 0x03b4,
  651.     0x00d7, 0x03c5, 0x03b6, 0x2191, 0x2192, 0x03d2, 0x2190, 0x2193,
  652.     0x00b6, 0x03b1, 0x03b2, 0x03c8, 0x03d5, 0x03b5, 0x2202, 0x03bb,
  653.     0x03b7, 0x03b9, 0x0398, 0x03ba, 0x03c9, 0x03bc, 0x03bd, 0x03c1,
  654.     0x03c0, 0x03b3, 0x03b8, 0x03c3, 0x03c4, 0x03be, 0x0394, 0x03b4,
  655.     0x00d7, 0x03c5, 0x03b6, 0x2191, 0x2192, 0x03d2, 0x2190
  656. };
  657. struct x_to_unicode u_tvig = {
  658.     15,65,0,0,"Televideo Special Graphics","tvi-special",0,NULL,
  659.     0x2570, 0x256D, 0x256E, 0x256F, 0x2514, 0x250C, 0x2510,
  660.     0x2518, 0x253C, 0x2502, 0x2500, 0x2524, 0x251C, 0x252C, 0x2534
  661. };
  662. struct x_to_unicode u_wyse_gn = {
  663. #ifdef COMMENT
  664.     16,16,0,0,"Wyse Normal-Mode Graphics","wy-graphics-normal",0,NULL,
  665.     0x252C, 0x2514, 0x250C, 0x2510, 0x251C, 0x2518, 0x2502, 0x2588,
  666.     0x253C, 0x2524, 0x2500, 0x2592, 0x2550, 0x2534, 0x2551, 0x2591
  667. #else
  668.     80,48,0,0,"Wyse Normal-Mode Graphics","wy-graphics-normal",0,NULL,
  669.     0x252C, 0x2514, 0x250C, 0x2510, 0x251C, 0x2518, 0x2502, 0x2588,
  670.     0x253C, 0x2524, 0x2500, 0x2592, 0x2550, 0x2534, 0x2551, 0x2591,
  671.     0x252C, 0x2514, 0x250C, 0x2510, 0x251C, 0x2518, 0x2502, 0x2588,
  672.     0x253C, 0x2524, 0x2500, 0x2592, 0x2550, 0x2534, 0x2551, 0x2591,
  673.     0x252C, 0x2514, 0x250C, 0x2510, 0x251C, 0x2518, 0x2502, 0x2588,
  674.     0x253C, 0x2524, 0x2500, 0x2592, 0x2550, 0x2534, 0x2551, 0x2591,
  675.     0x252C, 0x2514, 0x250C, 0x2510, 0x251C, 0x2518, 0x2502, 0x2588,
  676.     0x253C, 0x2524, 0x2500, 0x2592, 0x2550, 0x2534, 0x2551, 0x2591,
  677.     0x252C, 0x2514, 0x250C, 0x2510, 0x251C, 0x2518, 0x2502, 0x2588,
  678.     0x253C, 0x2524, 0x2500, 0x2592, 0x2550, 0x2534, 0x2551, 0x2591
  679. #endif /* COMMENT */
  680. };
  681. struct x_to_unicode u_wyse_g1 = {
  682.     79,48,0,0,"Wyse Graphics 1","wy-graphics-1",0,NULL,
  683.     0x2070, 0x00B9, 0x00B2, 0x00B3, 0x2074, 0x2075, 0x2075, 0x2077,
  684.     0x2078, 0x2079, 0xFFFD, 0xFFFD, 0x25BA, 0x25C4, 0x25B2, 0x25BC,
  685.     0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
  686.     0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
  687.     0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
  688.     0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
  689.     0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087,
  690.     0x2088, 0x2089, 0x2518, 0x2510, 0x250C, 0x2514, 0x253C, 0x258C,
  691.     0x2590, 0x2500, 0x2584, 0x2580, 0x251C, 0x2524, 0x2534, 0x252C,
  692.     0x2502, 0xFFFD, 0x256E, 0x256F, 0x2570, 0x256D, 0x258C
  693. };
  694. struct x_to_unicode u_wyse_g2 = {
  695.     41,64,0,0,"Wyse Graphics 2","wy-graphics-2",0,NULL,
  696.     0x250C, 0xFFFD, 0xFFFD, 0xFFFD, 0x2510, 0xFFFD, 0xFFFD, 0xFFFD,
  697.     0x2514, 0xFFFD, 0xFFFD, 0xFFFD, 0x2518, 0xFFFD, 0xFFFD, 0xFFFD,
  698.     0x252C, 0xFFFD, 0xFFFD, 0xFFFD, 0x2524, 0xFFFD, 0xFFFD, 0xFFFD,
  699.     0x251C, 0xFFFD, 0xFFFD, 0xFFFD, 0x2534, 0xFFFD, 0xFFFD, 0xFFFD,
  700.     0x2500, 0xFFFD, 0xFFFD, 0xFFFD, 0x2502, 0xFFFD, 0xFFFD, 0xFFFD,
  701.     0x253C
  702. };
  703. #ifdef KERMITFONT
  704. struct x_to_unicode u_wyse_g3 = {
  705.     31,65,0,0,"Wyse Graphics 3","wy-graphics-3",0,NULL,
  706.     0x2570, 0x256D, 0x256E, 0x256F, 0x2514, 0x250C, 0x2510,
  707.     0x2518, 0x253C, 0x2502, 0x2500, 0x2524, 0x251C, 0x252C, 0x2534,
  708.     0xE311, 0xE319, 0x2666, 0xE328, 0xE321, 0xE320, 0xE322, 0x2590,
  709.     0x2584, 0x258C, 0x2580, 0xE323, 0xE326, 0xE327, 0xE329, 0x258C
  710. };
  711. #else
  712. struct x_to_unicode u_wyse_g3 = {
  713.     31,65,0,0,"Wyse Graphics 3","wy-graphics-3",0,NULL,
  714.     0x2570, 0x256D, 0x256E, 0x256F, 0x2514, 0x250C, 0x2510,
  715.     0x2518, 0x253C, 0x2502, 0x2500, 0x2524, 0x251C, 0x252C, 0x2534,
  716.     0x2500, 0x2500, 0x2666, 0x2590, 0x2590, 0x258c, 0x258c, 0x2590,
  717.     0x2584, 0x258C, 0x2580, 0x2588, 0x2588, 0x2588, 0x2588, 0x258C
  718. };
  719. #endif /* KERMITFONT */
  720. /*
  721.   QNX Console  --  This is exactly the same as CP437 except for the code
  722.   point at 0xEE (epsilon vs element-of), which I think was just a mistake
  723.   in reading glyphs by the QNX people, but who knows.  Also the glyph at
  724.   0xED might be a fi (as it is in CP437, and as I have it here) or it might
  725.   be a null-set symbol.
  726. */
  727. struct x_to_unicode u_qnxgrph = {
  728.     128,0,0,0,"QNX Console","qnx-console",0,NULL,
  729.     0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, /* 128 */
  730.     0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, /* 136 */
  731.     0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, /* 144 */
  732.     0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, /* 152 */
  733.     0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, /* 160 */
  734.     0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, /* 168 */
  735.     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 176 */
  736.     0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, /* 184 */
  737.     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, /* 192 */
  738.     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, /* 200 */
  739.     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, /* 208 */
  740.     0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, /* 216 */
  741.     0x221d, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, /* 224 */
  742.     0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x2208, 0x2229, /* 232 */
  743.     0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, /* 240 */
  744.     0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25ae, 0x00a0  /* 248 */
  745. };
  746. struct x_to_unicode u_snibrack = {
  747.     94, 33, 0, 0,"Siemens Nixdorf 97801 Brackets","sni-brackets",0,"w",
  748.             0x2590, 0x258c, 0x2584, 0x2580, 0x2590, 0x258c, 0x2584, /* a0-7 */
  749.     0x2580, 0x2329, 0x2327, 0x25af, 0x00b7, 0x25b9, 0x25c1, 0x003c, /* a8-f */
  750.     0x253b, 0x2533, 0x2523, 0x252b, 0x2329, 0x232a, 0x2304, 0x2303, /* b0-7 */
  751.     0x25e4, 0x25e5, 0x25e3, 0x25e2, 0x253f, 0x231b, 0x25cf, 0x25cb, /* b8-f */
  752.     0x2502, 0x2500, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, /* c0-7 */
  753.     0x252c, 0x2534, 0x253c, 0x2192, 0x2190, 0x2191, 0x2193, 0x2575, /* c8-f */
  754.     0x2577, 0x25d4, 0x256d, 0x256e, 0x2570, 0x256f, 0x251c, 0x2524, /* d0-7 */
  755.     0x252c, 0x2534, 0x253c, 0x253c, 0x2592, 0x2591, 0x2592, 0x2593, /* d8-f */
  756.     0x2503, 0x2501, 0x250f, 0x2513, 0x2517, 0x251b, 0x2523, 0x252b, /* e0-7 */
  757.     0x2533, 0x253b, 0x254b, 0x279e, 0x2190, 0x2191, 0x2193, 0x2579, /* e8-f */
  758.     0x257b, 0x2261, 0x2554, 0x2557, 0x255a, 0x255d, 0x2523, 0x252b, /* f0-7 */
  759.     0x2533, 0x253b, 0x254b, 0x254b, 0x0393, 0x03c3, 0x03c4          /* f8-f */
  760. };
  761. struct x_to_unicode u_sniblanks = {
  762.     94, 33, 0, 0,"Siemens Nixdorf 97801 Blanks","sni-blanks",0,"y",
  763.             0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* a0-7 */
  764.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* a8-f */
  765.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* b0-7 */
  766.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* b8-f */
  767.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* c0-7 */
  768.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* c8-f */
  769.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* d0-7 */
  770.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* d8-f */
  771.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* e0-7 */
  772.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* e8-f */
  773.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, /* f0-7 */
  774.     0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020          /* f8-f */
  775. };
  776. struct x_to_unicode u_snifacet = {
  777.     94, 33, 0, 0,"Siemens Nixdorf 97801 Facet","sni-facet",0,"c",
  778.             0x0020, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2587, /* a1-a7 */
  779.     0x005f, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, /* a8-af */
  780.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* b0-b7 */
  781.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* b8-bf */
  782.     0x2503, 0x2501, 0x250f, 0x2513, 0x2517, 0x251b, 0x2523, 0x252b, /* c0-c7 */
  783.     0x2533, 0x253b, 0x254b, 0x258f, 0x2595, 0xfffd, 0xfffd, 0xfffd, /* c8-cf */
  784.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* d0-d7 */
  785.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2591, 0x2591, 0x2588, /* d8-df */
  786.     0x2503, 0x2501, 0x250f, 0x2513, 0x2517, 0x251b, 0x2523, 0x252b, /* e0-e7 */
  787.     0x2533, 0x253b, 0x254b, 0xfffd, 0xfffd, 0x2593, 0x2593, 0x0020, /* e8-ef */
  788.     0x2585, 0x2586, 0x2587, 0x2588, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* f0-f7 */
  789.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2594, 0x2594, 0xfffd          /* f8-fe */
  790. };
  791. struct x_to_unicode u_sniibm = {
  792.     94, 33, 0, 0,"Siemens Nixdorf 97801 IBM","sni-ibm",0,"v",
  793.             0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x25cf,
  794.     0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
  795.     0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x25c1, 0x2582, 0x21a8,
  796.     0x2191, 0x2193, 0x2192, 0x2190, 0x2319, 0x2194, 0x25b4, 0x25be,
  797.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* Hex */
  798.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* bytes */
  799.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  800.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  801.     0x2070, 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x2075, 0x2076, 0x2077,
  802.     0x2078, 0x2079, 0x207b, 0x207a, 0xfffd, 0xfffd, 0x2320, 0x2321,
  803.     0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087,
  804.     0x2088, 0x2089, 0x208b, 0x208a, 0x221e, 0x03b1, 0x03a6
  805. };
  806. struct x_to_unicode u_snieuro = {
  807.     94, 33, 0, 0,"Siemens Nixdorf 97801 Euro","sni-euro",0,"u",
  808.             0x00e0, 0x00e1, 0x00e2, 0x00e4, 0x00e5, 0x0105, 0x00e3,
  809.     0x0103, 0x00e6, 0x00e7, 0x010d, 0x0107, 0x00f0, 0x0111, 0x010f,
  810.     0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x011b, 0x0119, 0x011f, 0x0131,
  811.     0x00ee, 0x00ec, 0x01d0, 0x00ef, 0x0133, 0x013a, 0x0142, 0x013e,
  812.     0x0148, 0x0144, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f6, 0x00f5,
  813.     0x00f8, 0x0151, 0x0153, 0x00fe, 0x0159, 0x0155, 0x0161, 0x015b,
  814.     0x015f, 0x00df, 0x0163, 0x0165, 0x00f9, 0x00fa, 0x00fb, 0x00fc,
  815.     0x016f, 0x0171, 0x00fd, 0x00ff, 0x017e, 0x017a, 0x017c, 0x00c9,
  816.     0x00c5, 0x00c6, 0x00d0, 0x0130, 0x0132, 0x0167, 0x00d8, 0x0152,
  817.     0x00de, 0x00c4, 0x00d6, 0x00dc, 0x00a7, 0x0024, 0x00a3, 0x00ae,
  818.     0x00a9, 0x03a9, 0x00b5, 0x00b0, 0x00c7, 0x20a7, 0x03c0, 0x02d8,
  819.     0x00b4, 0x02dd, 0x00d1, 0x2514, 0x2518, 0x007e, 0x02c7
  820. };
  821. struct x_to_unicode u_smiley = {
  822.     32,0,X2U_CXG,0,"PC C0 Graphics","smiley-faces",0,NULL,
  823.     0x00a0, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
  824.     0x25d8, 0x25ef, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266c, 0x263c,
  825.     0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
  826.     0x2191, 0x2193, 0x2192, 0x2190, 0x2319, 0x2194, 0x25b2, 0x25bc
  827. };
  828. struct x_to_unicode u_c0pics = {
  829.     128,0,X2U_CXG,0,"C0/C1 Display Controls","display-controls",0,NULL,
  830.     0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407,
  831.     0x2408, 0x2409, 0x240a, 0x240b, 0x240c, 0x240d, 0x240e, 0x240f,
  832.     0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417,
  833.     0x2418, 0x2419, 0x241a, 0x241b, 0x241c, 0x241d, 0x241e, 0x241f,
  834.     0x2420, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  835.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  836.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  837.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  838.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  839.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  840.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  841.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  842.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  843.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  844.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  845.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2421
  846. };
  847. #ifdef KERMITFONT
  848. struct x_to_unicode u_c1pics = {
  849.     32,0,X2U_CXG,0,"C1 Display Controls","c1-display-controls",0,NULL,
  850.     0xe080, 0xe081, 0xe082, 0xe083, 0xe084, 0xe085, 0xe086, 0xe087,
  851.     0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xe08f,
  852.     0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, 0xe096, 0xe097,
  853.     0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, 0xe09d, 0xe09e, 0xe09f
  854. };
  855. #else
  856. struct x_to_unicode u_c1pics = {
  857.     32,0,X2U_CXG,0,"C1 Display Controls","c1-display-controls",0,NULL,
  858.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  859.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  860.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
  861.     0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd
  862. };
  863. #endif /* KERMITFONT */
  864. /* Blah-to-Unicode functions */
  865. USHORT
  866. #ifdef CK_ANSIC
  867. ascii_u(CHAR c)
  868. #else
  869. ascii_u(c) CHAR c;
  870. #endif /* CK_ANSIC */
  871. {
  872.     c &= 0x7f;
  873. /*
  874.   NOTE: Strict ANSI compilers complain about "<" and similar comparisons
  875.   between unsigned and signed quantities, as found in all the routines of
  876.   the "blah_u()" class -- casts must be added to squelch the warnings.
  877. */
  878.     if (c < u_ascii.offset)
  879.       return(c);
  880.     else if (c >= u_ascii.offset + u_ascii.size)
  881.       return(c);
  882.     else
  883.       return(u_ascii.map[c - u_ascii.offset]);
  884. }
  885. USHORT
  886. #ifdef CK_ANSIC
  887. british_u(CHAR c)
  888. #else
  889. british_u(c) CHAR c;
  890. #endif /* CK_ANSIC */
  891. {
  892.     c &= 0x7f;
  893.     if (c < u_british.offset)
  894.       return(c);
  895.     else if (c >= u_british.offset + u_british.size)
  896.       return(c);
  897.     else
  898.       return(u_british.map[c - u_british.offset]);
  899. }
  900. USHORT
  901. #ifdef CK_ANSIC
  902. dutch_u(CHAR c)
  903. #else
  904. dutch_u(c) CHAR c;
  905. #endif /* CK_ANSIC */
  906. {
  907.     c &= 0x7f;
  908.     if (c < u_dutch.offset)
  909.       return(c);
  910.     else if (c >= u_dutch.offset + u_dutch.size)
  911.       return(c);
  912.     else
  913.       return(u_dutch.map[c - u_dutch.offset]);
  914. }
  915. USHORT
  916. #ifdef CK_ANSIC
  917. finnish_u(CHAR c)
  918. #else
  919. finnish_u(c) CHAR c;
  920. #endif /* CK_ANSIC */
  921. {
  922.     c &= 0x7f;
  923.     if (c < u_finnish.offset)
  924.       return(c);
  925.     else if (c >= u_finnish.offset + u_finnish.size)
  926.       return(c);
  927.     else
  928.       return(u_finnish.map[c - u_finnish.offset]);
  929. }
  930. USHORT
  931. #ifdef CK_ANSIC
  932. french_u(CHAR c)
  933. #else
  934. french_u(c) CHAR c;
  935. #endif /* CK_ANSIC */
  936. {
  937.     c &= 0x7f;
  938.     if (c < u_french.offset)
  939.       return(c);
  940.     else if (c >= u_french.offset + u_french.size)
  941.       return(c);
  942.     else
  943.       return(u_french.map[c - u_french.offset]);
  944. }
  945. USHORT
  946. #ifdef CK_ANSIC
  947. fr_canadian_u(CHAR c)
  948. #else
  949. fr_canadian_u(c) CHAR c;
  950. #endif /* CK_ANSIC */
  951. {
  952.     c &= 0x7f;
  953.     if (c < u_fr_canadian.offset)
  954.       return(c);
  955.     else if (c >= u_fr_canadian.offset + u_fr_canadian.size)
  956.       return(c);
  957.     else
  958.       return(u_fr_canadian.map[c - u_fr_canadian.offset]);
  959. }
  960. USHORT
  961. #ifdef CK_ANSIC
  962. german_u(CHAR c)
  963. #else
  964. german_u(c) CHAR c;
  965. #endif /* CK_ANSIC */
  966. {
  967.     c &= 0x7f;
  968.     if (c < u_german.offset)
  969.       return(c);
  970.     else if (c >= u_german.offset + u_german.size)
  971.       return(c);
  972.     else
  973.       return(u_german.map[c - u_german.offset]);
  974. }
  975. USHORT
  976. #ifdef CK_ANSIC
  977. hungarian_u(CHAR c)
  978. #else
  979. hungarian_u(c) CHAR c;
  980. #endif /* CK_ANSIC */
  981. {
  982.     c &= 0x7f;
  983.     if (c < u_hungarian.offset)
  984.       return(c);
  985.     else if (c >= u_hungarian.offset + u_hungarian.size)
  986.       return(c);
  987.     else
  988.       return(u_hungarian.map[c - u_hungarian.offset]);
  989. }
  990. USHORT
  991. #ifdef CK_ANSIC
  992. italian_u(CHAR c)
  993. #else
  994. italian_u(c) CHAR c;
  995. #endif /* CK_ANSIC */
  996. {
  997.     c &= 0x7f;
  998.     if (c < u_italian.offset)
  999.       return(c);
  1000.     else if (c >= u_italian.offset + u_italian.size)
  1001.       return(c);
  1002.     else
  1003.       return(u_italian.map[c - u_italian.offset]);
  1004. }
  1005. USHORT
  1006. #ifdef CK_ANSIC
  1007. icelandic_u(CHAR c)
  1008. #else
  1009. icelandic_u(c) CHAR c;
  1010. #endif /* CK_ANSIC */
  1011. {
  1012.     c &= 0x7f;
  1013.     if (c < u_icelandic.offset)
  1014.       return(c);
  1015.     else if (c >= u_icelandic.offset + u_icelandic.size)
  1016.       return(c);
  1017.     else
  1018.       return(u_icelandic.map[c - u_icelandic.offset]);
  1019. }
  1020. USHORT
  1021. #ifdef CK_ANSIC
  1022. jis0201r_u(CHAR c)
  1023. #else
  1024. jis0201r_u(c) CHAR c;
  1025. #endif /* CK_ANSIC */
  1026. {
  1027.     c &= 0x7f;
  1028.     if (c < u_jis0201r.offset)
  1029.       return(c);
  1030.     else if (c >= u_jis0201r.offset + u_jis0201r.size)
  1031.       return(c);
  1032.     else
  1033.       return(u_jis0201r.map[c - u_jis0201r.offset]);
  1034. }
  1035. USHORT
  1036. #ifdef CK_ANSIC
  1037. jis0201k_u(CHAR c)
  1038. #else
  1039. jis0201k_u(c) CHAR c;
  1040. #endif /* CK_ANSIC */
  1041. {
  1042.     c &= 0x7f;
  1043.     if (c < u_jis0201k.offset)
  1044.       return(c);
  1045.     else if (c >= u_jis0201k.offset + u_jis0201k.size)
  1046.       return(c);
  1047.     else
  1048.       return(u_jis0201k.map[c - u_jis0201k.offset]);
  1049. }
  1050. USHORT
  1051. #ifdef CK_ANSIC
  1052. norwegian_u(CHAR c)
  1053. #else
  1054. norwegian_u(c) CHAR c;
  1055. #endif /* CK_ANSIC */
  1056. {
  1057.     c &= 0x7f;
  1058.     if (c < u_norwegian.offset)
  1059.       return(c);
  1060.     else if (c >= u_norwegian.offset + u_norwegian.size)
  1061.       return(c);
  1062.     else
  1063.       return(u_norwegian.map[c - u_norwegian.offset]);
  1064. }
  1065. USHORT
  1066. #ifdef CK_ANSIC
  1067. danish_u(CHAR c)
  1068. #else
  1069. danish_u(c) CHAR c;
  1070. #endif /* CK_ANSIC */
  1071. {
  1072.     c &= 0x7f;
  1073.     if (c < u_danish.offset)
  1074.       return(c);
  1075.     else if (c >= u_danish.offset + u_danish.size)
  1076.       return(c);
  1077.     else
  1078.       return(u_danish.map[c - u_danish.offset]);
  1079. }
  1080. USHORT
  1081. #ifdef CK_ANSIC
  1082. portuguese_u(CHAR c)
  1083. #else
  1084. portuguese_u(c) CHAR c;
  1085. #endif /* CK_ANSIC */
  1086. {
  1087.     c &= 0x7f;
  1088.     if (c < u_portuguese.offset)
  1089.       return(c);
  1090.     else if (c >= u_portuguese.offset + u_portuguese.size)
  1091.       return(c);
  1092.     else
  1093.       return(u_portuguese.map[c - u_portuguese.offset]);
  1094. }
  1095. USHORT
  1096. #ifdef CK_ANSIC
  1097. spanish_u(CHAR c)
  1098. #else
  1099. spanish_u(c) CHAR c;
  1100. #endif /* CK_ANSIC */
  1101. {
  1102.     c &= 0x7f;
  1103.     if (c < u_spanish.offset)
  1104.       return(c);
  1105.     else if (c >= u_spanish.offset + u_spanish.size)
  1106.       return(c);
  1107.     else
  1108.       return(u_spanish.map[c - u_spanish.offset]);
  1109. }
  1110. USHORT
  1111. #ifdef CK_ANSIC
  1112. swedish_u(CHAR c)
  1113. #else
  1114. swedish_u(c) CHAR c;
  1115. #endif /* CK_ANSIC */
  1116. {
  1117.     c &= 0x7f;
  1118.     if (c < u_swedish.offset)
  1119.       return(c);
  1120.     else if (c >= u_swedish.offset + u_swedish.size)
  1121.       return(c);
  1122.     else
  1123.       return(u_swedish.map[c - u_swedish.offset]);
  1124. }
  1125. USHORT
  1126. #ifdef CK_ANSIC
  1127. swiss_u(CHAR c)
  1128. #else
  1129. swiss_u(c) CHAR c;
  1130. #endif /* CK_ANSIC */
  1131. {
  1132.     c &= 0x7f;
  1133.     if (c < u_swiss.offset)
  1134.       return(c);
  1135.     else if (c >= u_swiss.offset + u_swiss.size)
  1136.       return(c);
  1137.     else
  1138.       return(u_swiss.map[c - u_swiss.offset]);
  1139. }
  1140. USHORT
  1141. #ifdef CK_ANSIC
  1142. ident_u(CHAR c)
  1143. #else /* CK_ANSIC */
  1144. ident_u(c) CHAR c;
  1145. #endif /* CK_ANSIC */
  1146. {
  1147.     return((USHORT)c);
  1148. }
  1149. USHORT
  1150. #ifdef CK_ANSIC
  1151. iso_8859_1_u(CHAR c)
  1152. #else
  1153. iso_8859_1_u(c) CHAR c;
  1154. #endif /* CK_ANSIC */
  1155. {
  1156.     c &= 0x7f;
  1157.     if (c < u_8859_1.offset)
  1158.       return(c);
  1159.     else if (c >= u_8859_1.offset + u_8859_1.size)
  1160.       return(c);
  1161.     else
  1162.       return(u_8859_1.map[c - u_8859_1.offset]);
  1163. }
  1164. USHORT
  1165. #ifdef CK_ANSIC
  1166. iso_8859_2_u(CHAR c)
  1167. #else
  1168. iso_8859_2_u(c) CHAR c;
  1169. #endif /* CK_ANSIC */
  1170. {
  1171.     c &= 0x7f;
  1172.     if (c < u_8859_2.offset)
  1173.       return(c);
  1174.     else if (c >= u_8859_2.offset + u_8859_2.size)
  1175.       return(c);
  1176.     else
  1177.       return(u_8859_2.map[c - u_8859_2.offset]);
  1178. }
  1179. USHORT
  1180. #ifdef CK_ANSIC
  1181. iso_8859_3_u(CHAR c)
  1182. #else
  1183. iso_8859_3_u(c) CHAR c;
  1184. #endif /* CK_ANSIC */
  1185. {
  1186.     c &= 0x7f;
  1187.     if (c < u_8859_3.offset)
  1188.       return(c);
  1189.     else if (c >= u_8859_3.offset + u_8859_3.size)
  1190.       return(c);
  1191.     else
  1192.       return(u_8859_3.map[c - u_8859_3.offset]);
  1193. }
  1194. USHORT
  1195. #ifdef CK_ANSIC
  1196. iso_8859_4_u(CHAR c)
  1197. #else
  1198. iso_8859_4_u(c) CHAR c;
  1199. #endif /* CK_ANSIC */
  1200. {
  1201.     c &= 0x7f;
  1202.     if (c < u_8859_4.offset)
  1203.       return(c);
  1204.     else if (c >= u_8859_4.offset + u_8859_4.size)
  1205.       return(c);
  1206.     else
  1207.       return(u_8859_4.map[c - u_8859_4.offset]);
  1208. }
  1209. USHORT
  1210. #ifdef CK_ANSIC
  1211. iso_8859_5_u(CHAR c)
  1212. #else
  1213. iso_8859_5_u(c) CHAR c;
  1214. #endif /* CK_ANSIC */
  1215. {
  1216.     c &= 0x7f;
  1217.     if (c < u_8859_5.offset)
  1218.       return(c);
  1219.     else if (c >= u_8859_5.offset + u_8859_5.size)
  1220.       return(c);
  1221.     else
  1222.       return(u_8859_5.map[c - u_8859_5.offset]);
  1223. }
  1224. USHORT
  1225. #ifdef CK_ANSIC
  1226. koi8_u(CHAR c)
  1227. #else
  1228. koi8_u(c) CHAR c;
  1229. #endif /* CK_ANSIC */
  1230. {
  1231.     c &= 0x7f;
  1232.     if (c < u_koi8.offset)
  1233.       return(c);
  1234.     else if (c >= u_koi8.offset + u_koi8.size)
  1235.       return(c);
  1236.     else
  1237.       return(u_koi8.map[c - u_koi8.offset]);
  1238. }
  1239. USHORT
  1240. #ifdef CK_ANSIC
  1241. koi8r_u(CHAR c) /* KOI8-R to Unicode */
  1242. #else
  1243. koi8r_u(c) CHAR c;
  1244. #endif /* CK_ANSIC */
  1245. {
  1246.     debug(F001,"koi8r_u","",c);
  1247.     c &= 0x7f;
  1248.     if (c < u_koi8r.offset)
  1249.       return(c);
  1250.     else if (c >= u_koi8r.offset + u_koi8r.size)
  1251.       return(c);
  1252.     else
  1253.       return(u_koi8r.map[c - u_koi8r.offset]);
  1254. }
  1255. USHORT
  1256. #ifdef CK_ANSIC
  1257. koi8u_u(CHAR c)
  1258. #else
  1259. koi8u_u(c) CHAR c;
  1260. #endif /* CK_ANSIC */
  1261. {
  1262.     c &= 0x7f;
  1263.     if (c < u_koi8u.offset)
  1264.       return(c);
  1265.     else if (c >= u_koi8u.offset + u_koi8u.size)
  1266.       return(c);
  1267.     else
  1268.       return(u_koi8u.map[c - u_koi8u.offset]);
  1269. }
  1270. USHORT
  1271. #ifdef CK_ANSIC
  1272. iso_8859_6_u(CHAR c)
  1273. #else
  1274. iso_8859_6_u(c) CHAR c;
  1275. #endif /* CK_ANSIC */
  1276. {
  1277.     c &= 0x7f;
  1278.     if (c < u_8859_6.offset)
  1279.       return(c);
  1280.     else if (c >= u_8859_6.offset + u_8859_6.size)
  1281.       return(c);
  1282.     else
  1283.       return(u_8859_6.map[c - u_8859_6.offset]);
  1284. }
  1285. USHORT
  1286. #ifdef CK_ANSIC
  1287. iso_8859_7_u(CHAR c)
  1288. #else
  1289. iso_8859_7_u(c) CHAR c;
  1290. #endif /* CK_ANSIC */
  1291. {
  1292.     c &= 0x7f;
  1293.     if (c < u_8859_7.offset)
  1294.       return(c);
  1295.     else if (c >= u_8859_7.offset + u_8859_7.size)
  1296.       return(c);
  1297.     else
  1298.       return(u_8859_7.map[c - u_8859_7.offset]);
  1299. }
  1300. USHORT
  1301. #ifdef CK_ANSIC
  1302. iso_8859_8_u(CHAR c)
  1303. #else
  1304. iso_8859_8_u(c) CHAR c;
  1305. #endif /* CK_ANSIC */
  1306. {
  1307.     c &= 0x7f;
  1308.     if (c < u_8859_8.offset)
  1309.       return(c);
  1310.     else if (c >= u_8859_8.offset + u_8859_8.size)
  1311.       return(c);
  1312.     else
  1313.       return(u_8859_8.map[c - u_8859_8.offset]);
  1314. }
  1315. USHORT
  1316. #ifdef CK_ANSIC
  1317. hebrew7_u(CHAR c)
  1318. #else
  1319. hebrew7_u(c) CHAR c;
  1320. #endif /* CK_ANSIC */
  1321. {
  1322.     c &= 0x7f;
  1323.     if (c < u_hebrew7.offset)
  1324.       return(c);
  1325.     else if (c >= u_hebrew7.offset + u_hebrew7.size)
  1326.       return(c);
  1327.     else
  1328.       return(u_hebrew7.map[c - u_hebrew7.offset]);
  1329. }
  1330. USHORT
  1331. #ifdef CK_ANSIC
  1332. elot927_u(CHAR c)
  1333. #else
  1334. elot927_u(c) CHAR c;
  1335. #endif /* CK_ANSIC */
  1336. {
  1337.     c &= 0x7f;
  1338.     if (c < u_elot927.offset)
  1339.       return(c);
  1340.     else if (c >= u_elot927.offset + u_elot927.size)
  1341.       return(c);
  1342.     else
  1343.       return(u_elot927.map[c - u_elot927.offset]);
  1344. }
  1345. USHORT
  1346. #ifdef CK_ANSIC
  1347. iso_8859_9_u(CHAR c)
  1348. #else
  1349. iso_8859_9_u(c) CHAR c;
  1350. #endif /* CK_ANSIC */
  1351. {
  1352.     c &= 0x7f;
  1353.     if (c < u_8859_9.offset)
  1354.       return(c);
  1355.     else if (c >= u_8859_9.offset + u_8859_9.size)
  1356.       return(c);
  1357.     else
  1358.       return(u_8859_9.map[c - u_8859_9.offset]);
  1359. }
  1360. USHORT
  1361. #ifdef CK_ANSIC
  1362. iso_8859_10_u(CHAR c)
  1363. #else
  1364. iso_8859_10_u(c) CHAR c;
  1365. #endif /* CK_ANSIC */
  1366. {
  1367.     c &= 0x7f;
  1368.     if (c < u_8859_10.offset)
  1369.       return(c);
  1370.     else if (c >= u_8859_10.offset + u_8859_10.size)
  1371.       return(c);
  1372.     else
  1373.       return(u_8859_10.map[c - u_8859_10.offset]);
  1374. }
  1375. USHORT
  1376. #ifdef CK_ANSIC
  1377. iso_8859_15_u(CHAR c)
  1378. #else
  1379. iso_8859_15_u(c) CHAR c;
  1380. #endif /* CK_ANSIC */
  1381. {
  1382.     c &= 0x7f;
  1383.     if (c < u_8859_15.offset)
  1384.       return(c);
  1385.     else if (c >= u_8859_15.offset + u_8859_15.size)
  1386.       return(c);
  1387.     else
  1388.       return(u_8859_15.map[c - u_8859_15.offset]);
  1389. }
  1390. USHORT
  1391. #ifdef CK_ANSIC
  1392. koi7_u(CHAR c)
  1393. #else
  1394. koi7_u(c) CHAR c;
  1395. #endif /* CK_ANSIC */
  1396. {
  1397.     c &= 0x7f;
  1398.     if (c < u_koi7.offset)
  1399.       return(c);
  1400.     else if (c >= u_koi7.offset + u_koi7.size)
  1401.       return(c);
  1402.     else
  1403.       return(u_koi7.map[c - u_koi7.offset]);
  1404. }
  1405. USHORT
  1406. #ifdef CK_ANSIC
  1407. decmcs_u(CHAR c)
  1408. #else
  1409. decmcs_u(c) CHAR c;
  1410. #endif /* CK_ANSIC */
  1411. {
  1412.     c &= 0x7f;
  1413.     if (c < u_decmcs.offset)
  1414.       return(c);
  1415.     else if (c >= u_decmcs.offset + u_decmcs.size)
  1416.       return(c);
  1417.     else
  1418.       return(u_decmcs.map[c - u_decmcs.offset]);
  1419. }
  1420. USHORT
  1421. #ifdef CK_ANSIC
  1422. nextstep_u(CHAR c)
  1423. #else
  1424. nextstep_u(c) CHAR c;
  1425. #endif /* CK_ANSIC */
  1426. {
  1427.     return(u_nextstep.map[(c & 0x7f) - u_nextstep.offset]);
  1428. }
  1429. USHORT
  1430. #ifdef CK_ANSIC
  1431. dgi_u(CHAR c)
  1432. #else
  1433. dgi_u(c) CHAR c;
  1434. #endif /* CK_ANSIC */
  1435. {
  1436.     return(u_dgi.map[(c & 0x7f) - u_dgi.offset]);
  1437. }
  1438. USHORT
  1439. #ifdef CK_ANSIC
  1440. hproman8_u(CHAR c)
  1441. #else
  1442. hproman8_u(c) CHAR c;
  1443. #endif /* CK_ANSIC */
  1444. {
  1445.     return(u_hproman8.map[(c & 0x7f) - u_hproman8.offset]);
  1446. }
  1447. USHORT
  1448. #ifdef CK_ANSIC
  1449. cp37_u(CHAR c)
  1450. #else
  1451. cp37_u(c) CHAR c;
  1452. #endif /* CK_ANSIC */
  1453. {
  1454.     return(u_cp37.map[c & 0x7f]);
  1455. }
  1456. USHORT
  1457. #ifdef CK_ANSIC
  1458. cp437_u(CHAR c)
  1459. #else
  1460. cp437_u(c) CHAR c;
  1461. #endif /* CK_ANSIC */
  1462. {
  1463.     return(u_cp437.map[c & 0x7f]);
  1464. }
  1465. USHORT
  1466. #ifdef CK_ANSIC
  1467. mazovia_u(CHAR c) /* Mazovia = CP437 with substitutions */
  1468. #else
  1469. mazovia_u(c) CHAR c;
  1470. #endif /* CK_ANSIC */
  1471. {
  1472.     return(u_mazovia.map[c & 0x7f]);
  1473. }
  1474. USHORT
  1475. #ifdef CK_ANSIC
  1476. cp850_u(CHAR c)
  1477. #else
  1478. cp850_u(c) CHAR c;
  1479. #endif /* CK_ANSIC */
  1480. {
  1481.     return(u_cp850.map[c & 0x7f]);
  1482. }
  1483. USHORT
  1484. #ifdef CK_ANSIC
  1485. cp858_u(CHAR c)
  1486. #else
  1487. cp858_u(c) CHAR c;
  1488. #endif /* CK_ANSIC */
  1489. {
  1490.     return(u_cp858.map[c & 0x7f]);
  1491. }
  1492. USHORT
  1493. #ifdef CK_ANSIC
  1494. cp1250_u(CHAR c)
  1495. #else
  1496. cp1250_u(c) CHAR c;
  1497. #endif /* CK_ANSIC */
  1498. {
  1499.     return(u_cp1250.map[c & 0x7f]);
  1500. }
  1501. USHORT
  1502. #ifdef CK_ANSIC
  1503. cp1251_u(CHAR c)
  1504. #else
  1505. cp1251_u(c) CHAR c;
  1506. #endif /* CK_ANSIC */
  1507. {
  1508.     return(u_cp1251.map[c & 0x7f]);
  1509. }
  1510. USHORT
  1511. #ifdef CK_ANSIC
  1512. cp1252_u(CHAR c)
  1513. #else
  1514. cp1252_u(c) CHAR c;
  1515. #endif /* CK_ANSIC */
  1516. {
  1517.     return(u_cp1252.map[c & 0x7f]);
  1518. }
  1519. USHORT
  1520. #ifdef CK_ANSIC
  1521. cp1253_u(CHAR c)
  1522. #else
  1523. cp1253_u(c) CHAR c;
  1524. #endif /* CK_ANSIC */
  1525. {
  1526.     return(u_cp1253.map[c & 0x7f]);
  1527. }
  1528. USHORT
  1529. #ifdef CK_ANSIC
  1530. cp1254_u(CHAR c)
  1531. #else
  1532. cp1254_u(c) CHAR c;
  1533. #endif /* CK_ANSIC */
  1534. {
  1535.     return(u_cp1254.map[c & 0x7f]);
  1536. }
  1537. USHORT
  1538. #ifdef CK_ANSIC
  1539. cp1255_u(CHAR c)
  1540. #else
  1541. cp1255_u(c) CHAR c;
  1542. #endif /* CK_ANSIC */
  1543. {
  1544.     return(u_cp1255.map[c & 0x7f]);
  1545. }
  1546. USHORT
  1547. #ifdef CK_ANSIC
  1548. cp1256_u(CHAR c)
  1549. #else
  1550. cp1256_u(c) CHAR c;
  1551. #endif /* CK_ANSIC */
  1552. {
  1553.     return(u_cp1256.map[c & 0x7f]);
  1554. }
  1555. USHORT
  1556. #ifdef CK_ANSIC
  1557. cp1257_u(CHAR c)
  1558. #else
  1559. cp1257_u(c) CHAR c;
  1560. #endif /* CK_ANSIC */
  1561. {
  1562.     return(u_cp1257.map[c & 0x7f]);
  1563. }
  1564. USHORT
  1565. #ifdef CK_ANSIC
  1566. cp1258_u(CHAR c)
  1567. #else
  1568. cp1258_u(c) CHAR c;
  1569. #endif /* CK_ANSIC */
  1570. {
  1571.     return(u_cp1258.map[c & 0x7f]);
  1572. }
  1573. USHORT
  1574. #ifdef CK_ANSIC
  1575. cp852_u(CHAR c)
  1576. #else
  1577. cp852_u(c) CHAR c;
  1578. #endif /* CK_ANSIC */
  1579. {
  1580.     return(u_cp852.map[c & 0x7f]);
  1581. }
  1582. USHORT /* Cyrillic */
  1583. #ifdef CK_ANSIC
  1584. cp855_u(CHAR c)
  1585. #else
  1586. cp855_u(c) CHAR c;
  1587. #endif /* CK_ANSIC */
  1588. {
  1589.     return(u_cp855.map[c & 0x7f]);
  1590. }
  1591. USHORT /* Bulgaria */
  1592. #ifdef CK_ANSIC
  1593. cp856_u(CHAR c)
  1594. #else
  1595. cp856_u(c) CHAR c;
  1596. #endif /* CK_ANSIC */
  1597. {
  1598.     return(u_cp856.map[c & 0x7f]);
  1599. }
  1600. USHORT
  1601. #ifdef CK_ANSIC
  1602. cp857_u(CHAR c)
  1603. #else
  1604. cp857_u(c) CHAR c;
  1605. #endif /* CK_ANSIC */
  1606. {
  1607.     return(u_cp857.map[c & 0x7f]);
  1608. }
  1609. USHORT
  1610. #ifdef CK_ANSIC
  1611. cp862_u(CHAR c)
  1612. #else
  1613. cp862_u(c) CHAR c;
  1614. #endif /* CK_ANSIC */
  1615. {
  1616.     return(u_cp862.map[c & 0x7f]);
  1617. }
  1618. USHORT
  1619. #ifdef CK_ANSIC
  1620. cp864_u(CHAR c)
  1621. #else
  1622. cp864_u(c) CHAR c;
  1623. #endif /* CK_ANSIC */
  1624. {
  1625.     return(u_cp864.map[c & 0x7f]);
  1626. }
  1627. USHORT
  1628. #ifdef CK_ANSIC
  1629. cp866_u(CHAR c)
  1630. #else
  1631. cp866_u(c) CHAR c;
  1632. #endif /* CK_ANSIC */
  1633. {
  1634.     return(u_cp866.map[c & 0x7f]);
  1635. }
  1636. USHORT
  1637. #ifdef CK_ANSIC
  1638. cp869_u(CHAR c)
  1639. #else
  1640. cp869_u(c) CHAR c;
  1641. #endif /* CK_ANSIC */
  1642. {
  1643.     return(u_cp869.map[c & 0x7f]);
  1644. }
  1645. USHORT
  1646. #ifdef CK_ANSIC
  1647. maclatin_u(CHAR c)
  1648. #else
  1649. maclatin_u(c) CHAR c;
  1650. #endif /* CK_ANSIC */
  1651. {
  1652.     return(u_maclatin.map[c & 0x7f]);
  1653. }
  1654. USHORT
  1655. #ifdef CK_ANSIC
  1656. quickdraw_u(CHAR c)
  1657. #else
  1658. quickdraw_u(c) CHAR c;
  1659. #endif /* CK_ANSIC */
  1660. {
  1661.     return(u_quickdraw.map[c & 0x7f]);
  1662. }
  1663. USHORT
  1664. #ifdef CK_ANSIC
  1665. decspec_u(CHAR c)
  1666. #else
  1667. decspec_u(c) CHAR c;
  1668. #endif /* CK_ANSIC */
  1669. {
  1670.     c &= 0x7f;
  1671.     if (c < u_decspec.offset)
  1672.       return(c);
  1673.     else if (c >= u_decspec.offset + u_decspec.size)
  1674.       return(c);
  1675.     else
  1676.       return(u_decspec.map[c - u_decspec.offset]);
  1677. }
  1678. USHORT
  1679. #ifdef CK_ANSIC
  1680. dectech_u(CHAR c)
  1681. #else
  1682. dectech_u(c) CHAR c;
  1683. #endif /* CK_ANSIC */
  1684. {
  1685.     c &= 0x7f;
  1686.     if (c < u_dectech.offset)
  1687.       return(c);
  1688.     else if (c >= u_dectech.offset + u_dectech.size)
  1689.       return(c);
  1690.     else
  1691.       return(u_dectech.map[c - u_dectech.offset]);
  1692. }
  1693. USHORT
  1694. #ifdef CK_ANSIC
  1695. dgspec_u(CHAR c)
  1696. #else
  1697. dgspec_u(c) CHAR c;
  1698. #endif /* CK_ANSIC */
  1699. {
  1700.     c &= 0x7f;
  1701.     if (c < u_dgspec.offset)
  1702.       return(c);
  1703.     else if (c >= u_dgspec.offset + u_dgspec.size)
  1704.       return(c);
  1705.     else
  1706.       return(u_dgspec.map[c - u_dgspec.offset]);
  1707. }
  1708. USHORT
  1709. #ifdef CK_ANSIC
  1710. dgline_u(CHAR c)
  1711. #else
  1712. dgline_u(c) CHAR c;
  1713. #endif /* CK_ANSIC */
  1714. {
  1715.     c &= 0x7f;
  1716.     if (c < u_dgline.offset)
  1717.       return(c);
  1718.     else if (c >= u_dgline.offset + u_dgline.size)
  1719.       return(c);
  1720.     else
  1721.       return(u_dgline.map[c - u_dgline.offset]);
  1722. }
  1723. USHORT
  1724. #ifdef CK_ANSIC
  1725. dgword_u(CHAR c)
  1726. #else
  1727. dgword_u(c) CHAR c;
  1728. #endif /* CK_ANSIC */
  1729. {
  1730.     c &= 0x7f;
  1731.     if (c < u_dgword.offset)
  1732.       return(c);
  1733.     else if (c >= u_dgword.offset + u_dgword.size)
  1734.       return(c);
  1735.     else
  1736.       return(u_dgword.map[c - u_dgword.offset]);
  1737. }
  1738. USHORT
  1739. #ifdef CK_ANSIC
  1740. hpline_u(CHAR c)
  1741. #else
  1742. hpline_u(c) CHAR c;
  1743. #endif /* CK_ANSIC */
  1744. {
  1745.     c &= 0x7f;
  1746.     if (c < u_hpline.offset)
  1747.       return(c);
  1748.     else if (c >= u_hpline.offset + u_hpline.size)
  1749.       return(c);
  1750.     else
  1751.       return(u_hpline.map[c - u_hpline.offset]);
  1752. }
  1753. USHORT
  1754. #ifdef CK_ANSIC
  1755. hpmath_u(CHAR c)
  1756. #else
  1757. hpmath_u(c) CHAR c;
  1758. #endif /* CK_ANSIC */
  1759. {
  1760.     c &= 0x7f;
  1761.     if (c < u_hpmath.offset)
  1762.       return(c);
  1763.     else if (c >= u_hpmath.offset + u_hpmath.size)
  1764.       return(c);
  1765.     else
  1766.       return(u_hpmath.map[c - u_hpmath.offset]);
  1767. }
  1768. USHORT
  1769. #ifdef CK_ANSIC
  1770. qnxgrph_u(CHAR c)
  1771. #else
  1772. qnxgrph_u(c) CHAR c;
  1773. #endif /* CK_ANSIC */
  1774. {
  1775.     c &= 0x7f;
  1776.     if (c < u_qnxgrph.offset)
  1777.       return(c);
  1778.     else if (c >= u_qnxgrph.offset + u_qnxgrph.size)
  1779.       return(c);
  1780.     else
  1781.       return(u_qnxgrph.map[c - u_qnxgrph.offset]);
  1782. }
  1783. USHORT
  1784. #ifdef CK_ANSIC
  1785. hz1500_u(CHAR c)
  1786. #else
  1787. hz1500_u(c) CHAR c;
  1788. #endif /* CK_ANSIC */
  1789. {
  1790.     c &= 0x7f;
  1791.     if (c < u_hz1500.offset)
  1792.       return(c);
  1793.     else if (c >= u_hz1500.offset + u_hz1500.size)
  1794.       return(c);
  1795.     else
  1796.       return(u_hz1500.map[c - u_hz1500.offset]);
  1797. }
  1798. USHORT
  1799. #ifdef CK_ANSIC
  1800. sniblanks_u(CHAR c)
  1801. #else
  1802. sniblanks_u(c) CHAR c;
  1803. #endif /* CK_ANSIC */
  1804. {
  1805.     c &= 0x7f;
  1806.     if (c < u_sniblanks.offset)
  1807.       return(c);
  1808.     else if (c >= u_sniblanks.offset + u_sniblanks.size)
  1809.       return(c);
  1810.     else
  1811.       return(u_sniblanks.map[c - u_sniblanks.offset]);
  1812. }
  1813. USHORT
  1814. #ifdef CK_ANSIC
  1815. snibrack_u(CHAR c)
  1816. #else
  1817. snibrack_u(c) CHAR c;
  1818. #endif /* CK_ANSIC */
  1819. {
  1820.     c &= 0x7f;
  1821.     if (c < u_snibrack.offset)
  1822.       return(c);
  1823.     else if (c >= u_snibrack.offset + u_snibrack.size)
  1824.       return(c);
  1825.     else
  1826.       return(u_snibrack.map[c - u_snibrack.offset]);
  1827. }
  1828. USHORT
  1829. #ifdef CK_ANSIC
  1830. snifacet_u(CHAR c)
  1831. #else
  1832. snifacet_u(c) CHAR c;
  1833. #endif /* CK_ANSIC */
  1834. {
  1835.     c &= 0x7f;
  1836.     if (c < u_snifacet.offset)
  1837.       return(c);
  1838.     else if (c >= u_snifacet.offset + u_snifacet.size)
  1839.       return(c);
  1840.     else
  1841.       return(u_snifacet.map[c - u_snifacet.offset]);
  1842. }
  1843. USHORT
  1844. #ifdef CK_ANSIC
  1845. sniibm_u(CHAR c)
  1846. #else
  1847. sniibm_u(c) CHAR c;
  1848. #endif /* CK_ANSIC */
  1849. {
  1850.     c &= 0x7f;
  1851.     if (c < u_sniibm.offset)
  1852.       return(c);
  1853.     else if (c >= u_sniibm.offset + u_sniibm.size)
  1854.       return(c);
  1855.     else
  1856.       return(u_sniibm.map[c - u_sniibm.offset]);
  1857. }
  1858. USHORT
  1859. #ifdef CK_ANSIC
  1860. snieuro_u(CHAR c)
  1861. #else
  1862. snieuro_u(c) CHAR c;
  1863. #endif /* CK_ANSIC */
  1864. {
  1865.     c &= 0x7f;
  1866.     if (c < u_snieuro.offset)
  1867.       return(c);
  1868.     else if (c >= u_snieuro.offset + u_snieuro.size)
  1869.       return(c);
  1870.     else
  1871.       return(u_snieuro.map[c - u_snieuro.offset]);
  1872. }
  1873. USHORT
  1874. #ifdef CK_ANSIC
  1875. heath19g_u(CHAR c)
  1876. #else
  1877. heath19g_u(c) CHAR c;
  1878. #endif /* CK_ANSIC */
  1879. {
  1880.     c &= 0x7f;
  1881.     if (c < u_heath19g.offset)
  1882.       return(c);
  1883.     else if (c >= u_heath19g.offset + u_heath19g.size)
  1884.       return(c);
  1885.     else
  1886.       return(u_heath19g.map[c - u_heath19g.offset]);
  1887. }
  1888. USHORT
  1889. #ifdef CK_ANSIC
  1890. tvig_u(CHAR c)
  1891. #else
  1892. tvig_u(c) CHAR c;
  1893. #endif /* CK_ANSIC */
  1894. {
  1895.     c &= 0x7f;
  1896.     if (c < u_tvig.offset)
  1897.       return(c);
  1898.     else if (c >= u_tvig.offset + u_tvig.size)
  1899.       return(c);
  1900.     else
  1901.       return(u_tvig.map[c - u_tvig.offset]);
  1902. }
  1903. USHORT
  1904. #ifdef CK_ANSIC
  1905. wyse_gn_u(CHAR c)
  1906. #else
  1907. wyse_gn_u(c) CHAR c;
  1908. #endif /* CK_ANSIC */
  1909. {
  1910.     c &= 0x7f;
  1911.     if (c < u_wyse_gn.offset)
  1912.       return(c);
  1913.     else if (c >= u_wyse_gn.offset + u_wyse_gn.size)
  1914.       return(c);
  1915.     else
  1916.       return(u_wyse_gn.map[c - u_wyse_gn.offset]);
  1917. }
  1918. USHORT
  1919. #ifdef CK_ANSIC
  1920. wyse_g1_u(CHAR c)
  1921. #else
  1922. wyse_g1_u(c) CHAR c;
  1923. #endif /* CK_ANSIC */
  1924. {
  1925.     c &= 0x7f;
  1926.     if (c < u_wyse_g1.offset)
  1927.       return(c);
  1928.     else if (c >= u_wyse_g1.offset + u_wyse_g1.size)
  1929.       return(c);
  1930.     else
  1931.       return(u_wyse_g1.map[c - u_wyse_g1.offset]);
  1932. }
  1933. USHORT
  1934. #ifdef CK_ANSIC
  1935. wyse_g2_u(CHAR c)
  1936. #else
  1937. wyse_g2_u(c) CHAR c;
  1938. #endif /* CK_ANSIC */
  1939. {
  1940.     c &= 0x7f;
  1941.     if (c < u_wyse_g2.offset)
  1942.       return(c);
  1943.     else if (c >= u_wyse_g2.offset + u_wyse_g2.size)
  1944.       return(c);
  1945.     else
  1946.       return(u_wyse_g2.map[c - u_wyse_g2.offset]);
  1947. }
  1948. USHORT
  1949. #ifdef CK_ANSIC
  1950. wyse_g3_u(CHAR c)
  1951. #else
  1952. wyse_g3_u(c) CHAR c;
  1953. #endif /* CK_ANSIC */
  1954. {
  1955.     c &= 0x7f;
  1956.     if (c < u_wyse_g3.offset)
  1957.       return(c);
  1958.     else if (c >= u_wyse_g3.offset + u_wyse_g3.size)
  1959.       return(c);
  1960.     else
  1961.       return(u_wyse_g3.map[c - u_wyse_g3.offset]);
  1962. }
  1963. USHORT
  1964. #ifdef CK_ANSIC
  1965. smiley_u(CHAR c)
  1966. #else
  1967. smiley_u(c) CHAR c;
  1968. #endif /* CK_ANSIC */
  1969. {
  1970.     c &= 0x7f;
  1971.     if (c < u_smiley.offset)
  1972.       return(c);
  1973.     else if (c >= u_smiley.offset + u_smiley.size)
  1974.       return(c);
  1975.     else
  1976.       return(u_smiley.map[c - u_smiley.offset]);
  1977. }
  1978. USHORT
  1979. #ifdef CK_ANSIC
  1980. c0pics_u(CHAR c)
  1981. #else
  1982. c0pics_u(c) CHAR c;
  1983. #endif /* CK_ANSIC */
  1984. {
  1985.     c &= 0x7f;
  1986.     if (c < u_c0pics.offset)
  1987.       return(c);
  1988.     else if (c >= u_c0pics.offset + u_c0pics.size)
  1989.       return(c);
  1990.     else
  1991.       return(u_c0pics.map[c - u_c0pics.offset]);
  1992. }
  1993. USHORT
  1994. #ifdef CK_ANSIC
  1995. c1pics_u(CHAR c)
  1996. #else
  1997. c1pics_u(c) CHAR c;
  1998. #endif /* CK_ANSIC */
  1999. {
  2000.     c &= 0x7f;
  2001.     if (c < u_c1pics.offset)
  2002.       return(c);
  2003.     else if (c >= u_c1pics.offset + u_c1pics.size)
  2004.       return(c);
  2005.     else
  2006.       return(u_c1pics.map[c - u_c1pics.offset]);
  2007. }
  2008. #ifdef KANJI /* Kanji/Unicode functions */
  2009. static long /* Statistics counters */
  2010.   bytes = 0, /* REMOVE THESE LATER... */
  2011.   bad = 0,
  2012.   kanji = 0,
  2013.   kana = 0,
  2014.   greek = 0,
  2015.   cyrillic = 0,
  2016.   special = 0,
  2017.   other = 0,
  2018.   roman = 0;
  2019. USHORT
  2020. #ifdef CK_ANSIC
  2021. sj_to_un(USHORT sj) /* Shift-JIS to Unicode */
  2022. #else
  2023. sj_to_un(sj) USHORT sj;
  2024. #endif /* CK_ANSIC */
  2025. {
  2026. /* Kanji blocks */
  2027.     if (sj >= 0x8140) { /* All possible Kanjis */
  2028. kanji++; /* Optimistically count a Kanji */
  2029. if (sj <= 0x9ffc) { /* 7869-element table */
  2030.     return(sju_8140[sj - 0x8140]);
  2031. } else if (sj >= 0xe040 && sj <= 0xeaa4) { /* 2660-element table */
  2032.     return(sju_e040[sj - 0xe040]);
  2033. } else if (sj >= 0xf040) { /* User-defined areas */
  2034.     if (sj <= 0xf0fc) { /* ten 189-char chunks */
  2035. return(0xe000 + (sj - 0xf040));
  2036.     } else if (sj >= 0xf140 && sj <= 0xf1fc) {
  2037. return(0xe0bc + (sj - 0xf140));
  2038.     } else if (sj >= 0xf240 && sj <= 0xf2fc) {
  2039. return(0xe178 + (sj - 0xf240));
  2040.     } else if (sj >= 0xf340 && sj <= 0xf3fc) {
  2041. return(0xe234 + (sj - 0xf340));
  2042.     } else if (sj >= 0xf440 && sj <= 0xf4fc) {
  2043. return(0xe2f0 + (sj - 0xf440));
  2044.     } else if (sj >= 0xf540 && sj <= 0xf5fc) {
  2045. return(0xe3ac + (sj - 0xf540));
  2046.     } else if (sj >= 0xf640 && sj <= 0xf6fc) {
  2047. return(0xe468 + (sj - 0xf640));
  2048.     } else if (sj >= 0xf740 && sj <= 0xf7fc) {
  2049. return(0xe524 + (sj - 0xf740));
  2050.     } else if (sj >= 0xf840 && sj <= 0xf8fc) {
  2051. return(0xe5e0 + (sj - 0xf840));
  2052.     } else if (sj >= 0xf940 && sj <= 0xf9fc) {
  2053. return(0xe69c + (sj - 0xf940));
  2054.     }
  2055. }
  2056. kanji--; /* None of the above, uncount */
  2057.     }
  2058. /* C0 / Halfwidth-Roman / C1 block (0x00-0x9f, no holes) */
  2059.     else if (sj < 0x00a0) {
  2060. roman++; /* Count a Roman */
  2061. if (sj == 0x5c) { /* Yen sign */
  2062.     return(0x00a5);
  2063. } else if (sj == 0x7e) { /* Overline (macron) */
  2064.     return(0x203e);
  2065. } else { /* Control or Halfwidth Roman */
  2066.     return(sj);
  2067. }
  2068.     }
  2069. /* Halfwidth Katakana block (0xa0-0xdf, no holes) */
  2070.     else if (sj >= 0xa1 && sj <= 0xdf) {
  2071. kana++;
  2072. return(sj + 0xfec0);
  2073.     }
  2074. /* Catch-all must be final */
  2075.     bad++;
  2076.     return(0xfffd);
  2077. }
  2078. USHORT
  2079. #ifdef CK_ANSIC
  2080. un_to_sj(USHORT un) /* Unicode to Shift-JIS */
  2081. #else
  2082. un_to_sj(un) USHORT un;
  2083. #endif /* CK_ANSIC */
  2084. {
  2085.     if (un < 0x00a0) {
  2086. switch (un) {
  2087.   case 0x005c: roman++; return(0x815f); /* Backslash */
  2088.   case 0x007e: bad++; return(0xfffd); /* No tilde in Shift-JIS */
  2089.   default: /* ASCII or C0/C1 control */
  2090.     roman++;
  2091.     return(un);
  2092. }
  2093.     }
  2094.     if (un >= 0x00a0 && un < 0x0391) { /* Latin-1 symbols */
  2095. roman++;
  2096. switch(un) {
  2097.   case 0x00A2: return(0x8191);
  2098.   case 0x00A3: return(0x8192);
  2099.   case 0x00A5: return(0x005C); /* Yen */
  2100.   case 0x00A7: return(0x8198);
  2101.   case 0x00A8: return(0x814E);
  2102.   case 0x00AC: return(0x81CA);
  2103.   case 0x00B0: return(0x818B);
  2104.   case 0x00B1: return(0x817D);
  2105.   case 0x00B4: return(0x814C);
  2106.   case 0x00B6: return(0x81F7);
  2107.   case 0x00D7: return(0x817E);
  2108.   case 0x00F7: return(0x8180);
  2109.   default:
  2110.     roman--;
  2111.     bad++;
  2112.     return(0xfffd);
  2113. }
  2114.     }
  2115.     if (un >= 0x0391 && un < 0x0401) { /* Greek */
  2116. greek++;
  2117. if (un <= 0x039c)
  2118.   return(usj_0391[un-0x0391]);
  2119. greek--;
  2120. bad++;
  2121. return(0xfffd);
  2122.     }
  2123.     if (un >= 0x0401 && un < 0x2010) { /* Cyrillic */
  2124. cyrillic++;
  2125. if (un <= 0x0451)
  2126.   return(usj_0401[un-0x0401]);
  2127. cyrillic--;
  2128. bad++;
  2129. return(0xfffd);
  2130.     }
  2131.     if (un >= 0x2010 && un < 0x2500) { /* General punctuation */
  2132. special++;
  2133. switch(un) {
  2134.   case 0x2010: return(0x815D);
  2135.   case 0x2015: return(0x815C);
  2136.   case 0x2016: return(0x8161);
  2137.   case 0x2018: return(0x8165);
  2138.   case 0x2019: return(0x8166);
  2139.   case 0x201C: return(0x8167);
  2140.   case 0x201D: return(0x8168);
  2141.   case 0x2020: return(0x81F5);
  2142.   case 0x2021: return(0x81F6);
  2143.   case 0x2025: return(0x8164);
  2144.   case 0x2026: return(0x8163);
  2145.   case 0x2030: return(0x81F1);
  2146.   case 0x2032: return(0x818C);
  2147.   case 0x2033: return(0x818D);
  2148.   case 0x203B: return(0x81A6);
  2149.   case 0x203E: return(0x007E);
  2150.   case 0x2103: return(0x818E); /* Letterlike symbols */
  2151.   case 0x212B: return(0x81F0);
  2152.   case 0x2190: return(0x81A9); /* Arrows */
  2153.   case 0x2191: return(0x81AA);
  2154.   case 0x2192: return(0x81A8);
  2155.   case 0x2193: return(0x81AB);
  2156.   case 0x21D2: return(0x81CB);
  2157.   case 0x21D4: return(0x81CC);
  2158.   case 0x2200: return(0x81CD); /* Math */
  2159.   case 0x2202: return(0x81DD);
  2160.   case 0x2203: return(0x81CE);
  2161.   case 0x2207: return(0x81DE);
  2162.   case 0x2208: return(0x81B8);
  2163.   case 0x220B: return(0x81B9);
  2164.   case 0x2212: return(0x817C);
  2165.   case 0x221A: return(0x81E3);
  2166.   case 0x221D: return(0x81E5);
  2167.   case 0x221E: return(0x8187);
  2168.   case 0x2220: return(0x81DA);
  2169.   case 0x2227: return(0x81C8);
  2170.   case 0x2228: return(0x81C9);
  2171.   case 0x2229: return(0x81BF);
  2172.   case 0x222A: return(0x81BE);
  2173.   case 0x222B: return(0x81E7);
  2174.   case 0x222C: return(0x81E8);
  2175.   case 0x2234: return(0x8188);
  2176.   case 0x2235: return(0x81E6);
  2177.   case 0x223D: return(0x81E4);
  2178.   case 0x2252: return(0x81E0);
  2179.   case 0x2260: return(0x8182);
  2180.   case 0x2261: return(0x81DF);
  2181.   case 0x2266: return(0x8185);
  2182.   case 0x2267: return(0x8186);
  2183.   case 0x226A: return(0x81E1);
  2184.   case 0x226B: return(0x81E2);
  2185.   case 0x2282: return(0x81BC);
  2186.   case 0x2283: return(0x81BD);
  2187.   case 0x2286: return(0x81BA);
  2188.   case 0x2287: return(0x81BB);
  2189.   case 0x22A5: return(0x81DB);
  2190.   case 0x2312: return(0x81DC); /* Arc */
  2191.   default:
  2192.     special--;
  2193.     bad++;
  2194.     return(0xfffd);
  2195. }
  2196.     }
  2197.     if (un >= 0x2500 && un < 0x3000) { /* Box drawing */
  2198. special++;
  2199. switch(un) {
  2200.   case 0x2500: return(0x849F);
  2201.   case 0x2501: return(0x84AA);
  2202.   case 0x2502: return(0x84A0);
  2203.   case 0x2503: return(0x84AB);
  2204.   case 0x250C: return(0x84A1);
  2205.   case 0x250F: return(0x84AC);
  2206.   case 0x2510: return(0x84A2);
  2207.   case 0x2513: return(0x84AD);
  2208.   case 0x2514: return(0x84A4);
  2209.   case 0x2517: return(0x84AF);
  2210.   case 0x2518: return(0x84A3);
  2211.   case 0x251B: return(0x84AE);
  2212.   case 0x251C: return(0x84A5);
  2213.   case 0x251D: return(0x84BA);
  2214.   case 0x2520: return(0x84B5);
  2215.   case 0x2523: return(0x84B0);
  2216.   case 0x2524: return(0x84A7);
  2217.   case 0x2525: return(0x84BC);
  2218.   case 0x2528: return(0x84B7);
  2219.   case 0x252B: return(0x84B2);
  2220.   case 0x252C: return(0x84A6);
  2221.   case 0x252F: return(0x84B6);
  2222.   case 0x2530: return(0x84BB);
  2223.   case 0x2533: return(0x84B1);
  2224.   case 0x2534: return(0x84A8);
  2225.   case 0x2537: return(0x84B8);
  2226.   case 0x2538: return(0x84BD);
  2227.   case 0x253B: return(0x84B3);
  2228.   case 0x253C: return(0x84A9);
  2229.   case 0x253F: return(0x84B9);
  2230.   case 0x2542: return(0x84BE);
  2231.   case 0x254B: return(0x84B4);
  2232.   case 0x25A0: return(0x81A1); /* Geometric shapes */
  2233.   case 0x25A1: return(0x81A0);
  2234.   case 0x25B2: return(0x81A3);
  2235.   case 0x25B3: return(0x81A2);
  2236.   case 0x25BC: return(0x81A5);
  2237.   case 0x25BD: return(0x81A4);
  2238.   case 0x25C6: return(0x819F);
  2239.   case 0x25C7: return(0x819E);
  2240.   case 0x25CB: return(0x819B);
  2241.   case 0x25CE: return(0x819D);
  2242.   case 0x25CF: return(0x819C);
  2243.   case 0x25EF: return(0x81FC);
  2244.   case 0x2605: return(0x819A); /* Misc symbols */
  2245.   case 0x2606: return(0x8199);
  2246.   case 0x2640: return(0x818A);
  2247.   case 0x2642: return(0x8189);
  2248.   case 0x266A: return(0x81F4);
  2249.   case 0x266D: return(0x81F3);
  2250.   case 0x266F: return(0x81F2);
  2251.   default:
  2252.     special--;
  2253.     bad++;
  2254.     return(0xfffd);
  2255. }
  2256.     }
  2257.     if (un >= 0x3000 && un < 0x4e00) { /* CJK symbols & punc */
  2258. kanji++;
  2259. if (un <= 0x30ff)
  2260.   return(usj_3000[un-0x3000]);
  2261. kanji--;
  2262. bad++;
  2263. return(0xfffd);
  2264.     }
  2265.     if (un >= 0xff00 && un < 0xffff) { /* Half/full-width Roman & Katakana */
  2266. if (un <= 0xff9f) {
  2267.     if (un > 0xff60)
  2268.       kana++;
  2269.     return(usj_ff00[un-0xff00]);
  2270. }
  2271. bad++;
  2272. return(0xfffd);
  2273.     }
  2274.     if (un >= 0x4e00 && un < 0xe000) { /* Kanji */
  2275. kanji++;
  2276. if (un <= 0x9fa0)
  2277.   return(usj_4e00[un-0x4e00]);
  2278. kanji--;
  2279. bad++;
  2280. return(0xfffd);
  2281.     }
  2282.     if (un >= 0xe000 && un < 0xff00) { /* User-defined (Gaiji) */
  2283. kanji++;
  2284. if (un <= 0xe0bb) { /* ten 189-char chunks */
  2285.     return(0xf040 + (un - 0xe000));
  2286. } else if (un >= 0xe0bc && un <= 0xe177) {
  2287.     return(0xf140 + (un - 0xe0bc));
  2288. } else if (un >= 0xe178 && un <= 0xe233) {
  2289.     return(0xf240 + (un - 0xe178));
  2290. } else if (un >= 0xe234 && un <= 0xe2ef) {
  2291.     return(0xf340 + (un - 0xe234));
  2292. } else if (un >= 0xe2f0 && un <= 0xe3ab) {
  2293.     return(0xf440 + (un - 0xe2f0));
  2294. } else if (un >= 0xe3ac && un <= 0xe467) {
  2295.     return(0xf540 + (un - 0xe3ac));
  2296. } else if (un >= 0xe468 && un <= 0xe523) {
  2297.     return(0xf640 + (un - 0xe468));
  2298. } else if (un >= 0xe524 && un <= 0xe5df) {
  2299.     return(0xf740 + (un - 0xe524));
  2300. } else if (un >= 0xe5e0 && un <= 0xe69b) {
  2301.     return(0xf840 + (un - 0xe5e0));
  2302. } else if (un >= 0xe69c && un <= 0xe757) {
  2303.     return(0xf940 + (un - 0xe69c));
  2304. }
  2305. bad++;
  2306. return(0xfffd);
  2307.     }
  2308.     /* NOTREACHED */
  2309.     /* Some compilers (correctly) warn of "statement not reached" here. */
  2310.     /* But others give up the ghost with "no return value".  The former */
  2311.     /* is the lesser of two evils. */
  2312.     bad++;
  2313.     return(0xfffd);
  2314. }
  2315. #endif /* KANJI */
  2316. /* Unicode-to-blah functions, tx_blah(). */
  2317. static int
  2318. #ifdef CK_ANSIC
  2319. tx_punc(USHORT c)
  2320. #else
  2321. tx_punc(c) USHORT c;
  2322. #endif /* CK_ANSIC */
  2323. {
  2324.     if (c >= 0x2000 && c <= 0x200a) /* Various-width spaces */
  2325.       return((CHAR)(0x20));
  2326.     else if (c >= 0x2010 && c <= 0x2015) /* Various-width dashes */
  2327.       return((CHAR)'-');
  2328.     else if (c >= 0x2018 && c <= 0x201b) /* Assorted single quotes */
  2329.       return((CHAR)0x27);
  2330.     else if (c >= 0x201c && c <= 0x201f) /* Assorted double quotes */
  2331.       return((CHAR)0x22);
  2332.     else if (c >= 0x2022 && c <= 0x2024 || c == 0x2043) /* Bullets */
  2333.       return((CHAR)0xb7);
  2334.     switch (c) {
  2335.       case 0x2039: /* Less-than sign */
  2336. return((CHAR)0x3c);
  2337.       case 0x203a: /* Greater-than sign */
  2338. return((CHAR)0x3e);
  2339.       case 0x2044: /* Solidus -> Slash */
  2340. return((CHAR)0x2f);
  2341.       default:
  2342. return(-1);
  2343.     }
  2344. }
  2345. int /* For Latin-1 */
  2346. #ifdef CK_ANSIC
  2347. tx_ident(USHORT c)
  2348. #else
  2349. tx_ident(c) USHORT c;
  2350. #endif /* CK_ANSIC */
  2351. {
  2352.     if (c == 0x203e) /* Overline -> Macron */
  2353.       return((CHAR)0xaf);
  2354.     else if (c < 0x100) /* Latin-1 range */
  2355.       return((CHAR)(c & 0xff));
  2356.     else /* Or maybe from punctuation block */
  2357.       return(tx_punc(c));
  2358. }
  2359. int
  2360. #ifdef CK_ANSIC
  2361. tx_usascii(USHORT c)
  2362. #else
  2363. tx_usascii(c) USHORT c; /* US ASCII */
  2364. #endif /* CK_ANSIC */
  2365. {
  2366.     if (c < 0x80)
  2367.       return((CHAR)(c & 0xff));
  2368.     else if (c >= 0x2000 && c <= 0x200a) /* Various-width spaces */
  2369.       return((CHAR)(0x20));
  2370.     else if (c >= 0x2010 && c <= 0x2015) /* Various-width dashes */
  2371.       return((CHAR)'-');
  2372.     else if (c >= 0x2018 && c <= 0x201b) /* Assorted single quotes */
  2373.       return((CHAR)0x27);
  2374.     else if (c >= 0x201c && c <= 0x201f) /* Assorted double quotes */
  2375.       return((CHAR)0x22);
  2376.     else if (c >= 0x2022 && c <= 0x2024 || c == 0x2043) /* Bullets */
  2377.       return((CHAR)0xb7);
  2378.     switch (c) {
  2379.       case 0x2039: /* Less-than sign */
  2380. return((CHAR)0x3c);
  2381.       case 0x203a: /* Greater-than sign */
  2382. return((CHAR)0x3e);
  2383.       case 0x2044: /* Solidus -> Slash */
  2384. return((CHAR)0x2f);
  2385.     }
  2386.     return((c & 0xff80) ? -1 : (CHAR)(c & 0x7f));
  2387. }
  2388. int
  2389. #ifdef CK_ANSIC
  2390. tx_british(USHORT c)
  2391. #else
  2392. tx_british(c) USHORT c; /* British */