From 5cf0760ab092bdfac15e16e7d7390ad6b67703d6 Mon Sep 17 00:00:00 2001 From: Adam Fedor Date: Tue, 22 Oct 2002 14:29:34 +0000 Subject: [PATCH] Add thai encoding git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@14835 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 12 ++ Headers/gnustep/base/NSString.h | 2 +- Headers/gnustep/unicode/thai.h | 199 +++++++++++++++++++++++++++ Resources/Languages/Locale.encodings | 2 +- Source/NSString.m | 3 +- Source/Unicode.m | 15 ++ 6 files changed, 230 insertions(+), 3 deletions(-) create mode 100644 Headers/gnustep/unicode/thai.h diff --git a/ChangeLog b/ChangeLog index 1c6d925c8..193986377 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2002-10-21 Adam Fedor + + * 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 ). + 2002-10-21 Adam Fedor * Source/GSLocale.m (GSLanguageFromLocale): Implement regardless diff --git a/Headers/gnustep/base/NSString.h b/Headers/gnustep/base/NSString.h index 5e4e0801c..bc0fff287 100644 --- a/Headers/gnustep/base/NSString.h +++ b/Headers/gnustep/base/NSString.h @@ -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 diff --git a/Headers/gnustep/unicode/thai.h b/Headers/gnustep/unicode/thai.h new file mode 100644 index 000000000..c1692b92c --- /dev/null +++ b/Headers/gnustep/unicode/thai.h @@ -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}, +}; diff --git a/Resources/Languages/Locale.encodings b/Resources/Languages/Locale.encodings index 48a980f91..025bdf821 100644 --- a/Resources/Languages/Locale.encodings +++ b/Resources/Languages/Locale.encodings @@ -1,3 +1,3 @@ { - th_TH = NSThaiStringEncoding; + th_TH = NSISOThaiStringEncoding; } diff --git a/Source/NSString.m b/Source/NSString.m index 21a6531f5..7db81346d 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -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; diff --git a/Source/Unicode.m b/Source/Unicode.m index e2063ccca..0924dd0dc 100644 --- a/Source/Unicode.m +++ b/Source/Unicode.m @@ -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;