From 2c70c72df9a65e8e5be3ee76e62f28544959416b Mon Sep 17 00:00:00 2001 From: CaS Date: Mon, 20 Jan 2003 09:58:45 +0000 Subject: [PATCH] Added latin9 support. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@15646 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 7 + Headers/gnustep/unicode/latin9.h | 274 +++++++++++++++++++++++++++++++ Source/Additions/Unicode.m | 16 +- 3 files changed, 296 insertions(+), 1 deletion(-) create mode 100644 Headers/gnustep/unicode/latin9.h diff --git a/ChangeLog b/ChangeLog index e3963927d..88dce8c06 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-01-20 Richard Frith-Macdonald + + * Headers/gnustep/unicode/latin9.h: Latin9 string encoding tables + * Source/Additions/Unicode.m: Added built-in support for the Latin9 + character encoding ... contains the Euro symbol ... nice for + european users. + 2003-01-16 Richard Frith-Macdonald * Source/NSURL.m: Support MacOS-X style initialisation using a path diff --git a/Headers/gnustep/unicode/latin9.h b/Headers/gnustep/unicode/latin9.h new file mode 100644 index 000000000..969649a43 --- /dev/null +++ b/Headers/gnustep/unicode/latin9.h @@ -0,0 +1,274 @@ +/* Created by Stefan Urbanek on 2000 Apr 6 */ + +// ISO_8859-15 to Unicode maping + +const unsigned int Latin9_conv_base = 0x80; + +unichar Latin9_char_to_uni_table[] = +{ + 0x0080, + 0x0081, + 0x0082, + 0x0083, + 0x0084, + 0x0085, + 0x0086, + 0x0087, + 0x0088, + 0x0089, + 0x008A, + 0x008B, + 0x008C, + 0x008D, + 0x008E, + 0x008F, + 0x0090, + 0x0091, + 0x0092, + 0x0093, + 0x0094, + 0x0095, + 0x0096, + 0x0097, + 0x0098, + 0x0099, + 0x009A, + 0x009B, + 0x009C, + 0x009D, + 0x009E, + 0x009F, + 0x00A0, + 0x00A1, + 0x00A2, + 0x00A3, + 0x20AC, + 0x00A5, + 0x0160, + 0x00A7, + 0x0161, + 0x00A9, + 0x00AA, + 0x00AB, + 0x00AC, + 0x00AD, + 0x00AE, + 0x00AF, + 0x00B0, + 0x00B1, + 0x00B2, + 0x00B3, + 0x017D, + 0x00B5, + 0x00B6, + 0x00B7, + 0x017E, + 0x00B9, + 0x00BA, + 0x00BB, + 0x0152, + 0x0153, + 0x0178, + 0x00BF, + 0x00C0, + 0x00C1, + 0x00C2, + 0x00C3, + 0x00C4, + 0x00C5, + 0x00C6, + 0x00C7, + 0x00C8, + 0x00C9, + 0x00CA, + 0x00CB, + 0x00CC, + 0x00CD, + 0x00CE, + 0x00CF, + 0x00D0, + 0x00D1, + 0x00D2, + 0x00D3, + 0x00D4, + 0x00D5, + 0x00D6, + 0x00D7, + 0x00D8, + 0x00D9, + 0x00DA, + 0x00DB, + 0x00DC, + 0x00DD, + 0x00DE, + 0x00DF, + 0x00E0, + 0x00E1, + 0x00E2, + 0x00E3, + 0x00E4, + 0x00E5, + 0x00E6, + 0x00E7, + 0x00E8, + 0x00E9, + 0x00EA, + 0x00EB, + 0x00EC, + 0x00ED, + 0x00EE, + 0x00EF, + 0x00F0, + 0x00F1, + 0x00F2, + 0x00F3, + 0x00F4, + 0x00F5, + 0x00F6, + 0x00F7, + 0x00F8, + 0x00F9, + 0x00FA, + 0x00FB, + 0x00FC, + 0x00FD, + 0x00FE, + 0x00FF +}; + +// Unicode to ISO_8859-15 maping + +const unsigned int Latin9_uni_to_char_table_size = 128; + +_ucc_ Latin9_uni_to_char_table[]= +{ + {0x0080, 0x80}, + {0x0081, 0x81}, + {0x0082, 0x82}, + {0x0083, 0x83}, + {0x0084, 0x84}, + {0x0085, 0x85}, + {0x0086, 0x86}, + {0x0087, 0x87}, + {0x0088, 0x88}, + {0x0089, 0x89}, + {0x008A, 0x8A}, + {0x008B, 0x8B}, + {0x008C, 0x8C}, + {0x008D, 0x8D}, + {0x008E, 0x8E}, + {0x008F, 0x8F}, + {0x0090, 0x90}, + {0x0091, 0x91}, + {0x0092, 0x92}, + {0x0093, 0x93}, + {0x0094, 0x94}, + {0x0095, 0x95}, + {0x0096, 0x96}, + {0x0097, 0x97}, + {0x0098, 0x98}, + {0x0099, 0x99}, + {0x009A, 0x9A}, + {0x009B, 0x9B}, + {0x009C, 0x9C}, + {0x009D, 0x9D}, + {0x009E, 0x9E}, + {0x009F, 0x9F}, + {0x00A0, 0xA0}, + {0x00A1, 0xA1}, + {0x00A2, 0xA2}, + {0x00A3, 0xA3}, + {0x00A5, 0xA5}, + {0x00A7, 0xA7}, + {0x00A9, 0xA9}, + {0x00AA, 0xAA}, + {0x00AB, 0xAB}, + {0x00AC, 0xAC}, + {0x00AD, 0xAD}, + {0x00AE, 0xAE}, + {0x00AF, 0xAF}, + {0x00B0, 0xB0}, + {0x00B1, 0xB1}, + {0x00B2, 0xB2}, + {0x00B3, 0xB3}, + {0x00B5, 0xB5}, + {0x00B6, 0xB6}, + {0x00B7, 0xB7}, + {0x00B9, 0xB9}, + {0x00BA, 0xBA}, + {0x00BB, 0xBB}, + {0x00BF, 0xBF}, + {0x00C0, 0xC0}, + {0x00C1, 0xC1}, + {0x00C2, 0xC2}, + {0x00C3, 0xC3}, + {0x00C4, 0xC4}, + {0x00C5, 0xC5}, + {0x00C6, 0xC6}, + {0x00C7, 0xC7}, + {0x00C8, 0xC8}, + {0x00C9, 0xC9}, + {0x00CA, 0xCA}, + {0x00CB, 0xCB}, + {0x00CC, 0xCC}, + {0x00CD, 0xCD}, + {0x00CE, 0xCE}, + {0x00CF, 0xCF}, + {0x00D0, 0xD0}, + {0x00D1, 0xD1}, + {0x00D2, 0xD2}, + {0x00D3, 0xD3}, + {0x00D4, 0xD4}, + {0x00D5, 0xD5}, + {0x00D6, 0xD6}, + {0x00D7, 0xD7}, + {0x00D8, 0xD8}, + {0x00D9, 0xD9}, + {0x00DA, 0xDA}, + {0x00DB, 0xDB}, + {0x00DC, 0xDC}, + {0x00DD, 0xDD}, + {0x00DE, 0xDE}, + {0x00DF, 0xDF}, + {0x00E0, 0xE0}, + {0x00E1, 0xE1}, + {0x00E2, 0xE2}, + {0x00E3, 0xE3}, + {0x00E4, 0xE4}, + {0x00E5, 0xE5}, + {0x00E6, 0xE6}, + {0x00E7, 0xE7}, + {0x00E8, 0xE8}, + {0x00E9, 0xE9}, + {0x00EA, 0xEA}, + {0x00EB, 0xEB}, + {0x00EC, 0xEC}, + {0x00ED, 0xED}, + {0x00EE, 0xEE}, + {0x00EF, 0xEF}, + {0x00F0, 0xF0}, + {0x00F1, 0xF1}, + {0x00F2, 0xF2}, + {0x00F3, 0xF3}, + {0x00F4, 0xF4}, + {0x00F5, 0xF5}, + {0x00F6, 0xF6}, + {0x00F7, 0xF7}, + {0x00F8, 0xF8}, + {0x00F9, 0xF9}, + {0x00FA, 0xFA}, + {0x00FB, 0xFB}, + {0x00FC, 0xFC}, + {0x00FD, 0xFD}, + {0x00FE, 0xFE}, + {0x00FF, 0xFF}, + {0x0152, 0xBC}, + {0x0153, 0xBD}, + {0x0160, 0xA6}, + {0x0161, 0xA8}, + {0x0178, 0xBE}, + {0x017D, 0xB4}, + {0x017E, 0xB8}, + {0x20AC, 0xA4} +}; + diff --git a/Source/Additions/Unicode.m b/Source/Additions/Unicode.m index f6ef44a3d..8932217af 100644 --- a/Source/Additions/Unicode.m +++ b/Source/Additions/Unicode.m @@ -44,6 +44,7 @@ typedef struct {unichar from; unsigned char to;} _ucc_; #include "unicode/cyrillic.h" #include "unicode/latin2.h" +#include "unicode/latin9.h" #include "unicode/nextstep.h" #include "unicode/caseconv.h" #include "unicode/cop.h" @@ -168,7 +169,7 @@ static struct _strenc_ str_encoding_table[] = { {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}, + {NSISOLatin9StringEncoding, "NSISOLatin9StringEncoding","ISO-8859-15",1,1}, {NSUTF7StringEncoding, "NSUTF7StringEncoding","",0,0}, {NSGB2312StringEncoding, "NSGB2312StringEncoding","EUC-CN",0,0}, {NSGSM0338StringEncoding, "NSGSM0338StringEncoding","",0,1}, @@ -364,6 +365,8 @@ GSEncodingForRegistry (NSString *registry, NSString *encoding) return NSISOHebrewStringEncoding; else if ([encoding isEqualToString: @"11"]) return NSISOThaiStringEncoding; + else if ([encoding isEqualToString: @"15"]) + return NSISOLatin9StringEncoding; // Other latin encodings are currently not supported } else if ([registry isEqualToString: @"iso10646"]) @@ -1127,6 +1130,11 @@ GSToUnicode(unichar **dst, unsigned int *size, const unsigned char *src, table = Latin2_char_to_uni_table; goto tables; + case NSISOLatin9StringEncoding: + base = Latin9_conv_base; + table = Latin9_char_to_uni_table; + goto tables; + case NSISOThaiStringEncoding: base = Thai_conv_base; table = Thai_char_to_uni_table; @@ -1652,6 +1660,12 @@ bases: tsize = Latin2_uni_to_char_table_size; goto tables; + case NSISOLatin9StringEncoding: + base = (unichar)Latin9_conv_base; + table = Latin9_uni_to_char_table; + tsize = Latin9_uni_to_char_table_size; + goto tables; + case NSISOThaiStringEncoding: base = (unichar)Thai_conv_base; table = Thai_uni_to_char_table;