first commit
This commit is contained in:
91
xim/xcb-imdkit/src/xlibi18n/XlcPubI.h
Normal file
91
xim/xcb-imdkit/src/xlibi18n/XlcPubI.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright 1992, 1993 by TOSHIBA Corp.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and its
|
||||
* documentation for any purpose and without fee is hereby granted, provided
|
||||
* that the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of TOSHIBA not be used in advertising
|
||||
* or publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. TOSHIBA make no representations about the
|
||||
* suitability of this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*
|
||||
* TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||
* TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
*
|
||||
* Author: Katsuhisa Yano TOSHIBA Corp.
|
||||
* mopi@osa.ilab.toshiba.co.jp
|
||||
*/
|
||||
|
||||
#ifndef _XLCPUBLICI_H_
|
||||
#define _XLCPUBLICI_H_
|
||||
|
||||
#include "XlcPublic.h" // IWYU pragma: export
|
||||
|
||||
/* Fills into a freshly created XlcCharSet the fields that can be inferred
|
||||
from the ESC sequence. These are side, char_size, set_size. */
|
||||
extern bool _XlcParseCharSet(
|
||||
XlcCharSet charset
|
||||
);
|
||||
|
||||
/* Creates a new XlcCharSet, given its name (including side suffix) and
|
||||
Compound Text ESC sequence (normally at most 4 bytes). */
|
||||
extern XlcCharSet _XlcCreateDefaultCharSet(
|
||||
const char* name,
|
||||
const char* ct_sequence
|
||||
);
|
||||
|
||||
extern XlcCharSet _XlcAddCT(
|
||||
const char* name,
|
||||
const char* ct_sequence
|
||||
);
|
||||
|
||||
extern bool _XlcInitCTInfo (void);
|
||||
|
||||
|
||||
extern void
|
||||
init_state(State state);
|
||||
|
||||
extern int
|
||||
utf8tocs(
|
||||
State state,
|
||||
void **from,
|
||||
size_t *from_left,
|
||||
void **to,
|
||||
size_t *to_left,
|
||||
XlcCharSet* p_charset);
|
||||
|
||||
extern int
|
||||
cstoct(
|
||||
State state,
|
||||
void * *from,
|
||||
size_t *from_left,
|
||||
void * *to,
|
||||
size_t *to_left,
|
||||
XlcCharSet charset);
|
||||
|
||||
extern int
|
||||
cttocs(
|
||||
State state,
|
||||
void * *from,
|
||||
size_t *from_left,
|
||||
void * *to,
|
||||
size_t *to_left,
|
||||
XlcCharSet *p_charset);
|
||||
|
||||
extern int
|
||||
cstoutf8(
|
||||
State state,
|
||||
void * *from,
|
||||
size_t *from_left,
|
||||
void * *to,
|
||||
size_t *to_left,
|
||||
XlcCharSet charset);
|
||||
|
||||
#endif /* _XLCPUBLICI_H_ */
|
||||
124
xim/xcb-imdkit/src/xlibi18n/XlcPublic.h
Normal file
124
xim/xcb-imdkit/src/xlibi18n/XlcPublic.h
Normal file
@@ -0,0 +1,124 @@
|
||||
/*
|
||||
* Copyright 1992, 1993 by TOSHIBA Corp.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and its
|
||||
* documentation for any purpose and without fee is hereby granted, provided
|
||||
* that the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of TOSHIBA not be used in advertising
|
||||
* or publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. TOSHIBA make no representations about the
|
||||
* suitability of this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*
|
||||
* TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||
* TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
*
|
||||
* Author: Katsuhisa Yano TOSHIBA Corp.
|
||||
* mopi@osa.ilab.toshiba.co.jp
|
||||
*/
|
||||
/*
|
||||
* Copyright 1995 by FUJITSU LIMITED
|
||||
* This is source code modified by FUJITSU LIMITED under the Joint
|
||||
* Development Agreement for the CDE/Motif PST.
|
||||
*
|
||||
* Modifier: Takanori Tateno FUJITSU LIMITED
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* Most of this API is documented in i18n/Framework.PS
|
||||
*/
|
||||
|
||||
#ifndef _XLCPUBLIC_H_
|
||||
#define _XLCPUBLIC_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
|
||||
/*
|
||||
* Character sets.
|
||||
*/
|
||||
|
||||
/* Every character set has a "side". It denotes the range of byte values for
|
||||
which the character set is responsible. This means that the character
|
||||
set's encoded characters will only assumes bytes within the range, and
|
||||
that the character set can be used simultaneously with another character
|
||||
set responsible for a disjoint range. */
|
||||
typedef enum {
|
||||
XlcUnknown,
|
||||
XlcC0, /* responsible for values 0x00..0x1F */
|
||||
XlcGL, /* responsible for values 0x00..0x7F or 0x20..0x7F */
|
||||
XlcC1, /* responsible for values 0x80..0x9F */
|
||||
XlcGR, /* responsible for values 0x80..0xFF or 0xA0..0xFF */
|
||||
XlcGLGR, /* responsible for values 0x00..0xFF */
|
||||
XlcOther, /* unused */
|
||||
XlcNONE
|
||||
} XlcSide;
|
||||
|
||||
/* Where the character set comes from. */
|
||||
typedef enum {
|
||||
CSsrcUndef, /* unused */
|
||||
CSsrcStd, /* defined in libX11 */
|
||||
CSsrcXLC /* defined in an XLC_LOCALE file */
|
||||
} CSSrc;
|
||||
|
||||
/* This is the structure of an XlcCharSet.
|
||||
Once allocated, they are never freed. */
|
||||
typedef struct _XlcCharSetRec {
|
||||
/* Character set name, including side suffix */
|
||||
const char *name;
|
||||
|
||||
/* XLFD encoding name, no side suffix */
|
||||
const char *encoding_name;
|
||||
|
||||
/* Range for which the charset is responsible: XlcGL, XlcGR or XlcGLGR */
|
||||
XlcSide side;
|
||||
|
||||
/* Number of bytes per character. 0 means a varying number (e.g. UTF-8) */
|
||||
int char_size;
|
||||
/* Classification of the character set according to ISO-2022 */
|
||||
int set_size; /* e.g. 94 or 96 */
|
||||
const char *ct_sequence; /* control sequence of CT */
|
||||
/* (normally at most 4 bytes) */
|
||||
|
||||
/* Description source */
|
||||
CSSrc source;
|
||||
} XlcCharSetRec, *XlcCharSet;
|
||||
|
||||
/* Returns the charset with the given name (including side suffix).
|
||||
Returns NULL if not found. */
|
||||
extern XlcCharSet _XlcGetCharSet(
|
||||
const char* name
|
||||
);
|
||||
|
||||
/* Returns the charset with the given encoding (no side suffix) and
|
||||
responsible for at least the given side (XlcGL or XlcGR).
|
||||
Returns NULL if not found. */
|
||||
extern XlcCharSet _XlcGetCharSetWithSide(
|
||||
const char* encoding_name,
|
||||
XlcSide side
|
||||
);
|
||||
|
||||
/* Registers an XlcCharSet in the list of character sets.
|
||||
Returns True if successful. */
|
||||
extern bool _XlcAddCharSet(
|
||||
XlcCharSet charset
|
||||
);
|
||||
|
||||
/*
|
||||
* Structure representing the parse state of a Compound Text string.
|
||||
*/
|
||||
typedef struct _StateRec {
|
||||
XlcCharSet charset; /* The charset of the current segment */
|
||||
XlcCharSet GL_charset; /* The charset responsible for 0x00..0x7F */
|
||||
XlcCharSet GR_charset; /* The charset responsible for 0x80..0xFF */
|
||||
XlcCharSet Other_charset; /* != NULL if currently in an other segment */
|
||||
int ext_seg_left; /* > 0 if currently in an extended segment */
|
||||
} StateRec, *State;
|
||||
|
||||
#endif /* _XLCPUBLIC_H_ */
|
||||
1071
xim/xcb-imdkit/src/xlibi18n/lcCT.c
Normal file
1071
xim/xcb-imdkit/src/xlibi18n/lcCT.c
Normal file
File diff suppressed because it is too large
Load Diff
153
xim/xcb-imdkit/src/xlibi18n/lcCharSet.c
Normal file
153
xim/xcb-imdkit/src/xlibi18n/lcCharSet.c
Normal file
@@ -0,0 +1,153 @@
|
||||
/*
|
||||
* Copyright 1992, 1993 by TOSHIBA Corp.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and its
|
||||
* documentation for any purpose and without fee is hereby granted, provided
|
||||
* that the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of TOSHIBA not be used in advertising
|
||||
* or publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. TOSHIBA make no representations about the
|
||||
* suitability of this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*
|
||||
* TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||
* TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
*
|
||||
* Author: Katsuhisa Yano TOSHIBA Corp.
|
||||
* mopi@osa.ilab.toshiba.co.jp
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "XlcPublic.h"
|
||||
#include "XlcPubI.h"
|
||||
|
||||
/* The list of all known XlcCharSets. They are identified by their name. */
|
||||
|
||||
typedef struct _XlcCharSetListRec {
|
||||
XlcCharSet charset;
|
||||
struct _XlcCharSetListRec *next;
|
||||
} XlcCharSetListRec, *XlcCharSetList;
|
||||
|
||||
static XlcCharSetList charset_list = NULL;
|
||||
|
||||
/* Returns the charset with the given name (including side suffix).
|
||||
Returns NULL if not found. */
|
||||
XlcCharSet
|
||||
_XlcGetCharSet(
|
||||
const char *name)
|
||||
{
|
||||
XlcCharSetList list;
|
||||
|
||||
for (list = charset_list; list; list = list->next) {
|
||||
if (strcmp(name, list->charset->name) == 0)
|
||||
return (XlcCharSet) list->charset;
|
||||
}
|
||||
|
||||
return (XlcCharSet) NULL;
|
||||
}
|
||||
|
||||
/* Returns the charset with the given encoding (no side suffix) and
|
||||
responsible for at least the given side (XlcGL or XlcGR).
|
||||
Returns NULL if not found. */
|
||||
XlcCharSet
|
||||
_XlcGetCharSetWithSide(
|
||||
const char *encoding_name,
|
||||
XlcSide side)
|
||||
{
|
||||
XlcCharSetList list;
|
||||
|
||||
for (list = charset_list; list; list = list->next) {
|
||||
if (strcmp(list->charset->encoding_name, encoding_name) == 0
|
||||
&& (list->charset->side == XlcGLGR || list->charset->side == side))
|
||||
return (XlcCharSet) list->charset;
|
||||
}
|
||||
|
||||
return (XlcCharSet) NULL;
|
||||
}
|
||||
|
||||
/* Registers an XlcCharSet in the list of character sets.
|
||||
Returns true if successful. */
|
||||
bool
|
||||
_XlcAddCharSet(
|
||||
XlcCharSet charset)
|
||||
{
|
||||
XlcCharSetList list;
|
||||
|
||||
if (_XlcGetCharSet(charset->name))
|
||||
return false;
|
||||
|
||||
list = malloc(sizeof(XlcCharSetListRec));
|
||||
if (list == NULL)
|
||||
return false;
|
||||
|
||||
list->charset = charset;
|
||||
list->next = charset_list;
|
||||
charset_list = list;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Creates a new XlcCharSet, given its name (including side suffix) and
|
||||
Compound Text ESC sequence (normally at most 4 bytes). */
|
||||
XlcCharSet
|
||||
_XlcCreateDefaultCharSet(
|
||||
const char *name,
|
||||
const char *ct_sequence)
|
||||
{
|
||||
XlcCharSet charset;
|
||||
int name_len, ct_sequence_len;
|
||||
const char *colon;
|
||||
char *tmp;
|
||||
|
||||
charset = calloc(1, sizeof(XlcCharSetRec));
|
||||
if (charset == NULL)
|
||||
return (XlcCharSet) NULL;
|
||||
|
||||
name_len = strlen(name);
|
||||
ct_sequence_len = strlen(ct_sequence);
|
||||
|
||||
/* Fill in name and xrm_name. */
|
||||
tmp = malloc(name_len + 1 + ct_sequence_len + 1);
|
||||
if (tmp == NULL) {
|
||||
free(charset);
|
||||
return (XlcCharSet) NULL;
|
||||
}
|
||||
memcpy(tmp, name, name_len+1);
|
||||
charset->name = tmp;
|
||||
|
||||
/* Fill in encoding_name and xrm_encoding_name. */
|
||||
if ((colon = strchr(charset->name, ':')) != NULL) {
|
||||
unsigned int length = colon - charset->name;
|
||||
char *encoding_tmp = malloc(length + 1);
|
||||
if (encoding_tmp == NULL) {
|
||||
free((char *) charset->name);
|
||||
free(charset);
|
||||
return (XlcCharSet) NULL;
|
||||
}
|
||||
memcpy(encoding_tmp, charset->name, length);
|
||||
encoding_tmp[length] = '\0';
|
||||
charset->encoding_name = encoding_tmp;
|
||||
} else {
|
||||
charset->encoding_name = charset->name;
|
||||
}
|
||||
|
||||
/* Fill in ct_sequence. */
|
||||
tmp += name_len + 1;
|
||||
memcpy(tmp, ct_sequence, ct_sequence_len+1);
|
||||
charset->ct_sequence = tmp;
|
||||
|
||||
/* Fill in side, char_size, set_size. */
|
||||
if (!_XlcParseCharSet(charset))
|
||||
/* If ct_sequence is not usable in Compound Text, remove it. */
|
||||
charset->ct_sequence = "";
|
||||
|
||||
return (XlcCharSet) charset;
|
||||
}
|
||||
536
xim/xcb-imdkit/src/xlibi18n/lcUTF8.c
Normal file
536
xim/xcb-imdkit/src/xlibi18n/lcUTF8.c
Normal file
@@ -0,0 +1,536 @@
|
||||
/******************************************************************
|
||||
|
||||
Copyright 1993 by SunSoft, Inc.
|
||||
Copyright 1999-2000 by Bruno Haible
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this software
|
||||
and its documentation for any purpose is hereby granted without fee,
|
||||
provided that the above copyright notice appear in all copies and
|
||||
that both that copyright notice and this permission notice appear
|
||||
in supporting documentation, and that the names of SunSoft, Inc. and
|
||||
Bruno Haible not be used in advertising or publicity pertaining to
|
||||
distribution of the software without specific, written prior
|
||||
permission. SunSoft, Inc. and Bruno Haible make no representations
|
||||
about the suitability of this software for any purpose. It is
|
||||
provided "as is" without express or implied warranty.
|
||||
|
||||
SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
|
||||
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE
|
||||
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
******************************************************************/
|
||||
|
||||
/*
|
||||
* This file contains:
|
||||
*
|
||||
* I. Conversion routines CompoundText/CharSet <--> Unicode/UTF-8.
|
||||
*
|
||||
* Used for three purposes:
|
||||
* 1. The UTF-8 locales, see below.
|
||||
* 2. Unicode aware applications for which the use of 8-bit character
|
||||
* sets is an anachronism.
|
||||
* 3. For conversion from keysym to locale encoding.
|
||||
*
|
||||
* II. Conversion files for an UTF-8 locale loader.
|
||||
* Supports: all locales with codeset UTF-8.
|
||||
* How: Provides converters for UTF-8.
|
||||
* Platforms: all systems.
|
||||
*
|
||||
* The loader itself is located in lcUTF8.c.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The conversion from UTF-8 to CompoundText is realized in a very
|
||||
* conservative way. Recall that CompoundText data is used for inter-client
|
||||
* communication purposes. We distinguish three classes of clients:
|
||||
* - Clients which accept only those pieces of CompoundText which belong to
|
||||
* the character set understood by the current locale.
|
||||
* (Example: clients which are linked to an older X11 library.)
|
||||
* - Clients which accept CompoundText with multiple character sets and parse
|
||||
* it themselves.
|
||||
* (Example: emacs, xemacs.)
|
||||
* - Clients which rely entirely on the X{mb,wc}TextPropertyToTextList
|
||||
* functions for the conversion of CompoundText to their current locale's
|
||||
* multi-byte/wide-character format.
|
||||
* For best interoperation, the UTF-8 to CompoundText conversion proceeds as
|
||||
* follows. For every character, it first tests whether the character is
|
||||
* representable in the current locale's original (non-UTF-8) character set.
|
||||
* If not, it goes through the list of predefined character sets for
|
||||
* CompoundText and tests if the character is representable in that character
|
||||
* set. If so, it encodes the character using its code within that character
|
||||
* set. If not, it uses an UTF-8-in-CompoundText encapsulation. Since
|
||||
* clients of the first and second kind ignore such encapsulated text,
|
||||
* this encapsulation is kept to a minimum and terminated as early as possible.
|
||||
*
|
||||
* In a distant future, when clients of the first and second kind will have
|
||||
* disappeared, we will be able to stuff UTF-8 data directly in CompoundText
|
||||
* without first going through the list of predefined character sets.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "XlcPubI.h"
|
||||
|
||||
/* Replacement character for invalid multibyte sequence or wide character. */
|
||||
#define BAD_WCHAR ((ucs4_t) 0xfffd)
|
||||
#define BAD_CHAR '?'
|
||||
|
||||
/***************************************************************************/
|
||||
/* Part I: Conversion routines CompoundText/CharSet <--> Unicode/UTF-8.
|
||||
*
|
||||
* Note that this code works in any locale. We store Unicode values in
|
||||
* `ucs4_t' variables, but don't pass them to the user.
|
||||
*
|
||||
* This code has to support all character sets that are used for CompoundText,
|
||||
* nothing more, nothing less. See the table in lcCT.c.
|
||||
* Since the conversion _to_ CompoundText is likely to need the tables for all
|
||||
* character sets at once, we don't use dynamic loading (of tables or shared
|
||||
* libraries through iconv()). Use a fixed set of tables instead.
|
||||
*
|
||||
* We use statically computed tables, not dynamically allocated arrays,
|
||||
* because it's more memory efficient: Different processes using the same
|
||||
* libX11 shared library share the "text" and read-only "data" sections.
|
||||
*/
|
||||
|
||||
typedef unsigned int ucs4_t;
|
||||
#define conv_t XlcConv
|
||||
|
||||
typedef struct _Utf8ConvRec {
|
||||
const char *name;
|
||||
int (* cstowc) (ucs4_t *, unsigned char const *, int);
|
||||
int (* wctocs) (unsigned char *, ucs4_t, int);
|
||||
} Utf8ConvRec, *Utf8Conv;
|
||||
|
||||
/*
|
||||
* int xxx_cstowc (XlcConv conv, ucs4_t *pwc, unsigned char const *s, int n)
|
||||
* converts the byte sequence starting at s to a wide character. Up to n bytes
|
||||
* are available at s. n is >= 1.
|
||||
* Result is number of bytes consumed (if a wide character was read),
|
||||
* or 0 if invalid, or -1 if n too small.
|
||||
*
|
||||
* int xxx_wctocs (XlcConv conv, unsigned char *r, ucs4_t wc, int n)
|
||||
* converts the wide character wc to the character set xxx, and stores the
|
||||
* result beginning at r. Up to n bytes may be written at r. n is >= 1.
|
||||
* Result is number of bytes written, or 0 if invalid, or -1 if n too small.
|
||||
*/
|
||||
|
||||
/* Return code if invalid. (xxx_mbtowc, xxx_wctomb) */
|
||||
#define RET_ILSEQ 0
|
||||
/* Return code if only a shift sequence of n bytes was read. (xxx_mbtowc) */
|
||||
#define RET_TOOFEW(n) (-1-(n))
|
||||
/* Return code if output buffer is too small. (xxx_wctomb, xxx_reset) */
|
||||
#define RET_TOOSMALL -1
|
||||
|
||||
/*
|
||||
* The tables below are bijective. It would be possible to extend the
|
||||
* xxx_wctocs tables to do some transliteration (e.g. U+201C,U+201D -> 0x22)
|
||||
* but *only* with characters not contained in any other table, and *only*
|
||||
* when the current locale is not an UTF-8 locale.
|
||||
*/
|
||||
|
||||
#include "lcUniConv/utf8.h"
|
||||
#include "lcUniConv/ucs2be.h"
|
||||
#ifdef notused
|
||||
#include "lcUniConv/ascii.h"
|
||||
#endif
|
||||
#include "lcUniConv/iso8859_1.h"
|
||||
#include "lcUniConv/iso8859_2.h"
|
||||
#include "lcUniConv/iso8859_3.h"
|
||||
#include "lcUniConv/iso8859_4.h"
|
||||
#include "lcUniConv/iso8859_5.h"
|
||||
#include "lcUniConv/iso8859_6.h"
|
||||
#include "lcUniConv/iso8859_7.h"
|
||||
#include "lcUniConv/iso8859_8.h"
|
||||
#include "lcUniConv/iso8859_9.h"
|
||||
#include "lcUniConv/iso8859_10.h"
|
||||
#include "lcUniConv/iso8859_11.h"
|
||||
#include "lcUniConv/iso8859_13.h"
|
||||
#include "lcUniConv/iso8859_14.h"
|
||||
#include "lcUniConv/iso8859_15.h"
|
||||
#include "lcUniConv/iso8859_16.h"
|
||||
#include "lcUniConv/iso8859_9e.h"
|
||||
#include "lcUniConv/jisx0201.h"
|
||||
#include "lcUniConv/tis620.h"
|
||||
#include "lcUniConv/koi8_r.h"
|
||||
#include "lcUniConv/koi8_u.h"
|
||||
#include "lcUniConv/koi8_c.h"
|
||||
#include "lcUniConv/armscii_8.h"
|
||||
#include "lcUniConv/cp1133.h"
|
||||
#include "lcUniConv/mulelao.h"
|
||||
#include "lcUniConv/viscii.h"
|
||||
#include "lcUniConv/tcvn.h"
|
||||
#include "lcUniConv/georgian_academy.h"
|
||||
#include "lcUniConv/georgian_ps.h"
|
||||
#include "lcUniConv/cp1251.h"
|
||||
#include "lcUniConv/cp1255.h"
|
||||
#include "lcUniConv/cp1256.h"
|
||||
#include "lcUniConv/tatar_cyr.h"
|
||||
|
||||
typedef struct {
|
||||
unsigned short indx; /* index into big table */
|
||||
unsigned short used; /* bitmask of used entries */
|
||||
} Summary16;
|
||||
|
||||
#include "lcUniConv/gb2312.h"
|
||||
#include "lcUniConv/jisx0208.h"
|
||||
#include "lcUniConv/jisx0212.h"
|
||||
#include "lcUniConv/ksc5601.h"
|
||||
#include "lcUniConv/big5.h"
|
||||
#include "lcUniConv/big5_emacs.h"
|
||||
#include "lcUniConv/big5hkscs.h"
|
||||
#include "lcUniConv/gbk.h"
|
||||
|
||||
static Utf8ConvRec all_charsets[] = {
|
||||
/* The ISO10646-1/UTF-8 entry occurs twice, once at the beginning
|
||||
(for lookup speed), once at the end (as a fallback). */
|
||||
{ "ISO10646-1",
|
||||
utf8_mbtowc, utf8_wctomb
|
||||
},
|
||||
|
||||
{ "ISO8859-1",
|
||||
iso8859_1_mbtowc, iso8859_1_wctomb
|
||||
},
|
||||
{ "ISO8859-2",
|
||||
iso8859_2_mbtowc, iso8859_2_wctomb
|
||||
},
|
||||
{ "ISO8859-3",
|
||||
iso8859_3_mbtowc, iso8859_3_wctomb
|
||||
},
|
||||
{ "ISO8859-4",
|
||||
iso8859_4_mbtowc, iso8859_4_wctomb
|
||||
},
|
||||
{ "ISO8859-5",
|
||||
iso8859_5_mbtowc, iso8859_5_wctomb
|
||||
},
|
||||
{ "ISO8859-6",
|
||||
iso8859_6_mbtowc, iso8859_6_wctomb
|
||||
},
|
||||
{ "ISO8859-7",
|
||||
iso8859_7_mbtowc, iso8859_7_wctomb
|
||||
},
|
||||
{ "ISO8859-8",
|
||||
iso8859_8_mbtowc, iso8859_8_wctomb
|
||||
},
|
||||
{ "ISO8859-9",
|
||||
iso8859_9_mbtowc, iso8859_9_wctomb
|
||||
},
|
||||
{ "ISO8859-10",
|
||||
iso8859_10_mbtowc, iso8859_10_wctomb
|
||||
},
|
||||
{ "ISO8859-11",
|
||||
iso8859_11_mbtowc, iso8859_11_wctomb
|
||||
},
|
||||
{ "ISO8859-13",
|
||||
iso8859_13_mbtowc, iso8859_13_wctomb
|
||||
},
|
||||
{ "ISO8859-14",
|
||||
iso8859_14_mbtowc, iso8859_14_wctomb
|
||||
},
|
||||
{ "ISO8859-15",
|
||||
iso8859_15_mbtowc, iso8859_15_wctomb
|
||||
},
|
||||
{ "ISO8859-16",
|
||||
iso8859_16_mbtowc, iso8859_16_wctomb
|
||||
},
|
||||
{ "JISX0201.1976-0",
|
||||
jisx0201_mbtowc, jisx0201_wctomb
|
||||
},
|
||||
{ "TIS620-0",
|
||||
tis620_mbtowc, tis620_wctomb
|
||||
},
|
||||
{ "GB2312.1980-0",
|
||||
gb2312_mbtowc, gb2312_wctomb
|
||||
},
|
||||
{ "JISX0208.1983-0",
|
||||
jisx0208_mbtowc, jisx0208_wctomb
|
||||
},
|
||||
{ "JISX0208.1990-0",
|
||||
jisx0208_mbtowc, jisx0208_wctomb
|
||||
},
|
||||
{ "JISX0212.1990-0",
|
||||
jisx0212_mbtowc, jisx0212_wctomb
|
||||
},
|
||||
{ "KSC5601.1987-0",
|
||||
ksc5601_mbtowc, ksc5601_wctomb
|
||||
},
|
||||
{ "KOI8-R",
|
||||
koi8_r_mbtowc, koi8_r_wctomb
|
||||
},
|
||||
{ "KOI8-U",
|
||||
koi8_u_mbtowc, koi8_u_wctomb
|
||||
},
|
||||
{ "KOI8-C",
|
||||
koi8_c_mbtowc, koi8_c_wctomb
|
||||
},
|
||||
{ "TATAR-CYR",
|
||||
tatar_cyr_mbtowc, tatar_cyr_wctomb
|
||||
},
|
||||
{ "ARMSCII-8",
|
||||
armscii_8_mbtowc, armscii_8_wctomb
|
||||
},
|
||||
{ "IBM-CP1133",
|
||||
cp1133_mbtowc, cp1133_wctomb
|
||||
},
|
||||
{ "MULELAO-1",
|
||||
mulelao_mbtowc, mulelao_wctomb
|
||||
},
|
||||
{ "VISCII1.1-1",
|
||||
viscii_mbtowc, viscii_wctomb
|
||||
},
|
||||
{ "TCVN-5712",
|
||||
tcvn_mbtowc, tcvn_wctomb
|
||||
},
|
||||
{ "GEORGIAN-ACADEMY",
|
||||
georgian_academy_mbtowc, georgian_academy_wctomb
|
||||
},
|
||||
{ "GEORGIAN-PS",
|
||||
georgian_ps_mbtowc, georgian_ps_wctomb
|
||||
},
|
||||
{ "ISO8859-9E",
|
||||
iso8859_9e_mbtowc, iso8859_9e_wctomb
|
||||
},
|
||||
{ "MICROSOFT-CP1251",
|
||||
cp1251_mbtowc, cp1251_wctomb
|
||||
},
|
||||
{ "MICROSOFT-CP1255",
|
||||
cp1255_mbtowc, cp1255_wctomb
|
||||
},
|
||||
{ "MICROSOFT-CP1256",
|
||||
cp1256_mbtowc, cp1256_wctomb
|
||||
},
|
||||
{ "BIG5-0",
|
||||
big5_mbtowc, big5_wctomb
|
||||
},
|
||||
{ "BIG5-E0",
|
||||
big5_0_mbtowc, big5_0_wctomb
|
||||
},
|
||||
{ "BIG5-E1",
|
||||
big5_1_mbtowc, big5_1_wctomb
|
||||
},
|
||||
{ "GBK-0",
|
||||
gbk_mbtowc, gbk_wctomb
|
||||
},
|
||||
{ "BIG5HKSCS-0",
|
||||
big5hkscs_mbtowc, big5hkscs_wctomb
|
||||
},
|
||||
|
||||
/* The ISO10646-1/UTF-8 entry occurs twice, once at the beginning
|
||||
(for lookup speed), once at the end (as a fallback). */
|
||||
{ "ISO10646-1",
|
||||
utf8_mbtowc, utf8_wctomb
|
||||
},
|
||||
|
||||
/* Encoding ISO10646-1 for fonts means UCS2-like encoding
|
||||
so for conversion to FontCharSet we need this record */
|
||||
{ "ISO10646-1",
|
||||
ucs2be_mbtowc, ucs2be_wctomb
|
||||
}
|
||||
};
|
||||
|
||||
#define charsets_table_size (sizeof(all_charsets)/sizeof(all_charsets[0]))
|
||||
#define all_charsets_count (charsets_table_size - 1)
|
||||
#define ucs2_conv_index (charsets_table_size - 1)
|
||||
|
||||
/* from XlcNCharSet to XlcNUtf8String */
|
||||
|
||||
int
|
||||
cstoutf8(
|
||||
State state,
|
||||
void * *from,
|
||||
size_t *from_left,
|
||||
void * *to,
|
||||
size_t *to_left,
|
||||
XlcCharSet charset)
|
||||
{
|
||||
const char *name;
|
||||
Utf8Conv convptr;
|
||||
int i;
|
||||
unsigned char const *src;
|
||||
unsigned char const *srcend;
|
||||
unsigned char *dst;
|
||||
unsigned char *dstend;
|
||||
int unconv_num;
|
||||
|
||||
if (from == NULL || *from == NULL)
|
||||
return 0;
|
||||
|
||||
name = charset->encoding_name;
|
||||
/* not charset->name because the latter has a ":GL"/":GR" suffix */
|
||||
|
||||
for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
|
||||
if (!strcmp(convptr->name, name))
|
||||
break;
|
||||
if (i == 0)
|
||||
return -1;
|
||||
|
||||
src = (unsigned char const *) *from;
|
||||
srcend = src + *from_left;
|
||||
dst = (unsigned char *) *to;
|
||||
dstend = dst + *to_left;
|
||||
unconv_num = 0;
|
||||
|
||||
while (src < srcend) {
|
||||
ucs4_t wc;
|
||||
int consumed;
|
||||
int count;
|
||||
|
||||
consumed = convptr->cstowc(&wc, src, srcend-src);
|
||||
if (consumed == RET_ILSEQ)
|
||||
return -1;
|
||||
if (consumed == RET_TOOFEW(0))
|
||||
break;
|
||||
|
||||
count = utf8_wctomb(dst, wc, dstend-dst);
|
||||
if (count == RET_TOOSMALL)
|
||||
break;
|
||||
if (count == RET_ILSEQ) {
|
||||
count = utf8_wctomb(dst, BAD_WCHAR, dstend-dst);
|
||||
if (count == RET_TOOSMALL)
|
||||
break;
|
||||
unconv_num++;
|
||||
}
|
||||
src += consumed;
|
||||
dst += count;
|
||||
}
|
||||
|
||||
*from = (void *) src;
|
||||
*from_left = srcend - src;
|
||||
*to = (void *) dst;
|
||||
*to_left = dstend - dst;
|
||||
|
||||
return unconv_num;
|
||||
}
|
||||
|
||||
/*
|
||||
* Converts a Unicode character to an appropriate character set. The NULL
|
||||
* terminated array of preferred character sets is passed as first argument.
|
||||
* If successful, *charsetp is set to the character set that was used, and
|
||||
* *sidep is set to the character set side (XlcGL or XlcGR).
|
||||
*/
|
||||
static int
|
||||
charset_wctocs(
|
||||
Utf8Conv *charsetp,
|
||||
XlcSide *sidep,
|
||||
unsigned char *r,
|
||||
ucs4_t wc,
|
||||
int n)
|
||||
{
|
||||
int count;
|
||||
Utf8Conv convptr;
|
||||
int i;
|
||||
|
||||
// First one is utf8. We are not able to fetch XLC_FONTSET like libX11, so
|
||||
// we just hard code utf8 as our preferred charset.
|
||||
Utf8Conv preferred_charset[] = {all_charsets, NULL};
|
||||
Utf8Conv* preferred = preferred_charset;
|
||||
for (; *preferred != (Utf8Conv) NULL; preferred++) {
|
||||
convptr = *preferred;
|
||||
count = convptr->wctocs(r, wc, n);
|
||||
if (count == RET_TOOSMALL)
|
||||
return RET_TOOSMALL;
|
||||
if (count != RET_ILSEQ) {
|
||||
*charsetp = convptr;
|
||||
*sidep = (*r < 0x80 ? XlcGL : XlcGR);
|
||||
return count;
|
||||
}
|
||||
}
|
||||
|
||||
for (convptr = all_charsets+1, i = all_charsets_count-1; i > 0; convptr++, i--) {
|
||||
count = convptr->wctocs(r, wc, n);
|
||||
if (count == RET_TOOSMALL)
|
||||
return RET_TOOSMALL;
|
||||
if (count != RET_ILSEQ) {
|
||||
*charsetp = convptr;
|
||||
*sidep = (*r < 0x80 ? XlcGL : XlcGR);
|
||||
return count;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
int
|
||||
utf8tocs(
|
||||
State state,
|
||||
void **from,
|
||||
size_t *from_left,
|
||||
void **to,
|
||||
size_t *to_left,
|
||||
XlcCharSet* p_charset)
|
||||
{
|
||||
XlcCharSet last_charset = NULL;
|
||||
unsigned char const *src;
|
||||
unsigned char const *srcend;
|
||||
unsigned char *dst;
|
||||
unsigned char *dstend;
|
||||
int unconv_num;
|
||||
|
||||
if (from == NULL || *from == NULL)
|
||||
return 0;
|
||||
|
||||
src = (unsigned char const *) *from;
|
||||
srcend = src + *from_left;
|
||||
dst = (unsigned char *) *to;
|
||||
dstend = dst + *to_left;
|
||||
unconv_num = 0;
|
||||
|
||||
while (src < srcend && dst < dstend) {
|
||||
Utf8Conv chosen_charset = NULL;
|
||||
XlcSide chosen_side = XlcNONE;
|
||||
ucs4_t wc;
|
||||
int consumed;
|
||||
int count;
|
||||
|
||||
consumed = utf8_mbtowc(&wc, src, srcend-src);
|
||||
if (consumed == RET_TOOFEW(0))
|
||||
break;
|
||||
if (consumed == RET_ILSEQ) {
|
||||
src++;
|
||||
unconv_num++;
|
||||
continue;
|
||||
}
|
||||
|
||||
count = charset_wctocs(&chosen_charset, &chosen_side, dst, wc, dstend-dst);
|
||||
if (count == RET_TOOSMALL)
|
||||
break;
|
||||
if (count == RET_ILSEQ) {
|
||||
src += consumed;
|
||||
unconv_num++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (last_charset == NULL) {
|
||||
last_charset =
|
||||
_XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
|
||||
if (last_charset == NULL) {
|
||||
src += consumed;
|
||||
unconv_num++;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
if (!(strcmp(last_charset->encoding_name, chosen_charset->name) == 0
|
||||
&& (last_charset->side == XlcGLGR
|
||||
|| last_charset->side == chosen_side)))
|
||||
break;
|
||||
}
|
||||
src += consumed;
|
||||
dst += count;
|
||||
}
|
||||
|
||||
if (last_charset == NULL)
|
||||
return -1;
|
||||
|
||||
*from = (void *) src;
|
||||
*from_left = srcend - src;
|
||||
*to = (void *) dst;
|
||||
*to_left = dstend - dst;
|
||||
|
||||
if (p_charset)
|
||||
*p_charset = last_charset;
|
||||
|
||||
return unconv_num;
|
||||
}
|
||||
535
xim/xcb-imdkit/src/xlibi18n/lcUniConv/8bit_tab_to_h.c
Normal file
535
xim/xcb-imdkit/src/xlibi18n/lcUniConv/8bit_tab_to_h.c
Normal file
@@ -0,0 +1,535 @@
|
||||
|
||||
/*
|
||||
* Generates an 8-bit character set table from a .TXT table as found on
|
||||
* ftp.unicode.org or from a table containing the 256 Unicode values as
|
||||
* hexadecimal integers.
|
||||
* Examples:
|
||||
*
|
||||
* ./8bit_tab_to_h ISO-8859-1 iso8859_1 < tab8859_1
|
||||
* ./8bit_tab_to_h ISO-8859-2 iso8859_2 < tab8859_2
|
||||
* ./8bit_tab_to_h ISO-8859-3 iso8859_3 < tab8859_3
|
||||
* ./8bit_tab_to_h ISO-8859-4 iso8859_4 < tab8859_4
|
||||
* ./8bit_tab_to_h ISO-8859-5 iso8859_5 < tab8859_5
|
||||
* ./8bit_tab_to_h ISO-8859-6 iso8859_6 < tab8859_6
|
||||
* ./8bit_tab_to_h ISO-8859-7 iso8859_7 < tab8859_7
|
||||
* ./8bit_tab_to_h ISO-8859-8 iso8859_8 < tab8859_8
|
||||
* ./8bit_tab_to_h ISO-8859-9 iso8859_9 < tab8859_9
|
||||
* ./8bit_tab_to_h ISO-8859-10 iso8859_10 < tab8859_10
|
||||
* ./8bit_tab_to_h ISO-8859-14 iso8859_14 < tab8859_14
|
||||
* ./8bit_tab_to_h ISO-8859-15 iso8859_15 < tab8859_15
|
||||
* ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < jis0201
|
||||
* ./8bit_tab_to_h TIS620-0 tis620 < tabtis620
|
||||
* ./8bit_tab_to_h KOI8-R koi8_r < tabkoi8_r
|
||||
* ./8bit_tab_to_h KOI8-U koi8_u < tabkoi8_u
|
||||
* ./8bit_tab_to_h ARMSCII-8 armscii_8 < tabarmscii_8
|
||||
* ./8bit_tab_to_h CP1133 cp1133 < tabibm_cp1133
|
||||
* ./8bit_tab_to_h MULELAO-1 mulelao < tabmulelao_1
|
||||
* ./8bit_tab_to_h VISCII1.1-1 viscii1 < tabviscii
|
||||
* ./8bit_tab_to_h TCVN-5712 tcvn < tabtcvn
|
||||
* ./8bit_tab_to_h GEORGIAN-ACADEMY georgian_ac < tabgeorgian_academy
|
||||
* ./8bit_tab_to_h GEORGIAN-PS georgian_ps < tabgeorgian_ps
|
||||
*
|
||||
* ./8bit_tab_to_h ISO-8859-1 iso8859_1 < 8859-1.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-2 iso8859_2 < 8859-2.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-3 iso8859_3 < 8859-3.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-4 iso8859_4 < 8859-4.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-5 iso8859_5 < 8859-5.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-6 iso8859_6 < 8859-6.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-7 iso8859_7 < 8859-7.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-8 iso8859_8 < 8859-8.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-9 iso8859_9 < 8859-9.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-10 iso8859_10 < 8859-10.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-14 iso8859_14 < 8859-14.TXT
|
||||
* ./8bit_tab_to_h ISO-8859-15 iso8859_15 < 8859-15.TXT
|
||||
* ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < JIS0201.TXT
|
||||
* ./8bit_tab_to_h KOI8-R koi8_r < KOI8-R.TXT
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
const char* charsetname;
|
||||
const char* c_charsetname;
|
||||
const char* filename;
|
||||
const char* directory;
|
||||
int charset2uni[0x100];
|
||||
|
||||
if (argc != 3 && argc != 4 && argc != 5)
|
||||
exit(1);
|
||||
charsetname = argv[1];
|
||||
c_charsetname = argv[2];
|
||||
if (argc > 3) {
|
||||
filename = argv[3];
|
||||
} else {
|
||||
char* s = malloc(strlen(c_charsetname)+strlen(".h")+1);
|
||||
strcpy(s,c_charsetname); strcat(s,".h");
|
||||
filename = s;
|
||||
}
|
||||
directory = (argc > 4 ? argv[4] : "");
|
||||
|
||||
fprintf(stderr, "Creating %s%s\n", directory, filename);
|
||||
|
||||
{
|
||||
int i, c;
|
||||
c = getc(stdin);
|
||||
ungetc(c,stdin);
|
||||
if (c == '#') {
|
||||
/* Read a unicode.org style .TXT file. */
|
||||
for (i = 0; i < 0x100; i++)
|
||||
charset2uni[i] = 0xfffd;
|
||||
for (;;) {
|
||||
c = getc(stdin);
|
||||
if (c == EOF)
|
||||
break;
|
||||
if (c == '\n' || c == ' ' || c == '\t')
|
||||
continue;
|
||||
if (c == '#') {
|
||||
do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
|
||||
continue;
|
||||
}
|
||||
ungetc(c,stdin);
|
||||
if (scanf("0x%x", &i) != 1 || !(i >= 0 && i < 0x100))
|
||||
exit(1);
|
||||
do { c = getc(stdin); } while (c == ' ' || c == '\t');
|
||||
if (c != EOF)
|
||||
ungetc(c,stdin);
|
||||
if (c == '\n' || c == '#')
|
||||
continue;
|
||||
if (scanf("0x%x", &charset2uni[i]) != 1)
|
||||
exit(1);
|
||||
}
|
||||
} else {
|
||||
/* Read a table of hexadecimal Unicode values. */
|
||||
for (i = 0; i < 0x100; i++) {
|
||||
if (scanf("%x", &charset2uni[i]) != 1)
|
||||
exit(1);
|
||||
if (charset2uni[i] < 0 || charset2uni[i] == 0xffff)
|
||||
charset2uni[i] = 0xfffd;
|
||||
}
|
||||
if (scanf("%x", &i) != EOF)
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Write the output file. */
|
||||
{
|
||||
FILE* f;
|
||||
|
||||
{
|
||||
char* fname = malloc(strlen(directory)+strlen(filename)+1);
|
||||
strcpy(fname,directory); strcat(fname,filename);
|
||||
f = fopen(fname,"w");
|
||||
if (f == NULL)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fprintf(f, "\n");
|
||||
fprintf(f, "/*\n");
|
||||
fprintf(f, " * %s\n", charsetname);
|
||||
fprintf(f, " */\n");
|
||||
fprintf(f, "\n");
|
||||
|
||||
{
|
||||
int i, i1, i2, i3;
|
||||
int line[16];
|
||||
int tableno;
|
||||
struct { int minline; int maxline; } tables[16];
|
||||
bool some_invalid;
|
||||
bool final_ret_reached;
|
||||
|
||||
for (i1 = 0; i1 < 16; i1++) {
|
||||
bool all_invalid = true;
|
||||
bool all_identity = true;
|
||||
for (i2 = 0; i2 < 16; i2++) {
|
||||
i = 16*i1+i2;
|
||||
if (charset2uni[i] != 0xfffd)
|
||||
all_invalid = false;
|
||||
if (charset2uni[i] != i)
|
||||
all_identity = false;
|
||||
}
|
||||
if (all_invalid)
|
||||
line[i1] = -2;
|
||||
else if (all_identity)
|
||||
line[i1] = -1;
|
||||
else
|
||||
line[i1] = 0;
|
||||
}
|
||||
tableno = 0;
|
||||
for (i1 = 0; i1 < 16; i1++) {
|
||||
if (line[i1] >= 0) {
|
||||
if (i1 > 0 && tableno > 0 && line[i1-1] == tableno-1) {
|
||||
line[i1] = tableno-1;
|
||||
tables[tableno-1].maxline = i1;
|
||||
} else {
|
||||
tableno++;
|
||||
line[i1] = tableno-1;
|
||||
tables[tableno-1].minline = tables[tableno-1].maxline = i1;
|
||||
}
|
||||
}
|
||||
}
|
||||
some_invalid = false;
|
||||
for (i = 0; i < 0x100; i++)
|
||||
if (charset2uni[i] == 0xfffd)
|
||||
some_invalid = true;
|
||||
if (tableno > 0) {
|
||||
int t;
|
||||
for (t = 0; t < tableno; t++) {
|
||||
fprintf(f, "static const unsigned short %s_2uni", c_charsetname);
|
||||
if (tableno > 1)
|
||||
fprintf(f, "_%d", t+1);
|
||||
fprintf(f, "[%d] = {\n", 16*(tables[t].maxline-tables[t].minline+1));
|
||||
for (i1 = tables[t].minline; i1 <= tables[t].maxline; i1++) {
|
||||
fprintf(f, " /* 0x%02x */\n", 16*i1);
|
||||
for (i2 = 0; i2 < 2; i2++) {
|
||||
fprintf(f, " ");
|
||||
for (i3 = 0; i3 < 8; i3++) {
|
||||
i = 16*i1+8*i2+i3;
|
||||
fprintf(f, " 0x%04x,", charset2uni[i]);
|
||||
}
|
||||
fprintf(f, "\n");
|
||||
}
|
||||
}
|
||||
fprintf(f, "};\n");
|
||||
}
|
||||
fprintf(f, "\n");
|
||||
}
|
||||
final_ret_reached = false;
|
||||
fprintf(f, "static int\n%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", c_charsetname);
|
||||
fprintf(f, "{\n");
|
||||
fprintf(f, " unsigned char c = *s;\n");
|
||||
if (some_invalid) {
|
||||
for (i1 = 0; i1 < 16;) {
|
||||
int t = line[i1];
|
||||
const char* indent;
|
||||
for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
|
||||
indent = (i1 == 0 && i2 == 16 ? " " : " ");
|
||||
if (i1 == 0) {
|
||||
if (i2 == 16) {
|
||||
} else {
|
||||
fprintf(f, " if (c < 0x%02x) {\n", 16*i2);
|
||||
}
|
||||
} else {
|
||||
if (i2 == 16) {
|
||||
fprintf(f, " else {\n");
|
||||
} else {
|
||||
fprintf(f, " else if (c < 0x%02x) {\n", 16*i2);
|
||||
}
|
||||
}
|
||||
if (t == -2) {
|
||||
final_ret_reached = true;
|
||||
} else if (t == -1) {
|
||||
fprintf(f, "%s*pwc = (ucs4_t) c;\n", indent);
|
||||
fprintf(f, "%sreturn 1;\n", indent);
|
||||
} else {
|
||||
fprintf(f, "%s", indent);
|
||||
some_invalid = false;
|
||||
for (i = 16*i1; i < 16*i2; i++)
|
||||
if (charset2uni[i] == 0xfffd)
|
||||
some_invalid = true;
|
||||
if (some_invalid)
|
||||
fprintf(f, "unsigned short wc = ");
|
||||
else
|
||||
fprintf(f, "*pwc = (ucs4_t) ");
|
||||
fprintf(f, "%s_2uni", c_charsetname);
|
||||
if (tableno > 1)
|
||||
fprintf(f, "_%d", t+1);
|
||||
fprintf(f, "[c");
|
||||
if (tables[t].minline > 0)
|
||||
fprintf(f, "-0x%02x", 16*tables[t].minline);
|
||||
fprintf(f, "];\n");
|
||||
if (some_invalid) {
|
||||
fprintf(f, "%sif (wc != 0xfffd) {\n", indent);
|
||||
fprintf(f, "%s *pwc = (ucs4_t) wc;\n", indent);
|
||||
fprintf(f, "%s return 1;\n", indent);
|
||||
fprintf(f, "%s}\n", indent);
|
||||
final_ret_reached = true;
|
||||
} else {
|
||||
fprintf(f, "%sreturn 1;\n", indent);
|
||||
}
|
||||
}
|
||||
if (!(i1 == 0 && i2 == 16))
|
||||
fprintf(f, " }\n");
|
||||
i1 = i2;
|
||||
}
|
||||
if (final_ret_reached)
|
||||
fprintf(f, " return RET_ILSEQ;\n");
|
||||
} else {
|
||||
for (i1 = 0; i1 < 16;) {
|
||||
int t = line[i1];
|
||||
for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
|
||||
if (i1 == 0) {
|
||||
if (i2 == 16) {
|
||||
fprintf(f, " ");
|
||||
} else {
|
||||
fprintf(f, " if (c < 0x%02x)\n ", 16*i2);
|
||||
}
|
||||
} else {
|
||||
if (i2 == 16) {
|
||||
fprintf(f, " else\n ");
|
||||
} else {
|
||||
fprintf(f, " else if (c < 0x%02x)\n ", 16*i2);
|
||||
}
|
||||
}
|
||||
if (t == -1)
|
||||
fprintf(f, "*pwc = (ucs4_t) c;\n");
|
||||
else {
|
||||
fprintf(f, "*pwc = (ucs4_t) %s_2uni", c_charsetname);
|
||||
if (tableno > 1)
|
||||
fprintf(f, "_%d", t+1);
|
||||
fprintf(f, "[c");
|
||||
if (tables[t].minline > 0)
|
||||
fprintf(f, "-0x%02x", 16*tables[t].minline);
|
||||
fprintf(f, "];\n");
|
||||
}
|
||||
i1 = i2;
|
||||
}
|
||||
fprintf(f, " return 1;\n");
|
||||
}
|
||||
fprintf(f, "}\n");
|
||||
|
||||
}
|
||||
|
||||
fprintf(f, "\n");
|
||||
|
||||
{
|
||||
int uni2charset[0x10000];
|
||||
bool pages[0x100];
|
||||
int line[0x2000];
|
||||
int tableno;
|
||||
struct { int minline; int maxline; int usecount; const char* suffix; } tables[0x2000];
|
||||
bool need_c;
|
||||
bool fix_0000;
|
||||
int i, j, p, j1, j2, t;
|
||||
|
||||
for (j = 0; j < 0x10000; j++)
|
||||
uni2charset[j] = 0;
|
||||
for (p = 0; p < 0x100; p++)
|
||||
pages[p] = false;
|
||||
for (i = 0; i < 0x100; i++) {
|
||||
j = charset2uni[i];
|
||||
if (j != 0xfffd) {
|
||||
uni2charset[j] = i;
|
||||
pages[j>>8] = true;
|
||||
}
|
||||
}
|
||||
for (j1 = 0; j1 < 0x2000; j1++) {
|
||||
bool all_invalid = true;
|
||||
bool all_identity = true;
|
||||
for (j2 = 0; j2 < 8; j2++) {
|
||||
j = 8*j1+j2;
|
||||
if (uni2charset[j] != 0)
|
||||
all_invalid = false;
|
||||
if (uni2charset[j] != j)
|
||||
all_identity = false;
|
||||
}
|
||||
if (all_invalid)
|
||||
line[j1] = -2;
|
||||
else if (all_identity)
|
||||
line[j1] = -1;
|
||||
else
|
||||
line[j1] = 0;
|
||||
}
|
||||
tableno = 0;
|
||||
for (j1 = 0; j1 < 0x2000; j1++) {
|
||||
if (line[j1] >= 0) {
|
||||
if (tableno > 0
|
||||
&& ((j1 > 0 && line[j1-1] == tableno-1)
|
||||
|| ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
|
||||
&& j1 - tables[tableno-1].maxline <= 8))) {
|
||||
line[j1] = tableno-1;
|
||||
tables[tableno-1].maxline = j1;
|
||||
} else {
|
||||
tableno++;
|
||||
line[j1] = tableno-1;
|
||||
tables[tableno-1].minline = tables[tableno-1].maxline = j1;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (t = 0; t < tableno; t++) {
|
||||
tables[t].usecount = 0;
|
||||
j1 = 8*tables[t].minline;
|
||||
j2 = 8*(tables[t].maxline+1);
|
||||
for (j = j1; j < j2; j++)
|
||||
if (uni2charset[j] != 0)
|
||||
tables[t].usecount++;
|
||||
}
|
||||
for (t = 0, p = -1, i = 0; t < tableno; t++) {
|
||||
if (tables[t].usecount > 1) {
|
||||
char* s;
|
||||
if (p == tables[t].minline >> 5) {
|
||||
s = malloc(5+1);
|
||||
sprintf(s, "%02x_%d", p, ++i);
|
||||
} else {
|
||||
p = tables[t].minline >> 5;
|
||||
s = malloc(2+1);
|
||||
sprintf(s, "%02x", p);
|
||||
}
|
||||
tables[t].suffix = s;
|
||||
} else
|
||||
tables[t].suffix = NULL;
|
||||
}
|
||||
{
|
||||
p = -1;
|
||||
for (t = 0; t < tableno; t++)
|
||||
if (tables[t].usecount > 1) {
|
||||
p = 0;
|
||||
fprintf(f, "static const unsigned char %s_page%s[%d] = {\n", c_charsetname, tables[t].suffix, 8*(tables[t].maxline-tables[t].minline+1));
|
||||
for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
|
||||
if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
|
||||
fprintf(f, " /* 0x%04x */\n", 8*j1);
|
||||
fprintf(f, " ");
|
||||
for (j2 = 0; j2 < 8; j2++) {
|
||||
j = 8*j1+j2;
|
||||
fprintf(f, " 0x%02x,", uni2charset[j]);
|
||||
}
|
||||
fprintf(f, " /* 0x%02x-0x%02x */\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
|
||||
}
|
||||
fprintf(f, "};\n");
|
||||
}
|
||||
if (p >= 0)
|
||||
fprintf(f, "\n");
|
||||
}
|
||||
need_c = false;
|
||||
for (j1 = 0; j1 < 0x2000;) {
|
||||
t = line[j1];
|
||||
for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
|
||||
if (t >= 0)
|
||||
j2 = tables[t].maxline+1;
|
||||
if (!(t == -2 || (t == -1 && j1 == 0)))
|
||||
need_c = true;
|
||||
j1 = j2;
|
||||
}
|
||||
fix_0000 = false;
|
||||
fprintf(f, "static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", c_charsetname);
|
||||
fprintf(f, "{\n");
|
||||
if (need_c)
|
||||
fprintf(f, " unsigned char c = 0;\n");
|
||||
for (j1 = 0; j1 < 0x2000;) {
|
||||
t = line[j1];
|
||||
for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
|
||||
if (t >= 0) {
|
||||
if (j1 != tables[t].minline) abort();
|
||||
if (j2 > tables[t].maxline+1) abort();
|
||||
j2 = tables[t].maxline+1;
|
||||
}
|
||||
if (t == -2) {
|
||||
} else {
|
||||
if (j1 == 0)
|
||||
fprintf(f, " ");
|
||||
else
|
||||
fprintf(f, " else ");
|
||||
if (t >= 0 && tables[t].usecount == 0) abort();
|
||||
if (t >= 0 && tables[t].usecount == 1) {
|
||||
if (j2 != j1+1) abort();
|
||||
for (j = 8*j1; j < 8*j2; j++)
|
||||
if (uni2charset[j] != 0) {
|
||||
fprintf(f, "if (wc == 0x%04x)\n c = 0x%02x;\n", j, uni2charset[j]);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (j1 == 0) {
|
||||
fprintf(f, "if (wc < 0x%04x)", 8*j2);
|
||||
} else {
|
||||
fprintf(f, "if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
|
||||
}
|
||||
if (t == -1) {
|
||||
if (j1 == 0)
|
||||
/* If wc == 0, the function must return 1, not -1. */
|
||||
fprintf(f, " {\n *r = wc;\n return 1;\n }\n");
|
||||
else
|
||||
fprintf(f, "\n c = wc;\n");
|
||||
} else {
|
||||
fprintf(f, "\n c = %s_page%s[wc", c_charsetname, tables[t].suffix);
|
||||
if (tables[t].minline > 0)
|
||||
fprintf(f, "-0x%04x", 8*j1);
|
||||
fprintf(f, "];\n");
|
||||
if (j1 == 0 && uni2charset[0] == 0)
|
||||
/* If wc == 0, the function must return 1, not -1. */
|
||||
fix_0000 = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
j1 = j2;
|
||||
}
|
||||
if (need_c) {
|
||||
if (fix_0000)
|
||||
fprintf(f, " if (c != 0 || wc == 0) {\n");
|
||||
else
|
||||
fprintf(f, " if (c != 0) {\n");
|
||||
fprintf(f, " *r = c;\n");
|
||||
fprintf(f, " return 1;\n");
|
||||
fprintf(f, " }\n");
|
||||
}
|
||||
fprintf(f, " return RET_ILSEQ;\n");
|
||||
fprintf(f, "}\n");
|
||||
|
||||
}
|
||||
|
||||
if (ferror(f) || fclose(f))
|
||||
exit(1);
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
int i1, i2, i3, i1_min, i1_max, j1, j2;
|
||||
|
||||
i1_min = 16;
|
||||
i1_max = -1;
|
||||
for (i1 = 0; i1 < 16; i1++)
|
||||
for (i2 = 0; i2 < 16; i2++)
|
||||
if (charset2uni[16*i1+i2] != 0xfffd) {
|
||||
if (i1_min > i1) i1_min = i1;
|
||||
if (i1_max < i1) i1_max = i1;
|
||||
}
|
||||
printf("static const unsigned short %s_2uni[%d] = {\n",
|
||||
name, 16*(i1_max-i1_min+1));
|
||||
for (i1 = i1_min; i1 <= i1_max; i1++) {
|
||||
printf(" /""* 0x%02x *""/\n", 16*i1);
|
||||
for (i2 = 0; i2 < 2; i2++) {
|
||||
printf(" ");
|
||||
for (i3 = 0; i3 < 8; i3++) {
|
||||
if (i3 > 0) printf(" ");
|
||||
printf("0x%04x,", charset2uni[16*i1+8*i2+i3]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
printf("};\n");
|
||||
printf("\n");
|
||||
|
||||
for (p = 0; p < 0x100; p++)
|
||||
pages[p] = 0;
|
||||
for (i = 0; i < 0x100; i++)
|
||||
if (charset2uni[i] != 0xfffd)
|
||||
pages[charset2uni[i]>>8] = 1;
|
||||
for (p = 0; p < 0x100; p++)
|
||||
if (pages[p]) {
|
||||
int j1_min = 32;
|
||||
int j1_max = -1;
|
||||
for (j1 = 0; j1 < 32; j1++)
|
||||
for (j2 = 0; j2 < 8; j2++)
|
||||
if (uni2charset[256*p+8*j1+j2] != 0) {
|
||||
if (j1_min > j1) j1_min = j1;
|
||||
if (j1_max < j1) j1_max = j1;
|
||||
}
|
||||
printf("static const unsigned char %s_page%02x[%d] = {\n",
|
||||
name, p, 8*(j1_max-j1_min+1));
|
||||
for (j1 = j1_min; j1 <= j1_max; j1++) {
|
||||
printf(" ");
|
||||
for (j2 = 0; j2 < 8; j2++)
|
||||
printf("0x%02x, ", uni2charset[256*p+8*j1+j2]);
|
||||
printf("/""* 0x%02x-0x%02x *""/\n", 8*j1, 8*j1+7);
|
||||
}
|
||||
printf("};\n");
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
exit(0);
|
||||
}
|
||||
39
xim/xcb-imdkit/src/xlibi18n/lcUniConv/COPYRIGHT
Normal file
39
xim/xcb-imdkit/src/xlibi18n/lcUniConv/COPYRIGHT
Normal file
@@ -0,0 +1,39 @@
|
||||
This notice applies to the files in this directory. They are taken from
|
||||
the libiconv-1.1 package, which is covered by the LGPL license. The files
|
||||
in this directory have been placed under the following copyright, with
|
||||
permission from the Free Software Foundation.
|
||||
|
||||
|
||||
Copyright (c) 1999-2000 Free Software Foundation, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
FREE SOFTWARE FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
||||
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of the Free Software Foundation
|
||||
shall not be used in advertising or otherwise to promote the sale, use or
|
||||
other dealings in this Software without prior written authorization from the
|
||||
Free Software Foundation.
|
||||
|
||||
|
||||
Notes:
|
||||
|
||||
1. This copyright applies only to the files in this directory, and not to
|
||||
the remaining files in libiconv.
|
||||
|
||||
2. The Free Software Foundation does not encourage the use of the above
|
||||
license for newly written software.
|
||||
|
||||
11
xim/xcb-imdkit/src/xlibi18n/lcUniConv/README
Normal file
11
xim/xcb-imdkit/src/xlibi18n/lcUniConv/README
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
The files in this directory are taken from the libiconv-1.1 package.
|
||||
|
||||
The *.h files were generated from tables (mostly from ftp.unicode.org) using
|
||||
the programs '8bit_tab_to_h.c' and 'cjk_tab_to_h.c'. On some of them, further
|
||||
optimizations were applied by hand.
|
||||
|
||||
If you find a bug in these files, instead of modifying them in XFree86
|
||||
and let it diverge from libiconv, please notify the libiconv maintainer
|
||||
(currently <bruno@clisp.org>) so he can fix both in synch.
|
||||
|
||||
97
xim/xcb-imdkit/src/xlibi18n/lcUniConv/armscii_8.h
Normal file
97
xim/xcb-imdkit/src/xlibi18n/lcUniConv/armscii_8.h
Normal file
@@ -0,0 +1,97 @@
|
||||
|
||||
/*
|
||||
* ARMSCII-8
|
||||
*/
|
||||
|
||||
static const unsigned short armscii_8_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0xfffd, 0x0587, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab,
|
||||
0x2014, 0x002e, 0x055d, 0x002c, 0x002d, 0x058a, 0x2026, 0x055c,
|
||||
/* 0xb0 */
|
||||
0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563,
|
||||
0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567,
|
||||
/* 0xc0 */
|
||||
0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b,
|
||||
0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f,
|
||||
/* 0xd0 */
|
||||
0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573,
|
||||
0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577,
|
||||
/* 0xe0 */
|
||||
0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b,
|
||||
0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f,
|
||||
/* 0xf0 */
|
||||
0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583,
|
||||
0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x055a, 0xfffd,
|
||||
};
|
||||
|
||||
static int
|
||||
armscii_8_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
unsigned short wc = armscii_8_2uni[c-0xa0];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char armscii_8_page00[8] = {
|
||||
0xa5, 0xa4, 0x2a, 0x2b, 0xab, 0xac, 0xa9, 0x2f, /* 0x28-0x2f */
|
||||
};
|
||||
static const unsigned char armscii_8_page00_1[32] = {
|
||||
0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
};
|
||||
static const unsigned char armscii_8_page05[96] = {
|
||||
0x00, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, /* 0x30-0x37 */
|
||||
0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, /* 0x38-0x3f */
|
||||
0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, /* 0x40-0x47 */
|
||||
0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, /* 0x48-0x4f */
|
||||
0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0xfe, 0xb0, 0xaf, 0xaa, 0xb1, 0x00, /* 0x58-0x5f */
|
||||
0x00, 0xb3, 0xb5, 0xb7, 0xb9, 0xbb, 0xbd, 0xbf, /* 0x60-0x67 */
|
||||
0xc1, 0xc3, 0xc5, 0xc7, 0xc9, 0xcb, 0xcd, 0xcf, /* 0x68-0x6f */
|
||||
0xd1, 0xd3, 0xd5, 0xd7, 0xd9, 0xdb, 0xdd, 0xdf, /* 0x70-0x77 */
|
||||
0xe1, 0xe3, 0xe5, 0xe7, 0xe9, 0xeb, 0xed, 0xef, /* 0x78-0x7f */
|
||||
0xf1, 0xf3, 0xf5, 0xf7, 0xf9, 0xfb, 0xfd, 0xa2, /* 0x80-0x87 */
|
||||
0x00, 0xa3, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
};
|
||||
static const unsigned char armscii_8_page20[24] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, /* 0x20-0x27 */
|
||||
};
|
||||
|
||||
static int
|
||||
armscii_8_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0028) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x0028 && wc < 0x0030)
|
||||
c = armscii_8_page00[wc-0x0028];
|
||||
else if (wc >= 0x0030 && wc < 0x00a0)
|
||||
c = wc;
|
||||
else if (wc >= 0x00a0 && wc < 0x00c0)
|
||||
c = armscii_8_page00_1[wc-0x00a0];
|
||||
else if (wc >= 0x0530 && wc < 0x0590)
|
||||
c = armscii_8_page05[wc-0x0530];
|
||||
else if (wc >= 0x2010 && wc < 0x2028)
|
||||
c = armscii_8_page20[wc-0x2010];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
25
xim/xcb-imdkit/src/xlibi18n/lcUniConv/ascii.h
Normal file
25
xim/xcb-imdkit/src/xlibi18n/lcUniConv/ascii.h
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
/*
|
||||
* ASCII
|
||||
*/
|
||||
|
||||
static int
|
||||
ascii_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static int
|
||||
ascii_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
4141
xim/xcb-imdkit/src/xlibi18n/lcUniConv/big5.h
Normal file
4141
xim/xcb-imdkit/src/xlibi18n/lcUniConv/big5.h
Normal file
File diff suppressed because it is too large
Load Diff
163
xim/xcb-imdkit/src/xlibi18n/lcUniConv/big5_emacs.h
Normal file
163
xim/xcb-imdkit/src/xlibi18n/lcUniConv/big5_emacs.h
Normal file
@@ -0,0 +1,163 @@
|
||||
|
||||
/*
|
||||
* BIG5-0 and BIG5-1
|
||||
*/
|
||||
|
||||
/*
|
||||
BIG5 with its 13494 characters doesn't fit in a single 94x94 or 96x96
|
||||
block. Therefore Emacs/Mule developers, in a typically Japanese way of
|
||||
thinking, have developed an alternative encoding of BIG5 in two 94x94
|
||||
planes, very similar to the SHIFT_JIS encoding for JISX0208.
|
||||
|
||||
Conversion between BIG5 codes (s1,s2) and BIG5-0 codes (c1,c2):
|
||||
Example. (s1,s2) = 0xA140, (c1,c2) = 0x2121.
|
||||
0xA1 <= s1 <= 0xC7, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
|
||||
0x21 <= c1 <= 0x62, 0x21 <= c2 <= 0x7E.
|
||||
Invariant:
|
||||
157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
|
||||
= 94*(c1-0x21)+(c2-0x21)
|
||||
Conversion (s1,s2) -> (c1,c2):
|
||||
t := 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
|
||||
c1 := (t div 94) + 0x21
|
||||
c2 := (t mod 94) + 0x21
|
||||
Conversion (c1,c2) -> (s1,s2):
|
||||
t := 94*(c1-0x21)+(c2-0x21)
|
||||
t2 := t mod 157
|
||||
s1 := (t div 157) + 0xA1
|
||||
s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
|
||||
|
||||
Conversion between BIG5 codes (s1,s2) and BIG5-1 codes (c1,c2):
|
||||
Example. (s1,s2) = 0xC940, (c1,c2) = 0x2121.
|
||||
0xC9 <= s1 <= 0xF9, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
|
||||
0x21 <= c1 <= 0x72, 0x21 <= c2 <= 0x7E.
|
||||
Invariant:
|
||||
157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
|
||||
= 94*(c1-0x21)+(c2-0x21)
|
||||
Conversion (s1,s2) -> (c1,c2):
|
||||
t := 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
|
||||
c1 := (t div 94) + 0x21
|
||||
c2 := (t mod 94) + 0x21
|
||||
Conversion (c1,c2) -> (s1,s2):
|
||||
t := 94*(c1-0x21)+(c2-0x21)
|
||||
t2 := t mod 157
|
||||
s1 := (t div 157) + 0xC9
|
||||
s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
|
||||
*/
|
||||
|
||||
static int
|
||||
big5_0_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c1 = s[0];
|
||||
if (c1 >= 0x21 && c1 <= 0x62) {
|
||||
if (n >= 2) {
|
||||
unsigned char c2 = s[1];
|
||||
if (c2 >= 0x21 && c2 <= 0x7e) {
|
||||
unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
|
||||
if (0) {
|
||||
/* Unoptimized. */
|
||||
unsigned char buf[2];
|
||||
buf[0] = (i / 157) + 0xa1;
|
||||
i = i % 157;
|
||||
buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
|
||||
return big5_mbtowc(pwc,buf,2);
|
||||
} else {
|
||||
/* Inline the implementation of big5_mbtowc. */
|
||||
if (i < 6121) {
|
||||
unsigned short wc = big5_2uni_pagea1[i];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
return RET_TOOFEW(0);
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static int
|
||||
big5_1_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c1 = s[0];
|
||||
if (c1 >= 0x21 && c1 <= 0x72) {
|
||||
if (n >= 2) {
|
||||
unsigned char c2 = s[1];
|
||||
if (c2 >= 0x21 && c2 <= 0x7e) {
|
||||
unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
|
||||
if (0) {
|
||||
/* Unoptimized. */
|
||||
unsigned char buf[2];
|
||||
buf[0] = (i / 157) + 0xc9;
|
||||
i = i % 157;
|
||||
buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
|
||||
return big5_mbtowc(pwc,buf,2);
|
||||
} else {
|
||||
/* Inline the implementation of big5_mbtowc. */
|
||||
if (i < 7652) {
|
||||
unsigned short wc = big5_2uni_pagec9[i];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
return RET_TOOFEW(0);
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static int
|
||||
big5_0_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
if (n >= 2) {
|
||||
unsigned char buf[2];
|
||||
int ret = big5_wctomb(buf,wc,2);
|
||||
if (ret != RET_ILSEQ) {
|
||||
unsigned char s1, s2;
|
||||
if (ret != 2) abort();
|
||||
s1 = buf[0];
|
||||
s2 = buf[1];
|
||||
if (!(s1 >= 0xa1)) abort();
|
||||
if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
|
||||
if (s1 < 0xc9) {
|
||||
unsigned int t = 157 * (s1 - 0xa1) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
|
||||
r[0] = (t / 94) + 0x21;
|
||||
r[1] = (t % 94) + 0x21;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
return RET_TOOSMALL;
|
||||
}
|
||||
|
||||
static int
|
||||
big5_1_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
if (n >= 2) {
|
||||
unsigned char buf[2];
|
||||
int ret = big5_wctomb(buf,wc,2);
|
||||
if (ret != RET_ILSEQ) {
|
||||
unsigned char s1, s2;
|
||||
if (ret != 2) abort();
|
||||
s1 = buf[0];
|
||||
s2 = buf[1];
|
||||
if (!(s1 <= 0xf9)) abort();
|
||||
if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
|
||||
if (s1 >= 0xc9) {
|
||||
unsigned int t = 157 * (s1 - 0xc9) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
|
||||
r[0] = (t / 94) + 0x21;
|
||||
r[1] = (t % 94) + 0x21;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
return RET_TOOSMALL;
|
||||
}
|
||||
6252
xim/xcb-imdkit/src/xlibi18n/lcUniConv/big5hkscs.h
Normal file
6252
xim/xcb-imdkit/src/xlibi18n/lcUniConv/big5hkscs.h
Normal file
File diff suppressed because it is too large
Load Diff
1071
xim/xcb-imdkit/src/xlibi18n/lcUniConv/cjk_tab_to_h.c
Normal file
1071
xim/xcb-imdkit/src/xlibi18n/lcUniConv/cjk_tab_to_h.c
Normal file
File diff suppressed because it is too large
Load Diff
91
xim/xcb-imdkit/src/xlibi18n/lcUniConv/cp1133.h
Normal file
91
xim/xcb-imdkit/src/xlibi18n/lcUniConv/cp1133.h
Normal file
@@ -0,0 +1,91 @@
|
||||
|
||||
/*
|
||||
* IBM-CP1133
|
||||
*/
|
||||
|
||||
static const unsigned short cp1133_2uni_1[64] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa, 0x0e8a,
|
||||
0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99, 0x0e9a, 0x0e9b,
|
||||
/* 0xb0 */
|
||||
0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, 0x0ea1, 0x0ea2, 0x0ea3, 0x0ea5,
|
||||
0x0ea7, 0x0eab, 0x0ead, 0x0eae, 0xfffd, 0xfffd, 0xfffd, 0x0eaf,
|
||||
/* 0xc0 */
|
||||
0x0eb0, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8,
|
||||
0x0eb9, 0x0ebc, 0x0eb1, 0x0ebb, 0x0ebd, 0xfffd, 0xfffd, 0xfffd,
|
||||
/* 0xd0 */
|
||||
0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0ec8, 0x0ec9, 0x0eca,
|
||||
0x0ecb, 0x0ecc, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0x20ad,
|
||||
};
|
||||
static const unsigned short cp1133_2uni_2[16] = {
|
||||
/* 0xf0 */
|
||||
0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
|
||||
0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x00a2, 0x00ac, 0x00a6, 0xfffd,
|
||||
};
|
||||
|
||||
static int
|
||||
cp1133_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
else if (c < 0xe0) {
|
||||
unsigned short wc = cp1133_2uni_1[c-0xa0];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (c < 0xf0) {
|
||||
}
|
||||
else {
|
||||
unsigned short wc = cp1133_2uni_2[c-0xf0];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char cp1133_page00[16] = {
|
||||
0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
};
|
||||
static const unsigned char cp1133_page0e[96] = {
|
||||
0x00, 0xa1, 0xa2, 0x00, 0xa3, 0x00, 0x00, 0xa4, /* 0x80-0x87 */
|
||||
0xa5, 0x00, 0xa7, 0x00, 0x00, 0xa8, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0x00, 0x00, 0x00, 0x00, 0xa9, 0xaa, 0xab, 0xac, /* 0x90-0x97 */
|
||||
0x00, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, /* 0x98-0x9f */
|
||||
0x00, 0xb4, 0xb5, 0xb6, 0x00, 0xb7, 0x00, 0xb8, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0xa6, 0xb9, 0x00, 0xba, 0xbb, 0xbf, /* 0xa8-0xaf */
|
||||
0xc0, 0xca, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, /* 0xb0-0xb7 */
|
||||
0xc7, 0xc8, 0x00, 0xcb, 0xc9, 0xcc, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xdb, 0x00, /* 0xc0-0xc7 */
|
||||
0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
|
||||
0xf8, 0xf9, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
};
|
||||
|
||||
static int
|
||||
cp1133_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00b0)
|
||||
c = cp1133_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0e80 && wc < 0x0ee0)
|
||||
c = cp1133_page0e[wc-0x0e80];
|
||||
else if (wc == 0x20ad)
|
||||
c = 0xdf;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
112
xim/xcb-imdkit/src/xlibi18n/lcUniConv/cp1251.h
Normal file
112
xim/xcb-imdkit/src/xlibi18n/lcUniConv/cp1251.h
Normal file
@@ -0,0 +1,112 @@
|
||||
|
||||
/*
|
||||
* CP1251
|
||||
*/
|
||||
|
||||
static const unsigned short cp1251_2uni[128] = {
|
||||
/* 0x80 */
|
||||
0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
|
||||
0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
|
||||
/* 0x90 */
|
||||
0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
|
||||
0xfffd, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
|
||||
0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
|
||||
0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
|
||||
/* 0xc0 */
|
||||
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
|
||||
0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
|
||||
/* 0xd0 */
|
||||
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
|
||||
0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
|
||||
/* 0xe0 */
|
||||
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
|
||||
0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
|
||||
/* 0xf0 */
|
||||
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
|
||||
0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
|
||||
};
|
||||
|
||||
static int
|
||||
cp1251_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
unsigned short wc = cp1251_2uni[c-0x80];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char cp1251_page00[32] = {
|
||||
0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
|
||||
0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
|
||||
0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
};
|
||||
static const unsigned char cp1251_page04[152] = {
|
||||
0x00, 0xa8, 0x80, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
|
||||
0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0x00, 0xa1, 0x8f, /* 0x08-0x0f */
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
|
||||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
|
||||
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
|
||||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
|
||||
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
|
||||
0x00, 0xb8, 0x90, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
|
||||
0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0x00, 0xa2, 0x9f, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
};
|
||||
static const unsigned char cp1251_page20[48] = {
|
||||
0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
|
||||
0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
};
|
||||
|
||||
static int
|
||||
cp1251_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00c0)
|
||||
c = cp1251_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0400 && wc < 0x0498)
|
||||
c = cp1251_page04[wc-0x0400];
|
||||
else if (wc >= 0x2010 && wc < 0x2040)
|
||||
c = cp1251_page20[wc-0x2010];
|
||||
else if (wc == 0x20ac)
|
||||
c = 0x88;
|
||||
else if (wc == 0x2116)
|
||||
c = 0xb9;
|
||||
else if (wc == 0x2122)
|
||||
c = 0x99;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
120
xim/xcb-imdkit/src/xlibi18n/lcUniConv/cp1255.h
Normal file
120
xim/xcb-imdkit/src/xlibi18n/lcUniConv/cp1255.h
Normal file
@@ -0,0 +1,120 @@
|
||||
|
||||
/*
|
||||
* CP1255
|
||||
*/
|
||||
|
||||
static const unsigned short cp1255_2uni[128] = {
|
||||
/* 0x80 */
|
||||
0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
|
||||
0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
/* 0x90 */
|
||||
0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
|
||||
0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7,
|
||||
0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
|
||||
0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
|
||||
/* 0xc0 */
|
||||
0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
|
||||
0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
|
||||
/* 0xd0 */
|
||||
0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3,
|
||||
0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
/* 0xe0 */
|
||||
0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
|
||||
0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
|
||||
/* 0xf0 */
|
||||
0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
|
||||
0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
|
||||
};
|
||||
|
||||
static int
|
||||
cp1255_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
unsigned short wc = cp1255_2uni[c-0x80];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char cp1255_page00[88] = {
|
||||
0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
|
||||
0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
|
||||
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
|
||||
0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
|
||||
};
|
||||
static const unsigned char cp1255_page02[32] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
};
|
||||
static const unsigned char cp1255_page05[72] = {
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xb0-0xb7 */
|
||||
0xc8, 0xc9, 0x00, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xb8-0xbf */
|
||||
0xd0, 0xd1, 0xd2, 0xd3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
|
||||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
|
||||
0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
|
||||
0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
|
||||
};
|
||||
static const unsigned char cp1255_page20[56] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
|
||||
0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
|
||||
0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
};
|
||||
|
||||
static int
|
||||
cp1255_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00f8)
|
||||
c = cp1255_page00[wc-0x00a0];
|
||||
else if (wc == 0x0192)
|
||||
c = 0x83;
|
||||
else if (wc >= 0x02c0 && wc < 0x02e0)
|
||||
c = cp1255_page02[wc-0x02c0];
|
||||
else if (wc >= 0x05b0 && wc < 0x05f8)
|
||||
c = cp1255_page05[wc-0x05b0];
|
||||
else if (wc >= 0x2008 && wc < 0x2040)
|
||||
c = cp1255_page20[wc-0x2008];
|
||||
else if (wc == 0x20aa)
|
||||
c = 0xa4;
|
||||
else if (wc == 0x20ac)
|
||||
c = 0x80;
|
||||
else if (wc == 0x2122)
|
||||
c = 0x99;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
134
xim/xcb-imdkit/src/xlibi18n/lcUniConv/cp1256.h
Normal file
134
xim/xcb-imdkit/src/xlibi18n/lcUniConv/cp1256.h
Normal file
@@ -0,0 +1,134 @@
|
||||
|
||||
/*
|
||||
* CP1256
|
||||
*/
|
||||
|
||||
static const unsigned short cp1256_2uni[128] = {
|
||||
/* 0x80 */
|
||||
0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
|
||||
0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
|
||||
/* 0x90 */
|
||||
0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
|
||||
0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba,
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
|
||||
0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
|
||||
0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f,
|
||||
/* 0xc0 */
|
||||
0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
|
||||
0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
|
||||
/* 0xd0 */
|
||||
0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7,
|
||||
0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643,
|
||||
/* 0xe0 */
|
||||
0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7,
|
||||
0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef,
|
||||
/* 0xf0 */
|
||||
0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7,
|
||||
0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2,
|
||||
};
|
||||
|
||||
static int
|
||||
cp1256_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) cp1256_2uni[c-0x80];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char cp1256_page00[96] = {
|
||||
0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
|
||||
0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
|
||||
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
|
||||
0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, /* 0xd0-0xd7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
0xe0, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x00, 0xee, 0xef, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0xf7, /* 0xf0-0xf7 */
|
||||
0x00, 0xf9, 0x00, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
|
||||
};
|
||||
static const unsigned char cp1256_page01[72] = {
|
||||
0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
};
|
||||
static const unsigned char cp1256_page06[208] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
|
||||
0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
|
||||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, /* 0x30-0x37 */
|
||||
0xd9, 0xda, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0xdc, 0xdd, 0xde, 0xdf, 0xe1, 0xe3, 0xe4, 0xe5, /* 0x40-0x47 */
|
||||
0xe6, 0xec, 0xed, 0xf0, 0xf1, 0xf2, 0xf3, 0xf5, /* 0x48-0x4f */
|
||||
0xf6, 0xf8, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, /* 0x80-0x87 */
|
||||
0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0xa8-0xaf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xaa, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
};
|
||||
static const unsigned char cp1256_page20[56] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0xfd, 0xfe, /* 0x08-0x0f */
|
||||
0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
|
||||
0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
};
|
||||
|
||||
static int
|
||||
cp1256_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x0100)
|
||||
c = cp1256_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0150 && wc < 0x0198)
|
||||
c = cp1256_page01[wc-0x0150];
|
||||
else if (wc == 0x02c6)
|
||||
c = 0x88;
|
||||
else if (wc >= 0x0608 && wc < 0x06d8)
|
||||
c = cp1256_page06[wc-0x0608];
|
||||
else if (wc >= 0x2008 && wc < 0x2040)
|
||||
c = cp1256_page20[wc-0x2008];
|
||||
else if (wc == 0x20ac)
|
||||
c = 0x80;
|
||||
else if (wc == 0x2122)
|
||||
c = 0x99;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
2552
xim/xcb-imdkit/src/xlibi18n/lcUniConv/gb2312.h
Normal file
2552
xim/xcb-imdkit/src/xlibi18n/lcUniConv/gb2312.h
Normal file
File diff suppressed because it is too large
Load Diff
6200
xim/xcb-imdkit/src/xlibi18n/lcUniConv/gbk.h
Normal file
6200
xim/xcb-imdkit/src/xlibi18n/lcUniConv/gbk.h
Normal file
File diff suppressed because it is too large
Load Diff
87
xim/xcb-imdkit/src/xlibi18n/lcUniConv/georgian_academy.h
Normal file
87
xim/xcb-imdkit/src/xlibi18n/lcUniConv/georgian_academy.h
Normal file
@@ -0,0 +1,87 @@
|
||||
|
||||
/*
|
||||
* GEORGIAN-ACADEMY
|
||||
*/
|
||||
|
||||
static const unsigned short georgian_academy_2uni[32] = {
|
||||
/* 0x80 */
|
||||
0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
|
||||
0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
|
||||
/* 0x90 */
|
||||
0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
|
||||
0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
|
||||
};
|
||||
|
||||
static int
|
||||
georgian_academy_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c >= 0x80 && c < 0xa0)
|
||||
*pwc = (ucs4_t) georgian_academy_2uni[c-0x80];
|
||||
else if (c >= 0xc0 && c < 0xe7)
|
||||
*pwc = (ucs4_t) c + 0x1010;
|
||||
else
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char georgian_academy_page00[32] = {
|
||||
0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
|
||||
0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
|
||||
};
|
||||
static const unsigned char georgian_academy_page01[72] = {
|
||||
0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
};
|
||||
static const unsigned char georgian_academy_page02[32] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
};
|
||||
static const unsigned char georgian_academy_page20[48] = {
|
||||
0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
|
||||
0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
};
|
||||
|
||||
static int
|
||||
georgian_academy_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x0080 && wc < 0x00a0)
|
||||
c = georgian_academy_page00[wc-0x0080];
|
||||
else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100))
|
||||
c = wc;
|
||||
else if (wc >= 0x0150 && wc < 0x0198)
|
||||
c = georgian_academy_page01[wc-0x0150];
|
||||
else if (wc >= 0x02c0 && wc < 0x02e0)
|
||||
c = georgian_academy_page02[wc-0x02c0];
|
||||
else if (wc >= 0x10d0 && wc < 0x10f7)
|
||||
c = wc-0x1010;
|
||||
else if (wc >= 0x2010 && wc < 0x2040)
|
||||
c = georgian_academy_page20[wc-0x2010];
|
||||
else if (wc == 0x2122)
|
||||
c = 0x99;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
104
xim/xcb-imdkit/src/xlibi18n/lcUniConv/georgian_ps.h
Normal file
104
xim/xcb-imdkit/src/xlibi18n/lcUniConv/georgian_ps.h
Normal file
@@ -0,0 +1,104 @@
|
||||
|
||||
/*
|
||||
* GEORGIAN-PS
|
||||
*/
|
||||
|
||||
static const unsigned short georgian_ps_2uni_1[32] = {
|
||||
/* 0x80 */
|
||||
0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
|
||||
0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
|
||||
/* 0x90 */
|
||||
0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
|
||||
0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
|
||||
};
|
||||
static const unsigned short georgian_ps_2uni_2[39] = {
|
||||
/* 0xc0 */
|
||||
0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10f1,
|
||||
0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10f2, 0x10dd,
|
||||
/* 0xd0 */
|
||||
0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10f3, 0x10e3, 0x10e4,
|
||||
0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec,
|
||||
/* 0xe0 */
|
||||
0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5,
|
||||
};
|
||||
|
||||
static int
|
||||
georgian_ps_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c >= 0x80 && c < 0xa0)
|
||||
*pwc = (ucs4_t) georgian_ps_2uni_1[c-0x80];
|
||||
else if (c >= 0xc0 && c < 0xe6)
|
||||
*pwc = (ucs4_t) georgian_ps_2uni_2[c-0xc0];
|
||||
else
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char georgian_ps_page00[32] = {
|
||||
0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
|
||||
0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
|
||||
};
|
||||
static const unsigned char georgian_ps_page01[72] = {
|
||||
0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
};
|
||||
static const unsigned char georgian_ps_page02[32] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
};
|
||||
static const unsigned char georgian_ps_page10[40] = {
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc8, /* 0xd0-0xd7 */
|
||||
0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xcf, 0xd0, 0xd1, /* 0xd8-0xdf */
|
||||
0xd2, 0xd3, 0xd4, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, /* 0xe0-0xe7 */
|
||||
0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe3, /* 0xe8-0xef */
|
||||
0xe4, 0xc7, 0xce, 0xd5, 0xe2, 0xe5, 0x00, 0x00, /* 0xf0-0xf7 */
|
||||
};
|
||||
static const unsigned char georgian_ps_page20[48] = {
|
||||
0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
|
||||
0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
};
|
||||
|
||||
static int
|
||||
georgian_ps_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x0080 && wc < 0x00a0)
|
||||
c = georgian_ps_page00[wc-0x0080];
|
||||
else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e6 && wc < 0x0100))
|
||||
c = wc;
|
||||
else if (wc >= 0x0150 && wc < 0x0198)
|
||||
c = georgian_ps_page01[wc-0x0150];
|
||||
else if (wc >= 0x02c0 && wc < 0x02e0)
|
||||
c = georgian_ps_page02[wc-0x02c0];
|
||||
else if (wc >= 0x10d0 && wc < 0x10f8)
|
||||
c = georgian_ps_page10[wc-0x10d0];
|
||||
else if (wc >= 0x2010 && wc < 0x2040)
|
||||
c = georgian_ps_page20[wc-0x2010];
|
||||
else if (wc == 0x2122)
|
||||
c = 0x99;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
22
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_1.h
Normal file
22
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_1.h
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-1
|
||||
*/
|
||||
|
||||
static int
|
||||
iso8859_1_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
iso8859_1_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
if (wc < 0x0100) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
87
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_10.h
Normal file
87
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_10.h
Normal file
@@ -0,0 +1,87 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-10
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_10_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
|
||||
0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
|
||||
0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
|
||||
/* 0xc0 */
|
||||
0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
|
||||
0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
|
||||
/* 0xd0 */
|
||||
0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
|
||||
0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
|
||||
/* 0xe0 */
|
||||
0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
|
||||
0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
|
||||
/* 0xf0 */
|
||||
0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
|
||||
0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_10_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) iso8859_10_2uni[c-0xa0];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_10_page00[224] = {
|
||||
0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
|
||||
0xd0, 0x00, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
|
||||
0xd8, 0x00, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */
|
||||
0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
|
||||
0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0xef, /* 0xe8-0xef */
|
||||
0xf0, 0x00, 0x00, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
|
||||
0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xf8-0xff */
|
||||
/* 0x0100 */
|
||||
0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0xa9, 0xb9, 0xa2, 0xb2, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
|
||||
0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0xa5, 0xb5, 0xa4, 0xb4, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, /* 0x30-0x37 */
|
||||
0xff, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0xaf, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0xaa, 0xba, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbb, /* 0x60-0x67 */
|
||||
0xd7, 0xf7, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00, /* 0x78-0x7f */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_10_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x0180)
|
||||
c = iso8859_10_page00[wc-0x00a0];
|
||||
else if (wc == 0x2015)
|
||||
c = 0xbd;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
77
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_11.h
Normal file
77
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_11.h
Normal file
@@ -0,0 +1,77 @@
|
||||
|
||||
/*
|
||||
* ISO8859-11
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_11_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
|
||||
0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
|
||||
/* 0xb0 */
|
||||
0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
|
||||
0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
|
||||
/* 0xc0 */
|
||||
0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
|
||||
0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
|
||||
/* 0xd0 */
|
||||
0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
|
||||
0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
|
||||
/* 0xe0 */
|
||||
0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
|
||||
0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
|
||||
/* 0xf0 */
|
||||
0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
|
||||
0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_11_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
else if (c < 0xa0) {
|
||||
}
|
||||
else {
|
||||
unsigned short wc = iso8859_11_2uni[c-0xa0];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_11_page0e[96] = {
|
||||
0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
|
||||
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
|
||||
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
|
||||
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
|
||||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
|
||||
0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
|
||||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
|
||||
0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_11_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080 || wc == 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x0e00 && wc < 0x0e60)
|
||||
c = iso8859_11_page0e[wc-0x0e00];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
90
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_13.h
Normal file
90
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_13.h
Normal file
@@ -0,0 +1,90 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-13
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_13_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
|
||||
0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
|
||||
0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
|
||||
/* 0xc0 */
|
||||
0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
|
||||
0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
|
||||
/* 0xd0 */
|
||||
0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
|
||||
0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
|
||||
/* 0xe0 */
|
||||
0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
|
||||
0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
|
||||
/* 0xf0 */
|
||||
0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
|
||||
0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_13_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) iso8859_13_2uni[c-0xa0];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_13_page00[224] = {
|
||||
0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
|
||||
0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
|
||||
0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
|
||||
0x00, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
|
||||
0xa8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
|
||||
0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00, /* 0xe0-0xe7 */
|
||||
0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
|
||||
0xb8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
|
||||
/* 0x0100 */
|
||||
0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb, /* 0x10-0x17 */
|
||||
0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xc1, 0xe1, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0xda, 0xfa, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00, /* 0x78-0x7f */
|
||||
};
|
||||
static const unsigned char iso8859_13_page20[8] = {
|
||||
0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00, /* 0x18-0x1f */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_13_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x0180)
|
||||
c = iso8859_13_page00[wc-0x00a0];
|
||||
else if (wc >= 0x2018 && wc < 0x2020)
|
||||
c = iso8859_13_page20[wc-0x2018];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
108
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_14.h
Normal file
108
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_14.h
Normal file
@@ -0,0 +1,108 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-14
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_14_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
|
||||
0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
|
||||
/* 0xb0 */
|
||||
0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
|
||||
0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
|
||||
/* 0xc0 */
|
||||
0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
|
||||
0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
|
||||
/* 0xd0 */
|
||||
0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
|
||||
0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
|
||||
/* 0xe0 */
|
||||
0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
|
||||
0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
|
||||
/* 0xf0 */
|
||||
0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
|
||||
0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_14_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c >= 0xa0)
|
||||
*pwc = (ucs4_t) iso8859_14_2uni[c-0xa0];
|
||||
else
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_14_page00[96] = {
|
||||
0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
|
||||
0x00, 0xa9, 0x00, 0x00, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
|
||||
0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
|
||||
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
|
||||
0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
|
||||
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x00, 0xff, /* 0xf8-0xff */
|
||||
};
|
||||
static const unsigned char iso8859_14_page01_0[32] = {
|
||||
0x00, 0x00, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
};
|
||||
static const unsigned char iso8859_14_page01_1[16] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, 0xde, 0xfe, /* 0x70-0x77 */
|
||||
0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
};
|
||||
static const unsigned char iso8859_14_page1e_0[136] = {
|
||||
0x00, 0x00, 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0xa6, 0xab, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xb1, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0xb4, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb9, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0xbb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x00, 0x00, /* 0x80-0x87 */
|
||||
};
|
||||
static const unsigned char iso8859_14_page1e_1[8] = {
|
||||
0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_14_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x0100)
|
||||
c = iso8859_14_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0108 && wc < 0x0128)
|
||||
c = iso8859_14_page01_0[wc-0x0108];
|
||||
else if (wc >= 0x0170 && wc < 0x0180)
|
||||
c = iso8859_14_page01_1[wc-0x0170];
|
||||
else if (wc >= 0x1e00 && wc < 0x1e88)
|
||||
c = iso8859_14_page1e_0[wc-0x1e00];
|
||||
else if (wc >= 0x1ef0 && wc < 0x1ef8)
|
||||
c = iso8859_14_page1e_1[wc-0x1ef0];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
62
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_15.h
Normal file
62
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_15.h
Normal file
@@ -0,0 +1,62 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-15
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_15_2uni[32] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
|
||||
0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
|
||||
0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_15_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c >= 0xa0 && c < 0xc0)
|
||||
*pwc = (ucs4_t) iso8859_15_2uni[c-0xa0];
|
||||
else
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_15_page00[32] = {
|
||||
0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
|
||||
0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
|
||||
0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
|
||||
0x00, 0xb9, 0xba, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0xb8-0xbf */
|
||||
};
|
||||
static const unsigned char iso8859_15_page01[48] = {
|
||||
0x00, 0x00, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_15_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00c0)
|
||||
c = iso8859_15_page00[wc-0x00a0];
|
||||
else if (wc >= 0x00c0 && wc < 0x0100)
|
||||
c = wc;
|
||||
else if (wc >= 0x0150 && wc < 0x0180)
|
||||
c = iso8859_15_page01[wc-0x0150];
|
||||
else if (wc == 0x20ac)
|
||||
c = 0xa4;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
97
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_16.h
Normal file
97
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_16.h
Normal file
@@ -0,0 +1,97 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-16
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_16_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7,
|
||||
0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
|
||||
0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
|
||||
/* 0xc0 */
|
||||
0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
|
||||
0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
|
||||
/* 0xd0 */
|
||||
0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
|
||||
0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
|
||||
/* 0xe0 */
|
||||
0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
|
||||
0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
|
||||
/* 0xf0 */
|
||||
0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
|
||||
0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_16_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) iso8859_16_2uni[c-0xa0];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_16_page00[224] = {
|
||||
0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
|
||||
0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xb7, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0xc7, /* 0xc0-0xc7 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
|
||||
0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0xe6, 0xe7, /* 0xe0-0xe7 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0x00, /* 0xf0-0xf7 */
|
||||
0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
|
||||
/* 0x0100 */
|
||||
0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xb2, 0xb9, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0xd5, 0xf5, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
|
||||
};
|
||||
static const unsigned char iso8859_16_page02[8] = {
|
||||
0xaa, 0xba, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
};
|
||||
static const unsigned char iso8859_16_page20[8] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xa5, 0x00, /* 0x18-0x1f */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_16_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x0180)
|
||||
c = iso8859_16_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0218 && wc < 0x0220)
|
||||
c = iso8859_16_page02[wc-0x0218];
|
||||
else if (wc >= 0x2018 && wc < 0x2020)
|
||||
c = iso8859_16_page20[wc-0x2018];
|
||||
else if (wc == 0x20ac)
|
||||
c = 0xa4;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
93
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_2.h
Normal file
93
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_2.h
Normal file
@@ -0,0 +1,93 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-2
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_2_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
|
||||
0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
|
||||
0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
|
||||
/* 0xc0 */
|
||||
0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
|
||||
0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
|
||||
/* 0xd0 */
|
||||
0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
|
||||
0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
|
||||
/* 0xe0 */
|
||||
0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
|
||||
0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
|
||||
/* 0xf0 */
|
||||
0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
|
||||
0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_2_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) iso8859_2_2uni[c-0xa0];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_2_page00[224] = {
|
||||
0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
|
||||
0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
|
||||
0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
|
||||
0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
|
||||
0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
|
||||
0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
|
||||
0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
|
||||
0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
|
||||
/* 0x0100 */
|
||||
0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef, /* 0x08-0x0f */
|
||||
0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, /* 0x40-0x47 */
|
||||
0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba, /* 0x58-0x5f */
|
||||
0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9, /* 0x68-0x6f */
|
||||
0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
|
||||
};
|
||||
static const unsigned char iso8859_2_page02[32] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_2_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x0180)
|
||||
c = iso8859_2_page00[wc-0x00a0];
|
||||
else if (wc >= 0x02c0 && wc < 0x02e0)
|
||||
c = iso8859_2_page02[wc-0x02c0];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
99
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_3.h
Normal file
99
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_3.h
Normal file
@@ -0,0 +1,99 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-3
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_3_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0xfffd, 0x0124, 0x00a7,
|
||||
0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0xfffd, 0x017b,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
|
||||
0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0xfffd, 0x017c,
|
||||
/* 0xc0 */
|
||||
0x00c0, 0x00c1, 0x00c2, 0xfffd, 0x00c4, 0x010a, 0x0108, 0x00c7,
|
||||
0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
|
||||
/* 0xd0 */
|
||||
0xfffd, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
|
||||
0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
|
||||
/* 0xe0 */
|
||||
0x00e0, 0x00e1, 0x00e2, 0xfffd, 0x00e4, 0x010b, 0x0109, 0x00e7,
|
||||
0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
|
||||
/* 0xf0 */
|
||||
0xfffd, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
|
||||
0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_3_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
unsigned short wc = iso8859_3_2uni[c-0xa0];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_3_page00[96] = {
|
||||
0xa0, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
|
||||
0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
|
||||
0xb8, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
|
||||
0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
|
||||
0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
|
||||
0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
|
||||
0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
|
||||
0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
|
||||
};
|
||||
static const unsigned char iso8859_3_page01[120] = {
|
||||
0xc6, 0xe6, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xd8, 0xf8, 0xab, 0xbb, /* 0x18-0x1f */
|
||||
0xd5, 0xf5, 0x00, 0x00, 0xa6, 0xb6, 0xa1, 0xb1, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0xa9, 0xb9, 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0xaa, 0xba, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
};
|
||||
static const unsigned char iso8859_3_page02[8] = {
|
||||
0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_3_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x0100)
|
||||
c = iso8859_3_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0108 && wc < 0x0180)
|
||||
c = iso8859_3_page01[wc-0x0108];
|
||||
else if (wc >= 0x02d8 && wc < 0x02e0)
|
||||
c = iso8859_3_page02[wc-0x02d8];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
93
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_4.h
Normal file
93
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_4.h
Normal file
@@ -0,0 +1,93 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-4
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_4_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
|
||||
0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
|
||||
0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
|
||||
/* 0xc0 */
|
||||
0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
|
||||
0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
|
||||
/* 0xd0 */
|
||||
0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
|
||||
0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
|
||||
/* 0xe0 */
|
||||
0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
|
||||
0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
|
||||
/* 0xf0 */
|
||||
0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
|
||||
0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_4_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) iso8859_4_2uni[c-0xa0];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_4_page00[224] = {
|
||||
0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
|
||||
0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xaf, /* 0xa8-0xaf */
|
||||
0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
|
||||
0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
|
||||
0xd8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
|
||||
0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
|
||||
0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0x00, 0x00, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
|
||||
0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
|
||||
/* 0x0100 */
|
||||
0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0xd0, 0xf0, 0xaa, 0xba, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
|
||||
0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0xa5, 0xb5, 0xcf, 0xef, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf3, /* 0x30-0x37 */
|
||||
0xa2, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0xbd, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xb3, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, /* 0x60-0x67 */
|
||||
0xdd, 0xfd, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
|
||||
};
|
||||
static const unsigned char iso8859_4_page02[32] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_4_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x0180)
|
||||
c = iso8859_4_page00[wc-0x00a0];
|
||||
else if (wc >= 0x02c0 && wc < 0x02e0)
|
||||
c = iso8859_4_page02[wc-0x02c0];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
76
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_5.h
Normal file
76
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_5.h
Normal file
@@ -0,0 +1,76 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-5
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_5_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
|
||||
0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
|
||||
/* 0xb0 */
|
||||
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
|
||||
0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
|
||||
/* 0xc0 */
|
||||
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
|
||||
0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
|
||||
/* 0xd0 */
|
||||
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
|
||||
0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
|
||||
/* 0xe0 */
|
||||
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
|
||||
0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
|
||||
/* 0xf0 */
|
||||
0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
|
||||
0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_5_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) iso8859_5_2uni[c-0xa0];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_5_page00[16] = {
|
||||
0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
};
|
||||
static const unsigned char iso8859_5_page04[96] = {
|
||||
0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
|
||||
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x08-0x0f */
|
||||
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
|
||||
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
|
||||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
|
||||
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x38-0x3f */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
|
||||
0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
|
||||
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff, /* 0x58-0x5f */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_5_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00b0)
|
||||
c = iso8859_5_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0400 && wc < 0x0460)
|
||||
c = iso8859_5_page04[wc-0x0400];
|
||||
else if (wc == 0x2116)
|
||||
c = 0xf0;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
79
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_6.h
Normal file
79
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_6.h
Normal file
@@ -0,0 +1,79 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-6
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_6_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0xfffd, 0xfffd, 0xfffd, 0x00a4, 0xfffd, 0xfffd, 0xfffd,
|
||||
0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x060c, 0x00ad, 0xfffd, 0xfffd,
|
||||
/* 0xb0 */
|
||||
0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
0xfffd, 0xfffd, 0xfffd, 0x061b, 0xfffd, 0xfffd, 0xfffd, 0x061f,
|
||||
/* 0xc0 */
|
||||
0xfffd, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
|
||||
0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
|
||||
/* 0xd0 */
|
||||
0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
|
||||
0x0638, 0x0639, 0x063a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
/* 0xe0 */
|
||||
0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
|
||||
0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
|
||||
/* 0xf0 */
|
||||
0x0650, 0x0651, 0x0652, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_6_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
unsigned short wc = iso8859_6_2uni[c-0xa0];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_6_page00[16] = {
|
||||
0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
};
|
||||
static const unsigned char iso8859_6_page06[80] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
|
||||
0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
|
||||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
|
||||
0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
|
||||
0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_6_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00b0)
|
||||
c = iso8859_6_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0608 && wc < 0x0658)
|
||||
c = iso8859_6_page06[wc-0x0608];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
87
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_7.h
Normal file
87
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_7.h
Normal file
@@ -0,0 +1,87 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-7
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_7_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x2018, 0x2019, 0x00a3, 0xfffd, 0xfffd, 0x00a6, 0x00a7,
|
||||
0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0xfffd, 0x2015,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
|
||||
0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
|
||||
/* 0xc0 */
|
||||
0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
|
||||
0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
|
||||
/* 0xd0 */
|
||||
0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
|
||||
0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
|
||||
/* 0xe0 */
|
||||
0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
|
||||
0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
|
||||
/* 0xf0 */
|
||||
0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
|
||||
0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_7_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
unsigned short wc = iso8859_7_2uni[c-0xa0];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_7_page00[32] = {
|
||||
0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
|
||||
0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
};
|
||||
static const unsigned char iso8859_7_page03[80] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0x00, /* 0x80-0x87 */
|
||||
0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf, /* 0x88-0x8f */
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x90-0x97 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x98-0x9f */
|
||||
0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xa0-0xa7 */
|
||||
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xa8-0xaf */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xb0-0xb7 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xb8-0xbf */
|
||||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xc0-0xc7 */
|
||||
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xc8-0xcf */
|
||||
};
|
||||
static const unsigned char iso8859_7_page20[16] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_7_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00c0)
|
||||
c = iso8859_7_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0380 && wc < 0x03d0)
|
||||
c = iso8859_7_page03[wc-0x0380];
|
||||
else if (wc >= 0x2010 && wc < 0x2020)
|
||||
c = iso8859_7_page20[wc-0x2010];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
88
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_8.h
Normal file
88
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_8.h
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-8
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_8_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
|
||||
0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
|
||||
0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0xfffd,
|
||||
/* 0xc0 */
|
||||
0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
/* 0xd0 */
|
||||
0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2017,
|
||||
/* 0xe0 */
|
||||
0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
|
||||
0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
|
||||
/* 0xf0 */
|
||||
0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
|
||||
0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_8_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c >= 0xa0) {
|
||||
unsigned short wc = iso8859_8_2uni[c-0xa0];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_8_page00[88] = {
|
||||
0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
|
||||
0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
|
||||
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
|
||||
0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
|
||||
};
|
||||
static const unsigned char iso8859_8_page05[32] = {
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
|
||||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
|
||||
0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
|
||||
};
|
||||
static const unsigned char iso8859_8_page20[16] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x10-0x17 */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_8_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00f8)
|
||||
c = iso8859_8_page00[wc-0x00a0];
|
||||
else if (wc >= 0x05d0 && wc < 0x05f0)
|
||||
c = iso8859_8_page05[wc-0x05d0];
|
||||
else if (wc >= 0x2008 && wc < 0x2018)
|
||||
c = iso8859_8_page20[wc-0x2008];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
66
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_9.h
Normal file
66
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_9.h
Normal file
@@ -0,0 +1,66 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-9
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_9_2uni[48] = {
|
||||
/* 0xd0 */
|
||||
0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
|
||||
0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
|
||||
/* 0xe0 */
|
||||
0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
|
||||
0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
|
||||
/* 0xf0 */
|
||||
0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
|
||||
0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_9_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c >= 0xd0)
|
||||
*pwc = (ucs4_t) iso8859_9_2uni[c-0xd0];
|
||||
else
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_9_page00[48] = {
|
||||
0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
|
||||
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
|
||||
0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
|
||||
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
|
||||
};
|
||||
static const unsigned char iso8859_9_page01[72] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_9_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00d0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00d0 && wc < 0x0100)
|
||||
c = iso8859_9_page00[wc-0x00d0];
|
||||
else if (wc >= 0x0118 && wc < 0x0160)
|
||||
c = iso8859_9_page01[wc-0x0118];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
102
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_9e.h
Normal file
102
xim/xcb-imdkit/src/xlibi18n/lcUniConv/iso8859_9e.h
Normal file
@@ -0,0 +1,102 @@
|
||||
|
||||
/*
|
||||
* ISO-8859-9E
|
||||
*/
|
||||
|
||||
static const unsigned short iso8859_9e_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x017d, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x012c, 0x00a7,
|
||||
0x016c, 0x00a9, 0x01e6, 0x00ab, 0x014a, 0x00ad, 0x00ae, 0x01d1,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x017e, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x012d, 0x00b7,
|
||||
0x016d, 0x00b9, 0x01e7, 0x00bb, 0x014b, 0x00bd, 0x0178, 0x01d2,
|
||||
/* 0xc0 */
|
||||
0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x018f, 0x00c7,
|
||||
0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
|
||||
/* 0xd0 */
|
||||
0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00dd,
|
||||
0x019f, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
|
||||
/* 0xe0 */
|
||||
0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x0259, 0x00e7,
|
||||
0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
|
||||
/* 0xf0 */
|
||||
0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00fd,
|
||||
0x0275, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_9e_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c >= 0xa0)
|
||||
*pwc = (ucs4_t) iso8859_9e_2uni[c-0xa0];
|
||||
else
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char iso8859_9e_page00[96] = {
|
||||
0xa0, 0x00, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
|
||||
0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
|
||||
0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
|
||||
0x00, 0xb9, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x00, 0xc7, /* 0xc0-0xc7 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
|
||||
0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0xd9, 0xda, 0xdb, 0xdc, 0xd7, 0x00, 0xdf, /* 0xd8-0xdf */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0xe7, /* 0xe0-0xe7 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
|
||||
0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
|
||||
0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0xf7, 0x00, 0xff, /* 0xf8-0xff */
|
||||
};
|
||||
static const unsigned char iso8859_9e_page01[136] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0xbe, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xb1, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, /* 0x88-0x8f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, /* 0x98-0x9f */
|
||||
};
|
||||
static const unsigned char iso8859_9e_page01_d[24] = {
|
||||
0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0xe0-0xe7 */
|
||||
};
|
||||
|
||||
static int
|
||||
iso8859_9e_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x0100)
|
||||
c = iso8859_9e_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0118 && wc < 0x01a0)
|
||||
c = iso8859_9e_page01[wc-0x0118];
|
||||
else if (wc >= 0x01d0 && wc < 0x01e8)
|
||||
c = iso8859_9e_page01_d[wc-0x01d0];
|
||||
else if (wc == 0x0259)
|
||||
c = 0xe6;
|
||||
else if (wc == 0x0275)
|
||||
c = 0xf8;
|
||||
else if (wc == 0x20ac)
|
||||
c = 0xa4;
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
47
xim/xcb-imdkit/src/xlibi18n/lcUniConv/jisx0201.h
Normal file
47
xim/xcb-imdkit/src/xlibi18n/lcUniConv/jisx0201.h
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
/*
|
||||
* JISX0201.1976-0
|
||||
*/
|
||||
|
||||
static int
|
||||
jisx0201_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80) {
|
||||
if (c == 0x5c)
|
||||
*pwc = (ucs4_t) 0x00a5;
|
||||
else if (c == 0x7e)
|
||||
*pwc = (ucs4_t) 0x203e;
|
||||
else
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
} else {
|
||||
if (c >= 0xa1 && c < 0xe0) {
|
||||
*pwc = (ucs4_t) c + 0xfec0;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static int
|
||||
jisx0201_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
if (wc == 0x00a5) {
|
||||
*r = 0x5c;
|
||||
return 1;
|
||||
}
|
||||
if (wc == 0x203e) {
|
||||
*r = 0x7e;
|
||||
return 1;
|
||||
}
|
||||
if (wc >= 0xff61 && wc < 0xffa0) {
|
||||
*r = wc - 0xfec0;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
2396
xim/xcb-imdkit/src/xlibi18n/lcUniConv/jisx0208.h
Normal file
2396
xim/xcb-imdkit/src/xlibi18n/lcUniConv/jisx0208.h
Normal file
File diff suppressed because it is too large
Load Diff
2163
xim/xcb-imdkit/src/xlibi18n/lcUniConv/jisx0212.h
Normal file
2163
xim/xcb-imdkit/src/xlibi18n/lcUniConv/jisx0212.h
Normal file
File diff suppressed because it is too large
Load Diff
102
xim/xcb-imdkit/src/xlibi18n/lcUniConv/koi8_c.h
Normal file
102
xim/xcb-imdkit/src/xlibi18n/lcUniConv/koi8_c.h
Normal file
@@ -0,0 +1,102 @@
|
||||
|
||||
/*
|
||||
* KOI8-C
|
||||
*/
|
||||
|
||||
static const unsigned short koi8_c_2uni[128] = {
|
||||
/* 0x80 */
|
||||
0x0493, 0x0497, 0x049b, 0x049d, 0x04a3, 0x04af, 0x04b1, 0x04b3,
|
||||
0x04b7, 0x04b9, 0x04bb, 0x2580, 0x04d9, 0x04e3, 0x04e9, 0x04ef,
|
||||
/* 0x90 */
|
||||
0x0492, 0x0496, 0x049a, 0x049c, 0x04a2, 0x04ae, 0x04b0, 0x04b2,
|
||||
0x04b6, 0x04b8, 0x04ba, 0x2321, 0x04d8, 0x04e2, 0x04e8, 0x04ee,
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457,
|
||||
0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0491, 0x045e, 0x045f,
|
||||
/* 0xb0 */
|
||||
0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
|
||||
0x0486, 0x0409, 0x040a, 0x040b, 0x040c, 0x0490, 0x040e, 0x040f,
|
||||
/* 0xc0 */
|
||||
0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
|
||||
0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
|
||||
/* 0xd0 */
|
||||
0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
|
||||
0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
|
||||
/* 0xe0 */
|
||||
0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
|
||||
0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
|
||||
/* 0xf0 */
|
||||
0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
|
||||
0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
|
||||
};
|
||||
|
||||
static int
|
||||
koi8_c_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) koi8_c_2uni[c-0x80];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char koi8_c_page00[1] = {
|
||||
0xa0, /* 0xa0-0xa7 */
|
||||
};
|
||||
static const unsigned char koi8_c_page04[240] = {
|
||||
0x00, 0xb3, 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x00-0x07 */
|
||||
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0xbf, /* 0x08-0x0f */
|
||||
0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
|
||||
0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
|
||||
0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
|
||||
0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
|
||||
0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
|
||||
0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
|
||||
0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
|
||||
0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
|
||||
0x00, 0xa3, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x50-0x57 */
|
||||
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0xbd, 0xad, 0x90, 0x80, 0x00, 0x00, 0x91, 0x81, /* 0x90-0x97 */
|
||||
0x00, 0x00, 0x92, 0x82, 0x93, 0x83, 0x00, 0x00, /* 0x98-0x9f */
|
||||
0x00, 0x00, 0x94, 0x84, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x85, /* 0xa8-0xaf */
|
||||
0x96, 0x86, 0x97, 0x87, 0x00, 0x00, 0x98, 0x88, /* 0xb0-0xb7 */
|
||||
0x99, 0x89, 0x9a, 0x8a, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x9c, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
0x00, 0x00, 0x9d, 0x8d, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
|
||||
0x9e, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x8f, /* 0xe8-0xef */
|
||||
};
|
||||
static const unsigned char koi8_c_page22[1] = {
|
||||
0xb0, /* 0x16-0x16 */
|
||||
};
|
||||
|
||||
static int
|
||||
koi8_c_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00a1)
|
||||
c = koi8_c_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0400 && wc < 0x04ef)
|
||||
c = koi8_c_page04[wc-0x0400];
|
||||
else if (wc >= 0x2216 && wc < 0x2217)
|
||||
c = koi8_c_page22[wc-0x2216];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
134
xim/xcb-imdkit/src/xlibi18n/lcUniConv/koi8_r.h
Normal file
134
xim/xcb-imdkit/src/xlibi18n/lcUniConv/koi8_r.h
Normal file
@@ -0,0 +1,134 @@
|
||||
|
||||
/*
|
||||
* KOI8-R
|
||||
*/
|
||||
|
||||
/* Specification: RFC 1489 */
|
||||
|
||||
static const unsigned short koi8_r_2uni[128] = {
|
||||
/* 0x80 */
|
||||
0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
|
||||
0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
|
||||
/* 0x90 */
|
||||
0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
|
||||
0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
|
||||
/* 0xa0 */
|
||||
0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
|
||||
0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
|
||||
/* 0xb0 */
|
||||
0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
|
||||
0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,
|
||||
/* 0xc0 */
|
||||
0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
|
||||
0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
|
||||
/* 0xd0 */
|
||||
0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
|
||||
0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
|
||||
/* 0xe0 */
|
||||
0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
|
||||
0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
|
||||
/* 0xf0 */
|
||||
0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
|
||||
0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
|
||||
};
|
||||
|
||||
static int
|
||||
koi8_r_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) koi8_r_2uni[c-0x80];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char koi8_r_page00[88] = {
|
||||
0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
|
||||
};
|
||||
static const unsigned char koi8_r_page04[88] = {
|
||||
0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
|
||||
0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
|
||||
0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
|
||||
0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
|
||||
0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
|
||||
0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
|
||||
0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
|
||||
0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
|
||||
0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
};
|
||||
static const unsigned char koi8_r_page22[80] = {
|
||||
0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
|
||||
};
|
||||
static const unsigned char koi8_r_page23[8] = {
|
||||
0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
};
|
||||
static const unsigned char koi8_r_page25[168] = {
|
||||
0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, /* 0x50-0x57 */
|
||||
0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
|
||||
0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, /* 0x60-0x67 */
|
||||
0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
|
||||
0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
};
|
||||
|
||||
static int
|
||||
koi8_r_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00f8)
|
||||
c = koi8_r_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0400 && wc < 0x0458)
|
||||
c = koi8_r_page04[wc-0x0400];
|
||||
else if (wc >= 0x2218 && wc < 0x2268)
|
||||
c = koi8_r_page22[wc-0x2218];
|
||||
else if (wc >= 0x2320 && wc < 0x2328)
|
||||
c = koi8_r_page23[wc-0x2320];
|
||||
else if (wc >= 0x2500 && wc < 0x25a8)
|
||||
c = koi8_r_page25[wc-0x2500];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
142
xim/xcb-imdkit/src/xlibi18n/lcUniConv/koi8_u.h
Normal file
142
xim/xcb-imdkit/src/xlibi18n/lcUniConv/koi8_u.h
Normal file
@@ -0,0 +1,142 @@
|
||||
|
||||
/*
|
||||
* KOI8-U
|
||||
*/
|
||||
|
||||
/* Specification: RFC 2319 */
|
||||
|
||||
static const unsigned short koi8_u_2uni[128] = {
|
||||
/* 0x80 */
|
||||
0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
|
||||
0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
|
||||
/* 0x90 */
|
||||
0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
|
||||
0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
|
||||
/* 0xa0 */
|
||||
0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
|
||||
0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e,
|
||||
/* 0xb0 */
|
||||
0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
|
||||
0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9,
|
||||
/* 0xc0 */
|
||||
0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
|
||||
0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
|
||||
/* 0xd0 */
|
||||
0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
|
||||
0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
|
||||
/* 0xe0 */
|
||||
0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
|
||||
0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
|
||||
/* 0xf0 */
|
||||
0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
|
||||
0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
|
||||
};
|
||||
|
||||
static int
|
||||
koi8_u_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) koi8_u_2uni[c-0x80];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char koi8_u_page00[88] = {
|
||||
0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
|
||||
};
|
||||
static const unsigned char koi8_u_page04[152] = {
|
||||
0x00, 0xb3, 0x00, 0x00, 0xb4, 0x00, 0xb6, 0xb7, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
|
||||
0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
|
||||
0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
|
||||
0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
|
||||
0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
|
||||
0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
|
||||
0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
|
||||
0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
|
||||
0x00, 0xa3, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0xbd, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
};
|
||||
static const unsigned char koi8_u_page22[80] = {
|
||||
0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
|
||||
};
|
||||
static const unsigned char koi8_u_page23[8] = {
|
||||
0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
};
|
||||
static const unsigned char koi8_u_page25[168] = {
|
||||
0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0xa0, 0xa1, 0xa2, 0x00, 0xa5, 0x00, 0x00, 0xa8, /* 0x50-0x57 */
|
||||
0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
|
||||
0xb1, 0xb2, 0x00, 0xb5, 0x00, 0x00, 0xb8, 0xb9, /* 0x60-0x67 */
|
||||
0xba, 0xbb, 0xbc, 0x00, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
|
||||
0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
};
|
||||
|
||||
static int
|
||||
koi8_u_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00f8)
|
||||
c = koi8_u_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0400 && wc < 0x0498)
|
||||
c = koi8_u_page04[wc-0x0400];
|
||||
else if (wc >= 0x2218 && wc < 0x2268)
|
||||
c = koi8_u_page22[wc-0x2218];
|
||||
else if (wc >= 0x2320 && wc < 0x2328)
|
||||
c = koi8_u_page23[wc-0x2320];
|
||||
else if (wc >= 0x2500 && wc < 0x25a8)
|
||||
c = koi8_u_page25[wc-0x2500];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
3002
xim/xcb-imdkit/src/xlibi18n/lcUniConv/ksc5601.h
Normal file
3002
xim/xcb-imdkit/src/xlibi18n/lcUniConv/ksc5601.h
Normal file
File diff suppressed because it is too large
Load Diff
77
xim/xcb-imdkit/src/xlibi18n/lcUniConv/mulelao.h
Normal file
77
xim/xcb-imdkit/src/xlibi18n/lcUniConv/mulelao.h
Normal file
@@ -0,0 +1,77 @@
|
||||
|
||||
/*
|
||||
* MULELAO-1
|
||||
*/
|
||||
|
||||
static const unsigned short mulelao_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0e81, 0x0e82, 0xfffd, 0x0e84, 0xfffd, 0xfffd, 0x0e87,
|
||||
0x0e88, 0xfffd, 0x0e8a, 0xfffd, 0xfffd, 0x0e8d, 0xfffd, 0xfffd,
|
||||
/* 0xb0 */
|
||||
0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e94, 0x0e95, 0x0e96, 0x0e97,
|
||||
0xfffd, 0x0e99, 0x0e9a, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f,
|
||||
/* 0xc0 */
|
||||
0xfffd, 0x0ea1, 0x0ea2, 0x0ea3, 0xfffd, 0x0ea5, 0xfffd, 0x0ea7,
|
||||
0xfffd, 0xfffd, 0x0eaa, 0x0eab, 0xfffd, 0x0ead, 0x0eae, 0x0eaf,
|
||||
/* 0xd0 */
|
||||
0x0eb0, 0x0eb1, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7,
|
||||
0x0eb8, 0x0eb9, 0xfffd, 0x0ebb, 0x0ebc, 0x0ebd, 0xfffd, 0xfffd,
|
||||
/* 0xe0 */
|
||||
0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0xfffd, 0x0ec6, 0xfffd,
|
||||
0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0xfffd, 0xfffd,
|
||||
/* 0xf0 */
|
||||
0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
|
||||
0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x0edc, 0x0edd, 0xfffd, 0xfffd,
|
||||
};
|
||||
|
||||
static int
|
||||
mulelao_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0xa0) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
unsigned short wc = mulelao_2uni[c-0xa0];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char mulelao_page0e[96] = {
|
||||
0x00, 0xa1, 0xa2, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0x80-0x87 */
|
||||
0xa8, 0x00, 0xaa, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x90-0x97 */
|
||||
0x00, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x98-0x9f */
|
||||
0x00, 0xc1, 0xc2, 0xc3, 0x00, 0xc5, 0x00, 0xc7, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0xca, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xa8-0xaf */
|
||||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xb0-0xb7 */
|
||||
0xd8, 0xd9, 0x00, 0xdb, 0xdc, 0xdd, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x00, 0xe6, 0x00, /* 0xc0-0xc7 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
|
||||
0xf8, 0xf9, 0x00, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
};
|
||||
|
||||
static int
|
||||
mulelao_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x00a0) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc == 0x00a0)
|
||||
c = 0xa0;
|
||||
else if (wc >= 0x0e80 && wc < 0x0ee0)
|
||||
c = mulelao_page0e[wc-0x0e80];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
122
xim/xcb-imdkit/src/xlibi18n/lcUniConv/tatar_cyr.h
Normal file
122
xim/xcb-imdkit/src/xlibi18n/lcUniConv/tatar_cyr.h
Normal file
@@ -0,0 +1,122 @@
|
||||
|
||||
/*
|
||||
* TATAR-CYR
|
||||
*/
|
||||
|
||||
static const unsigned short tatar_cyr_2uni[128] = {
|
||||
/* 0x80 */
|
||||
0x04d8, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
|
||||
0x20ac, 0x2030, 0x04e8, 0x2039, 0x04ae, 0x0496, 0x04a2, 0x04ba,
|
||||
/* 0x90 */
|
||||
0x04d9, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
|
||||
0x98, 0x2122, 0x04e9, 0x203a, 0x04af, 0x0497, 0x04a3, 0x04bb,
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
|
||||
0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
|
||||
/* 0xb0 */
|
||||
0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
|
||||
0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
|
||||
/* 0xc0 */
|
||||
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
|
||||
0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
|
||||
/* 0xd0 */
|
||||
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
|
||||
0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
|
||||
/* 0xe0 */
|
||||
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
|
||||
0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
|
||||
/* 0xf0 */
|
||||
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
|
||||
0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
|
||||
};
|
||||
|
||||
static int
|
||||
tatar_cyr_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) tatar_cyr_2uni[c-0x80];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char tatar_cyr_page00[32] = {
|
||||
0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
|
||||
0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
|
||||
0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
};
|
||||
static const unsigned char tatar_cyr_page04[240] = {
|
||||
0x00, 0xa8, 0x00, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
|
||||
0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, /* 0x08-0x0f */
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
|
||||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
|
||||
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
|
||||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
|
||||
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
|
||||
0x00, 0xb8, 0x00, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
|
||||
0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x9d, /* 0x90-0x97 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
|
||||
0x00, 0x00, 0x8e, 0x9e, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x9c, /* 0xa8-0xaf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x8f, 0x9f, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x80, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
|
||||
0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
|
||||
};
|
||||
static const unsigned char tatar_cyr_page20[48] = {
|
||||
0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
|
||||
0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
};
|
||||
static const unsigned char tatar_cyr_page21[24] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, /* 0x10-0x17 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
};
|
||||
static const unsigned char tatar_cyr_page22[1] = {
|
||||
0xb0, /* 0x16-0x16 */
|
||||
};
|
||||
|
||||
static int
|
||||
tatar_cyr_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x00bc)
|
||||
c = tatar_cyr_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0400 && wc < 0x04ef)
|
||||
c = tatar_cyr_page04[wc-0x0400];
|
||||
else if (wc >= 0x2010 && wc < 0x203b)
|
||||
c = tatar_cyr_page20[wc-0x2010];
|
||||
else if (wc == 0x20ac)
|
||||
c = 0x88;
|
||||
else if (wc >= 0x2110 && wc < 0x2123)
|
||||
c = tatar_cyr_page21[wc-0x2110];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
133
xim/xcb-imdkit/src/xlibi18n/lcUniConv/tcvn.h
Normal file
133
xim/xcb-imdkit/src/xlibi18n/lcUniConv/tcvn.h
Normal file
@@ -0,0 +1,133 @@
|
||||
|
||||
/*
|
||||
* TCVN-5712
|
||||
*/
|
||||
|
||||
static const unsigned short tcvn_2uni_1[32] = {
|
||||
/* 0x00 */
|
||||
0x0000, 0x00da, 0x1ee4, 0x0003, 0x1eea, 0x1eec, 0x1eee, 0x0007,
|
||||
0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
|
||||
/* 0x10 */
|
||||
0x0010, 0x1ee8, 0x1ef0, 0x1ef2, 0x1ef6, 0x1ef8, 0x00dd, 0x1ef4,
|
||||
0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
|
||||
};
|
||||
static const unsigned short tcvn_2uni_2[128] = {
|
||||
/* 0x80 */
|
||||
0x00c0, 0x1ea2, 0x00c3, 0x00c1, 0x1ea0, 0x1eb6, 0x1eac, 0x00c8,
|
||||
0x1eba, 0x1ebc, 0x00c9, 0x1eb8, 0x1ec6, 0x00cc, 0x1ec8, 0x0128,
|
||||
/* 0x90 */
|
||||
0x00cd, 0x1eca, 0x00d2, 0x1ece, 0x00d5, 0x00d3, 0x1ecc, 0x1ed8,
|
||||
0x1edc, 0x1ede, 0x1ee0, 0x1eda, 0x1ee2, 0x00d9, 0x1ee6, 0x0168,
|
||||
/* 0xa0 */
|
||||
0x00a0, 0x0102, 0x00c2, 0x00ca, 0x00d4, 0x01a0, 0x01af, 0x0110,
|
||||
0x0103, 0x00e2, 0x00ea, 0x00f4, 0x01a1, 0x01b0, 0x0111, 0x1eb0,
|
||||
/* 0xb0 */
|
||||
0x0300, 0x0309, 0x0303, 0x0301, 0x0323, 0x00e0, 0x1ea3, 0x00e3,
|
||||
0x00e1, 0x1ea1, 0x1eb2, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eaf, 0x1eb4,
|
||||
/* 0xc0 */
|
||||
0x1eae, 0x1ea6, 0x1ea8, 0x1eaa, 0x1ea4, 0x1ec0, 0x1eb7, 0x1ea7,
|
||||
0x1ea9, 0x1eab, 0x1ea5, 0x1ead, 0x00e8, 0x1ec2, 0x1ebb, 0x1ebd,
|
||||
/* 0xd0 */
|
||||
0x00e9, 0x1eb9, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ebf, 0x1ec7, 0x00ec,
|
||||
0x1ec9, 0x1ec4, 0x1ebe, 0x1ed2, 0x0129, 0x00ed, 0x1ecb, 0x00f2,
|
||||
/* 0xe0 */
|
||||
0x1ed4, 0x1ecf, 0x00f5, 0x00f3, 0x1ecd, 0x1ed3, 0x1ed5, 0x1ed7,
|
||||
0x1ed1, 0x1ed9, 0x1edd, 0x1edf, 0x1ee1, 0x1edb, 0x1ee3, 0x00f9,
|
||||
/* 0xf0 */
|
||||
0x1ed6, 0x1ee7, 0x0169, 0x00fa, 0x1ee5, 0x1eeb, 0x1eed, 0x1eef,
|
||||
0x1ee9, 0x1ef1, 0x1ef3, 0x1ef7, 0x1ef9, 0x00fd, 0x1ef5, 0x1ed0,
|
||||
};
|
||||
|
||||
static int
|
||||
tcvn_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x20)
|
||||
*pwc = (ucs4_t) tcvn_2uni_1[c];
|
||||
else if (c < 0x80)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) tcvn_2uni_2[c-0x80];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char tcvn_page00[96+184] = {
|
||||
0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
|
||||
0x80, 0x83, 0xa2, 0x82, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0x87, 0x8a, 0xa3, 0x00, 0x8d, 0x90, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0x92, 0x95, 0xa4, 0x94, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0x9d, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
0xb5, 0xb8, 0xa9, 0xb7, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
|
||||
0xcc, 0xd0, 0xaa, 0x00, 0xd7, 0xdd, 0x00, 0x00, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0xdf, 0xe3, 0xab, 0xe2, 0x00, 0x00, /* 0xf0-0xf7 */
|
||||
0x00, 0xef, 0xf3, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
|
||||
/* 0x0100 */
|
||||
0x00, 0x00, 0xa1, 0xa8, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0xa7, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0x8f, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x9f, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
|
||||
0xa5, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, /* 0xa8-0xaf */
|
||||
0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
|
||||
};
|
||||
static const unsigned char tcvn_page03[40] = {
|
||||
0xb0, 0xb3, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
|
||||
0x00, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
};
|
||||
static const unsigned char tcvn_page1e[96] = {
|
||||
0x84, 0xb9, 0x81, 0xb6, 0xc4, 0xca, 0xc1, 0xc7, /* 0xa0-0xa7 */
|
||||
0xc2, 0xc8, 0xc3, 0xc9, 0x86, 0xcb, 0xc0, 0xbe, /* 0xa8-0xaf */
|
||||
0xaf, 0xbb, 0xba, 0xbc, 0xbf, 0xbd, 0x85, 0xc6, /* 0xb0-0xb7 */
|
||||
0x8b, 0xd1, 0x88, 0xce, 0x89, 0xcf, 0xda, 0xd5, /* 0xb8-0xbf */
|
||||
0xc5, 0xd2, 0xcd, 0xd3, 0xd9, 0xd4, 0x8c, 0xd6, /* 0xc0-0xc7 */
|
||||
0x8e, 0xd8, 0x91, 0xde, 0x96, 0xe4, 0x93, 0xe1, /* 0xc8-0xcf */
|
||||
0xff, 0xe8, 0xdb, 0xe5, 0xe0, 0xe6, 0xf0, 0xe7, /* 0xd0-0xd7 */
|
||||
0x97, 0xe9, 0x9b, 0xed, 0x98, 0xea, 0x99, 0xeb, /* 0xd8-0xdf */
|
||||
0x9a, 0xec, 0x9c, 0xee, 0x02, 0xf4, 0x9e, 0xf1, /* 0xe0-0xe7 */
|
||||
0x11, 0xf8, 0x04, 0xf5, 0x05, 0xf6, 0x06, 0xf7, /* 0xe8-0xef */
|
||||
0x12, 0xf9, 0x13, 0xfa, 0x17, 0xfe, 0x14, 0xfb, /* 0xf0-0xf7 */
|
||||
0x15, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
|
||||
};
|
||||
|
||||
static int
|
||||
tcvn_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080 && (wc >= 0x0020 || (0x00fe0076 & (1 << wc)) == 0)) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00a0 && wc < 0x01b8)
|
||||
c = tcvn_page00[wc-0x00a0];
|
||||
else if (wc >= 0x0300 && wc < 0x0328)
|
||||
c = tcvn_page03[wc-0x0300];
|
||||
else if (wc >= 0x1ea0 && wc < 0x1f00)
|
||||
c = tcvn_page1e[wc-0x1ea0];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
77
xim/xcb-imdkit/src/xlibi18n/lcUniConv/tis620.h
Normal file
77
xim/xcb-imdkit/src/xlibi18n/lcUniConv/tis620.h
Normal file
@@ -0,0 +1,77 @@
|
||||
|
||||
/*
|
||||
* TIS620-0
|
||||
*/
|
||||
|
||||
static const unsigned short tis620_2uni[96] = {
|
||||
/* 0xa0 */
|
||||
0xfffd, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
|
||||
0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
|
||||
/* 0xb0 */
|
||||
0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
|
||||
0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
|
||||
/* 0xc0 */
|
||||
0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
|
||||
0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
|
||||
/* 0xd0 */
|
||||
0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
|
||||
0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
|
||||
/* 0xe0 */
|
||||
0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
|
||||
0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
|
||||
/* 0xf0 */
|
||||
0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
|
||||
0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
|
||||
};
|
||||
|
||||
static int
|
||||
tis620_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x80) {
|
||||
*pwc = (ucs4_t) c;
|
||||
return 1;
|
||||
}
|
||||
else if (c < 0xa0) {
|
||||
}
|
||||
else {
|
||||
unsigned short wc = tis620_2uni[c-0xa0];
|
||||
if (wc != 0xfffd) {
|
||||
*pwc = (ucs4_t) wc;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static const unsigned char tis620_page0e[96] = {
|
||||
0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
|
||||
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
|
||||
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
|
||||
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
|
||||
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
|
||||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
|
||||
0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
|
||||
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
|
||||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
|
||||
0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
};
|
||||
|
||||
static int
|
||||
tis620_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x0e00 && wc < 0x0e60)
|
||||
c = tis620_page0e[wc-0x0e00];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
31
xim/xcb-imdkit/src/xlibi18n/lcUniConv/ucs2be.h
Normal file
31
xim/xcb-imdkit/src/xlibi18n/lcUniConv/ucs2be.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* UCS-2BE = UCS-2 big endian
|
||||
*/
|
||||
|
||||
static int
|
||||
ucs2be_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
if (n >= 2) {
|
||||
if (s[0] >= 0xd8 && s[0] < 0xe0) {
|
||||
return RET_ILSEQ;
|
||||
} else {
|
||||
*pwc = (s[0] << 8) + s[1];
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
return RET_TOOFEW(0);
|
||||
}
|
||||
|
||||
static int
|
||||
ucs2be_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) {
|
||||
if (n >= 2) {
|
||||
r[0] = (unsigned char) (wc >> 8);
|
||||
r[1] = (unsigned char) wc;
|
||||
return 2;
|
||||
} else
|
||||
return RET_TOOSMALL;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
108
xim/xcb-imdkit/src/xlibi18n/lcUniConv/utf8.h
Normal file
108
xim/xcb-imdkit/src/xlibi18n/lcUniConv/utf8.h
Normal file
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
* UTF-8
|
||||
*/
|
||||
|
||||
/* Specification: RFC 2279 */
|
||||
|
||||
static int
|
||||
utf8_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = s[0];
|
||||
|
||||
if (c < 0x80) {
|
||||
*pwc = c;
|
||||
return 1;
|
||||
} else if (c < 0xc2) {
|
||||
return RET_ILSEQ;
|
||||
} else if (c < 0xe0) {
|
||||
if (n < 2)
|
||||
return RET_TOOFEW(0);
|
||||
if (!((s[1] ^ 0x80) < 0x40))
|
||||
return RET_ILSEQ;
|
||||
*pwc = ((ucs4_t) (c & 0x1f) << 6)
|
||||
| (ucs4_t) (s[1] ^ 0x80);
|
||||
return 2;
|
||||
} else if (c < 0xf0) {
|
||||
if (n < 3)
|
||||
return RET_TOOFEW(0);
|
||||
if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
|
||||
&& (c >= 0xe1 || s[1] >= 0xa0)))
|
||||
return RET_ILSEQ;
|
||||
*pwc = ((ucs4_t) (c & 0x0f) << 12)
|
||||
| ((ucs4_t) (s[1] ^ 0x80) << 6)
|
||||
| (ucs4_t) (s[2] ^ 0x80);
|
||||
return 3;
|
||||
} else if (c < 0xf8) {
|
||||
if (n < 4)
|
||||
return RET_TOOFEW(0);
|
||||
if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
|
||||
&& (s[3] ^ 0x80) < 0x40
|
||||
&& (c >= 0xf1 || s[1] >= 0x90)))
|
||||
return RET_ILSEQ;
|
||||
*pwc = ((ucs4_t) (c & 0x07) << 18)
|
||||
| ((ucs4_t) (s[1] ^ 0x80) << 12)
|
||||
| ((ucs4_t) (s[2] ^ 0x80) << 6)
|
||||
| (ucs4_t) (s[3] ^ 0x80);
|
||||
return 4;
|
||||
} else if (c < 0xfc) {
|
||||
if (n < 5)
|
||||
return RET_TOOFEW(0);
|
||||
if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
|
||||
&& (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
|
||||
&& (c >= 0xf9 || s[1] >= 0x88)))
|
||||
return RET_ILSEQ;
|
||||
*pwc = ((ucs4_t) (c & 0x03) << 24)
|
||||
| ((ucs4_t) (s[1] ^ 0x80) << 18)
|
||||
| ((ucs4_t) (s[2] ^ 0x80) << 12)
|
||||
| ((ucs4_t) (s[3] ^ 0x80) << 6)
|
||||
| (ucs4_t) (s[4] ^ 0x80);
|
||||
return 5;
|
||||
} else if (c < 0xfe) {
|
||||
if (n < 6)
|
||||
return RET_TOOFEW(0);
|
||||
if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
|
||||
&& (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
|
||||
&& (s[5] ^ 0x80) < 0x40
|
||||
&& (c >= 0xfd || s[1] >= 0x84)))
|
||||
return RET_ILSEQ;
|
||||
*pwc = ((ucs4_t) (c & 0x01) << 30)
|
||||
| ((ucs4_t) (s[1] ^ 0x80) << 24)
|
||||
| ((ucs4_t) (s[2] ^ 0x80) << 18)
|
||||
| ((ucs4_t) (s[3] ^ 0x80) << 12)
|
||||
| ((ucs4_t) (s[4] ^ 0x80) << 6)
|
||||
| (ucs4_t) (s[5] ^ 0x80);
|
||||
return 6;
|
||||
} else
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
|
||||
static int
|
||||
utf8_wctomb (unsigned char *r, ucs4_t wc, int n) /* n == 0 is acceptable */
|
||||
{
|
||||
int count;
|
||||
if (wc < 0x80)
|
||||
count = 1;
|
||||
else if (wc < 0x800)
|
||||
count = 2;
|
||||
else if (wc < 0x10000)
|
||||
count = 3;
|
||||
else if (wc < 0x200000)
|
||||
count = 4;
|
||||
else if (wc < 0x4000000)
|
||||
count = 5;
|
||||
else if (wc <= 0x7fffffff)
|
||||
count = 6;
|
||||
else
|
||||
return RET_ILSEQ;
|
||||
if (n < count)
|
||||
return RET_TOOSMALL;
|
||||
switch (count) { /* note: code falls through cases! */
|
||||
case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000; /* FALLTHROUGH */
|
||||
case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000; /* FALLTHROUGH */
|
||||
case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000; /* FALLTHROUGH */
|
||||
case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800; /* FALLTHROUGH */
|
||||
case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0; /* FALLTHROUGH */
|
||||
case 1: r[0] = wc;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
122
xim/xcb-imdkit/src/xlibi18n/lcUniConv/viscii.h
Normal file
122
xim/xcb-imdkit/src/xlibi18n/lcUniConv/viscii.h
Normal file
@@ -0,0 +1,122 @@
|
||||
|
||||
/*
|
||||
* VISCII1.1-1
|
||||
*/
|
||||
|
||||
/* Specification: RFC 1456 */
|
||||
|
||||
static const unsigned short viscii_2uni_1[32] = {
|
||||
/* 0x00 */
|
||||
0x0000, 0x0001, 0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007,
|
||||
0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
|
||||
/* 0x10 */
|
||||
0x0010, 0x0011, 0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017,
|
||||
0x0018, 0x1ef8, 0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f,
|
||||
};
|
||||
static const unsigned short viscii_2uni_2[128] = {
|
||||
/* 0x80 */
|
||||
0x1ea0, 0x1eae, 0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac,
|
||||
0x1ebc, 0x1eb8, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0,
|
||||
/* 0x90 */
|
||||
0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede,
|
||||
0x1eca, 0x1ece, 0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2,
|
||||
/* 0xa0 */
|
||||
0x00d5, 0x1eaf, 0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea9, 0x1ead,
|
||||
0x1ebd, 0x1eb9, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1,
|
||||
/* 0xb0 */
|
||||
0x1ed3, 0x1ed5, 0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf,
|
||||
0x1ecb, 0x1ef0, 0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af,
|
||||
/* 0xc0 */
|
||||
0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5,
|
||||
0x00c8, 0x00c9, 0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3,
|
||||
/* 0xd0 */
|
||||
0x0110, 0x1ee9, 0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb,
|
||||
0x1eed, 0x00d9, 0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0,
|
||||
/* 0xe0 */
|
||||
0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab,
|
||||
0x00e8, 0x00e9, 0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9,
|
||||
/* 0xf0 */
|
||||
0x0111, 0x1ef1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd,
|
||||
0x1ee5, 0x00f9, 0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee,
|
||||
};
|
||||
|
||||
static int
|
||||
viscii_mbtowc (ucs4_t *pwc, const unsigned char *s, int n)
|
||||
{
|
||||
unsigned char c = *s;
|
||||
if (c < 0x20)
|
||||
*pwc = (ucs4_t) viscii_2uni_1[c];
|
||||
else if (c < 0x80)
|
||||
*pwc = (ucs4_t) c;
|
||||
else
|
||||
*pwc = (ucs4_t) viscii_2uni_2[c-0x80];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const unsigned char viscii_page00[64+184] = {
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
|
||||
0xc8, 0xc9, 0xca, 0x00, 0xcc, 0xcd, 0x00, 0x00, /* 0xc8-0xcf */
|
||||
0x00, 0x00, 0xd2, 0xd3, 0xd4, 0xa0, 0x00, 0x00, /* 0xd0-0xd7 */
|
||||
0x00, 0xd9, 0xda, 0x00, 0x00, 0xdd, 0x00, 0x00, /* 0xd8-0xdf */
|
||||
0xe0, 0xe1, 0xe2, 0xe3, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
|
||||
0xe8, 0xe9, 0xea, 0x00, 0xec, 0xed, 0x00, 0x00, /* 0xe8-0xef */
|
||||
0x00, 0x00, 0xf2, 0xf3, 0xf4, 0xf5, 0x00, 0x00, /* 0xf0-0xf7 */
|
||||
0x00, 0xf9, 0xfa, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
|
||||
/* 0x0100 */
|
||||
0x00, 0x00, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
|
||||
0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
|
||||
0xce, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
|
||||
0x9d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
|
||||
0xb4, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, /* 0xa8-0xaf */
|
||||
0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
|
||||
};
|
||||
static const unsigned char viscii_page1e[96] = {
|
||||
0x80, 0xd5, 0xc4, 0xe4, 0x84, 0xa4, 0x85, 0xa5, /* 0xa0-0xa7 */
|
||||
0x86, 0xa6, 0x06, 0xe7, 0x87, 0xa7, 0x81, 0xa1, /* 0xa8-0xaf */
|
||||
0x82, 0xa2, 0x02, 0xc6, 0x05, 0xc7, 0x83, 0xa3, /* 0xb0-0xb7 */
|
||||
0x89, 0xa9, 0xcb, 0xeb, 0x88, 0xa8, 0x8a, 0xaa, /* 0xb8-0xbf */
|
||||
0x8b, 0xab, 0x8c, 0xac, 0x8d, 0xad, 0x8e, 0xae, /* 0xc0-0xc7 */
|
||||
0x9b, 0xef, 0x98, 0xb8, 0x9a, 0xf7, 0x99, 0xf6, /* 0xc8-0xcf */
|
||||
0x8f, 0xaf, 0x90, 0xb0, 0x91, 0xb1, 0x92, 0xb2, /* 0xd0-0xd7 */
|
||||
0x93, 0xb5, 0x95, 0xbe, 0x96, 0xb6, 0x97, 0xb7, /* 0xd8-0xdf */
|
||||
0xb3, 0xde, 0x94, 0xfe, 0x9e, 0xf8, 0x9c, 0xfc, /* 0xe0-0xe7 */
|
||||
0xba, 0xd1, 0xbb, 0xd7, 0xbc, 0xd8, 0xff, 0xe6, /* 0xe8-0xef */
|
||||
0xb9, 0xf1, 0x9f, 0xcf, 0x1e, 0xdc, 0x14, 0xd6, /* 0xf0-0xf7 */
|
||||
0x19, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
|
||||
};
|
||||
|
||||
static int
|
||||
viscii_wctomb (unsigned char *r, ucs4_t wc, int n)
|
||||
{
|
||||
unsigned char c = 0;
|
||||
if (wc < 0x0080 && (wc >= 0x0020 || (0x42100064 & (1 << wc)) == 0)) {
|
||||
*r = wc;
|
||||
return 1;
|
||||
}
|
||||
else if (wc >= 0x00c0 && wc < 0x01b8)
|
||||
c = viscii_page00[wc-0x00c0];
|
||||
else if (wc >= 0x1ea0 && wc < 0x1f00)
|
||||
c = viscii_page1e[wc-0x1ea0];
|
||||
if (c != 0) {
|
||||
*r = c;
|
||||
return 1;
|
||||
}
|
||||
return RET_ILSEQ;
|
||||
}
|
||||
Reference in New Issue
Block a user