Add thai encoding

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@14835 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
fedor 2002-10-22 14:29:34 +00:00
parent a7852f69cd
commit 93168d9fe4
6 changed files with 230 additions and 3 deletions

View file

@ -1,3 +1,15 @@
2002-10-21 Adam Fedor <fedor@gnu.org>
* Headers/gnustep/unicode/thai.h: New file.
* Headers/gnustep/base/NSString.h (_NSStringEncoding): Add
NSISOThaiStringEncoding.
* Source/NSString.m (-dataUsingEncoding:allowLossyConversion:):
Handle it.
* Source/Unicode.m (struct _strenc_ str_encoding_table[]): Idem.
(GSEncodingForRegistry): Idem.
(GSToUnicode, GSFromUnicode): Idem.
(Patches, modified, from Banlu Kemiyatorn <id@project-ile.net>).
2002-10-21 Adam Fedor <fedor@gnu.org>
* Source/GSLocale.m (GSLanguageFromLocale): Implement regardless

View file

@ -83,8 +83,8 @@ typedef enum _NSStringEncoding
NSISOHebrewStringEncoding = 55, // ISO-8859-8
NSISOLatin5StringEncoding = 57, // ISO-8859-9; Turkish
NSISOLatin6StringEncoding = 58, // ISO-8859-10; Nordic
/* Possible future ISO-8859 additions
NSISOThaiStringEncoding = 59, // ISO-8859-11
/* Possible future ISO-8859 additions
// ISO-8859-12
*/
NSISOLatin7StringEncoding = 61, // ISO-8859-13

View file

@ -0,0 +1,199 @@
/* ISO_8859-11 to Unicode maping */
const unsigned int Thai_conv_base = 0xA0;
unichar Thai_char_to_uni_table[] =
{
0x00A0,
0x0E01,
0x0E02,
0x0E03,
0x0E04,
0x0E05,
0x0E06,
0x0E07,
0x0E08,
0x0E09,
0x0E0A,
0x0E0B,
0x0E0C,
0x0E0D,
0x0E0E,
0x0E0F,
0x0E10,
0x0E11,
0x0E12,
0x0E13,
0x0E14,
0x0E15,
0x0E16,
0x0E17,
0x0E18,
0x0E19,
0x0E1A,
0x0E1B,
0x0E1C,
0x0E1D,
0x0E1E,
0x0E1F,
0x0E20,
0x0E21,
0x0E22,
0x0E23,
0x0E24,
0x0E25,
0x0E26,
0x0E27,
0x0E28,
0x0E29,
0x0E2A,
0x0E2B,
0x0E2C,
0x0E2D,
0x0E2E,
0x0E2F,
0x0E30,
0x0E31,
0x0E32,
0x0E33,
0x0E34,
0x0E35,
0x0E36,
0x0E37,
0x0E38,
0x0E39,
0x0E3A,
0xFFFD,
0xFFFD,
0xFFFD,
0xFFFD,
0x0E3F,
0x0E40,
0x0E41,
0x0E42,
0x0E43,
0x0E44,
0x0E45,
0x0E46,
0x0E47,
0x0E48,
0x0E49,
0x0E4A,
0x0E4B,
0x0E4C,
0x0E4D,
0x0E4E,
0x0E4F,
0x2116,
0x0E51,
0x0E52,
0x0E53,
0x0E54,
0x0E55,
0x0E56,
0x0E57,
0x0E58,
0x0E59,
0x0E5A,
0x0E5B,
0xFFFD,
0xFFFD,
0xFFFD,
0xFFFD,
};
/* Unicode to ISO_8859-11 maping */
const unsigned int Thai_uni_to_char_table_size = 88;
_ucc_ Thai_uni_to_char_table[]=
{
{0x00A0,0xA0},
{0x0E01,0xA1},
{0x0E02,0xA2},
{0x0E03,0xA3},
{0x0E04,0xA4},
{0x0E05,0xA5},
{0x0E06,0xA6},
{0x0E07,0xA7},
{0x0E08,0xA8},
{0x0E09,0xA9},
{0x0E0A,0xAA},
{0x0E0B,0xAB},
{0x0E0C,0xAC},
{0x0E0D,0xAD},
{0x0E0E,0xAE},
{0x0E0F,0xAF},
{0x0E10,0xB0},
{0x0E11,0xB1},
{0x0E12,0xB2},
{0x0E13,0xB3},
{0x0E14,0xB4},
{0x0E15,0xB5},
{0x0E16,0xB6},
{0x0E17,0xB7},
{0x0E18,0xB8},
{0x0E19,0xB9},
{0x0E1A,0xBA},
{0x0E1B,0xBB},
{0x0E1C,0xBC},
{0x0E1D,0xBD},
{0x0E1E,0xBE},
{0x0E1F,0xBF},
{0x0E20,0xC0},
{0x0E21,0xC1},
{0x0E22,0xC2},
{0x0E23,0xC3},
{0x0E24,0xC4},
{0x0E25,0xC5},
{0x0E26,0xC6},
{0x0E27,0xC7},
{0x0E28,0xC8},
{0x0E29,0xC9},
{0x0E2A,0xCA},
{0x0E2B,0xCB},
{0x0E2C,0xCC},
{0x0E2D,0xCD},
{0x0E2E,0xCE},
{0x0E2F,0xCF},
{0x0E30,0xD0},
{0x0E31,0xD1},
{0x0E32,0xD2},
{0x0E33,0xD3},
{0x0E34,0xD4},
{0x0E35,0xD5},
{0x0E36,0xD6},
{0x0E37,0xD7},
{0x0E38,0xD8},
{0x0E39,0xD9},
{0x0E3A,0xDA},
{0x0E3F,0xDF},
{0x0E40,0xE0},
{0x0E41,0xE1},
{0x0E42,0xE2},
{0x0E43,0xE3},
{0x0E44,0xE4},
{0x0E45,0xE5},
{0x0E46,0xE6},
{0x0E47,0xE7},
{0x0E48,0xE8},
{0x0E49,0xE9},
{0x0E4A,0xEA},
{0x0E4B,0xEB},
{0x0E4C,0xEC},
{0x0E4D,0xED},
{0x0E4E,0xEE},
{0x0E4F,0xEF},
{0x0E50,0xF0},
{0x0E51,0xF1},
{0x0E52,0xF2},
{0x0E53,0xF3},
{0x0E54,0xF4},
{0x0E55,0xF5},
{0x0E56,0xF6},
{0x0E57,0xF7},
{0x0E58,0xF8},
{0x0E59,0xF9},
{0x0E5A,0xFA},
{0x0E5B,0xFB},
};

View file

@ -1,3 +1,3 @@
{
th_TH = NSThaiStringEncoding;
th_TH = NSISOThaiStringEncoding;
}

View file

@ -2495,7 +2495,8 @@ handle_printf_atsign (FILE *stream,
|| (encoding == NSNEXTSTEPStringEncoding)
|| (encoding == NSNonLossyASCIIStringEncoding)
|| (encoding == NSSymbolStringEncoding)
|| (encoding == NSISOCyrillicStringEncoding))
|| (encoding == NSISOCyrillicStringEncoding)
|| (encoding == NSISOThaiStringEncoding))
{
char t;
unsigned char *buff;

View file

@ -48,6 +48,7 @@ typedef struct {unichar from; unsigned char to;} _ucc_;
#include "unicode/cop.h"
#include "unicode/decomp.h"
#include "unicode/gsm0338.h"
#include "unicode/thai.h"
#ifdef HAVE_ICONV
#ifdef HAVE_GICONV_H
@ -163,6 +164,7 @@ static struct _strenc_ str_encoding_table[] = {
{NSISOHebrewStringEncoding, "NSISOHebrewStringEncoding","ISO-8859-8",0,0},
{NSISOLatin5StringEncoding, "NSISOLatin5StringEncoding","ISO-8859-9",0,0},
{NSISOLatin6StringEncoding, "NSISOLatin6StringEncoding","ISO-8859-10",0,0},
{NSISOThaiStringEncoding, "NSISOThaiStringEncoding","ISO-8859-11",1,1},
{NSISOLatin7StringEncoding, "NSISOLatin7StringEncoding","ISO-8859-13",0,0},
{NSISOLatin8StringEncoding, "NSISOLatin8StringEncoding","ISO-8859-14",0,0},
{NSISOLatin9StringEncoding, "NSISOLatin9StringEncoding","ISO-8859-15",0,0},
@ -348,6 +350,8 @@ GSEncodingForRegistry (NSString *registry, NSString *encoding)
return NSISOGreekStringEncoding;
else if ([encoding isEqualToString: @"8"])
return NSISOHebrewStringEncoding;
else if ([encoding isEqualToString: @"11"])
return NSISOThaiStringEncoding;
// Other latin encodings are currently not supported
}
else if ([registry isEqualToString: @"iso10646"])
@ -986,6 +990,11 @@ GSToUnicode(unichar **dst, unsigned int *size, const unsigned char *src,
base = Latin2_conv_base;
table = Latin2_char_to_uni_table;
goto tables;
case NSISOThaiStringEncoding:
base = Thai_conv_base;
table = Thai_char_to_uni_table;
goto tables;
#if 0
case NSSymbolStringEncoding:
@ -1448,6 +1457,12 @@ bases:
tsize = Latin2_uni_to_char_table_size;
goto tables;
case NSISOThaiStringEncoding:
base = (unichar)Thai_conv_base;
table = Thai_uni_to_char_table;
tsize = Thai_uni_to_char_table_size;
goto tables;
#if 0
case NSSymbolStringEncoding:
base = (unichar)Symbol_conv_base;