Added latin9 support.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@15646 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2003-01-20 09:58:45 +00:00
parent 590043c595
commit 2aafe79eee
3 changed files with 296 additions and 1 deletions

View file

@ -1,3 +1,10 @@
2003-01-20 Richard Frith-Macdonald <rfm@gnu.org>
* 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 <rfm@gnu.org>
* Source/NSURL.m: Support MacOS-X style initialisation using a path

View file

@ -0,0 +1,274 @@
/* Created by Stefan Urbanek <urbane@decef.elf.stuba.sk> 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}
};

View file

@ -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;