reduced footprint for sjis-mac

This commit is contained in:
Rui Hirokawa 2011-08-28 04:32:22 +00:00
parent 24f00c11d6
commit 30f0f5e41c
2 changed files with 294 additions and 284 deletions

View File

@ -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 @@ const struct mbfl_convert_vtbl vtbl_wchar_sjis_mac = {
} \
} 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 @@ mbfl_filt_conv_sjis_mac_wchar(int c, mbfl_convert_filter *filter)
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 @@ mbfl_filt_conv_sjis_mac_wchar(int c, mbfl_convert_filter *filter)
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 @@ mbfl_filt_conv_wchar_sjis_mac(int c, mbfl_convert_filter *filter)
}
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 @@ mbfl_filt_conv_wchar_sjis_mac(int c, mbfl_convert_filter *filter)
}
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 @@ mbfl_filt_conv_wchar_sjis_mac(int c, mbfl_convert_filter *filter)
}
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 @@ mbfl_filt_conv_wchar_sjis_mac(int c, mbfl_convert_filter *filter)
}
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 @@ mbfl_filt_conv_wchar_sjis_mac(int c, mbfl_convert_filter *filter)
}
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 @@ mbfl_filt_conv_sjis_mac_flush(mbfl_convert_filter *filter)
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;

View File

@ -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 @@ const int wchar2sjis_mac7[] = { // 0x322a - 0x3243
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 @@ const int wchar2sjis_mac9[] = { // 0x3300 - 0x33d4
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));