/* Read http://z0b.kapsi.fi/snippets.php before using this code. Thank you. */ /* Code page 437 in UTF-8. The table contains 256 entries, one for every character. Use like this: printf("%s", cp437[1].utf8); Tested under Arch Linux. If your console font does not contain the required characters, the output will be wonky. */ #ifndef _CP437_TABLE #define _CP437_TABLE #include const struct codepage_t { uint16_t code; /* UCS-2 code */ const char *utf8; /* equivalent UTF-8 string */ } cp437[] = { { /* 0 */ 0x0020, "\x20" }, /* a small compromise, would not be visible otherwise */ { /* 1 */ 0x263a, "\xE2\x98\xBA" }, { /* 2 */ 0x263b, "\xE2\x98\xBB" }, { /* 3 */ 0x2665, "\xE2\x99\xA5" }, { /* 4 */ 0x2666, "\xE2\x99\xA6" }, { /* 5 */ 0x2663, "\xE2\x99\xA3" }, { /* 6 */ 0x2660, "\xE2\x99\xA0" }, { /* 7 */ 0x25cf, "\xE2\x97\x8F" }, { /* 8 */ 0x25d8, "\xE2\x97\x98" }, { /* 9 */ 0x25cb, "\xE2\x97\x8B" }, { /* 10 */ 0x25d9, "\xE2\x97\x99" }, { /* 11 */ 0x2642, "\xE2\x99\x82" }, { /* 12 */ 0x2640, "\xE2\x99\x80" }, { /* 13 */ 0x266a, "\xE2\x99\xAA" }, { /* 14 */ 0x266b, "\xE2\x99\xAB" }, { /* 15 */ 0x263c, "\xE2\x98\xBC" }, { /* 16 */ 0x25ba, "\xE2\x96\xBA" }, { /* 17 */ 0x25c4, "\xE2\x97\x84" }, { /* 18 */ 0x2195, "\xE2\x86\x95" }, { /* 19 */ 0x203c, "\xE2\x80\xBC" }, { /* 20 */ 0x00b6, "\xC2\xB6" }, { /* 21 */ 0x00a7, "\xC2\xA7" }, { /* 22 */ 0x2584, "\xE2\x96\x84" }, { /* 23 */ 0x21a8, "\xE2\x86\xA8" }, { /* 24 */ 0x2191, "\xE2\x86\x91" }, { /* 25 */ 0x2193, "\xE2\x86\x93" }, { /* 26 */ 0x2192, "\xE2\x86\x92" }, { /* 27 */ 0x2190, "\xE2\x86\x90" }, { /* 28 */ 0x221f, "\xE2\x88\x9F" }, { /* 29 */ 0x2194, "\xE2\x86\x94" }, { /* 30 */ 0x25b2, "\xE2\x96\xB2" }, { /* 31 */ 0x25bc, "\xE2\x96\xBC" }, { /* 32 */ 0x0020, "\x20" }, { /* 33 */ 0x0021, "\x21" }, { /* 34 */ 0x0022, "\x22" }, { /* 35 */ 0x0023, "\x23" }, { /* 36 */ 0x0024, "\x24" }, { /* 37 */ 0x0025, "\x25" }, { /* 38 */ 0x0026, "\x26" }, { /* 39 */ 0x0027, "\x27" }, { /* 40 */ 0x0028, "\x28" }, { /* 41 */ 0x0029, "\x29" }, { /* 42 */ 0x002a, "\x2A" }, { /* 43 */ 0x002b, "\x2B" }, { /* 44 */ 0x002c, "\x2C" }, { /* 45 */ 0x002d, "\x2D" }, { /* 46 */ 0x002e, "\x2E" }, { /* 47 */ 0x002f, "\x2F" }, { /* 48 */ 0x0030, "\x30" }, { /* 49 */ 0x0031, "\x31" }, { /* 50 */ 0x0032, "\x32" }, { /* 51 */ 0x0033, "\x33" }, { /* 52 */ 0x0034, "\x34" }, { /* 53 */ 0x0035, "\x35" }, { /* 54 */ 0x0036, "\x36" }, { /* 55 */ 0x0037, "\x37" }, { /* 56 */ 0x0038, "\x38" }, { /* 57 */ 0x0039, "\x39" }, { /* 58 */ 0x003a, "\x3A" }, { /* 59 */ 0x003b, "\x3B" }, { /* 60 */ 0x003c, "\x3C" }, { /* 61 */ 0x003d, "\x3D" }, { /* 62 */ 0x003e, "\x3E" }, { /* 63 */ 0x003f, "\x3F" }, { /* 64 */ 0x0040, "\x40" }, { /* 65 */ 0x0041, "\x41" }, { /* 66 */ 0x0042, "\x42" }, { /* 67 */ 0x0043, "\x43" }, { /* 68 */ 0x0044, "\x44" }, { /* 69 */ 0x0045, "\x45" }, { /* 70 */ 0x0046, "\x46" }, { /* 71 */ 0x0047, "\x47" }, { /* 72 */ 0x0048, "\x48" }, { /* 73 */ 0x0049, "\x49" }, { /* 74 */ 0x004a, "\x4A" }, { /* 75 */ 0x004b, "\x4B" }, { /* 76 */ 0x004c, "\x4C" }, { /* 77 */ 0x004d, "\x4D" }, { /* 78 */ 0x004e, "\x4E" }, { /* 79 */ 0x004f, "\x4F" }, { /* 80 */ 0x0050, "\x50" }, { /* 81 */ 0x0051, "\x51" }, { /* 82 */ 0x0052, "\x52" }, { /* 83 */ 0x0053, "\x53" }, { /* 84 */ 0x0054, "\x54" }, { /* 85 */ 0x0055, "\x55" }, { /* 86 */ 0x0056, "\x56" }, { /* 87 */ 0x0057, "\x57" }, { /* 88 */ 0x0058, "\x58" }, { /* 89 */ 0x0059, "\x59" }, { /* 90 */ 0x005a, "\x5A" }, { /* 91 */ 0x005b, "\x5B" }, { /* 92 */ 0x005c, "\x5C" }, { /* 93 */ 0x005d, "\x5D" }, { /* 94 */ 0x005e, "\x5E" }, { /* 95 */ 0x005f, "\x5F" }, { /* 96 */ 0x0060, "\x60" }, { /* 97 */ 0x0061, "\x61" }, { /* 98 */ 0x0062, "\x62" }, { /* 99 */ 0x0063, "\x63" }, { /* 100 */ 0x0064, "\x64" }, { /* 101 */ 0x0065, "\x65" }, { /* 102 */ 0x0066, "\x66" }, { /* 103 */ 0x0067, "\x67" }, { /* 104 */ 0x0068, "\x68" }, { /* 105 */ 0x0069, "\x69" }, { /* 106 */ 0x006a, "\x6A" }, { /* 107 */ 0x006b, "\x6B" }, { /* 108 */ 0x006c, "\x6C" }, { /* 109 */ 0x006d, "\x6D" }, { /* 110 */ 0x006e, "\x6E" }, { /* 111 */ 0x006f, "\x6F" }, { /* 112 */ 0x0070, "\x70" }, { /* 113 */ 0x0071, "\x71" }, { /* 114 */ 0x0072, "\x72" }, { /* 115 */ 0x0073, "\x73" }, { /* 116 */ 0x0074, "\x74" }, { /* 117 */ 0x0075, "\x75" }, { /* 118 */ 0x0076, "\x76" }, { /* 119 */ 0x0077, "\x77" }, { /* 120 */ 0x0078, "\x78" }, { /* 121 */ 0x0079, "\x79" }, { /* 122 */ 0x007a, "\x7A" }, { /* 123 */ 0x007b, "\x7B" }, { /* 124 */ 0x007c, "\x7C" }, { /* 125 */ 0x007d, "\x7D" }, { /* 126 */ 0x007e, "\x7E" }, { /* 127 */ 0x2302, "\xE2\x8C\x82" }, { /* 128 */ 0x00c7, "\xC3\x87" }, { /* 129 */ 0x00fc, "\xC3\xBC" }, { /* 130 */ 0x00e9, "\xC3\xA9" }, { /* 131 */ 0x00e2, "\xC3\xA2" }, { /* 132 */ 0x00e4, "\xC3\xA4" }, { /* 133 */ 0x00e0, "\xC3\xA0" }, { /* 134 */ 0x00e5, "\xC3\xA5" }, { /* 135 */ 0x00e7, "\xC3\xA7" }, { /* 136 */ 0x00ea, "\xC3\xAA" }, { /* 137 */ 0x00eb, "\xC3\xAB" }, { /* 138 */ 0x00e8, "\xC3\xA8" }, { /* 139 */ 0x00ef, "\xC3\xAF" }, { /* 140 */ 0x00ee, "\xC3\xAE" }, { /* 141 */ 0x00ec, "\xC3\xAC" }, { /* 142 */ 0x00c4, "\xC3\x84" }, { /* 143 */ 0x00c5, "\xC3\x85" }, { /* 144 */ 0x00c9, "\xC3\x89" }, { /* 145 */ 0x00e6, "\xC3\xA6" }, { /* 146 */ 0x00c6, "\xC3\x86" }, { /* 147 */ 0x00f4, "\xC3\xB4" }, { /* 148 */ 0x00f6, "\xC3\xB6" }, { /* 149 */ 0x00f2, "\xC3\xB2" }, { /* 150 */ 0x00fb, "\xC3\xBB" }, { /* 151 */ 0x00f9, "\xC3\xB9" }, { /* 152 */ 0x00ff, "\xC3\xBF" }, { /* 153 */ 0x00d6, "\xC3\x96" }, { /* 154 */ 0x00dc, "\xC3\x9C" }, { /* 155 */ 0x00a2, "\xC2\xA2" }, { /* 156 */ 0x00a3, "\xC2\xA3" }, { /* 157 */ 0x00a5, "\xC2\xA5" }, { /* 158 */ 0x20a7, "\xE2\x82\xA7" }, { /* 159 */ 0x0192, "\xC6\x92" }, { /* 160 */ 0x00e1, "\xC3\xA1" }, { /* 161 */ 0x00ed, "\xC3\xAD" }, { /* 162 */ 0x00f3, "\xC3\xB3" }, { /* 163 */ 0x00fa, "\xC3\xBA" }, { /* 164 */ 0x00f1, "\xC3\xB1" }, { /* 165 */ 0x00d1, "\xC3\x91" }, { /* 166 */ 0x00aa, "\xC2\xAA" }, { /* 167 */ 0x00ba, "\xC2\xBA" }, { /* 168 */ 0x00bf, "\xC2\xBF" }, { /* 169 */ 0x2310, "\xE2\x8C\x90" }, { /* 170 */ 0x00ac, "\xC2\xAC" }, { /* 171 */ 0x00bd, "\xC2\xBD" }, { /* 172 */ 0x00bc, "\xC2\xBC" }, { /* 173 */ 0x00a1, "\xC2\xA1" }, { /* 174 */ 0x00ab, "\xC2\xAB" }, { /* 175 */ 0x00bb, "\xC2\xBB" }, { /* 176 */ 0x2591, "\xE2\x96\x91" }, { /* 177 */ 0x2592, "\xE2\x96\x92" }, { /* 178 */ 0x2593, "\xE2\x96\x93" }, { /* 179 */ 0x2502, "\xE2\x94\x82" }, { /* 180 */ 0x2524, "\xE2\x94\xA4" }, { /* 181 */ 0x2561, "\xE2\x95\xA1" }, { /* 182 */ 0x2562, "\xE2\x95\xA2" }, { /* 183 */ 0x2556, "\xE2\x95\x96" }, { /* 184 */ 0x2555, "\xE2\x95\x95" }, { /* 185 */ 0x2563, "\xE2\x95\xA3" }, { /* 186 */ 0x2551, "\xE2\x95\x91" }, { /* 187 */ 0x2557, "\xE2\x95\x97" }, { /* 188 */ 0x255d, "\xE2\x95\x9D" }, { /* 189 */ 0x255c, "\xE2\x95\x9C" }, { /* 190 */ 0x255b, "\xE2\x95\x9B" }, { /* 191 */ 0x2510, "\xE2\x94\x90" }, { /* 192 */ 0x2514, "\xE2\x94\x94" }, { /* 193 */ 0x2534, "\xE2\x94\xB4" }, { /* 194 */ 0x252c, "\xE2\x94\xAC" }, { /* 195 */ 0x251c, "\xE2\x94\x9C" }, { /* 196 */ 0x2500, "\xE2\x94\x80" }, { /* 197 */ 0x253c, "\xE2\x94\xBC" }, { /* 198 */ 0x255e, "\xE2\x95\x9E" }, { /* 199 */ 0x255f, "\xE2\x95\x9F" }, { /* 200 */ 0x255a, "\xE2\x95\x9A" }, { /* 201 */ 0x2554, "\xE2\x95\x94" }, { /* 202 */ 0x2569, "\xE2\x95\xA9" }, { /* 203 */ 0x2566, "\xE2\x95\xA6" }, { /* 204 */ 0x2560, "\xE2\x95\xA0" }, { /* 205 */ 0x2550, "\xE2\x95\x90" }, { /* 206 */ 0x256c, "\xE2\x95\xAC" }, { /* 207 */ 0x2567, "\xE2\x95\xA7" }, { /* 208 */ 0x2568, "\xE2\x95\xA8" }, { /* 209 */ 0x2564, "\xE2\x95\xA4" }, { /* 210 */ 0x2565, "\xE2\x95\xA5" }, { /* 211 */ 0x2559, "\xE2\x95\x99" }, { /* 212 */ 0x2558, "\xE2\x95\x98" }, { /* 213 */ 0x2552, "\xE2\x95\x92" }, { /* 214 */ 0x2553, "\xE2\x95\x93" }, { /* 215 */ 0x256b, "\xE2\x95\xAB" }, { /* 216 */ 0x256a, "\xE2\x95\xAA" }, { /* 217 */ 0x2518, "\xE2\x94\x98" }, { /* 218 */ 0x250c, "\xE2\x94\x8C" }, { /* 219 */ 0x2588, "\xE2\x96\x88" }, { /* 220 */ 0x2584, "\xE2\x96\x84" }, { /* 221 */ 0x258c, "\xE2\x96\x8C" }, { /* 222 */ 0x2590, "\xE2\x96\x90" }, { /* 223 */ 0x2580, "\xE2\x96\x80" }, { /* 224 */ 0x03b1, "\xCE\xB1" }, { /* 225 */ 0x00df, "\xC3\x9F" }, { /* 226 */ 0x0393, "\xCE\x93" }, { /* 227 */ 0x03c0, "\xCF\x80" }, { /* 228 */ 0x03a3, "\xCE\xA3" }, { /* 229 */ 0x03c3, "\xCF\x83" }, { /* 230 */ 0x00b5, "\xC2\xB5" }, { /* 231 */ 0x03c4, "\xCF\x84" }, { /* 232 */ 0x03a6, "\xCE\xA6" }, { /* 233 */ 0x0398, "\xCE\x98" }, { /* 234 */ 0x03a9, "\xCE\xA9" }, { /* 235 */ 0x03b4, "\xCE\xB4" }, { /* 236 */ 0x221e, "\xE2\x88\x9E" }, { /* 237 */ 0x03c6, "\xCF\x86" }, { /* 238 */ 0x03b5, "\xCE\xB5" }, { /* 239 */ 0x2229, "\xE2\x88\xA9" }, { /* 240 */ 0x2261, "\xE2\x89\xA1" }, { /* 241 */ 0x00b1, "\xC2\xB1" }, { /* 242 */ 0x2265, "\xE2\x89\xA5" }, { /* 243 */ 0x2264, "\xE2\x89\xA4" }, { /* 244 */ 0x2320, "\xE2\x8C\xA0" }, { /* 245 */ 0x2321, "\xE2\x8C\xA1" }, { /* 246 */ 0x00f7, "\xC3\xB7" }, { /* 247 */ 0x2248, "\xE2\x89\x88" }, { /* 248 */ 0x00b0, "\xC2\xB0" }, { /* 249 */ 0x2219, "\xE2\x88\x99" }, { /* 250 */ 0x00b7, "\xC2\xB7" }, { /* 251 */ 0x221a, "\xE2\x88\x9A" }, { /* 252 */ 0x207f, "\xE2\x81\xBF" }, { /* 253 */ 0x00b2, "\xC2\xB2" }, { /* 254 */ 0x25a0, "\xE2\x96\xA0" }, { /* 255 */ 0x00a0, "\xC2\xA0" }, }; #endif