mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-22 16:33:29 +00:00
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:
parent
3ff7abaa75
commit
a0b63ea2ae
5 changed files with 304 additions and 1 deletions
|
@ -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.
|
||||
|
|
274
Headers/gnustep/unicode/latin2.h
Normal file
274
Headers/gnustep/unicode/latin2.h
Normal 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},
|
||||
};
|
||||
|
|
@ -436,6 +436,7 @@ UNICODE_HEADERS = \
|
|||
unicode/caseconv.h \
|
||||
unicode/cop.h \
|
||||
unicode/cyrillic.h \
|
||||
unicode/latin2.h \
|
||||
unicode/decomp.h \
|
||||
unicode/nextstep.h
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue