Implement latin2 encoding

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@6438 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Adam Fedor 2000-04-09 02:28:27 +00:00
parent 3ff7abaa75
commit a0b63ea2ae
5 changed files with 304 additions and 1 deletions

View file

@ -1,3 +1,10 @@
2000-04-08 Adam Fedor <fedor@gnu.org>
* Source/NSString.m: Include NSISOLatin2StringEncoding coding.
* Source/Unicode.m (encode_chartouni): Implement latin2 encoding.
(encode_unitochar): Likewise. (patches from
Stefan Urbanek <urbane@decef.elf.stuba.sk>).
2000-04-05 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSCalendarDate.m: Bugfix intialising from string.

View file

@ -0,0 +1,274 @@
/* Created by Stefan Urbanek <urbane@decef.elf.stuba.sk> on 2000 Apr 6 */
// ISO_8859-2 to Unicode maping
const unsigned int Latin2_conv_base = 0x80;
unichar Latin2_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,
0x0104,
0x02D8,
0x0141,
0x00A4,
0x013D,
0x015A,
0x00A7,
0x00A8,
0x0160,
0x015E,
0x0164,
0x0179,
0x00AD,
0x017D,
0x017B,
0x00B0,
0x0105,
0x02DB,
0x0142,
0x00B4,
0x013E,
0x015B,
0x02C7,
0x00B8,
0x0161,
0x015F,
0x0165,
0x017A,
0x02DD,
0x017E,
0x017C,
0x0154,
0x00C1,
0x00C2,
0x0102,
0x00C4,
0x0139,
0x0106,
0x00C7,
0x010C,
0x00C9,
0x0118,
0x00CB,
0x011A,
0x00CD,
0x00CE,
0x010E,
0x0110,
0x0143,
0x0147,
0x00D3,
0x00D4,
0x0150,
0x00D6,
0x00D7,
0x0158,
0x016E,
0x00DA,
0x0170,
0x00DC,
0x00DD,
0x0162,
0x00DF,
0x0155,
0x00E1,
0x00E2,
0x0103,
0x00E4,
0x013A,
0x0107,
0x00E7,
0x010D,
0x00E9,
0x0119,
0x00EB,
0x011B,
0x00ED,
0x00EE,
0x010F,
0x0111,
0x0144,
0x0148,
0x00F3,
0x00F4,
0x0151,
0x00F6,
0x00F7,
0x0159,
0x016F,
0x00FA,
0x0171,
0x00FC,
0x00FD,
0x0163,
0x02D9,
};
// Unicode to ISO_8859-2 maping
const unsigned int Latin2_uni_to_char_table_size = 128;
struct _ucc_ Latin2_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},
{0x00A4,0xA4},
{0x00A7,0xA7},
{0x00A8,0xA8},
{0x00AD,0xAD},
{0x00B0,0xB0},
{0x00B4,0xB4},
{0x00B8,0xB8},
{0x00C1,0xC1},
{0x00C2,0xC2},
{0x00C4,0xC4},
{0x00C7,0xC7},
{0x00C9,0xC9},
{0x00CB,0xCB},
{0x00CD,0xCD},
{0x00CE,0xCE},
{0x00D3,0xD3},
{0x00D4,0xD4},
{0x00D6,0xD6},
{0x00D7,0xD7},
{0x00DA,0xDA},
{0x00DC,0xDC},
{0x00DD,0xDD},
{0x00DF,0xDF},
{0x00E1,0xE1},
{0x00E2,0xE2},
{0x00E4,0xE4},
{0x00E7,0xE7},
{0x00E9,0xE9},
{0x00EB,0xEB},
{0x00ED,0xED},
{0x00EE,0xEE},
{0x00F3,0xF3},
{0x00F4,0xF4},
{0x00F6,0xF6},
{0x00F7,0xF7},
{0x00FA,0xFA},
{0x00FC,0xFC},
{0x00FD,0xFD},
{0x0102,0xC3},
{0x0103,0xE3},
{0x0104,0xA1},
{0x0105,0xB1},
{0x0106,0xC6},
{0x0107,0xE6},
{0x010C,0xC8},
{0x010D,0xE8},
{0x010E,0xCF},
{0x010F,0xEF},
{0x0110,0xD0},
{0x0111,0xF0},
{0x0118,0xCA},
{0x0119,0xEA},
{0x011A,0xCC},
{0x011B,0xEC},
{0x0139,0xC5},
{0x013A,0xE5},
{0x013D,0xA5},
{0x013E,0xB5},
{0x0141,0xA3},
{0x0142,0xB3},
{0x0143,0xD1},
{0x0144,0xF1},
{0x0147,0xD2},
{0x0148,0xF2},
{0x0150,0xD5},
{0x0151,0xF5},
{0x0154,0xC0},
{0x0155,0xE0},
{0x0158,0xD8},
{0x0159,0xF8},
{0x015A,0xA6},
{0x015B,0xB6},
{0x015E,0xAA},
{0x015F,0xBA},
{0x0160,0xA9},
{0x0161,0xB9},
{0x0162,0xDE},
{0x0163,0xFE},
{0x0164,0xAB},
{0x0165,0xBB},
{0x016E,0xD9},
{0x016F,0xF9},
{0x0170,0xDB},
{0x0171,0xFB},
{0x0179,0xAC},
{0x017A,0xBC},
{0x017B,0xAF},
{0x017C,0xBF},
{0x017D,0xAE},
{0x017E,0xBE},
{0x02C7,0xB7},
{0x02D8,0xA2},
{0x02D9,0xFF},
{0x02DB,0xB2},
{0x02DD,0xBD},
};

View file

@ -436,6 +436,7 @@ UNICODE_HEADERS = \
unicode/caseconv.h \
unicode/cop.h \
unicode/cyrillic.h \
unicode/latin2.h \
unicode/decomp.h \
unicode/nextstep.h

View file

@ -86,7 +86,7 @@
// NSSymbolStringEncoding,
// NSNonLossyASCIIStringEncoding,
// NSShiftJISStringEncoding,
// NSISOLatin2StringEncoding,
NSISOLatin2StringEncoding,
NSUnicodeStringEncoding,
// NSWindowsCP1251StringEncoding,
// NSWindowsCP1252StringEncoding,
@ -1754,6 +1754,7 @@ handle_printf_atsign (FILE *stream,
if ((encoding==NSASCIIStringEncoding)
|| (encoding==NSISOLatin1StringEncoding)
|| (encoding==NSISOLatin2StringEncoding)
|| (encoding==NSNEXTSTEPStringEncoding)
|| (encoding==NSNonLossyASCIIStringEncoding)
|| (encoding==NSSymbolStringEncoding)

View file

@ -27,6 +27,7 @@
struct _ucc_ {unichar from; char to;};
#include "unicode/cyrillic.h"
#include "unicode/latin2.h"
#include "unicode/nextstep.h"
#include "unicode/caseconv.h"
#include "unicode/cop.h"
@ -62,6 +63,13 @@ encode_chartouni(char c, NSStringEncoding enc)
else
return(Cyrillic_char_to_uni_table[(unc)c - Cyrillic_conv_base]);
}
if ((enc == NSISOLatin2StringEncoding))
{
if ((unc)c < Latin2_conv_base)
return (unichar)((unc)c);
else
return(Latin2_char_to_uni_table[(unc)c - Latin2_conv_base]);
}
#if 0
if ((enc == NSSymbolStringEncoding))
@ -123,6 +131,18 @@ encode_unitochar(unichar u, NSStringEncoding enc)
}
}
if ((enc == NSISOLatin2StringEncoding))
{
if (u <(unichar)Latin2_conv_base)
return (char)u;
else
{
while (((res = u-Latin2_uni_to_char_table[i++].from) > 0)
&& (i < Latin2_uni_to_char_table_size));
return res ? 0 : Latin2_uni_to_char_table[--i].to;
}
}
#if 0
if ((enc == NSSymbolStringEncoding))
{