diff options
Diffstat (limited to 'iconvdata/gbk.c')
-rw-r--r-- | iconvdata/gbk.c | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/iconvdata/gbk.c b/iconvdata/gbk.c index f9a53ff..b07f392 100644 --- a/iconvdata/gbk.c +++ b/iconvdata/gbk.c @@ -26,6 +26,12 @@ #include <wchar.h> #include <assert.h> +/* Unicode 3.0.1 does not contain all the characters in GBK. Define + USE_PRIVATE_AREA to 1 in order to use mappings from/to the Unicode + Private Use area. Until we see other systems using the same mappings, + it is disabled. */ +#define USE_PRIVATE_AREA 0 + /* The conversion table to UCS4 has almost no holes. It can be generated with: perl tab.pl < gbk.txt @@ -1739,7 +1745,13 @@ static const uint16_t __gbk_to_ucs[] = [0x1db0] = 0x00f2, [0x1db1] = 0x016b, [0x1db2] = 0x00fa, [0x1db3] = 0x01d4, [0x1db4] = 0x00f9, [0x1db5] = 0x01d6, [0x1db6] = 0x01d8, [0x1db7] = 0x01da, [0x1db8] = 0x01dc, [0x1db9] = 0x00fc, [0x1dba] = 0x00ea, [0x1dbb] = 0x0251, - [0x1dbc] = 0xe7c7, [0x1dbd] = 0x0144, [0x1dbe] = 0x0148, [0x1dbf] = 0xe7c8, +#if USE_PRIVATE_AREA + [0x1dbc] = 0xe7c7, +#endif + [0x1dbd] = 0x0144, [0x1dbe] = 0x0148, +#if USE_PRIVATE_AREA + [0x1dbf] = 0xe7c8, +#endif [0x1dc0] = 0x0261, [0x1dc5] = 0x3105, [0x1dc6] = 0x3106, [0x1dc7] = 0x3107, [0x1dc8] = 0x3108, [0x1dc9] = 0x3109, [0x1dca] = 0x310a, [0x1dcb] = 0x310b, [0x1dcc] = 0x310c, [0x1dcd] = 0x310d, [0x1dce] = 0x310e, [0x1dcf] = 0x310f, @@ -1766,10 +1778,14 @@ static const uint16_t __gbk_to_ucs[] = [0x1e3b] = 0xfe5e, [0x1e3c] = 0xfe5f, [0x1e3d] = 0xfe60, [0x1e3e] = 0xfe61, [0x1e40] = 0xfe62, [0x1e41] = 0xfe63, [0x1e42] = 0xfe64, [0x1e43] = 0xfe65, [0x1e44] = 0xfe66, [0x1e45] = 0xfe68, [0x1e46] = 0xfe69, [0x1e47] = 0xfe6a, - [0x1e48] = 0xfe6b, [0x1e49] = 0xe7e7, [0x1e4a] = 0xe7e8, [0x1e4b] = 0xe7e9, + [0x1e48] = 0xfe6b, +#if USE_PRIVATE_AREA + [0x1e49] = 0xe7e7, [0x1e4a] = 0xe7e8, [0x1e4b] = 0xe7e9, [0x1e4c] = 0xe7ea, [0x1e4d] = 0xe7eb, [0x1e4e] = 0xe7ec, [0x1e4f] = 0xe7ed, [0x1e50] = 0xe7ee, [0x1e51] = 0xe7ef, [0x1e52] = 0xe7f0, [0x1e53] = 0xe7f1, - [0x1e54] = 0xe7f2, [0x1e55] = 0xe7f3, [0x1e56] = 0x3007, [0x1e64] = 0x2500, + [0x1e54] = 0xe7f2, [0x1e55] = 0xe7f3, +#endif + [0x1e56] = 0x3007, [0x1e64] = 0x2500, [0x1e65] = 0x2501, [0x1e66] = 0x2502, [0x1e67] = 0x2503, [0x1e68] = 0x2504, [0x1e69] = 0x2505, [0x1e6a] = 0x2506, [0x1e6b] = 0x2507, [0x1e6c] = 0x2508, [0x1e6d] = 0x2509, [0x1e6e] = 0x250a, [0x1e6f] = 0x250b, [0x1e70] = 0x250c, @@ -5499,7 +5515,9 @@ static const uint16_t __gbk_to_ucs[] = [0x5dc2] = 0xfa0e, [0x5dc3] = 0xfa0f, [0x5dc4] = 0xfa11, [0x5dc5] = 0xfa13, [0x5dc6] = 0xfa14, [0x5dc7] = 0xfa18, [0x5dc8] = 0xfa1f, [0x5dc9] = 0xfa20, [0x5dca] = 0xfa21, [0x5dcb] = 0xfa23, [0x5dcc] = 0xfa24, [0x5dcd] = 0xfa27, - [0x5dce] = 0xfa28, [0x5dcf] = 0xfa29, [0x5dd0] = 0xe815, [0x5dd1] = 0xe816, + [0x5dce] = 0xfa28, [0x5dcf] = 0xfa29, +#if USE_PRIVATE_AREA + [0x5dd0] = 0xe815, [0x5dd1] = 0xe816, [0x5dd2] = 0xe817, [0x5dd3] = 0xe818, [0x5dd4] = 0xe819, [0x5dd5] = 0xe81a, [0x5dd6] = 0xe81b, [0x5dd7] = 0xe81c, [0x5dd8] = 0xe81d, [0x5dd9] = 0xe81e, [0x5dda] = 0xe81f, [0x5ddb] = 0xe820, [0x5ddc] = 0xe821, [0x5ddd] = 0xe822, @@ -5520,6 +5538,9 @@ static const uint16_t __gbk_to_ucs[] = [0x5e17] = 0xe85b, [0x5e18] = 0xe85c, [0x5e19] = 0xe85d, [0x5e1a] = 0xe85e, [0x5e1b] = 0xe85f, [0x5e1c] = 0xe860, [0x5e1d] = 0xe861, [0x5e1e] = 0xe862, [0x5e1f] = 0xe863, [0x5e20] = 0xe864, +#else + [0x5e20] = 0x0000, +#endif }; /* The table can be created using @@ -12936,6 +12957,7 @@ static const char __gbk_from_ucs4_tab8[][2] = */ static const char __gbk_from_ucs4_tab9[][2] = { +#if USE_PRIVATE_AREA [0x0000] = "\xa8\xbc", [0x0001] = "\xa8\xbf", [0x0020] = "\xa9\x89", [0x0021] = "\xa9\x8a", [0x0022] = "\xa9\x8b", [0x0023] = "\xa9\x8c", [0x0024] = "\xa9\x8d", [0x0025] = "\xa9\x8e", [0x0026] = "\xa9\x8f", @@ -12968,6 +12990,7 @@ static const char __gbk_from_ucs4_tab9[][2] = [0x0096] = "\xfe\x99", [0x0097] = "\xfe\x9a", [0x0098] = "\xfe\x9b", [0x0099] = "\xfe\x9c", [0x009a] = "\xfe\x9d", [0x009b] = "\xfe\x9e", [0x009c] = "\xfe\x9f", [0x009d] = "\xfe\xa0", +#endif }; /* The table can be created using @@ -13418,7 +13441,7 @@ static const char __gbk_from_ucs4_tab12[][2] = cp = __gbk_from_ucs4_tab8[ch - 0x4e00]; \ break; \ case 0xe7c7 ... 0xe864: \ - cp = __gbk_from_ucs4_tab9[ch - 0xe7c7]; \ + cp = USE_PRIVATE_AREA ? __gbk_from_ucs4_tab9[ch - 0xe7c7] : "\0\0"; \ break; \ case 0xf92c: \ cp = "\xfd\x9c"; \ |