diff --git a/src/conio/allfonts.c b/src/conio/allfonts.c index 784d27af82cb93447dd4d6389d43faa519ff64b2..a3b65c0e267652ebc2fa6a6ec4b44930d992402a 100644 --- a/src/conio/allfonts.c +++ b/src/conio/allfonts.c @@ -3083,7 +3083,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\x00\x70\xd8\x30\x60\xc8\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x7c\x7c\x7c\x7c\x7c\x7c\x7c\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - , NULL, NULL, NULL, "Codepage 866 (c) Russian", CIOLIB_CP437} + , NULL, NULL, NULL, "Codepage 866 (c) Russian", CIOLIB_CP866M} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" @@ -3340,7 +3340,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\x00\x00\x00\x00\x00\x38\x18\x18\x18\x18\x18\x3c\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x7c\xc6\x60\x38\x0c\xc6\x7c\x18\x30\x00\x00" "\x00\x00\x66\x66\x00\xee\x66\x66\x66\x66\x66\x3e\x06\x0c\x38\x00" - , NULL, NULL, NULL, "ISO-8859-9 Turkish", CIOLIB_CP437} + , NULL, NULL, NULL, "ISO-8859-9 Turkish", CIOLIB_ISO_8859_9} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" @@ -4878,7 +4878,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00" - , NULL, "ISO-8859-8 Hebrew", CIOLIB_CP437} + , NULL, "ISO-8859-8 Hebrew", CIOLIB_ISO_8859_8} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" @@ -5647,7 +5647,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\xdb\xdb\xdb\xdb\xdb\xdb\xff\x03" "\x66\x66\x66\x3e\x06\x06\x06\x00" "\xe0\x60\x60\x7c\x66\x66\x7c\x00" - , NULL, "Ukrainian font koi8-u", CIOLIB_CP437} + , NULL, "Ukrainian font koi8-u", CIOLIB_KOI8_U} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" @@ -5904,7 +5904,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\x00\x00\x04\x08\x10\x00\x42\x42\x42\x42\x42\x3e\x02\x02\x3c\x00" "\x00\x20\x20\x20\x3e\x21\x21\x21\x21\x31\x2e\x20\x20\x20\x00\x00" "\x00\x00\x24\x24\x00\x00\x42\x42\x42\x42\x42\x3e\x02\x02\x3c\x00" - , NULL, NULL, NULL, "ISO-8859-15 West European, (thin)", CIOLIB_CP437} + , NULL, NULL, NULL, "ISO-8859-15 West European, (thin)", CIOLIB_ISO_8859_15} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" @@ -7956,7 +7956,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\x7e\xc0\x7c\xc6\x7c\x06\xfc\x00" "\x18\x00\x66\x66\x3e\x06\x3c\x00" "\x00\x00\xc6\xc6\xfe\x38\x38\x00" - , NULL, "ISO-8859-5 Cyrillic", CIOLIB_CP437} + , NULL, "ISO-8859-5 Cyrillic", CIOLIB_ISO_8859_5} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" @@ -9494,7 +9494,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\x18\x30\xcc\xcc\xcc\x7c\x0c\xf8" "\xe0\x78\x6c\x66\x6c\x78\xe0\x00" "\xcc\x00\xcc\xcc\xcc\x7c\x0c\xf8" - , NULL, "ISO-8859-15 West European", CIOLIB_CP437} + , NULL, "ISO-8859-15 West European", CIOLIB_ISO_8859_15} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x7e\x81\xa5\x81\x81\xbd\x99\x81\x81\x7e\x00\x00\x00\x00" "\x00\x00\x7e\xff\xdb\xff\xff\xc3\xe7\xff\xff\x7e\x00\x00\x00\x00" @@ -10007,7 +10007,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\x30\x48\x10\x20\x78\x00\x00\x00" "\x00\x00\x3c\x3c\x3c\x3c\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00" - , NULL, "Codepage 850 Multilingual Latin I, (thin)", CIOLIB_CP437} + , NULL, "Codepage 850 Multilingual Latin I, (thin)", CIOLIB_CP850} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x7e\x81\xa5\x81\x81\xbd\x99\x81\x81\x7e\x00\x00\x00\x00" "\x00\x00\x7e\xff\xdb\xff\xff\xc3\xe7\xff\xff\x7e\x00\x00\x00\x00" @@ -10776,7 +10776,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\x78\x0c\x18\x30\x7c\x00\x00\x00" "\x00\x00\x3c\x3c\x3c\x3c\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00" - , NULL, "Codepage 850 Multilingual Latin I", CIOLIB_CP437} + , NULL, "Codepage 850 Multilingual Latin I", CIOLIB_CP850} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x7e\x81\xa5\x81\x81\xbd\x99\x81\x81\x7e\x00\x00\x00\x00" "\x00\x00\x7e\xff\xdb\xff\xff\xc3\xe7\xff\xff\x7e\x00\x00\x00\x00" @@ -11289,7 +11289,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\x30\x48\x10\x20\x78\x00\x00\x00" "\x00\x00\x3c\x3c\x3c\x3c\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00" - , NULL, "Codepage 885 Norwegian, (thin)", CIOLIB_CP437} + , NULL, "Codepage 865 Norwegian, (thin)", CIOLIB_CP865} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" @@ -16930,7 +16930,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = { "\x78\x0c\x18\x30\x7c\x00\x00\x00" "\x00\x00\x3c\x3c\x3c\x3c\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00" - , NULL, "Codepage 885 Norwegian", CIOLIB_CP437} + , NULL, "Codepage 865 Norwegian", CIOLIB_CP865} ,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x7e\x81\xa5\x81\x81\xa5\x99\x81\x81\x7e\x00\x00\x00\x00" "\x00\x00\x7e\xff\xdb\xff\xff\xdb\xe7\xff\xff\x7e\x00\x00\x00\x00" diff --git a/src/conio/utf8_codepages.c b/src/conio/utf8_codepages.c index c98ddd4338eab379e6d29430d24f010242753449..ec9220ed6b09542191c0e3f070a9f9e90b11bfa9 100644 --- a/src/conio/utf8_codepages.c +++ b/src/conio/utf8_codepages.c @@ -330,6 +330,524 @@ static uint32_t iso8859_4_unicode_table[128] = { 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9 }; +static struct ciolib_cpmap cp866_table[160] = { + {0x00a0, 255}, {0x00a4, 253}, {0x00a7, 21}, {0x00b0, 248}, + {0x00b6, 20}, {0x00b7, 250}, {0x0401, 240}, {0x0404, 242}, + {0x0407, 244}, {0x040e, 246}, {0x0410, 128}, {0x0411, 129}, + {0x0412, 130}, {0x0413, 131}, {0x0414, 132}, {0x0415, 133}, + {0x0416, 134}, {0x0417, 135}, {0x0418, 136}, {0x0419, 137}, + {0x041a, 138}, {0x041b, 139}, {0x041c, 140}, {0x041d, 141}, + {0x041e, 142}, {0x041f, 143}, {0x0420, 144}, {0x0421, 145}, + {0x0422, 146}, {0x0423, 147}, {0x0424, 148}, {0x0425, 149}, + {0x0426, 150}, {0x0427, 151}, {0x0428, 152}, {0x0429, 153}, + {0x042a, 154}, {0x042b, 155}, {0x042c, 156}, {0x042d, 157}, + {0x042e, 158}, {0x042f, 159}, {0x0430, 160}, {0x0431, 161}, + {0x0432, 162}, {0x0433, 163}, {0x0434, 164}, {0x0435, 165}, + {0x0436, 166}, {0x0437, 167}, {0x0438, 168}, {0x0439, 169}, + {0x043a, 170}, {0x043b, 171}, {0x043c, 172}, {0x043d, 173}, + {0x043e, 174}, {0x043f, 175}, {0x0440, 224}, {0x0441, 225}, + {0x0442, 226}, {0x0443, 227}, {0x0444, 228}, {0x0445, 229}, + {0x0446, 230}, {0x0447, 231}, {0x0448, 232}, {0x0449, 233}, + {0x044a, 234}, {0x044b, 235}, {0x044c, 236}, {0x044d, 237}, + {0x044e, 238}, {0x044f, 239}, {0x0451, 241}, {0x0454, 243}, + {0x0457, 245}, {0x045e, 247}, {0x2022, 7}, {0x203c, 19}, + {0x2116, 252}, {0x2190, 27}, {0x2191, 24}, {0x2192, 26}, + {0x2193, 25}, {0x2194, 29}, {0x2195, 18}, {0x21a8, 23}, + {0x2219, 249}, {0x221a, 251}, {0x221f, 28}, {0x2500, 196}, + {0x2502, 179}, {0x250c, 218}, {0x2510, 191}, {0x2514, 192}, + {0x2518, 217}, {0x251c, 195}, {0x2524, 180}, {0x252c, 194}, + {0x2534, 193}, {0x253c, 197}, {0x2550, 205}, {0x2551, 186}, + {0x2552, 213}, {0x2553, 214}, {0x2554, 201}, {0x2555, 184}, + {0x2556, 183}, {0x2557, 187}, {0x2558, 212}, {0x2559, 211}, + {0x255a, 200}, {0x255b, 190}, {0x255c, 189}, {0x255d, 188}, + {0x255e, 198}, {0x255f, 199}, {0x2560, 204}, {0x2561, 181}, + {0x2562, 182}, {0x2563, 185}, {0x2564, 209}, {0x2565, 210}, + {0x2566, 203}, {0x2567, 207}, {0x2568, 208}, {0x2569, 202}, + {0x256a, 216}, {0x256b, 215}, {0x256c, 206}, {0x2580, 223}, + {0x2584, 220}, {0x2588, 219}, {0x258c, 221}, {0x2590, 222}, + {0x2591, 176}, {0x2592, 177}, {0x2593, 178}, {0x25a0, 254}, + {0x25ac, 22}, {0x25b2, 30}, {0x25ba, 16}, {0x25bc, 31}, + {0x25c4, 17}, {0x25cb, 9}, {0x25d8, 8}, {0x25d9, 10}, + {0x263a, 1}, {0x263b, 2}, {0x263c, 15}, {0x2640, 12}, + {0x2642, 11}, {0x2660, 6}, {0x2663, 5}, {0x2665, 3}, + {0x2666, 4}, {0x266a, 13}, {0x266b, 14}, {0xfffd, '?'} +}; + +static uint32_t cp866_unicode_table[128] = { + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, + 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, + 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, + 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, + 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e, + 0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0 +}; + +static struct ciolib_cpmap cp866m_table[160] = { + {0x00a0, 255}, {0x00a7, 21}, {0x00b0, 248}, {0x00B2, 253}, + {0x00b6, 20}, {0x00b7, 250}, {0x00F7, 246}, {0x0401, 240}, + {0x0410, 128}, {0x0411, 129}, {0x0412, 130}, {0x0413, 131}, + {0x0414, 132}, {0x0415, 133}, {0x0416, 134}, {0x0417, 135}, + {0x0418, 136}, {0x0419, 137}, {0x041a, 138}, {0x041b, 139}, + {0x041c, 140}, {0x041d, 141}, {0x041e, 142}, {0x041f, 143}, + {0x0420, 144}, {0x0421, 145}, {0x0422, 146}, {0x0423, 147}, + {0x0424, 148}, {0x0425, 149}, {0x0426, 150}, {0x0427, 151}, + {0x0428, 152}, {0x0429, 153}, {0x042a, 154}, {0x042b, 155}, + {0x042c, 156}, {0x042d, 157}, {0x042e, 158}, {0x042f, 159}, + {0x0430, 160}, {0x0431, 161}, {0x0432, 162}, {0x0433, 163}, + {0x0434, 164}, {0x0435, 165}, {0x0436, 166}, {0x0437, 167}, + {0x0438, 168}, {0x0439, 169}, {0x043a, 170}, {0x043b, 171}, + {0x043c, 172}, {0x043d, 173}, {0x043e, 174}, {0x043f, 175}, + {0x0440, 224}, {0x0441, 225}, {0x0442, 226}, {0x0443, 227}, + {0x0444, 228}, {0x0445, 229}, {0x0446, 230}, {0x0447, 231}, + {0x0448, 232}, {0x0449, 233}, {0x044a, 234}, {0x044b, 235}, + {0x044c, 236}, {0x044d, 237}, {0x044e, 238}, {0x044f, 239}, + {0x0451, 241}, {0x045F, 252}, {0x2022, 7}, {0x203c, 19}, + {0x2190, 27}, {0x2191, 24}, {0x2192, 26}, {0x2193, 25}, + {0x2194, 29}, {0x2195, 18}, {0x21a8, 23}, {0x2219, 249}, + {0x221a, 251}, {0x221f, 28}, {0x2264, 243}, {0x2265, 242}, + {0x2320, 244}, {0x2321, 245}, {0x2248, 247}, {0x2500, 196}, + {0x2502, 179}, {0x250c, 218}, {0x2510, 191}, {0x2514, 192}, + {0x2518, 217}, {0x251c, 195}, {0x2524, 180}, {0x252c, 194}, + {0x2534, 193}, {0x253c, 197}, {0x2550, 205}, {0x2551, 186}, + {0x2552, 213}, {0x2553, 214}, {0x2554, 201}, {0x2555, 184}, + {0x2556, 183}, {0x2557, 187}, {0x2558, 212}, {0x2559, 211}, + {0x255a, 200}, {0x255b, 190}, {0x255c, 189}, {0x255d, 188}, + {0x255e, 198}, {0x255f, 199}, {0x2560, 204}, {0x2561, 181}, + {0x2562, 182}, {0x2563, 185}, {0x2564, 209}, {0x2565, 210}, + {0x2566, 203}, {0x2567, 207}, {0x2568, 208}, {0x2569, 202}, + {0x256a, 216}, {0x256b, 215}, {0x256c, 206}, {0x2580, 223}, + {0x2584, 220}, {0x2588, 219}, {0x258c, 221}, {0x2590, 222}, + {0x2591, 176}, {0x2592, 177}, {0x2593, 178}, {0x25a0, 254}, + {0x25ac, 22}, {0x25b2, 30}, {0x25ba, 16}, {0x25bc, 31}, + {0x25c4, 17}, {0x25cb, 9}, {0x25d8, 8}, {0x25d9, 10}, + {0x263a, 1}, {0x263b, 2}, {0x263c, 15}, {0x2640, 12}, + {0x2642, 11}, {0x2660, 6}, {0x2663, 5}, {0x2665, 3}, + {0x2666, 4}, {0x266a, 13}, {0x266b, 14}, {0xfffd, '?'} +}; + +static uint32_t cp866m_unicode_table[128] = { + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, + 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, + 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, + 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, + 0x0401, 0x0451, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, + 0x00b0, 0x2219, 0x00b7, 0x221a, 0x045F, 0x00B2, 0x25a0, 0x00a0 +}; + +static struct ciolib_cpmap iso8859_9_table[128] = { + {0x00a0, 160}, {0x00a1, 161}, {0x00a2, 162}, {0x00a3, 163}, + {0x00a4, 164}, {0x00a5, 165}, {0x00a6, 166}, {0x00a7, 167}, + {0x00a7, 21}, {0x00a8, 168}, {0x00a9, 169}, {0x00aa, 170}, + {0x00ab, 171}, {0x00ac, 172}, {0x00ad, 173}, {0x00ae, 174}, + {0x00af, 175}, {0x00b0, 176}, {0x00b1, 177}, {0x00b2, 178}, + {0x00b3, 179}, {0x00b4, 180}, {0x00b5, 181}, {0x00b6, 182}, + {0x00b6, 20}, {0x00b7, 183}, {0x00b8, 184}, {0x00b9, 185}, + {0x00ba, 186}, {0x00bb, 187}, {0x00bc, 188}, {0x00bd, 189}, + {0x00be, 190}, {0x00bf, 191}, {0x00c0, 192}, {0x00c1, 193}, + {0x00c2, 194}, {0x00c3, 195}, {0x00c4, 196}, {0x00c5, 197}, + {0x00c6, 198}, {0x00c7, 199}, {0x00c8, 200}, {0x00c9, 201}, + {0x00ca, 202}, {0x00cb, 203}, {0x00cc, 204}, {0x00cd, 205}, + {0x00ce, 206}, {0x00cf, 207}, {0x00d1, 209}, {0x00d2, 210}, + {0x00d3, 211}, {0x00d4, 212}, {0x00d5, 213}, {0x00d6, 214}, + {0x00d7, 215}, {0x00d8, 216}, {0x00d9, 217}, {0x00da, 218}, + {0x00db, 219}, {0x00dc, 220}, {0x00df, 223}, {0x00e0, 224}, + {0x00e1, 225}, {0x00e2, 226}, {0x00e3, 227}, {0x00e4, 228}, + {0x00e5, 229}, {0x00e6, 230}, {0x00e7, 231}, {0x00e8, 232}, + {0x00e9, 233}, {0x00ea, 234}, {0x00eb, 235}, {0x00ec, 236}, + {0x00ed, 237}, {0x00ee, 238}, {0x00ef, 239}, {0x00f1, 241}, + {0x00f2, 242}, {0x00f3, 243}, {0x00f4, 244}, {0x00f5, 245}, + {0x00f6, 246}, {0x00f7, 247}, {0x00f8, 248}, {0x00f9, 249}, + {0x00fa, 250}, {0x00fb, 251}, {0x00fc, 252}, {0x00ff, 255}, + {0x011e, 208}, {0x011f, 240}, {0x0130, 221}, {0x0131, 253}, + {0x015e, 222}, {0x015f, 254}, {0x2022, 7}, {0x203c, 19}, + {0x2190, 27}, {0x2191, 24}, {0x2192, 26}, {0x2193, 25}, + {0x2194, 29}, {0x2195, 18}, {0x21a8, 23}, {0x221f, 28}, + {0x25ac, 22}, {0x25b2, 30}, {0x25ba, 16}, {0x25bc, 31}, + {0x25c4, 17}, {0x25cb, 9}, {0x25d8, 8}, {0x25d9, 10}, + {0x263a, 1}, {0x263b, 2}, {0x263c, 15}, {0x2640, 12}, + {0x2642, 11}, {0x2660, 6}, {0x2663, 5}, {0x2665, 3}, + {0x2666, 4}, {0x266a, 13}, {0x266b, 14}, {0xfffd, '?'}, +}; + +static uint32_t iso8859_9_unicode_table[128] = { + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff +}; + +static struct ciolib_cpmap iso8859_8_table[92] = { + {0x00a0, 160}, {0x00a2, 162}, {0x00a3, 163}, {0x00a4, 164}, + {0x00a5, 165}, {0x00a6, 166}, {0x00a7, 167}, {0x00a7, 21}, + {0x00a8, 168}, {0x00a9, 169}, {0x00ab, 171}, {0x00ac, 172}, + {0x00ad, 173}, {0x00ae, 174}, {0x00af, 175}, {0x00b0, 176}, + {0x00b1, 177}, {0x00b2, 178}, {0x00b3, 179}, {0x00b4, 180}, + {0x00b5, 181}, {0x00b6, 182}, {0x00b6, 20}, {0x00b7, 183}, + {0x00b8, 184}, {0x00b9, 185}, {0x00bb, 187}, {0x00bc, 188}, + {0x00bd, 189}, {0x00be, 190}, {0x00d7, 170}, {0x00f7, 186}, + {0x05d0, 224}, {0x05d1, 225}, {0x05d2, 226}, {0x05d3, 227}, + {0x05d4, 228}, {0x05d5, 229}, {0x05d6, 230}, {0x05d7, 231}, + {0x05d8, 232}, {0x05d9, 233}, {0x05da, 234}, {0x05db, 235}, + {0x05dc, 236}, {0x05dd, 237}, {0x05de, 238}, {0x05df, 239}, + {0x05e0, 240}, {0x05e1, 241}, {0x05e2, 242}, {0x05e3, 243}, + {0x05e4, 244}, {0x05e5, 245}, {0x05e6, 246}, {0x05e7, 247}, + {0x05e8, 248}, {0x05e9, 249}, {0x05ea, 250}, {0x200e, 253}, + {0x200f, 254}, {0x2017, 223}, {0x2022, 7}, {0x203c, 19}, + {0x2190, 27}, {0x2191, 24}, {0x2192, 26}, {0x2193, 25}, + {0x2194, 29}, {0x2195, 18}, {0x21a8, 23}, {0x221f, 28}, + {0x25ac, 22}, {0x25b2, 30}, {0x25ba, 16}, {0x25bc, 31}, + {0x25c4, 17}, {0x25cb, 9}, {0x25d8, 8}, {0x25d9, 10}, + {0x263a, 1}, {0x263b, 2}, {0x263c, 15}, {0x2640, 12}, + {0x2642, 11}, {0x2660, 6}, {0x2663, 5}, {0x2665, 3}, + {0x2666, 4}, {0x266a, 13}, {0x266b, 14}, {0xfffd, '?'}, +}; + +static uint32_t iso8859_8_unicode_table[128] = { + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2017, + 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, + 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, + 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, + 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd +}; + +static struct ciolib_cpmap koi8_u_table[160] = { + {0x00a0, 154}, {0x00a7, 21}, {0x00a9, 191}, {0x00b0, 156}, + {0x00b2, 157}, {0x00b6, 20}, {0x00b7, 158}, {0x00f7, 159}, + {0x0401, 179}, {0x0404, 180}, {0x0406, 182}, {0x0407, 183}, + {0x0410, 225}, {0x0411, 226}, {0x0412, 247}, {0x0413, 231}, + {0x0414, 228}, {0x0415, 229}, {0x0416, 246}, {0x0417, 250}, + {0x0418, 233}, {0x0419, 234}, {0x041a, 235}, {0x041b, 236}, + {0x041c, 237}, {0x041d, 238}, {0x041e, 239}, {0x041f, 240}, + {0x0420, 242}, {0x0421, 243}, {0x0422, 244}, {0x0423, 245}, + {0x0424, 230}, {0x0425, 232}, {0x0426, 227}, {0x0427, 254}, + {0x0428, 251}, {0x0429, 253}, {0x042a, 255}, {0x042b, 249}, + {0x042c, 248}, {0x042d, 252}, {0x042e, 224}, {0x042f, 241}, + {0x0430, 193}, {0x0431, 194}, {0x0432, 215}, {0x0433, 199}, + {0x0434, 196}, {0x0435, 197}, {0x0436, 214}, {0x0437, 218}, + {0x0438, 201}, {0x0439, 202}, {0x043a, 203}, {0x043b, 204}, + {0x043c, 205}, {0x043d, 206}, {0x043e, 207}, {0x043f, 208}, + {0x0440, 210}, {0x0441, 211}, {0x0442, 212}, {0x0443, 213}, + {0x0444, 198}, {0x0445, 200}, {0x0446, 195}, {0x0447, 222}, + {0x0448, 219}, {0x0449, 221}, {0x044a, 223}, {0x044b, 217}, + {0x044c, 216}, {0x044d, 220}, {0x044e, 192}, {0x044f, 209}, + {0x0451, 163}, {0x0454, 164}, {0x0456, 166}, {0x0457, 167}, + {0x0490, 189}, {0x0491, 173}, {0x2022, 7}, {0x203c, 19}, + {0x2190, 27}, {0x2191, 24}, {0x2192, 26}, {0x2193, 25}, + {0x2194, 29}, {0x2195, 18}, {0x21a8, 23}, {0x2219, 149}, + {0x221a, 150}, {0x221f, 28}, {0x2248, 151}, {0x2264, 152}, + {0x2265, 153}, {0x2320, 147}, {0x2321, 155}, {0x2500, 128}, + {0x2502, 129}, {0x250c, 130}, {0x2510, 131}, {0x2514, 132}, + {0x2518, 133}, {0x251c, 134}, {0x2524, 135}, {0x252c, 136}, + {0x2534, 137}, {0x253c, 138}, {0x2550, 160}, {0x2551, 161}, + {0x2552, 162}, {0x2554, 165}, {0x2557, 168}, {0x2558, 169}, + {0x2559, 170}, {0x255a, 171}, {0x255b, 172}, {0x255d, 174}, + {0x255e, 175}, {0x255f, 176}, {0x2560, 177}, {0x2561, 178}, + {0x2563, 181}, {0x2566, 184}, {0x2567, 185}, {0x2568, 186}, + {0x2569, 187}, {0x256a, 188}, {0x256c, 190}, {0x2580, 139}, + {0x2584, 140}, {0x2588, 141}, {0x258c, 142}, {0x2590, 143}, + {0x2591, 144}, {0x2592, 145}, {0x2593, 146}, {0x25a0, 148}, + {0x25ac, 22}, {0x25b2, 30}, {0x25ba, 16}, {0x25bc, 31}, + {0x25c4, 17}, {0x25cb, 9}, {0x25d8, 8}, {0x25d9, 10}, + {0x263a, 1}, {0x263b, 2}, {0x263c, 15}, {0x2640, 12}, + {0x2642, 11}, {0x2660, 6}, {0x2663, 5}, {0x2665, 3}, + {0x2666, 4}, {0x266a, 13}, {0x266b, 14}, {0xfffd, '?'} +}; + +static uint32_t koi8_u_unicode_table[128] = { + 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, + 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, + 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, + 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, + 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, + 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e, + 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, + 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9, + 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, + 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, + 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, + 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, + 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, + 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, + 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, + 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a +}; + +static struct ciolib_cpmap iso8859_15_table[128] = { + {0x00a0, 160}, {0x00a1, 161}, {0x00a2, 162}, {0x00a3, 163}, + {0x00a5, 165}, {0x00a7, 167}, {0x00a7, 21}, {0x00a9, 169}, + {0x00aa, 170}, {0x00ab, 171}, {0x00ac, 172}, {0x00ad, 173}, + {0x00ae, 174}, {0x00af, 175}, {0x00b0, 176}, {0x00b1, 177}, + {0x00b2, 178}, {0x00b3, 179}, {0x00b5, 181}, {0x00b6, 20}, + {0x00b6, 182}, {0x00b7, 183}, {0x00b9, 185}, {0x00ba, 186}, + {0x00bb, 187}, {0x00bf, 191}, {0x00c0, 192}, {0x00c1, 193}, + {0x00c2, 194}, {0x00c3, 195}, {0x00c4, 196}, {0x00c5, 197}, + {0x00c6, 198}, {0x00c7, 199}, {0x00c8, 200}, {0x00c9, 201}, + {0x00ca, 202}, {0x00cb, 203}, {0x00cc, 204}, {0x00cd, 205}, + {0x00ce, 206}, {0x00cf, 207}, {0x00d0, 208}, {0x00d1, 209}, + {0x00d2, 210}, {0x00d3, 211}, {0x00d4, 212}, {0x00d5, 213}, + {0x00d6, 214}, {0x00d7, 215}, {0x00d8, 216}, {0x00d9, 217}, + {0x00da, 218}, {0x00db, 219}, {0x00dc, 220}, {0x00dd, 221}, + {0x00de, 222}, {0x00df, 223}, {0x00e0, 224}, {0x00e1, 225}, + {0x00e2, 226}, {0x00e3, 227}, {0x00e4, 228}, {0x00e5, 229}, + {0x00e6, 230}, {0x00e7, 231}, {0x00e8, 232}, {0x00e9, 233}, + {0x00ea, 234}, {0x00eb, 235}, {0x00ec, 236}, {0x00ed, 237}, + {0x00ee, 238}, {0x00ef, 239}, {0x00f0, 240}, {0x00f1, 241}, + {0x00f2, 242}, {0x00f3, 243}, {0x00f4, 244}, {0x00f5, 245}, + {0x00f6, 246}, {0x00f7, 247}, {0x00f8, 248}, {0x00f9, 249}, + {0x00fa, 250}, {0x00fb, 251}, {0x00fc, 252}, {0x00fd, 253}, + {0x00fe, 254}, {0x00ff, 255}, {0x0152, 188}, {0x0153, 189}, + {0x0160, 166}, {0x0161, 168}, {0x0178, 190}, {0x017d, 180}, + {0x017e, 184}, {0x2022, 7}, {0x203c, 19}, {0x20ac, 164}, + {0x2190, 27}, {0x2191, 24}, {0x2192, 26}, {0x2193, 25}, + {0x2194, 29}, {0x2195, 18}, {0x21a8, 23}, {0x221f, 28}, + {0x25ac, 22}, {0x25b2, 30}, {0x25ba, 16}, {0x25bc, 31}, + {0x25c4, 17}, {0x25cb, 9}, {0x25d8, 8}, {0x25d9, 10}, + {0x263a, 1}, {0x263b, 2}, {0x263c, 15}, {0x2640, 12}, + {0x2642, 11}, {0x2660, 6}, {0x2663, 5}, {0x2665, 3}, + {0x2666, 4}, {0x266a, 13}, {0x266b, 14}, {0xfffd, '?'} +}; + +static uint32_t iso8859_15_unicode_table[128] = { + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, + 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, + 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff +}; + +static struct ciolib_cpmap iso8859_5_table[128] = { + {0x00a0, 160}, {0x00a7, 21}, {0x00a7, 253}, {0x00ad, 173}, + {0x00b6, 20}, {0x0401, 161}, {0x0402, 162}, {0x0403, 163}, + {0x0404, 164}, {0x0405, 165}, {0x0406, 166}, {0x0407, 167}, + {0x0408, 168}, {0x0409, 169}, {0x040a, 170}, {0x040b, 171}, + {0x040c, 172}, {0x040e, 174}, {0x040f, 175}, {0x0410, 176}, + {0x0411, 177}, {0x0412, 178}, {0x0413, 179}, {0x0414, 180}, + {0x0415, 181}, {0x0416, 182}, {0x0417, 183}, {0x0418, 184}, + {0x0419, 185}, {0x041a, 186}, {0x041b, 187}, {0x041c, 188}, + {0x041d, 189}, {0x041e, 190}, {0x041f, 191}, {0x0420, 192}, + {0x0421, 193}, {0x0422, 194}, {0x0423, 195}, {0x0424, 196}, + {0x0425, 197}, {0x0426, 198}, {0x0427, 199}, {0x0428, 200}, + {0x0429, 201}, {0x042a, 202}, {0x042b, 203}, {0x042c, 204}, + {0x042d, 205}, {0x042e, 206}, {0x042f, 207}, {0x0430, 208}, + {0x0431, 209}, {0x0432, 210}, {0x0433, 211}, {0x0434, 212}, + {0x0435, 213}, {0x0436, 214}, {0x0437, 215}, {0x0438, 216}, + {0x0439, 217}, {0x043a, 218}, {0x043b, 219}, {0x043c, 220}, + {0x043d, 221}, {0x043e, 222}, {0x043f, 223}, {0x0440, 224}, + {0x0441, 225}, {0x0442, 226}, {0x0443, 227}, {0x0444, 228}, + {0x0445, 229}, {0x0446, 230}, {0x0447, 231}, {0x0448, 232}, + {0x0449, 233}, {0x044a, 234}, {0x044b, 235}, {0x044c, 236}, + {0x044d, 237}, {0x044e, 238}, {0x044f, 239}, {0x0451, 241}, + {0x0452, 242}, {0x0453, 243}, {0x0454, 244}, {0x0455, 245}, + {0x0456, 246}, {0x0457, 247}, {0x0458, 248}, {0x0459, 249}, + {0x045a, 250}, {0x045b, 251}, {0x045c, 252}, {0x045e, 254}, + {0x045f, 255}, {0x2022, 7}, {0x203c, 19}, {0x2116, 240}, + {0x2190, 27}, {0x2191, 24}, {0x2192, 26}, {0x2193, 25}, + {0x2194, 29}, {0x2195, 18}, {0x21a8, 23}, {0x221f, 28}, + {0x25ac, 22}, {0x25b2, 30}, {0x25ba, 16}, {0x25bc, 31}, + {0x25c4, 17}, {0x25cb, 9}, {0x25d8, 8}, {0x25d9, 10}, + {0x263a, 1}, {0x263b, 2}, {0x263c, 15}, {0x2640, 12}, + {0x2642, 11}, {0x2660, 6}, {0x2663, 5}, {0x2665, 3}, + {0x2666, 4}, {0x266a, 13}, {0x266b, 14}, {0xfffd, '?'} +}; + +static uint32_t iso8859_5_unicode_table[128] = { + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, + 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, + 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, + 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f +}; + +static struct ciolib_cpmap cp850_table[160] = { + {0x00a0, 255}, {0x00a1, 173}, {0x00a2, 189}, {0x00a3, 156}, + {0x00a4, 207}, {0x00a5, 190}, {0x00a6, 221}, {0x00a7, 21}, + {0x00a7, 245}, {0x00a8, 249}, {0x00a9, 184}, {0x00aa, 166}, + {0x00ab, 174}, {0x00ac, 170}, {0x00ad, 240}, {0x00ae, 169}, + {0x00af, 238}, {0x00b0, 248}, {0x00b1, 241}, {0x00b2, 253}, + {0x00b3, 252}, {0x00b4, 239}, {0x00b5, 230}, {0x00b6, 20}, + {0x00b6, 244}, {0x00b7, 250}, {0x00b8, 247}, {0x00b9, 251}, + {0x00ba, 167}, {0x00bb, 175}, {0x00bc, 172}, {0x00bd, 171}, + {0x00be, 243}, {0x00bf, 168}, {0x00c0, 183}, {0x00c1, 181}, + {0x00c2, 182}, {0x00c3, 199}, {0x00c4, 142}, {0x00c5, 143}, + {0x00c6, 146}, {0x00c7, 128}, {0x00c8, 212}, {0x00c9, 144}, + {0x00ca, 210}, {0x00cb, 211}, {0x00cc, 222}, {0x00cd, 214}, + {0x00ce, 215}, {0x00cf, 216}, {0x00d0, 209}, {0x00d1, 165}, + {0x00d2, 227}, {0x00d3, 224}, {0x00d4, 226}, {0x00d5, 229}, + {0x00d6, 153}, {0x00d7, 158}, {0x00d8, 157}, {0x00d9, 235}, + {0x00da, 233}, {0x00db, 234}, {0x00dc, 154}, {0x00dd, 237}, + {0x00de, 232}, {0x00df, 225}, {0x00e0, 133}, {0x00e1, 160}, + {0x00e2, 131}, {0x00e3, 198}, {0x00e4, 132}, {0x00e5, 134}, + {0x00e6, 145}, {0x00e7, 135}, {0x00e8, 138}, {0x00e9, 130}, + {0x00ea, 136}, {0x00eb, 137}, {0x00ec, 141}, {0x00ed, 161}, + {0x00ee, 140}, {0x00ef, 139}, {0x00f0, 208}, {0x00f1, 164}, + {0x00f2, 149}, {0x00f3, 162}, {0x00f4, 147}, {0x00f5, 228}, + {0x00f6, 148}, {0x00f7, 246}, {0x00f8, 155}, {0x00f9, 151}, + {0x00fa, 163}, {0x00fb, 150}, {0x00fc, 129}, {0x00fd, 236}, + {0x00fe, 231}, {0x00ff, 152}, {0x0131, 213}, {0x0192, 159}, + {0x2017, 242}, {0x2022, 7}, {0x203c, 19}, {0x2190, 27}, + {0x2191, 24}, {0x2192, 26}, {0x2193, 25}, {0x2194, 29}, + {0x2195, 18}, {0x21a8, 23}, {0x221f, 28}, {0x2500, 196}, + {0x2502, 179}, {0x250c, 218}, {0x2510, 191}, {0x2514, 192}, + {0x2518, 217}, {0x251c, 195}, {0x2524, 180}, {0x252c, 194}, + {0x2534, 193}, {0x253c, 197}, {0x2550, 205}, {0x2551, 186}, + {0x2554, 201}, {0x2557, 187}, {0x255a, 200}, {0x255d, 188}, + {0x2560, 204}, {0x2563, 185}, {0x2566, 203}, {0x2569, 202}, + {0x256c, 206}, {0x2580, 223}, {0x2584, 220}, {0x2588, 219}, + {0x2591, 176}, {0x2592, 177}, {0x2593, 178}, {0x25a0, 254}, + {0x25ac, 22}, {0x25b2, 30}, {0x25ba, 16}, {0x25bc, 31}, + {0x25c4, 17}, {0x25cb, 9}, {0x25d8, 8}, {0x25d9, 10}, + {0x263a, 1}, {0x263b, 2}, {0x263c, 15}, {0x2640, 12}, + {0x2642, 11}, {0x2660, 6}, {0x2663, 5}, {0x2665, 3}, + {0x2666, 4}, {0x266a, 13}, {0x266b, 14}, {0xfffd, '?'} +}; + +static uint32_t cp850_unicode_table[128] = { + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, + 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, + 0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, + 0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, + 0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, + 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, + 0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce, + 0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, + 0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe, + 0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4, + 0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, + 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0 +}; + +static struct ciolib_cpmap cp865_table[160] = { + {0x00a0, 255}, {0x00a1, 173}, {0x00a3, 156}, {0x00a4, 175}, + {0x00a7, 21}, {0x00aa, 166}, {0x00ab, 174}, {0x00ac, 170}, + {0x00b0, 248}, {0x00b1, 241}, {0x00b2, 253}, {0x00b5, 230}, + {0x00b6, 20}, {0x00b7, 250}, {0x00ba, 167}, {0x00bc, 172}, + {0x00bd, 171}, {0x00bf, 168}, {0x00c4, 142}, {0x00c5, 143}, + {0x00c6, 146}, {0x00c7, 128}, {0x00c9, 144}, {0x00d1, 165}, + {0x00d6, 153}, {0x00d8, 157}, {0x00dc, 154}, {0x00df, 225}, + {0x00e0, 133}, {0x00e1, 160}, {0x00e2, 131}, {0x00e4, 132}, + {0x00e5, 134}, {0x00e6, 145}, {0x00e7, 135}, {0x00e8, 138}, + {0x00e9, 130}, {0x00ea, 136}, {0x00eb, 137}, {0x00ec, 141}, + {0x00ed, 161}, {0x00ee, 140}, {0x00ef, 139}, {0x00f1, 164}, + {0x00f2, 149}, {0x00f3, 162}, {0x00f4, 147}, {0x00f6, 148}, + {0x00f7, 246}, {0x00f8, 155}, {0x00f9, 151}, {0x00fa, 163}, + {0x00fb, 150}, {0x00fc, 129}, {0x00ff, 152}, {0x0192, 159}, + {0x0393, 226}, {0x0398, 233}, {0x03a3, 228}, {0x03a6, 232}, + {0x03a9, 234}, {0x03b1, 224}, {0x03b4, 235}, {0x03b5, 238}, + {0x03c0, 227}, {0x03c3, 229}, {0x03c4, 231}, {0x03c6, 237}, + {0x2022, 7}, {0x203c, 19}, {0x207f, 252}, {0x20a7, 158}, + {0x2190, 27}, {0x2191, 24}, {0x2192, 26}, {0x2193, 25}, + {0x2194, 29}, {0x2195, 18}, {0x21a8, 23}, {0x2219, 249}, + {0x221a, 251}, {0x221e, 236}, {0x221f, 28}, {0x2229, 239}, + {0x2248, 247}, {0x2261, 240}, {0x2264, 243}, {0x2265, 242}, + {0x2310, 169}, {0x2320, 244}, {0x2321, 245}, {0x2500, 196}, + {0x2502, 179}, {0x250c, 218}, {0x2510, 191}, {0x2514, 192}, + {0x2518, 217}, {0x251c, 195}, {0x2524, 180}, {0x252c, 194}, + {0x2534, 193}, {0x253c, 197}, {0x2550, 205}, {0x2551, 186}, + {0x2552, 213}, {0x2553, 214}, {0x2554, 201}, {0x2555, 184}, + {0x2556, 183}, {0x2557, 187}, {0x2558, 212}, {0x2559, 211}, + {0x255a, 200}, {0x255b, 190}, {0x255c, 189}, {0x255d, 188}, + {0x255e, 198}, {0x255f, 199}, {0x2560, 204}, {0x2561, 181}, + {0x2562, 182}, {0x2563, 185}, {0x2564, 209}, {0x2565, 210}, + {0x2566, 203}, {0x2567, 207}, {0x2568, 208}, {0x2569, 202}, + {0x256a, 216}, {0x256b, 215}, {0x256c, 206}, {0x2580, 223}, + {0x2584, 220}, {0x2588, 219}, {0x258c, 221}, {0x2590, 222}, + {0x2591, 176}, {0x2592, 177}, {0x2593, 178}, {0x25a0, 254}, + {0x25ac, 22}, {0x25b2, 30}, {0x25ba, 16}, {0x25bc, 31}, + {0x25c4, 17}, {0x25cb, 9}, {0x25d8, 8}, {0x25d9, 10}, + {0x263a, 1}, {0x263b, 2}, {0x263c, 15}, {0x2640, 12}, + {0x2642, 11}, {0x2660, 6}, {0x2663, 5}, {0x2665, 3}, + {0x2666, 4}, {0x266a, 13}, {0x266b, 14}, {0xfffd, '?'} +}; + +static uint32_t cp865_unicode_table[128] = { + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, + 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, + 0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, + 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00a4, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, + 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, + 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, + 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, + 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, + 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, + 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, + 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0 + +}; + static int cmptab(const void *key, const void *entry) { @@ -606,6 +1124,30 @@ struct codepage_def ciolib_cp[CIOLIB_CP_COUNT] = { {"ISO-8859-4", CIOLIB_ISO_8859_4, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, iso8859_4_table, sizeof(iso8859_4_table) / sizeof(iso8859_4_table[0]), iso8859_4_unicode_table, empty_ext_table}, + {"CP866M", CIOLIB_CP866M, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, + cp866m_table, sizeof(cp866m_table) / sizeof(cp866m_table[0]), + cp866m_unicode_table, cp437_ext_table}, + {"ISO-8859-9", CIOLIB_ISO_8859_9, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, + iso8859_9_table, sizeof(iso8859_9_table) / sizeof(iso8859_9_table[0]), + iso8859_9_unicode_table, empty_ext_table}, + {"ISO-8859-8", CIOLIB_ISO_8859_8, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, + iso8859_8_table, sizeof(iso8859_8_table) / sizeof(iso8859_8_table[0]), + iso8859_8_unicode_table, empty_ext_table}, + {"KOI8-U", CIOLIB_KOI8_U, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, + koi8_u_table, sizeof(koi8_u_table) / sizeof(koi8_u_table[0]), + koi8_u_unicode_table, empty_ext_table}, + {"ISO-8859-15", CIOLIB_ISO_8859_15, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, + iso8859_15_table, sizeof(iso8859_15_table) / sizeof(iso8859_15_table[0]), + iso8859_15_unicode_table, empty_ext_table}, + {"ISO-8859-5", CIOLIB_ISO_8859_5, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, + iso8859_5_table, sizeof(iso8859_5_table) / sizeof(iso8859_5_table[0]), + iso8859_5_unicode_table, empty_ext_table}, + {"CP850", CIOLIB_CP850, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, + cp850_table, sizeof(cp850_table) / sizeof(cp850_table[0]), + cp850_unicode_table, cp437_ext_table}, + {"CP865", CIOLIB_CP865, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, + cp865_table, sizeof(cp865_table) / sizeof(cp865_table[0]), + cp865_unicode_table, cp437_ext_table}, }; uint8_t *cp_to_utf8(enum ciolib_codepage cp, const char *cpstr, size_t buflen, size_t *outlen) diff --git a/src/conio/utf8_codepages.h b/src/conio/utf8_codepages.h index 2b3ccbf4e33c8b366333de2db56c31b884fc12c2..36b752ad6d3f25a03c162afc747dc2a47f44e3ca 100644 --- a/src/conio/utf8_codepages.h +++ b/src/conio/utf8_codepages.h @@ -7,6 +7,14 @@ enum ciolib_codepage { CIOLIB_KOI8_R, CIOLIB_ISO_8859_2, CIOLIB_ISO_8859_4, + CIOLIB_CP866M, + CIOLIB_ISO_8859_9, + CIOLIB_ISO_8859_8, + CIOLIB_KOI8_U, + CIOLIB_ISO_8859_15, + CIOLIB_ISO_8859_5, + CIOLIB_CP850, + CIOLIB_CP865, CIOLIB_CP_COUNT };