1 static const unsigned short sjis_mac2wchar1[] = { // 0x03ac - 0x03c9 2 0x339c, 0x339f, 0x339d, 0x33a0, 3 0x33a4, 0xff4d, 0x33a1, 0x33a5, 4 0x339e, 0x33a2, 0x338e, 0xff47, 5 0x338f, 0x33c4, 0x3396, 0x3397, 6 0x2113, 0x3398, 0x33b3, 0x33b2, 7 0x33b1, 0x33b0, 0x2109, 0x33d4, 8 0x33cb, 0x3390, 0x3385, 0x3386, 9 0x3387, 0xf860, }; 10 static const unsigned short sjis_mac2wchar2[] = { // 0x0406 - 0x0420 11 0x2116, 0x33cd, 12 0x2121, 0xf861, 0x2664, 0x2667, 13 0x2661, 0x2662, 0x2660, 0x2663, 14 0x2665, 0x2666, 0x0000, 0x0000, 15 0x0000, 0x0000, 0x0000, 0x0000, 16 0x0000, 0x0000, 0x0000, 0x0000, 17 0x0000, 0x0000, 0x3020, 0x260e, 18 0x3004, }; 19 static const unsigned short sjis_mac2wchar3[] = { // 0x0432 - 0x0441 20 0x261e, 0x261c, 21 0x261d, 0x261f, 0x21c6, 0x21c4, 22 0x21c5, 0xf860, 0x21e8, 0x21e6, 23 0x21e7, 0x21e9, 0x21e8, 0x21e6, 24 0x21e7, 0x21e9, }; 25 static const unsigned short sjis_mac2wchar4[] = { // 0x0468 - 0x0480 26 0x3230, 0x322a, 0x322b, 0x322c, 27 0x322d, 0x322e, 0x322f, 0x3240, 28 0x3237, 0x3242, 0x3243, 0x3239, 29 0x323a, 0x3231, 0x323e, 0x3234, 30 0x3232, 0x323b, 0x3236, 0x3233, 31 0x3235, 0x323c, 0x323d, 0x323f, 32 0x3238, }; 33 static const unsigned short sjis_mac2wchar5[] = { // 0x04b8 - 0x04e8 34 0x5927, 0x5c0f, 0x32a4, 0x32a5, 35 0x32a6, 0x32a7, 0x32a8, 0x32a9, 36 0x3296, 0x329d, 0x3298, 0x329e, 37 0x63a7, 0x3299, 0x3349, 0x3322, 38 0x334d, 0x3314, 0x3316, 0x3305, 39 0x3333, 0x334e, 0x3303, 0x3336, 40 0x3318, 0x3315, 0x3327, 0x3351, 41 0x334a, 0x3339, 0x3357, 0x330d, 42 0x3342, 0x3323, 0x3326, 0x333b, 43 0x332b, 0x0000, 0x0000, 0x0000, 44 0x0000, 0x0000, 0x0000, 0x0000, 45 0x3300, 0x331e, 0x332a, 0x3331, 46 0x3347, }; 47 static const unsigned short sjis_mac2wchar6[] = { // 0x050c - 0x0551 48 0x337e, 0x337d, 0x337c, 0x337b, 49 0x0000, 0x0000, 0x0000, 0x0000, 50 0x0000, 0x0000, 0x0000, 0x0000, 51 0x0000, 0x0000, 0x0000, 0x0000, 52 0x0000, 0x0000, 0x0000, 0x0000, 53 0x0000, 0x337f, 0xf862, 0xf862, 54 0x222e, 0x221f, 0x22bf, 0x0000, 55 0x0000, 0x0000, 0x0000, 0x0000, 56 0x0000, 0x0000, 0x0000, 0x0000, 57 0x0000, 0x0000, 0x0000, 0x0000, 58 0x0000, 0x0000, 0x0000, 0x0000, 59 0x301d, 0x301f, 0x0000, 0x0000, 60 0x0000, 0x0000, 0x0000, 0x0000, 61 0x0000, 0x0000, 0x0000, 0x0000, 62 0x0000, 0x0000, 0x0000, 0x0000, 63 0x0000, 0x0000, 0x0000, 0x0000, 64 0x3094, 0x0000, 0x30f7, 0x30f8, 65 0x30f9, 0x30fa, }; 66 static const unsigned short sjis_mac2wchar7[] = { // 0x1ed9 - 0x1f18 67 0x3001, 0x3002, 0x0000, 68 0x0000, 0x0000, 0x0000, 0x0000, 69 0x0000, 0x0000, 0x0000, 0x0000, 70 0x0000, 0x0000, 0x0000, 0x0000, 71 0xffe3, 0xfe33, 0x0000, 0x0000, 72 0x0000, 0x0000, 0x0000, 0x0000, 73 0x0000, 0x0000, 0x0000, 0x30fc, 74 0xfe31, 0x2010, 0x0000, 0x0000, 75 0x301c, 0x2016, 0xff5c, 0x2026, 76 0xfe30, 0x0000, 0x0000, 0x0000, 77 0x0000, 0xfe35, 0xfe36, 0xfe39, 78 0xfe3a, 0xff3b, 0xff3d, 0xfe37, 79 0xfe38, 0xfe3f, 0xfe40, 0xfe3d, 80 0xfe3e, 0xfe41, 0xfe42, 0xfe43, 81 0xfe44, 0xfe3b, 0xfe3c, 0x0000, 82 0x0000, 0x0000, 0x0000, 0x0000, 83 0xff1d, }; 84 static const unsigned short sjis_mac2wchar8[] = { // 0x1ff2 - 0x20a5 85 0x3041, 0x0000, 86 0x3043, 0x0000, 0x3045, 0x0000, 87 0x3047, 0x0000, 0x3049, 0x0000, 88 0x0000, 0x0000, 0x0000, 0x0000, 89 0x0000, 0x0000, 0x0000, 0x0000, 90 0x0000, 0x0000, 0x0000, 0x0000, 91 0x0000, 0x0000, 0x0000, 0x0000, 92 0x0000, 0x0000, 0x0000, 0x0000, 93 0x0000, 0x0000, 0x0000, 0x0000, 94 0x3063, 0x0000, 0x0000, 0x0000, 95 0x0000, 0x0000, 0x0000, 0x0000, 96 0x0000, 0x0000, 0x0000, 0x0000, 97 0x0000, 0x0000, 0x0000, 0x0000, 98 0x0000, 0x0000, 0x0000, 0x0000, 99 0x0000, 0x0000, 0x0000, 0x0000, 100 0x0000, 0x0000, 0x0000, 0x0000, 101 0x0000, 0x0000, 0x0000, 0x0000, 102 0x3083, 0x0000, 0x3085, 0x0000, 103 0x3087, 0x0000, 0x0000, 0x0000, 104 0x0000, 0x0000, 0x0000, 0x308e, 105 0x0000, 0x0000, 0x0000, 0x0000, 106 0x0000, 0x0000, 0x0000, 0x0000, 107 0x0000, 0x0000, 0x0000, 0x0000, 108 0x0000, 0x0000, 0x0000, 0x0000, 109 0x30a1, 0x0000, 0x30a3, 0x0000, 110 0x30a5, 0x0000, 0x30a7, 0x0000, 111 0x30a9, 0x0000, 0x0000, 0x0000, 112 0x0000, 0x0000, 0x0000, 0x0000, 113 0x0000, 0x0000, 0x0000, 0x0000, 114 0x0000, 0x0000, 0x0000, 0x0000, 115 0x0000, 0x0000, 0x0000, 0x0000, 116 0x0000, 0x0000, 0x0000, 0x0000, 117 0x0000, 0x0000, 0x30c3, 0x0000, 118 0x0000, 0x0000, 0x0000, 0x0000, 119 0x0000, 0x0000, 0x0000, 0x0000, 120 0x0000, 0x0000, 0x0000, 0x0000, 121 0x0000, 0x0000, 0x0000, 0x0000, 122 0x0000, 0x0000, 0x0000, 0x0000, 123 0x0000, 0x0000, 0x0000, 0x0000, 124 0x0000, 0x0000, 0x0000, 0x0000, 125 0x0000, 0x0000, 0x30e3, 0x0000, 126 0x30e5, 0x0000, 0x30e7, 0x0000, 127 0x0000, 0x0000, 0x0000, 0x0000, 128 0x0000, 0x30ee, 0x0000, 0x0000, 129 0x0000, 0x0000, 0x0000, 0x0000, 130 0x30f5, 0x30f6, }; 131 132 static const unsigned short wchar2sjis_mac4[] = { // 0x2660 - 0x2667 133 0x040e, 0x040c, 0x040d, 0x040f, 134 0x040a, 0x0410, 0x0411, 0x040b, 135 }; 136 137 static const unsigned short wchar2sjis_mac7[] = { // 0x322a - 0x3243 138 0x0469, 0x046a, 139 0x046b, 0x046c, 0x046d, 0x046e, 140 0x0468, 0x0475, 0x0478, 0x047b, 141 0x0477, 0x047c, 0x047a, 0x0470, 142 0x0480, 0x0473, 0x0474, 0x0479, 143 0x047d, 0x047e, 0x0476, 0x047f, 144 0x046f, 0x0000, 0x0471, 0x0472, 145 }; 146 147 static const unsigned short wchar2sjis_mac8[] = { // 0x3296 - 0x329e 148 0x04c0, 0x0000, 149 0x04c2, 0x04c5, 0x0000, 0x0000, 150 0x0000, 0x04c1, 0x04c3, }; 151 152 static const unsigned short wchar2sjis_mac9[] = { // 0x3300 - 0x33d4 153 0x04e4, 0x0000, 0x0000, 0x04ce, 154 0x0000, 0x04cb, 0x0000, 0x0000, 155 0x0000, 0x0000, 0x0000, 0x0000, 156 0x0000, 0x04d7, 0x0000, 0x0000, 157 0x0000, 0x0000, 0x0000, 0x0000, 158 0x04c9, 0x04d1, 0x04ca, 0x0000, 159 0x04d0, 0x0000, 0x0000, 0x0000, 160 0x0000, 0x0000, 0x04e5, 0x0000, 161 0x0000, 0x0000, 0x04c7, 0x04d9, 162 0x0000, 0x0000, 0x04da, 0x04d2, 163 0x0000, 0x0000, 0x04e6, 0x04dc, 164 0x0000, 0x0000, 0x0000, 0x0000, 165 0x0000, 0x04e7, 0x0000, 0x04cc, 166 0x0000, 0x0000, 0x04cf, 0x0000, 167 0x0000, 0x04d5, 0x0000, 0x04db, 168 0x0000, 0x0000, 0x0000, 0x0000, 169 0x0000, 0x0000, 0x04d8, 0x0000, 170 0x0000, 0x0000, 0x0000, 0x04e8, 171 0x0000, 0x04c6, 0x04d4, 0x0000, 172 0x0000, 0x04c8, 0x04cd, 0x0000, 173 0x0000, 0x04d3, 0x0000, 0x0000, 174 0x0000, 0x0000, 0x0000, 0x04d6, 175 0x0000, 0x0000, 0x0000, 0x0000, 176 0x0000, 0x0000, 0x0000, 0x0000, 177 0x0000, 0x0000, 0x0000, 0x0000, 178 0x0000, 0x0000, 0x0000, 0x0000, 179 0x0000, 0x0000, 0x0000, 0x0000, 180 0x0000, 0x0000, 0x0000, 0x0000, 181 0x0000, 0x0000, 0x0000, 0x0000, 182 0x0000, 0x0000, 0x0000, 0x0000, 183 0x0000, 0x0000, 0x0000, 0x050f, 184 0x050e, 0x050d, 0x050c, 0x0521, 185 0x0000, 0x0000, 0x0000, 0x0000, 186 0x0000, 0x03c6, 0x03c7, 0x03c8, 187 0x0000, 0x0000, 0x0000, 0x0000, 188 0x0000, 0x0000, 0x03b6, 0x03b8, 189 0x03c5, 0x0000, 0x0000, 0x0000, 190 0x0000, 0x0000, 0x03ba, 0x03bb, 191 0x03bd, 0x0000, 0x0000, 0x0000, 192 0x03ac, 0x03ae, 0x03b4, 0x03ad, 193 0x03af, 0x03b2, 0x03b5, 0x0000, 194 0x03b0, 0x03b3, 0x0000, 0x0000, 195 0x0000, 0x0000, 0x0000, 0x0000, 196 0x0000, 0x0000, 0x0000, 0x0000, 197 0x03c1, 0x03c0, 0x03bf, 0x03be, 198 0x0000, 0x0000, 0x0000, 0x0000, 199 0x0000, 0x0000, 0x0000, 0x0000, 200 0x0000, 0x0000, 0x0000, 0x0000, 201 0x0000, 0x0000, 0x0000, 0x0000, 202 0x03b9, 0x0000, 0x0000, 0x0000, 203 0x0000, 0x0000, 0x0000, 0x03c4, 204 0x0000, 0x0407, 0x0000, 0x0000, 205 0x0000, 0x0000, 0x0000, 0x0000, 206 0x03c3, }; 207 208 static const unsigned short wchar2sjis_mac10[] = { // 0xfe30 - 0xfe44 209 0x1efc, 0x1ef4, 0x0000, 0x1ee9, 210 0x0000, 0x1f01, 0x1f02, 0x1f07, 211 0x1f08, 0x1f03, 0x1f04, 0x1f11, 212 0x1f12, 0x1f0b, 0x1f0c, 0x1f09, 213 0x1f0a, 0x1f0d, 0x1f0e, 0x1f0f, 214 0x1f10, }; 215 216 static const unsigned short code_tbl[][3] = { 217 {0x02f0, 0x0303, 0x2460}, 218 {0x030e, 0x0321, 0x2474}, 219 {0x032c, 0x0334, 0x2776}, 220 {0x0341, 0x0349, 0x2488}, 221 {0x034e, 0x0359, 0x2160}, 222 {0x0362, 0x036d, 0x2170}, 223 {0x038a, 0x03a3, 0x249c}, 224 }; 225 226 static const unsigned short code_ofst_tbl[] [2]= { 227 {0x03ac, 0x03c9}, 228 {0x0406, 0x0420}, 229 {0x0432, 0x0441}, 230 {0x0468, 0x0480}, 231 {0x04b8, 0x04e8}, 232 {0x050c, 0x0551}, 233 {0x1ed9, 0x1f18}, 234 {0x1ff2, 0x20a5}, 235 }; 236 237 static const unsigned short *code_map[] = { 238 sjis_mac2wchar1, sjis_mac2wchar2, sjis_mac2wchar3, sjis_mac2wchar4, 239 sjis_mac2wchar5, sjis_mac2wchar6, sjis_mac2wchar7, sjis_mac2wchar8}; 240 241 static const unsigned short code_tbl_m[][6] = { 242 {0x0340, 0xf860, 0x0030, 0x002e, 0x0000, 0x0000}, 243 {0x03c9, 0xf860, 0x0054, 0x0042, 0x0000, 0x0000}, 244 {0x035c, 0xf860, 0x0058, 0x0056, 0x0000, 0x0000}, 245 {0x0370, 0xf860, 0x0078, 0x0076, 0x0000, 0x0000}, 246 {0x0439, 0xf860, 0x2193, 0x2191, 0x0000, 0x0000}, 247 {0x0409, 0xf861, 0x0046, 0x0041, 0x0058, 0x0000}, 248 {0x035b, 0xf861, 0x0058, 0x0049, 0x0056, 0x0000}, 249 {0x036f, 0xf861, 0x0078, 0x0069, 0x0076, 0x0000}, 250 {0x035a, 0xf862, 0x0058, 0x0049, 0x0049, 0x0049}, 251 {0x036e, 0xf862, 0x0078, 0x0069, 0x0069, 0x0069}, 252 {0x0522, 0xf862, 0x6709, 0x9650, 0x4f1a, 0x793e}, 253 {0x0523, 0xf862, 0x8ca1, 0x56e3, 0x6cd5, 0x4eba}, 254 }; 255 256 static int code_tbl_m_len = sizeof(code_tbl_m)/(sizeof(unsigned short)*6); 257 258 static const unsigned short s_form_tbl[] = { 259 0x2010,0x2016,0x2026, 260 0x3001,0x3002,0x301c,0x3041,0x3043,0x3045,0x3047,0x3049, 261 0x3063,0x3083,0x3085,0x3087,0x308e,0x30a1,0x30a3,0x30a5, 262 0x30a7,0x30a9,0x30c3,0x30e3,0x30e5,0x30e7,0x30ee,0x30f5, 263 0x30f6,0x30fc,0xff1d,0xff3b,0xff3d,0xff5c,0xffe3, // vertical f87e (34) 264 0x2026,0xff47,0xff4d, // halfwidth f87f (3) 265 0x5927,0x5c0f,0x63a7, // enclosing circle 20dd (3) 266 0x21e6,0x21e7,0x21e8,0x21e9, // black arrow f87a (4) 267 }; 268 269 static int s_form_tbl_len = sizeof(s_form_tbl)/sizeof(unsigned short); 270 271 static const unsigned short s_form_sjis_tbl[] = { 272 0xeb5d,0xeb61,0xeb63, 273 0xeb41,0xeb42,0xeb60,0xec9f,0xeca1,0xeca3,0xeca5,0xeca7, 274 0xecc1,0xece1,0xece3,0xece5,0xecec,0xed40,0xed42,0xed44, 275 0xed46,0xed48,0xed62,0xed83,0xed85,0xed87,0xed8e,0xed95, 276 0xed96,0xeb5b,0xeb81,0xeb6d,0xeb6e,0xeb62,0xeb50, // vertical 277 0x00ff,0x864b,0x8645, // halfwidth 278 0x8791,0x8792,0x879d, // enclosing circle 279 0x86d4,0x86d5,0x86d3,0x86d6, // black arrow 280 }; 281 282 static const unsigned short s_form_sjis_fallback_tbl[] = { 283 0x815d,0x8161,0x8163, 284 0x8141,0x8142,0x8160,0x829f,0x82a1,0x82a3,0x82a5,0x82a7, 285 0x82c1,0x82e1,0x82e3,0x82e5,0x82ec,0x8340,0x8342,0x8344, 286 0x8346,0x8348,0x8362,0x8383,0x8385,0x8387,0x838e,0x8395, 287 0x8396,0x815b,0x8181,0x816d,0x816e,0x8162,0x8150, // vertical 288 0x815d,0x8287,0x828d, // halfwidth 289 0x91e5,0x8fac,0x8d54, // enclosing circle 290 0x86d0,0x86d1,0x86cf,0x86d2, // arrow 291 }; 292 293 static const unsigned short wchar2sjis_mac_r_tbl[][3] = { 294 {0x2160, 0x216b, 0x034e}, 295 {0x2170, 0x217b, 0x0362}, 296 {0x2460, 0x2473, 0x02f0}, 297 {0x2474, 0x2487, 0x030e}, 298 {0x2488, 0x2490, 0x0341}, 299 {0x249c, 0x24b5, 0x038a}, 300 {0x2776, 0x277e, 0x032c}, 301 {0x30f7, 0x30fa, 0x054e}, 302 {0x32a4, 0x32a9, 0x04ba}, 303 }; 304 305 static int wchar2sjis_mac_r_tbl_len = sizeof(wchar2sjis_mac_r_tbl)/(3*sizeof(unsigned short)); 306 307 static const unsigned short wchar2sjis_mac_r_map[][2] = { 308 {0x2660, 0x2667}, 309 {0x322a, 0x3243}, 310 {0x3296, 0x329e}, 311 {0x3300, 0x33d4}, 312 {0xfe30, 0xfe44}, 313 }; 314 315 static int wchar2sjis_mac_r_map_len = sizeof(wchar2sjis_mac_r_map)/(2*sizeof(unsigned short)); 316 317 static const unsigned short *wchar2sjis_mac_code_map[] = { 318 wchar2sjis_mac4, wchar2sjis_mac7, wchar2sjis_mac8, wchar2sjis_mac9, wchar2sjis_mac10}; 319 320 static const unsigned short wchar2sjis_mac_wchar_tbl[][2] = { 321 {0x2109, 0x03c2}, 322 {0x2113, 0x03bc}, 323 {0x2116, 0x0406}, 324 {0x2121, 0x0408}, 325 {0x21c4, 0x0437}, 326 {0x21c5, 0x0438}, 327 {0x21c6, 0x0436}, 328 {0x21e6, 0x043b}, 329 {0x21e7, 0x043c}, 330 {0x21e8, 0x043a}, 331 {0x21e9, 0x043d}, 332 {0x221f, 0x0525}, 333 {0x222e, 0x0524}, 334 {0x22bf, 0x0526}, 335 {0x260e, 0x041f}, 336 {0x261c, 0x0433}, 337 {0x261d, 0x0434}, 338 {0x261e, 0x0432}, 339 {0x261f, 0x0435}, 340 {0x3004, 0x0420}, 341 {0x301d, 0x0538}, 342 {0x301f, 0x0539}, 343 {0x3020, 0x041e}, 344 {0x3094, 0x054c}, 345 }; 346 347 static int wchar2sjis_mac_wchar_tbl_len = sizeof(wchar2sjis_mac_wchar_tbl)/(2*sizeof(unsigned short)); 348