hirokawa Sun, 28 Aug 2011 04:32:33 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=315632
Log: MFH: reduced footprint for sjis-mac Changed paths: U php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c U php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/sjis_mac2uni.h
Modified: php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c 2011-08-28 04:32:22 UTC (rev 315631) +++ php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c 2011-08-28 04:32:33 UTC (rev 315632) @@ -37,6 +37,8 @@ #include "unicode_table_cp932_ext.h" #include "unicode_table_jis.h" +#include "sjis_mac2uni.h" + extern int mbfl_filt_ident_sjis(int c, mbfl_identify_filter *filter); extern const unsigned char mblen_table_sjis[]; @@ -123,134 +125,6 @@ } \ } while (0) -#include "sjis_mac2uni.h" - -static const int code_tbl[][3] = { - {0x02f0, 0x0303, 0x2460}, - {0x030e, 0x0321, 0x2474}, - {0x032c, 0x0334, 0x2776}, - {0x0341, 0x0349, 0x2488}, - {0x034e, 0x0359, 0x2160}, - {0x0362, 0x036d, 0x2170}, - {0x038a, 0x03a3, 0x249c}, -}; - -static const int code_ofst_tbl[] [2]= { - {0x03ac, 0x03c9}, - {0x0406, 0x0420}, - {0x0432, 0x0441}, - {0x0468, 0x0480}, - {0x04b8, 0x04e8}, - {0x050c, 0x0551}, - {0x1ed9, 0x1f18}, - {0x1ff2, 0x20a5}, -}; - -static const int *code_map[] = { - sjis_mac2wchar1, sjis_mac2wchar2, sjis_mac2wchar3, sjis_mac2wchar4, - sjis_mac2wchar5, sjis_mac2wchar6, sjis_mac2wchar7, sjis_mac2wchar8}; - -static const int code_tbl_m[][6] = { - {0x0340, 0xf860, 0x0030, 0x002e, 0x0000, 0x0000}, - {0x03c9, 0xf860, 0x0054, 0x0042, 0x0000, 0x0000}, - {0x035c, 0xf860, 0x0058, 0x0056, 0x0000, 0x0000}, - {0x0370, 0xf860, 0x0078, 0x0076, 0x0000, 0x0000}, - {0x0439, 0xf860, 0x2193, 0x2191, 0x0000, 0x0000}, - {0x0409, 0xf861, 0x0046, 0x0041, 0x0058, 0x0000}, - {0x035b, 0xf861, 0x0058, 0x0049, 0x0056, 0x0000}, - {0x036f, 0xf861, 0x0078, 0x0069, 0x0076, 0x0000}, - {0x035a, 0xf862, 0x0058, 0x0049, 0x0049, 0x0049}, - {0x036e, 0xf862, 0x0078, 0x0069, 0x0069, 0x0069}, - {0x0522, 0xf862, 0x6709, 0x9650, 0x4f1a, 0x793e}, - {0x0523, 0xf862, 0x8ca1, 0x56e3, 0x6cd5, 0x4eba}, -}; - -static const int s_form_tbl[] = { - 0x2010,0x2016,0x2026, - 0x3001,0x3002,0x301c,0x3041,0x3043,0x3045,0x3047,0x3049, - 0x3063,0x3083,0x3085,0x3087,0x308e,0x30a1,0x30a3,0x30a5, - 0x30a7,0x30a9,0x30c3,0x30e3,0x30e5,0x30e7,0x30ee,0x30f5, - 0x30f6,0x30fc,0xff1d,0xff3b,0xff3d,0xff5c,0xffe3, // vertical f87e (34) - 0x2026,0xff47,0xff4d, // halfwidth f87f (3) - 0x5927,0x5c0f,0x63a7, // enclosing circle 20dd (3) - 0x21e6,0x21e7,0x21e8,0x21e9, // black arrow f87a (4) -}; - -static const int s_form_sjis_tbl[] = { - 0xeb5d,0xeb61,0xeb63, - 0xeb41,0xeb42,0xeb60,0xec9f,0xeca1,0xeca3,0xeca5,0xeca7, - 0xecc1,0xece1,0xece3,0xece5,0xecec,0xed40,0xed42,0xed44, - 0xed46,0xed48,0xed62,0xed83,0xed85,0xed87,0xed8e,0xed95, - 0xed96,0xeb5b,0xeb81,0xeb6d,0xeb6e,0xeb62,0xeb50, // vertical - 0x00ff,0x864b,0x8645, // halfwidth - 0x8791,0x8792,0x879d, // enclosing circle - 0x86d4,0x86d5,0x86d3,0x86d6, // black arrow -}; - -static const int s_form_sjis_fallback_tbl[] = { - 0x815d,0x8161,0x8163, - 0x8141,0x8142,0x8160,0x829f,0x82a1,0x82a3,0x82a5,0x82a7, - 0x82c1,0x82e1,0x82e3,0x82e5,0x82ec,0x8340,0x8342,0x8344, - 0x8346,0x8348,0x8362,0x8383,0x8385,0x8387,0x838e,0x8395, - 0x8396,0x815b,0x8181,0x816d,0x816e,0x8162,0x8150, // vertical - 0x815d,0x8287,0x828d, // halfwidth - 0x91e5,0x8fac,0x8d54, // enclosing circle - 0x86d0,0x86d1,0x86cf,0x86d2, // arrow -}; - -static const int wchar2sjis_mac_r_tbl[][3] = { - {0x2160, 0x216b, 0x034e}, - {0x2170, 0x217b, 0x0362}, - {0x2460, 0x2473, 0x02f0}, - {0x2474, 0x2487, 0x030e}, - {0x2488, 0x2490, 0x0341}, - {0x249c, 0x24b5, 0x038a}, - {0x2776, 0x277e, 0x032c}, - {0x30f7, 0x30fa, 0x054e}, - {0x32a4, 0x32a9, 0x04ba}, -}; - -static const unsigned short wchar2sjis_mac_r_map[][2] = { - {0x2660, 0x2667}, - {0x322a, 0x3243}, - {0x3296, 0x329e}, - {0x3300, 0x33d4}, - {0xfe30, 0xfe44}, -}; - -static const int *wchar2sjis_mac_code_map[] = { - wchar2sjis_mac4, wchar2sjis_mac7, wchar2sjis_mac8, wchar2sjis_mac9, wchar2sjis_mac10}; - -static const int wchar2sjis_mac_wchar_tbl[][2] = { - {0x2109, 0x03c2}, - {0x2110, 0x21ef5}, - {0x2113, 0x03bc}, - {0x2116, 0x0406}, - {0x2121, 0x0408}, - {0x21c4, 0x0437}, - {0x21c5, 0x0438}, - {0x21c6, 0x0436}, - {0x21e6, 0x043b}, - {0x21e7, 0x043c}, - {0x21e8, 0x043a}, - {0x21e9, 0x043d}, - {0x221f, 0x0525}, - {0x222e, 0x0524}, - {0x22bf, 0x0526}, - {0x260e, 0x041f}, - {0x261c, 0x0433}, - {0x261d, 0x0434}, - {0x261e, 0x0432}, - {0x261f, 0x0435}, - {0x3004, 0x0420}, - {0x301d, 0x0538}, - {0x301f, 0x0539}, - {0x3020, 0x041e}, - {0x3094, 0x054c}, -}; - - - /* * SJIS-mac => wchar */ @@ -328,7 +202,7 @@ if (w == 0) { - for (i=0; i<12; i++) { + for (i=0; i<code_tbl_m_len; i++) { if (s == code_tbl_m[i][0]) { if (code_tbl_m[i][1] == 0xf860) { n = 4; @@ -350,21 +224,22 @@ for (i=0; i<8; i++) { if (s >= code_ofst_tbl[i][0] && s <= code_ofst_tbl[i][1]) { w = code_map[i][s - code_ofst_tbl[i][0]]; - if (w >= 0x10000) { - CK((*filter->output_function)(w & 0xffff, filter->data)); - if (w & 0x10000) { - w = 0xf87a; - } else if (w & 0x20000) { - w = 0xf87e; - } else if (w & 0x40000) { - w = 0xf87f; - } else if (w & 0x80000) { - w = 0x20dd; - } else { - w = 0; - } + s2 = 0; + if (s >= 0x043e && s <= 0x0441) { + s2 = 0xf87a; + } else if (s == 0x03b1 || s == 0x03b7) { + s2 = 0xf87f; + } else if (s == 0x04b8 || s == 0x04b9 || s == 0x04c4) { + s2 = 0x20dd; + } else if (s == 0x1ed9 || s == 0x1eda || s == 0x1ee8 || s == 0x1ef3 || + (s >= 0x1ef5 && s <= 0x1efb) || s == 0x1f05 || s == 0x1f06 || + s == 0x1f18 || (s >= 0x1ff2 && s <= 0x20a5)) { + s2 = 0xf87e; } - + if (s2 > 0) { + CK((*filter->output_function)(w, filter->data)); + w = s2; + } break; } } @@ -471,7 +346,7 @@ } if (s2 > 0) { - for (i=0;i<sizeof(s_form_tbl)/sizeof(int);i++) { + for (i=0;i<s_form_tbl_len;i++) { if (c1 == s_form_tbl[i]) { s1 = s_form_sjis_fallback_tbl[i]; break; @@ -521,7 +396,7 @@ } if (c >= 0x2000) { - for (i=0;i<sizeof(s_form_tbl)/sizeof(int);i++) { + for (i=0;i<s_form_tbl_len;i++) { if (c == s_form_tbl[i]) { filter->status = 1; filter->cache = c; @@ -556,7 +431,7 @@ } if (s1 <= 0) { - for (i=0; i<sizeof(wchar2sjis_mac_r_tbl)/(3*sizeof(int));i++) { + for (i=0; i<wchar2sjis_mac_r_tbl_len; i++) { if (c >= wchar2sjis_mac_r_tbl[i][0] && c <= wchar2sjis_mac_r_tbl[i][1]) { s1 = c - wchar2sjis_mac_r_tbl[i][0] + wchar2sjis_mac_r_tbl[i][2]; break; @@ -564,7 +439,7 @@ } if (s1 <= 0) { - for (i=0; i<sizeof(wchar2sjis_mac_r_map)/(2*sizeof(unsigned short));i++) { + for (i=0; i<wchar2sjis_mac_r_map_len; i++) { if (c >= wchar2sjis_mac_r_map[i][0] && c <= wchar2sjis_mac_r_map[i][1]) { s1 = wchar2sjis_mac_code_map[i][c-wchar2sjis_mac_r_map[i][0]]; break; @@ -573,7 +448,7 @@ } if (s1 <= 0) { - for (i=0; i<sizeof(wchar2sjis_mac_wchar_tbl)/(2*sizeof(int));i++) { + for (i=0; i<wchar2sjis_mac_wchar_tbl_len ; i++) { if ( c == wchar2sjis_mac_wchar_tbl[i][0]) { s1 = wchar2sjis_mac_wchar_tbl[i][1] & 0xffff; break; @@ -802,7 +677,7 @@ int i, c1, s1 = 0; if (filter->status == 1 && filter->cache > 0) { c1 = filter->cache; - for (i=0;i<sizeof(s_form_tbl)/sizeof(int);i++) { + for (i=0;i<s_form_tbl_len;i++) { if (c1 == s_form_tbl[i]) { s1 = s_form_sjis_fallback_tbl[i]; break; Modified: php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/sjis_mac2uni.h =================================================================== --- php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/sjis_mac2uni.h 2011-08-28 04:32:22 UTC (rev 315631) +++ php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/sjis_mac2uni.h 2011-08-28 04:32:33 UTC (rev 315632) @@ -1,140 +1,142 @@ -const int sjis_mac2wchar1[] = { // 0x03ac - 0x03c9 -0x0339c, 0x0339f, 0x0339d, 0x033a0, -0x033a4, 0x4ff4d, 0x033a1, 0x033a5, -0x0339e, 0x033a2, 0x0338e, 0x4ff47, -0x0338f, 0x033c4, 0x03396, 0x03397, -0x02113, 0x03398, 0x033b3, 0x033b2, -0x033b1, 0x033b0, 0x02109, 0x033d4, -0x033cb, 0x03390, 0x03385, 0x03386, -0x03387, 0xff860, }; -const int sjis_mac2wchar2[] = { // 0x0406 - 0x0420 -0x02116, 0x033cd, -0x02121, 0xff861, 0x02664, 0x02667, -0x02661, 0x02662, 0x02660, 0x02663, -0x02665, 0x02666, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x03020, 0x0260e, -0x03004, }; -const int sjis_mac2wchar3[] = { // 0x0432 - 0x0441 -0x0261e, 0x0261c, -0x0261d, 0x0261f, 0x021c6, 0x021c4, -0x021c5, 0xff860, 0x021e8, 0x021e6, -0x021e7, 0x021e9, 0x121e8, 0x121e6, -0x121e7, 0x121e9, }; -const int sjis_mac2wchar4[] = { // 0x0468 - 0x0480 -0x03230, 0x0322a, 0x0322b, 0x0322c, -0x0322d, 0x0322e, 0x0322f, 0x03240, -0x03237, 0x03242, 0x03243, 0x03239, -0x0323a, 0x03231, 0x0323e, 0x03234, -0x03232, 0x0323b, 0x03236, 0x03233, -0x03235, 0x0323c, 0x0323d, 0x0323f, -0x03238, }; -const int sjis_mac2wchar5[] = { // 0x04b8 - 0x04e8 -0x85927, 0x85c0f, 0x032a4, 0x032a5, -0x032a6, 0x032a7, 0x032a8, 0x032a9, -0x03296, 0x0329d, 0x03298, 0x0329e, -0x863a7, 0x03299, 0x03349, 0x03322, -0x0334d, 0x03314, 0x03316, 0x03305, -0x03333, 0x0334e, 0x03303, 0x03336, -0x03318, 0x03315, 0x03327, 0x03351, -0x0334a, 0x03339, 0x03357, 0x0330d, -0x03342, 0x03323, 0x03326, 0x0333b, -0x0332b, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x03300, 0x0331e, 0x0332a, 0x03331, -0x03347, }; -const int sjis_mac2wchar6[] = { // 0x050c - 0x0551 -0x0337e, 0x0337d, 0x0337c, 0x0337b, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x0337f, 0xff862, 0xff862, -0x0222e, 0x0221f, 0x022bf, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x0301d, 0x0301f, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x03094, 0x00000, 0x030f7, 0x030f8, -0x030f9, 0x030fa, }; -const int sjis_mac2wchar7[] = { // 0x1ed9 - 0x1f18 -0x23001, 0x23002, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x2ffe3, 0x0fe33, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x230fc, -0x0fe31, 0x22010, 0x00000, 0x00000, -0x2301c, 0x22016, 0x2ff5c, 0x22026, -0x0fe30, 0x00000, 0x00000, 0x00000, -0x00000, 0x0fe35, 0x0fe36, 0x0fe39, -0x0fe3a, 0x2ff3b, 0x2ff3d, 0x0fe37, -0x0fe38, 0x0fe3f, 0x0fe40, 0x0fe3d, -0x0fe3e, 0x0fe41, 0x0fe42, 0x0fe43, -0x0fe44, 0x0fe3b, 0x0fe3c, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x2ff1d, }; -const int sjis_mac2wchar8[] = { // 0x1ff2 - 0x20a5 -0x23041, 0x00000, -0x23043, 0x00000, 0x23045, 0x00000, -0x23047, 0x00000, 0x23049, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x23063, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x23083, 0x00000, 0x23085, 0x00000, -0x23087, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x2308e, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x230a1, 0x00000, 0x230a3, 0x00000, -0x230a5, 0x00000, 0x230a7, 0x00000, -0x230a9, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x230c3, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x00000, 0x230e3, 0x00000, -0x230e5, 0x00000, 0x230e7, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x00000, 0x230ee, 0x00000, 0x00000, -0x00000, 0x00000, 0x00000, 0x00000, -0x230f5, 0x230f6, }; -const int wchar2sjis_mac4[] = { // 0x2660 - 0x2667 + +static const unsigned short sjis_mac2wchar1[] = { // 0x03ac - 0x03c9 +0x339c, 0x339f, 0x339d, 0x33a0, +0x33a4, 0xff4d, 0x33a1, 0x33a5, +0x339e, 0x33a2, 0x338e, 0xff47, +0x338f, 0x33c4, 0x3396, 0x3397, +0x2113, 0x3398, 0x33b3, 0x33b2, +0x33b1, 0x33b0, 0x2109, 0x33d4, +0x33cb, 0x3390, 0x3385, 0x3386, +0x3387, 0xf860, }; +static const unsigned short sjis_mac2wchar2[] = { // 0x0406 - 0x0420 +0x2116, 0x33cd, +0x2121, 0xf861, 0x2664, 0x2667, +0x2661, 0x2662, 0x2660, 0x2663, +0x2665, 0x2666, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x3020, 0x260e, +0x3004, }; +static const unsigned short sjis_mac2wchar3[] = { // 0x0432 - 0x0441 +0x261e, 0x261c, +0x261d, 0x261f, 0x21c6, 0x21c4, +0x21c5, 0xf860, 0x21e8, 0x21e6, +0x21e7, 0x21e9, 0x21e8, 0x21e6, +0x21e7, 0x21e9, }; +static const unsigned short sjis_mac2wchar4[] = { // 0x0468 - 0x0480 +0x3230, 0x322a, 0x322b, 0x322c, +0x322d, 0x322e, 0x322f, 0x3240, +0x3237, 0x3242, 0x3243, 0x3239, +0x323a, 0x3231, 0x323e, 0x3234, +0x3232, 0x323b, 0x3236, 0x3233, +0x3235, 0x323c, 0x323d, 0x323f, +0x3238, }; +static const unsigned short sjis_mac2wchar5[] = { // 0x04b8 - 0x04e8 +0x5927, 0x5c0f, 0x32a4, 0x32a5, +0x32a6, 0x32a7, 0x32a8, 0x32a9, +0x3296, 0x329d, 0x3298, 0x329e, +0x63a7, 0x3299, 0x3349, 0x3322, +0x334d, 0x3314, 0x3316, 0x3305, +0x3333, 0x334e, 0x3303, 0x3336, +0x3318, 0x3315, 0x3327, 0x3351, +0x334a, 0x3339, 0x3357, 0x330d, +0x3342, 0x3323, 0x3326, 0x333b, +0x332b, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x3300, 0x331e, 0x332a, 0x3331, +0x3347, }; +static const unsigned short sjis_mac2wchar6[] = { // 0x050c - 0x0551 +0x337e, 0x337d, 0x337c, 0x337b, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x337f, 0xf862, 0xf862, +0x222e, 0x221f, 0x22bf, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x301d, 0x301f, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x3094, 0x0000, 0x30f7, 0x30f8, +0x30f9, 0x30fa, }; +static const unsigned short sjis_mac2wchar7[] = { // 0x1ed9 - 0x1f18 +0x3001, 0x3002, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0xffe3, 0xfe33, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x30fc, +0xfe31, 0x2010, 0x0000, 0x0000, +0x301c, 0x2016, 0xff5c, 0x2026, +0xfe30, 0x0000, 0x0000, 0x0000, +0x0000, 0xfe35, 0xfe36, 0xfe39, +0xfe3a, 0xff3b, 0xff3d, 0xfe37, +0xfe38, 0xfe3f, 0xfe40, 0xfe3d, +0xfe3e, 0xfe41, 0xfe42, 0xfe43, +0xfe44, 0xfe3b, 0xfe3c, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0xff1d, }; +static const unsigned short sjis_mac2wchar8[] = { // 0x1ff2 - 0x20a5 +0x3041, 0x0000, +0x3043, 0x0000, 0x3045, 0x0000, +0x3047, 0x0000, 0x3049, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x3063, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x3083, 0x0000, 0x3085, 0x0000, +0x3087, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x308e, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x30a1, 0x0000, 0x30a3, 0x0000, +0x30a5, 0x0000, 0x30a7, 0x0000, +0x30a9, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x30c3, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x0000, 0x30e3, 0x0000, +0x30e5, 0x0000, 0x30e7, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x0000, 0x30ee, 0x0000, 0x0000, +0x0000, 0x0000, 0x0000, 0x0000, +0x30f5, 0x30f6, }; + +static const unsigned short wchar2sjis_mac4[] = { // 0x2660 - 0x2667 0x040e, 0x040c, 0x040d, 0x040f, 0x040a, 0x0410, 0x0411, 0x040b, }; -const int wchar2sjis_mac7[] = { // 0x322a - 0x3243 +static const unsigned short wchar2sjis_mac7[] = { // 0x322a - 0x3243 0x0469, 0x046a, 0x046b, 0x046c, 0x046d, 0x046e, 0x0468, 0x0475, 0x0478, 0x047b, @@ -144,12 +146,12 @@ 0x046f, 0x0000, 0x0471, 0x0472, }; -const int wchar2sjis_mac8[] = { // 0x3296 - 0x329e +static const unsigned short wchar2sjis_mac8[] = { // 0x3296 - 0x329e 0x04c0, 0x0000, 0x04c2, 0x04c5, 0x0000, 0x0000, 0x0000, 0x04c1, 0x04c3, }; -const int wchar2sjis_mac9[] = { // 0x3300 - 0x33d4 +static const unsigned short wchar2sjis_mac9[] = { // 0x3300 - 0x33d4 0x04e4, 0x0000, 0x0000, 0x04ce, 0x0000, 0x04cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -205,10 +207,143 @@ 0x0000, 0x0000, 0x0000, 0x0000, 0x03c3, }; -const int wchar2sjis_mac10[] = { // 0xfe30 - 0xfe44 +static const unsigned short wchar2sjis_mac10[] = { // 0xfe30 - 0xfe44 0x1efc, 0x1ef4, 0x0000, 0x1ee9, 0x0000, 0x1f01, 0x1f02, 0x1f07, 0x1f08, 0x1f03, 0x1f04, 0x1f11, 0x1f12, 0x1f0b, 0x1f0c, 0x1f09, 0x1f0a, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f10, }; + +static const unsigned short code_tbl[][3] = { + {0x02f0, 0x0303, 0x2460}, + {0x030e, 0x0321, 0x2474}, + {0x032c, 0x0334, 0x2776}, + {0x0341, 0x0349, 0x2488}, + {0x034e, 0x0359, 0x2160}, + {0x0362, 0x036d, 0x2170}, + {0x038a, 0x03a3, 0x249c}, +}; + +static const unsigned short code_ofst_tbl[] [2]= { + {0x03ac, 0x03c9}, + {0x0406, 0x0420}, + {0x0432, 0x0441}, + {0x0468, 0x0480}, + {0x04b8, 0x04e8}, + {0x050c, 0x0551}, + {0x1ed9, 0x1f18}, + {0x1ff2, 0x20a5}, +}; + +static const unsigned short *code_map[] = { + sjis_mac2wchar1, sjis_mac2wchar2, sjis_mac2wchar3, sjis_mac2wchar4, + sjis_mac2wchar5, sjis_mac2wchar6, sjis_mac2wchar7, sjis_mac2wchar8}; + +static const unsigned short code_tbl_m[][6] = { + {0x0340, 0xf860, 0x0030, 0x002e, 0x0000, 0x0000}, + {0x03c9, 0xf860, 0x0054, 0x0042, 0x0000, 0x0000}, + {0x035c, 0xf860, 0x0058, 0x0056, 0x0000, 0x0000}, + {0x0370, 0xf860, 0x0078, 0x0076, 0x0000, 0x0000}, + {0x0439, 0xf860, 0x2193, 0x2191, 0x0000, 0x0000}, + {0x0409, 0xf861, 0x0046, 0x0041, 0x0058, 0x0000}, + {0x035b, 0xf861, 0x0058, 0x0049, 0x0056, 0x0000}, + {0x036f, 0xf861, 0x0078, 0x0069, 0x0076, 0x0000}, + {0x035a, 0xf862, 0x0058, 0x0049, 0x0049, 0x0049}, + {0x036e, 0xf862, 0x0078, 0x0069, 0x0069, 0x0069}, + {0x0522, 0xf862, 0x6709, 0x9650, 0x4f1a, 0x793e}, + {0x0523, 0xf862, 0x8ca1, 0x56e3, 0x6cd5, 0x4eba}, +}; + +static int code_tbl_m_len = sizeof(code_tbl_m)/(sizeof(unsigned short)*6); + +static const unsigned short s_form_tbl[] = { + 0x2010,0x2016,0x2026, + 0x3001,0x3002,0x301c,0x3041,0x3043,0x3045,0x3047,0x3049, + 0x3063,0x3083,0x3085,0x3087,0x308e,0x30a1,0x30a3,0x30a5, + 0x30a7,0x30a9,0x30c3,0x30e3,0x30e5,0x30e7,0x30ee,0x30f5, + 0x30f6,0x30fc,0xff1d,0xff3b,0xff3d,0xff5c,0xffe3, // vertical f87e (34) + 0x2026,0xff47,0xff4d, // halfwidth f87f (3) + 0x5927,0x5c0f,0x63a7, // enclosing circle 20dd (3) + 0x21e6,0x21e7,0x21e8,0x21e9, // black arrow f87a (4) +}; + +static int s_form_tbl_len = sizeof(s_form_tbl)/sizeof(unsigned short); + +static const unsigned short s_form_sjis_tbl[] = { + 0xeb5d,0xeb61,0xeb63, + 0xeb41,0xeb42,0xeb60,0xec9f,0xeca1,0xeca3,0xeca5,0xeca7, + 0xecc1,0xece1,0xece3,0xece5,0xecec,0xed40,0xed42,0xed44, + 0xed46,0xed48,0xed62,0xed83,0xed85,0xed87,0xed8e,0xed95, + 0xed96,0xeb5b,0xeb81,0xeb6d,0xeb6e,0xeb62,0xeb50, // vertical + 0x00ff,0x864b,0x8645, // halfwidth + 0x8791,0x8792,0x879d, // enclosing circle + 0x86d4,0x86d5,0x86d3,0x86d6, // black arrow +}; + +static const unsigned short s_form_sjis_fallback_tbl[] = { + 0x815d,0x8161,0x8163, + 0x8141,0x8142,0x8160,0x829f,0x82a1,0x82a3,0x82a5,0x82a7, + 0x82c1,0x82e1,0x82e3,0x82e5,0x82ec,0x8340,0x8342,0x8344, + 0x8346,0x8348,0x8362,0x8383,0x8385,0x8387,0x838e,0x8395, + 0x8396,0x815b,0x8181,0x816d,0x816e,0x8162,0x8150, // vertical + 0x815d,0x8287,0x828d, // halfwidth + 0x91e5,0x8fac,0x8d54, // enclosing circle + 0x86d0,0x86d1,0x86cf,0x86d2, // arrow +}; + +static const unsigned short wchar2sjis_mac_r_tbl[][3] = { + {0x2160, 0x216b, 0x034e}, + {0x2170, 0x217b, 0x0362}, + {0x2460, 0x2473, 0x02f0}, + {0x2474, 0x2487, 0x030e}, + {0x2488, 0x2490, 0x0341}, + {0x249c, 0x24b5, 0x038a}, + {0x2776, 0x277e, 0x032c}, + {0x30f7, 0x30fa, 0x054e}, + {0x32a4, 0x32a9, 0x04ba}, +}; + +static int wchar2sjis_mac_r_tbl_len = sizeof(wchar2sjis_mac_r_tbl)/(3*sizeof(unsigned short)); + +static const unsigned short wchar2sjis_mac_r_map[][2] = { + {0x2660, 0x2667}, + {0x322a, 0x3243}, + {0x3296, 0x329e}, + {0x3300, 0x33d4}, + {0xfe30, 0xfe44}, +}; + +static int wchar2sjis_mac_r_map_len = sizeof(wchar2sjis_mac_r_map)/(2*sizeof(unsigned short)); + +static const unsigned short *wchar2sjis_mac_code_map[] = { + wchar2sjis_mac4, wchar2sjis_mac7, wchar2sjis_mac8, wchar2sjis_mac9, wchar2sjis_mac10}; + +static const unsigned short wchar2sjis_mac_wchar_tbl[][2] = { + {0x2109, 0x03c2}, + {0x2113, 0x03bc}, + {0x2116, 0x0406}, + {0x2121, 0x0408}, + {0x21c4, 0x0437}, + {0x21c5, 0x0438}, + {0x21c6, 0x0436}, + {0x21e6, 0x043b}, + {0x21e7, 0x043c}, + {0x21e8, 0x043a}, + {0x21e9, 0x043d}, + {0x221f, 0x0525}, + {0x222e, 0x0524}, + {0x22bf, 0x0526}, + {0x260e, 0x041f}, + {0x261c, 0x0433}, + {0x261d, 0x0434}, + {0x261e, 0x0432}, + {0x261f, 0x0435}, + {0x3004, 0x0420}, + {0x301d, 0x0538}, + {0x301f, 0x0539}, + {0x3020, 0x041e}, + {0x3094, 0x054c}, +}; + +static int wchar2sjis_mac_wchar_tbl_len = sizeof(wchar2sjis_mac_wchar_tbl)/(2*sizeof(unsigned short));
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php