From b1c750b078a6fca22f6ba023a6c8bc24b1ea7457 Mon Sep 17 00:00:00 2001 From: "ftang%netscape.com" Date: Thu, 13 Aug 1998 19:26:19 +0000 Subject: [PATCH] extend the unicode conversion from max 64 to max 128 --- lib/libi18n/intlpriv.h | 2 +- lib/libi18n/ucs2.c | 109 +++++++++++++++++++++++--- lib/libi18n/ugendata.c | 172 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 264 insertions(+), 19 deletions(-) diff --git a/lib/libi18n/intlpriv.h b/lib/libi18n/intlpriv.h index 4cbb99c55264..e0390ac36437 100644 --- a/lib/libi18n/intlpriv.h +++ b/lib/libi18n/intlpriv.h @@ -332,7 +332,7 @@ XP_END_PROTOS -#define MAXCSIDINTBL 64 +#define MAXCSIDINTBL 128 diff --git a/lib/libi18n/ucs2.c b/lib/libi18n/ucs2.c index 5057fc497ff6..eeeb0a81e2b9 100644 --- a/lib/libi18n/ucs2.c +++ b/lib/libi18n/ucs2.c @@ -83,14 +83,14 @@ CS_JISX0212, CS_GB2312, /* 0x20 - 0x2F*/ -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, +CS_UNKNOWN, /* CS_UCS2 */ +CS_UNKNOWN, /* CS_UCS4 */ +CS_UNKNOWN, /* CS_UTF8 */ +CS_UNKNOWN, /* CS_UTF7 */ -CS_UNKNOWN, +CS_UNKNOWN, /* CS_NPC */ CS_X_BIG5, -CS_UNKNOWN, +CS_UNKNOWN, /* USRDEF2 */ CS_KOI8_R, CS_MAC_CYRILLIC, @@ -101,15 +101,15 @@ CS_CP_1253, CS_CP_1250, CS_CP_1254, CS_MAC_TURKISH, -CS_UNKNOWN, +CS_UNKNOWN, /* CS_GB2312_11 */ /* 0x30 - 0x3F*/ -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, -CS_UNKNOWN, +CS_UNKNOWN, /* CS_JISX0208_11 */ +CS_UNKNOWN, /* CS_KSC5601_11 */ +CS_UNKNOWN, /* CS_CNS11643_1110 */ +CS_UNKNOWN, /* CS_UCS2_SWAP */ -CS_UNKNOWN, +CS_UNKNOWN, /* CS_IMAP4_UTF7 */ CS_CP_850, CS_CP_852, CS_CP_855, @@ -122,7 +122,92 @@ CS_CP_866, CS_CP_874, CS_CP_1257, CS_CP_1258, +CS_ARMSCII8, + +/* 0x40 - 0x4F*/ +CS_HZ, +CS_ISO_2022_CN, +CS_GB13000, +CS_BIG5_PLUS, + +CS_UHC, +CS_CNS11643_3, +CS_CNS11643_4, +CS_CNS11643_5, + +CS_CNS11643_6, +CS_CNS11643_7, +CS_CNS11643_8, +CS_CNS11643_9, + +CS_CNS11643_10, +CS_CNS11643_11, +CS_CNS11643_12, +CS_CNS11643_13, + +/* 0x50 - 0x5F*/ +CS_CNS11643_14, +CS_CNS11643_15, +CS_CNS11643_16, +CS_VISCII, /* Should change to CS_VIET_VISCII */ + +CS_VIQR, /* Should change to CS_VIET_VIQR */ +CS_KOI8_U, +CS_ISO_IR_111, +CS_8859_6_I, + +CS_8859_6_E, +CS_8859_8_I, +CS_8859_8_E, +CS_JOHAB, + +CS_JOHABFONT, +CS_UNKNOWN, /* should change to CS_VIET_VPS */ +CS_UNKNOWN, /* should change to CS_VIET_TCVN */ +CS_UNKNOWN, /* should change to CS_VIET_VNI */ + +/* 0x60 - 0x6F*/ CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, + +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, + +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, + +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, + +/* 0x70 - 0x7F*/ +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, + +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, + +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, + +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, +CS_UNKNOWN, + }; #define intl_GetValidCSID(fb) (csidtable[(fb) & (MAXCSIDINTBL - 1)]) diff --git a/lib/libi18n/ugendata.c b/lib/libi18n/ugendata.c index e037bc7aa2df..0013334d0a5d 100644 --- a/lib/libi18n/ugendata.c +++ b/lib/libi18n/ugendata.c @@ -194,9 +194,69 @@ sbShiftT, sbShiftT, sbShiftT, sbShiftT, -0, +tbShiftT, /* 0x30-0x37 */ +tbShiftT, +tbShiftT, +tbShiftT, +0, +0, +sbShiftT, +sbShiftT, +sbShiftT, + +/* 0x38-0x3F */ +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, + +/* 0x40-0x47 */ +0, +0, +tbShiftT, +tbShiftT, +tbShiftT, +tbShiftT, +tbShiftT, +tbShiftT, + +/* 0x48-0x4F */ +tbShiftT, +tbShiftT, +tbShiftT, +tbShiftT, +tbShiftT, +tbShiftT, +tbShiftT, +tbShiftT, + +/* 0x50-0x57 */ +tbShiftT, +tbShiftT, +tbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, + +/* 0x58-0x5F */ +sbShiftT, +sbShiftT, +sbShiftT, +tbShiftT, +tbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, + +/* 0x60-0x67 */ 0, 0, 0, @@ -206,7 +266,27 @@ sbShiftT, 0, 0, -/* 0x38-0x3F */ +/* 0x68-0x6F */ +0, +0, +0, +0, +0, +0, +0, +0, + +/* 0x70-0x77 */ +0, +0, +0, +0, +0, +0, +0, +0, + +/* 0x78-0x7F */ 0, 0, 0, @@ -214,7 +294,7 @@ sbShiftT, 0, 0, sbShiftT, -0 +0, }; /* This table is used for unicode to single encoding conversion */ @@ -287,11 +367,91 @@ sbShiftT, 0, 0, 0, +sbShiftT, +sbShiftT, +sbShiftT, + +/* 0x38-0x3F */ +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, + +/* 0x40-0x47 */ +0, +0, +0, +0, +0, 0, 0, 0, -/* 0x38-0x3F */ +/* 0x48-0x4F */ +0, +0, +0, +0, +0, +0, +0, +0, + +/* 0x50-0x57 */ +0, +0, +0, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, +sbShiftT, + +/* 0x58-0x5F */ +sbShiftT, +sbShiftT, +sbShiftT, +0, +0, +sbShiftT, +sbShiftT, +sbShiftT, + +/* 0x60-0x67 */ +0, +0, +0, +0, +0, +0, +0, +0, + +/* 0x68-0x6F */ +0, +0, +0, +0, +0, +0, +0, +0, + +/* 0x70-0x77 */ +0, +0, +0, +0, +0, +0, +0, +0, + +/* 0x78-0x7F */ 0, 0, 0, @@ -299,7 +459,7 @@ sbShiftT, 0, 0, sbShiftT, -sbShiftT +0, }; PRIVATE UnicodeTableSet unicodetableset[] = @@ -452,7 +612,7 @@ MODULE_PRIVATE UnicodeTableSet* GetUnicodeTableSet(uint16 csid) -----------------------------------------------------------------------------------*/ MODULE_PRIVATE uShiftTable* GetShiftTableFromCsid(uint16 csid) { - return (uShiftTable*)(strShiftTable[csid & 0x3F]); + return (uShiftTable*)(strShiftTable[csid & (MAXCSIDINTBL - 1)]); } MODULE_PRIVATE uShiftTable* InfoToShiftTable(unsigned char info) {