summaryrefslogtreecommitdiff
path: root/xc/lib/X11
diff options
context:
space:
mode:
authorgareth <gareth>2000-12-01 20:37:35 +0000
committergareth <gareth>2000-12-01 20:37:35 +0000
commit0fa77f7f91a09cf332fd0433c7b6e962a80cecaf (patch)
tree4957535f0a4e846af59b7a8d92a852b71ddebaab /xc/lib/X11
parentd03307dd9f98036c40abf2f98dac3fde22ef2e89 (diff)
Merge with trunk (almost there!).ati-4-1-1-20001202-mergeati-4-1-1-branch
Diffstat (limited to 'xc/lib/X11')
-rw-r--r--xc/lib/X11/ICWrap.c31
-rw-r--r--xc/lib/X11/Imakefile23
-rw-r--r--xc/lib/X11/OpenDis.c7
-rw-r--r--xc/lib/X11/XKBCvt.c28
-rw-r--r--xc/lib/X11/Ximint.h91
-rw-r--r--xc/lib/X11/XimintL.h22
-rw-r--r--xc/lib/X11/XimintP.h8
-rw-r--r--xc/lib/X11/XlcPubI.h141
-rw-r--r--xc/lib/X11/XlcPublic.h110
-rw-r--r--xc/lib/X11/Xlcint.h265
-rw-r--r--xc/lib/X11/Xlib.h103
-rw-r--r--xc/lib/X11/XomGeneric.h5
-rw-r--r--xc/lib/X11/Xresource.h4
-rw-r--r--xc/lib/X11/Xrm.c50
-rw-r--r--xc/lib/X11/Xutil.h89
-rw-r--r--xc/lib/X11/Xvarargs.h30
-rw-r--r--xc/lib/X11/imConv.c1397
-rw-r--r--xc/lib/X11/imDefIc.c288
-rw-r--r--xc/lib/X11/imDefIm.c32
-rw-r--r--xc/lib/X11/imDefLkup.c100
-rw-r--r--xc/lib/X11/imKStoUCS.c330
-rw-r--r--xc/lib/X11/imLcIc.c23
-rw-r--r--xc/lib/X11/imLcIm.c27
-rw-r--r--xc/lib/X11/imLcLkup.c93
-rw-r--r--xc/lib/X11/imLcPrs.c27
-rw-r--r--xc/lib/X11/imThaiFlt.c69
-rw-r--r--xc/lib/X11/imThaiIc.c33
-rw-r--r--xc/lib/X11/imThaiIm.c28
-rw-r--r--xc/lib/X11/lcCT.c212
-rw-r--r--xc/lib/X11/lcCharSet.c41
-rw-r--r--xc/lib/X11/lcConv.c132
-rw-r--r--xc/lib/X11/lcDB.c568
-rw-r--r--xc/lib/X11/lcDefConv.c364
-rw-r--r--xc/lib/X11/lcDynamic.c13
-rw-r--r--xc/lib/X11/lcEuc.c441
-rw-r--r--xc/lib/X11/lcFile.c163
-rw-r--r--xc/lib/X11/lcGenConv.c1063
-rw-r--r--xc/lib/X11/lcGeneric.c475
-rw-r--r--xc/lib/X11/lcInit.c84
-rw-r--r--xc/lib/X11/lcJis.c361
-rw-r--r--xc/lib/X11/lcPrTxt.c83
-rw-r--r--xc/lib/X11/lcPubWrap.c12
-rw-r--r--xc/lib/X11/lcPublic.c68
-rw-r--r--xc/lib/X11/lcRM.c190
-rw-r--r--xc/lib/X11/lcSjis.c464
-rw-r--r--xc/lib/X11/lcStd.c51
-rw-r--r--xc/lib/X11/lcTxtPr.c78
-rw-r--r--xc/lib/X11/lcUTF8.c709
-rw-r--r--xc/lib/X11/lcUniConv/armscii_8.h9
-rw-r--r--xc/lib/X11/lcUniConv/ascii.h7
-rw-r--r--xc/lib/X11/lcUniConv/big5.h4142
-rw-r--r--xc/lib/X11/lcUniConv/big5_emacs.h164
-rw-r--r--xc/lib/X11/lcUniConv/cp1133.h11
-rw-r--r--xc/lib/X11/lcUniConv/gb2312.h7
-rw-r--r--xc/lib/X11/lcUniConv/georgian_academy.h11
-rw-r--r--xc/lib/X11/lcUniConv/georgian_ps.h11
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_1.h7
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_10.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_13.h10
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_14.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_15.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_16.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_2.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_3.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_4.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_5.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_6.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_7.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_8.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_9.h9
-rw-r--r--xc/lib/X11/lcUniConv/iso8859_9e.h38
-rw-r--r--xc/lib/X11/lcUniConv/jisx0201.h13
-rw-r--r--xc/lib/X11/lcUniConv/jisx0208.h7
-rw-r--r--xc/lib/X11/lcUniConv/jisx0212.h7
-rw-r--r--xc/lib/X11/lcUniConv/koi8_c.h10
-rw-r--r--xc/lib/X11/lcUniConv/koi8_r.h9
-rw-r--r--xc/lib/X11/lcUniConv/koi8_u.h9
-rw-r--r--xc/lib/X11/lcUniConv/ksc5601.h7
-rw-r--r--xc/lib/X11/lcUniConv/microsoft_cp1251.h12
-rw-r--r--xc/lib/X11/lcUniConv/microsoft_cp1255.h142
-rw-r--r--xc/lib/X11/lcUniConv/microsoft_cp1256.h154
-rw-r--r--xc/lib/X11/lcUniConv/mulelao.h9
-rw-r--r--xc/lib/X11/lcUniConv/tatar_cyr.h10
-rw-r--r--xc/lib/X11/lcUniConv/tcvn.h11
-rw-r--r--xc/lib/X11/lcUniConv/tis620.h9
-rw-r--r--xc/lib/X11/lcUniConv/ucs2be.h32
-rw-r--r--xc/lib/X11/lcUniConv/utf8.h52
-rw-r--r--xc/lib/X11/lcUniConv/viscii.h11
-rw-r--r--xc/lib/X11/lcUtil.c81
-rw-r--r--xc/lib/X11/lcWrap.c227
-rw-r--r--xc/lib/X11/mbWMProps.c17
-rw-r--r--xc/lib/X11/mbWrap.c23
-rw-r--r--xc/lib/X11/omDefault.c255
-rw-r--r--xc/lib/X11/omGeneric.c83
-rw-r--r--xc/lib/X11/omImText.c24
-rw-r--r--xc/lib/X11/omText.c25
-rw-r--r--xc/lib/X11/omTextEsc.c20
-rw-r--r--xc/lib/X11/omTextExt.c22
-rw-r--r--xc/lib/X11/omTextPer.c33
-rw-r--r--xc/lib/X11/omXChar.c51
-rw-r--r--xc/lib/X11/utf8WMProps.c99
-rw-r--r--xc/lib/X11/utf8Wrap.c251
-rw-r--r--xc/lib/X11/wcWrap.c23
103 files changed, 10253 insertions, 5036 deletions
diff --git a/xc/lib/X11/ICWrap.c b/xc/lib/X11/ICWrap.c
index 32df984cb..486fbc9ae 100644
--- a/xc/lib/X11/ICWrap.c
+++ b/xc/lib/X11/ICWrap.c
@@ -60,6 +60,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ICWrap.c,v 1.3 2000/11/29 17:40:23 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
@@ -424,7 +425,8 @@ XIMOfIC(ic)
return ic->core.im;
}
-char *XmbResetIC(ic)
+char *
+XmbResetIC(ic)
XIC ic;
{
if (ic->core.im)
@@ -432,7 +434,8 @@ char *XmbResetIC(ic)
return (char *)NULL;
}
-wchar_t *XwcResetIC(ic)
+wchar_t *
+XwcResetIC(ic)
XIC ic;
{
if (ic->core.im)
@@ -440,6 +443,15 @@ wchar_t *XwcResetIC(ic)
return (wchar_t *)NULL;
}
+char *
+Xutf8ResetIC(ic)
+ XIC ic;
+{
+ if (ic->core.im)
+ return (*ic->methods->utf8_reset)(ic);
+ return (char *)NULL;
+}
+
int
XmbLookupString(ic, ev, buffer, nbytes, keysym, status)
XIC ic;
@@ -469,3 +481,18 @@ XwcLookupString(ic, ev, buffer, nchars, keysym, status)
keysym, status);
return XLookupNone;
}
+
+int
+Xutf8LookupString(ic, ev, buffer, nbytes, keysym, status)
+ XIC ic;
+ register XKeyEvent *ev;
+ char *buffer;
+ int nbytes;
+ KeySym *keysym;
+ Status *status;
+{
+ if (ic->core.im)
+ return (*ic->methods->utf8_lookup_string) (ic, ev, buffer, nbytes,
+ keysym, status);
+ return XLookupNone;
+}
diff --git a/xc/lib/X11/Imakefile b/xc/lib/X11/Imakefile
index f93a73405..f1665c994 100644
--- a/xc/lib/X11/Imakefile
+++ b/xc/lib/X11/Imakefile
@@ -3,7 +3,7 @@ XCOMM $TOG: Imakefile /main/196 1997/05/20 10:06:09 kaleb $
-XCOMM $XFree86: xc/lib/X11/Imakefile,v 3.32 2000/10/24 18:07:36 dawes Exp $
+XCOMM $XFree86: xc/lib/X11/Imakefile,v 3.34 2000/11/28 18:49:25 dawes Exp $
#define DoNormalLib NormalLibX11
#define DoSharedLib SharedLibX11
#define DoExtraLib SharedLibX11
@@ -677,8 +677,10 @@ SRCS3 = \
OMWrap.c \
lcWrap.c \
mbWMProps.c \
+ utf8WMProps.c \
mbWrap.c \
wcWrap.c \
+ utf8Wrap.c \
FilterEv.c \
RegstFlt.c \
locking.c \
@@ -758,8 +760,10 @@ OBJS3 = \
OMWrap.o \
lcWrap.o \
mbWMProps.o \
+ utf8WMProps.o \
mbWrap.o \
wcWrap.o \
+ utf8Wrap.o \
FilterEv.o \
RegstFlt.o \
locking.o \
@@ -768,13 +772,8 @@ OBJS3 = \
ximtrans.o \
$(XKBOBJS) $(LCOBJS) $(MISCOBJS)
-#ifdef RsArchitecture
-LCDEPSYMSRCS = aixlcLoad.c
-#endif
-
LCSRCS = \
SetLocale.c \
- $(LCDEPSYMSRCS) \
imCallbk.c \
imConv.c \
imDefFlt.c \
@@ -787,6 +786,7 @@ LCSRCS = \
imImSw.c \
imInsClbk.c \
imInt.c \
+ imKStoUCS.c \
imLcFlt.c \
imLcGIc.c \
imLcIc.c \
@@ -831,18 +831,8 @@ LCSRCS = \
omTextPer.c \
omXChar.c
-/*
-#if defined(SunArchitecture) && defined(HasSharedLibraries)
-LCDEPOBJS = XsunDL.o
-#endif
-*/
-#ifdef RsArchitecture
-LCDEPOBJS = aixlcLoad.o
-#endif
-
LCOBJS = \
SetLocale.o \
- $(LCDEPOBJS) \
imCallbk.o \
imConv.o \
imDefFlt.o \
@@ -855,6 +845,7 @@ LCOBJS = \
imImSw.o \
imInsClbk.o \
imInt.o \
+ imKStoUCS.o \
imLcFlt.o \
imLcGIc.o \
imLcIc.o \
diff --git a/xc/lib/X11/OpenDis.c b/xc/lib/X11/OpenDis.c
index 32d4b2136..4aa970bbd 100644
--- a/xc/lib/X11/OpenDis.c
+++ b/xc/lib/X11/OpenDis.c
@@ -20,7 +20,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
-/* $XFree86: xc/lib/X11/OpenDis.c,v 3.7 2000/06/16 01:50:18 dawes Exp $ */
+/* $XFree86: xc/lib/X11/OpenDis.c,v 3.8 2000/11/27 05:06:44 dawes Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
@@ -397,6 +397,11 @@ Display *XOpenDisplay (display)
* now extract the vendor string... String must be null terminated,
* padded to multiple of 4 bytes.
*/
+ /* Check for a sane vendor string length */
+ if (u.setup->nbytesVendor > 256) {
+ OutOfMemory(dpy, setup);
+ return (NULL);
+ }
dpy->vendor = (char *) Xmalloc((unsigned) (u.setup->nbytesVendor + 1));
if (dpy->vendor == NULL) {
OutOfMemory(dpy, setup);
diff --git a/xc/lib/X11/XKBCvt.c b/xc/lib/X11/XKBCvt.c
index 5ed977287..71d3d05ae 100644
--- a/xc/lib/X11/XKBCvt.c
+++ b/xc/lib/X11/XKBCvt.c
@@ -22,7 +22,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/lib/X11/XKBCvt.c,v 3.27 2000/10/27 18:30:48 dawes Exp $ */
+/* $XFree86: xc/lib/X11/XKBCvt.c,v 3.28 2000/11/28 17:25:07 dawes Exp $ */
#include <stdio.h>
#include <sys/types.h>
@@ -34,6 +34,7 @@ from The Open Group.
#include "Xlibint.h"
#include "Xlcint.h"
#include "XlcPubI.h"
+#include "Ximint.h"
#include <X11/Xutil.h>
#include <X11/Xmd.h>
#define XK_LATIN1
@@ -100,24 +101,6 @@ _XkbHandleSpecialSym(keysym, buffer, nbytes, extra_rtrn)
return 1;
}
-extern int
-_XimGetCharCode (
-#if NeedFunctionPrototypes
- unsigned long /* locale_code */,
- KeySym /* keysym */,
- unsigned char* /* buf */,
- int /* nbytes */
-#endif
-);
-
-extern unsigned long Const*
-_XimGetLocaleCode (
-#if NeedFunctionPrototypes
- _Xconst char* /* encoding_name */,
- XlcCharSet* /* pass NULL here */
-#endif
-);
-
/*ARGSUSED*/
static int
#if NeedFunctionPrototypes
@@ -135,14 +118,11 @@ _XkbKSToKnownSet (priv, keysym, buffer, nbytes, extra_rtrn)
int *extra_rtrn;
#endif
{
- unsigned long keysymSet;
char tbuf[8],*buf;
if (extra_rtrn)
*extra_rtrn= 0;
- keysymSet = *((unsigned long Const *)priv);
-
/* convert "dead" diacriticals for dumb applications */
if ( (keysym&0xffffff00)== 0xfe00 ) {
switch ( keysym ) {
@@ -173,7 +153,7 @@ _XkbKSToKnownSet (priv, keysym, buffer, nbytes, extra_rtrn)
if ((keysym&0xffffff00)==0xff00) {
return _XkbHandleSpecialSym(keysym, buf, nbytes, extra_rtrn);
}
- return _XimGetCharCode (keysymSet, keysym, (unsigned char *)buf, nbytes);
+ return _XimGetCharCode (priv, keysym, (unsigned char *)buf, nbytes);
}
typedef struct _XkbToKS {
@@ -263,7 +243,7 @@ _XkbGetConverters(encoding_name, cvt_rtrn)
if ( !cvt_rtrn ) return 0;
cvt_rtrn->KSToMB = _XkbKSToKnownSet;
- cvt_rtrn->KSToMBPriv = (XPointer) _XimGetLocaleCode(encoding_name, NULL);
+ cvt_rtrn->KSToMBPriv = _XimGetLocaleCode(encoding_name);
cvt_rtrn->MBToKS = _XkbKnownSetToKS;
cvt_rtrn->MBToKSPriv = NULL;
cvt_rtrn->KSToUpper = __XkbDefaultToUpper;
diff --git a/xc/lib/X11/Ximint.h b/xc/lib/X11/Ximint.h
index aa9c92c6f..7eb96e5e7 100644
--- a/xc/lib/X11/Ximint.h
+++ b/xc/lib/X11/Ximint.h
@@ -30,7 +30,7 @@ PERFORMANCE OF THIS SOFTWARE.
makoto@sm.sony.co.jp
******************************************************************/
-/* $XFree86: xc/lib/X11/Ximint.h,v 3.5 2000/06/13 02:28:28 dawes Exp $ */
+/* $XFree86: xc/lib/X11/Ximint.h,v 3.7 2000/11/28 18:49:25 dawes Exp $ */
#ifndef _XIMINT_H
#define _XIMINT_H
@@ -61,12 +61,14 @@ typedef struct _Xic *Xic;
*/
typedef struct _XimCommonPrivateRec {
+ /* This struct is also inlined in XimLocalPrivateRec, XimProtoPrivateRec. */
XlcConv ctom_conv;
XlcConv ctow_conv;
+ XlcConv ctoutf8_conv;
XlcConv cstomb_conv;
XlcConv cstowc_conv;
- XlcCharSet keyboard_charset;
- unsigned long locale_code;
+ XlcConv cstoutf8_conv;
+ XlcConv ucs_conv;
} XimCommonPrivateRec;
typedef union _XIMPrivateRec {
@@ -187,10 +189,24 @@ typedef struct _XimDefICValues {
* Global symbols
*/
-unsigned long Const * _XimGetLocaleCode (
+XPointer _XimGetLocaleCode (
#if NeedFunctionPrototypes
- _Xconst char* encoding_name,
- XlcCharSet* cset_ret
+ Const char *encoding_name
+#endif
+);
+
+int _XimGetCharCode (
+#if NeedFunctionPrototypes
+ XPointer conv,
+ KeySym keysym,
+ unsigned char *buf,
+ int nbytes
+#endif
+);
+
+unsigned int KeySymToUcs4 (
+#if NeedFunctionPrototypes
+ KeySym keysym
#endif
);
@@ -751,9 +767,9 @@ extern int _Ximctstombs(
#if NeedFunctionPrototypes
XIM im,
char *from,
- int from_len,
+ int from_len,
char *to,
- int to_len,
+ int to_len,
Status *state
#endif
);
@@ -769,13 +785,24 @@ extern int _Ximctstowcs(
#endif
);
+extern int _Ximctstoutf8(
+#if NeedFunctionPrototypes
+ XIM im,
+ char *from,
+ int from_len,
+ char *to,
+ int to_len,
+ Status *state
+#endif
+);
+
extern int _XimLcctstombs(
#if NeedFunctionPrototypes
XIM im,
char *from,
- int from_len,
+ int from_len,
char *to,
- int to_len,
+ int to_len,
Status *state
#endif
);
@@ -791,6 +818,17 @@ extern int _XimLcctstowcs(
#endif
);
+extern int _XimLcctstoutf8(
+#if NeedFunctionPrototypes
+ XIM im,
+ char *from,
+ int from_len,
+ char *to,
+ int to_len,
+ Status *state
+#endif
+);
+
extern void _XimSetHeader(
#if NeedFunctionPrototypes
XPointer buf,
@@ -829,6 +867,17 @@ extern int _XimProtoWcLookupString(
#endif
);
+extern int _XimProtoUtf8LookupString(
+#if NeedFunctionPrototypes
+ XIC xic,
+ XKeyEvent *ev,
+ char *buffer,
+ int bytes,
+ KeySym *keysym,
+ Status *state
+#endif
+);
+
extern void _XimRegisterFilter(
#if NeedFunctionPrototypes
Xic ic
@@ -895,6 +944,17 @@ extern int _XimLookupWCText(
#endif
);
+extern int _XimLookupUTF8Text(
+#if NeedFunctionPrototypes
+ Xic ic,
+ XKeyEvent *event,
+ char *buffer,
+ int nbytes,
+ KeySym *keysym,
+ XComposeStatus *status
+#endif
+);
+
extern EVENTMASK _XimGetWindowEventmask(
#if NeedFunctionPrototypes
Xic ic
@@ -1087,6 +1147,17 @@ extern int _XimLocalWcLookupString(
#endif
);
+extern int _XimLocalUtf8LookupString(
+#if NeedFunctionPrototypes
+ XIC ic,
+ XKeyEvent *ev,
+ char *buffer,
+ int bytes,
+ KeySym *keysym,
+ Status *status
+#endif
+);
+
extern Bool _XimThaiFilter(
#if NeedFunctionPrototypes
Display *d,
diff --git a/xc/lib/X11/XimintL.h b/xc/lib/X11/XimintL.h
index 80ff05de0..539d800d6 100644
--- a/xc/lib/X11/XimintL.h
+++ b/xc/lib/X11/XimintL.h
@@ -32,7 +32,7 @@ THIS SOFTWARE.
frankyling@hgrd01.enet.dec.com
******************************************************************/
-/* $XFree86: xc/lib/X11/XimintL.h,v 1.3 2000/06/14 18:20:33 dawes Exp $ */
+/* $XFree86: xc/lib/X11/XimintL.h,v 1.5 2000/11/28 18:49:25 dawes Exp $ */
#ifndef _XIMINTL_H
#define _XIMINTL_H
@@ -51,18 +51,22 @@ typedef struct _DefTree {
KeySym keysym; /* leaf only */
char *mb;
wchar_t *wc; /* make from mb */
+ char *utf8; /* make from mb */
KeySym ks;
} DefTree;
typedef struct _XimLocalPrivateRec {
- XlcConv ctom_conv;
- XlcConv ctow_conv;
- XlcConv cstomb_conv;
- XlcConv cstowc_conv;
- XlcCharSet keyboard_charset;
- unsigned long locale_code;
- XIC current_ic;
- DefTree *top;
+ /* The first fields are identical with XimCommonPrivateRec. */
+ XlcConv ctom_conv;
+ XlcConv ctow_conv;
+ XlcConv ctoutf8_conv;
+ XlcConv cstomb_conv;
+ XlcConv cstowc_conv;
+ XlcConv cstoutf8_conv;
+ XlcConv ucs_conv;
+
+ XIC current_ic;
+ DefTree *top;
} XimLocalPrivateRec;
typedef struct _XicThaiPart {
diff --git a/xc/lib/X11/XimintP.h b/xc/lib/X11/XimintP.h
index ec873fab1..0831826d2 100644
--- a/xc/lib/X11/XimintP.h
+++ b/xc/lib/X11/XimintP.h
@@ -35,7 +35,7 @@ PERFORMANCE OF THIS SOFTWARE.
miyamoto@jrd.dec.com
******************************************************************/
-/* $XFree86: xc/lib/X11/XimintP.h,v 1.3 2000/06/14 18:20:33 dawes Exp $ */
+/* $XFree86: xc/lib/X11/XimintP.h,v 1.5 2000/11/28 18:49:26 dawes Exp $ */
#ifndef _XIMINTP_H
#define _XIMINTP_H
@@ -102,12 +102,14 @@ typedef Bool (*XimTransCallDispatcher)(
* private part of IM
*/
typedef struct _XimProtoPrivateRec {
+ /* The first fields are identical with XimCommonPrivateRec. */
XlcConv ctom_conv;
XlcConv ctow_conv;
+ XlcConv ctoutf8_conv;
XlcConv cstomb_conv;
XlcConv cstowc_conv;
- XlcCharSet keyboard_charset;
- unsigned long locale_code;
+ XlcConv cstoutf8_conv;
+ XlcConv ucs_conv;
Window im_window;
XIMID imid;
diff --git a/xc/lib/X11/XlcPubI.h b/xc/lib/X11/XlcPubI.h
index d78ac3ded..4d1c577e4 100644
--- a/xc/lib/X11/XlcPubI.h
+++ b/xc/lib/X11/XlcPubI.h
@@ -23,7 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
-/* $XFree86: xc/lib/X11/XlcPubI.h,v 3.5 2000/02/12 02:54:07 dawes Exp $ */
+/* $XFree86: xc/lib/X11/XlcPubI.h,v 3.6 2000/11/28 18:49:26 dawes Exp $ */
#ifndef _XLCPUBLICI_H_
#define _XLCPUBLICI_H_
@@ -41,40 +41,30 @@
typedef struct _XLCdPublicMethodsRec *XLCdPublicMethods;
typedef XLCd (*XlcPubCreateProc)(
-#if NeedFunctionPrototypes
- _Xconst char* /* name */,
- XLCdMethods /* methods */
-#endif
+ const char* name,
+ XLCdMethods methods
);
typedef Bool (*XlcPubInitializeProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
typedef void (*XlcPubDestroyProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
typedef char* (*XlcPubGetValuesProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- XlcArgList /* args */,
- int /* num_args */
-#endif
+ XLCd lcd,
+ XlcArgList args,
+ int num_args
);
typedef void (*XlcPubGetResourceProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- char* /* category */,
- char* /* class */,
- char*** /* value */,
- int* /* count */
-#endif
+ XLCd lcd,
+ const char* category,
+ const char* _class,
+ char*** value,
+ int* count
);
typedef struct _XLCdPublicMethodsPart {
@@ -103,7 +93,7 @@ typedef struct _XLCdPublicPart {
char *encoding_name; /* encoding name */
int mb_cur_max; /* ANSI C MB_CUR_MAX */
Bool is_state_depend; /* state-depend encoding */
- char *default_string; /* for XDefaultString() */
+ const char *default_string; /* for XDefaultString() */
XPointer xlocale_db;
} XLCdPublicPart;
@@ -117,63 +107,57 @@ extern XLCdMethods _XlcPublicMethods;
_XFUNCPROTOBEGIN
extern XLCd _XlcCreateLC(
-#if NeedFunctionPrototypes
- _Xconst char* /* name */,
- XLCdMethods /* methods */
-#endif
+ const char* name,
+ XLCdMethods methods
);
extern void _XlcDestroyLC(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
extern Bool _XlcParseCharSet(
-#if NeedFunctionPrototypes
- XlcCharSet /* charset */
-#endif
+ XlcCharSet charset
);
extern XlcCharSet _XlcCreateDefaultCharSet(
-#if NeedFunctionPrototypes
- _Xconst char* /* name */,
- _Xconst char* /* control_sequence */
-#endif
+ const char* name,
+ const char* control_sequence
);
extern XlcCharSet _XlcAddCT(
-#if NeedFunctionPrototypes
- _Xconst char* /* name */,
- _Xconst char* /* control_sequence */
-#endif
+ const char* name,
+ const char* control_sequence
);
+extern Bool _XlcInitCTInfo (void);
+
extern XrmMethods _XrmDefaultInitParseInfo(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- XPointer* /* state */
-#endif
+ XLCd lcd,
+ XPointer* state
);
extern int _XmbTextPropertyToTextList(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* dpy */,
- XTextProperty* /* text_prop */,
- char*** /* list_ret */,
- int* /* count_ret */
-#endif
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ char*** list_ret,
+ int* count_ret
);
extern int _XwcTextPropertyToTextList(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* dpy */,
- XTextProperty* /* text_prop */,
- wchar_t*** /* list_ret */,
- int* /* count_ret */
-#endif
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ wchar_t*** list_ret,
+ int* count_ret
+);
+
+extern int _Xutf8TextPropertyToTextList(
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ char*** list_ret,
+ int* count_ret
);
extern int _XmbTextListToTextProperty(
@@ -198,6 +182,17 @@ extern int _XwcTextListToTextProperty(
#endif
);
+extern int _Xutf8TextListToTextProperty(
+#if NeedFunctionPrototypes
+ XLCd /* lcd */,
+ Display* /* dpy */,
+ char** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop */
+#endif
+);
+
extern void _XwcFreeStringList(
#if NeedFunctionPrototypes
XLCd /* lcd */,
@@ -206,39 +201,29 @@ extern void _XwcFreeStringList(
);
extern int _XlcResolveLocaleName(
-#if NeedFunctionPrototypes
- char* /* lc_name */,
- XLCdPublicPart* /* pub */
-#endif
+ const char* lc_name,
+ XLCdPublicPart* pub
);
extern int _XlcResolveI18NPath(
-#if NeedFunctionPrototypes
- char* /* buf */,
- int /* buf_len */
-#endif
+ char* buf,
+ int buf_len
);
extern XPointer _XlcCreateLocaleDataBase(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
extern void _XlcDestroyLocaleDataBase(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
extern void _XlcGetLocaleDataBase(
-#if NeedFunctionPrototypes
XLCd /* lcd */,
- char* /* category */,
- char* /* name */,
+ const char* /* category */,
+ const char* /* name */,
char*** /* value */,
int* /* count */
-#endif
);
_XFUNCPROTOEND
diff --git a/xc/lib/X11/XlcPublic.h b/xc/lib/X11/XlcPublic.h
index 36842a314..d57d9f83c 100644
--- a/xc/lib/X11/XlcPublic.h
+++ b/xc/lib/X11/XlcPublic.h
@@ -31,7 +31,7 @@
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
-/* $XFree86: xc/lib/X11/XlcPublic.h,v 1.5 2000/02/29 03:09:03 dawes Exp $ */
+/* $XFree86: xc/lib/X11/XlcPublic.h,v 1.7 2000/11/28 18:49:26 dawes Exp $ */
/*
* Most of this API is documented in i18n/Framework.PS
*/
@@ -106,12 +106,10 @@ typedef struct _XlcCharSetRec {
typedef struct _XlcConvRec *XlcConv;
typedef XlcConv (*XlcOpenConverterProc)(
-#if NeedFunctionPrototypes
- XLCd /* from_lcd */,
- char* /* from_type */,
- XLCd /* to_lcd */,
- char* /* to_type */
-#endif
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type
);
typedef void (*XlcCloseConverterProc)(
@@ -155,7 +153,9 @@ typedef struct _XlcConvMethodsRec{
#define XlcNUtf8String "utf8String"
#define XlcNCharSet "charSet"
#define XlcNCTCharSet "CTcharSet"
+#define XlcNFontCharSet "FontCharSet"
#define XlcNChar "char"
+#define XlcNUcsChar "UCSchar"
typedef struct _XlcConvRec {
XlcConvMethods methods;
@@ -185,22 +185,16 @@ extern char *_XGetLCValues(
);
extern XlcCharSet _XlcGetCharSet(
-#if NeedFunctionPrototypes
- _Xconst char* /* name */
-#endif
+ const char* name
);
extern XlcCharSet _XlcGetCharSetWithSide(
-#if NeedFunctionPrototypes
- _Xconst char* /* encoding_name */,
- XlcSide /* side */
-#endif
+ const char* encoding_name,
+ XlcSide side
);
extern Bool _XlcAddCharSet(
-#if NeedFunctionPrototypes
- XlcCharSet /* charset */
-#endif
+ XlcCharSet charset
);
extern char *_XlcGetCSValues(
@@ -211,63 +205,49 @@ extern char *_XlcGetCSValues(
);
extern XlcConv _XlcOpenConverter(
-#if NeedFunctionPrototypes
- XLCd /* from_lcd */,
- char* /* from_type */,
- XLCd /* to_lcd */,
- char* /* to_type */
-#endif
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type
);
extern void _XlcCloseConverter(
-#if NeedFunctionPrototypes
- XlcConv /* conv */
-#endif
+ XlcConv conv
);
extern int _XlcConvert(
-#if NeedFunctionPrototypes
- XlcConv /* conv */,
- XPointer* /* from */,
- int* /* from_left */,
- XPointer* /* to */,
- int* /* to_left */,
- XPointer* /* args */,
- int /* num_args */
-#endif
+ XlcConv conv,
+ XPointer* from,
+ int* from_left,
+ XPointer* to,
+ int* to_left,
+ XPointer* args,
+ int num_args
);
extern void _XlcResetConverter(
-#if NeedFunctionPrototypes
- XlcConv /* conv */
-#endif
+ XlcConv conv
);
extern Bool _XlcSetConverter(
-#if NeedFunctionPrototypes
- XLCd /* from_lcd */,
- char* /* from_type */,
- XLCd /* to_lcd */,
- char* /* to_type */,
- XlcOpenConverterProc /* open_converter */
-#endif
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type,
+ XlcOpenConverterProc open_converter
);
extern void _XlcGetResource(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- char* /* category */,
- char* /* class */,
- char*** /* value */,
- int* /* count */
-#endif
+ XLCd lcd,
+ const char* category,
+ const char* _class,
+ char*** value,
+ int* count
);
extern char *_XlcFileName(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- char* /* category */
-#endif
+ XLCd lcd,
+ const char* category
);
extern int _Xwcslen(
@@ -283,19 +263,19 @@ extern wchar_t *_Xwcscpy(
#endif
);
+/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
+ Like strcasecmp in an ASCII locale. */
extern int _XlcCompareISOLatin1(
-#if NeedFunctionPrototypes
- char* /* str1 */,
- char* /* str2 */
-#endif
+ const char* str1,
+ const char* str2
);
+/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
+ case of ASCII letters. Like strncasecmp in an ASCII locale. */
extern int _XlcNCompareISOLatin1(
-#if NeedFunctionPrototypes
- char* /* str1 */,
- char* /* str2 */,
- int /* len */
-#endif
+ const char* str1,
+ const char* str2,
+ int len
);
_XFUNCPROTOEND
diff --git a/xc/lib/X11/Xlcint.h b/xc/lib/X11/Xlcint.h
index 49826cb2b..5ac26880b 100644
--- a/xc/lib/X11/Xlcint.h
+++ b/xc/lib/X11/Xlcint.h
@@ -22,7 +22,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/lib/X11/Xlcint.h,v 3.5 2000/02/12 02:54:07 dawes Exp $ */
+/* $XFree86: xc/lib/X11/Xlcint.h,v 3.6 2000/11/28 18:49:27 dawes Exp $ */
/*
* Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
@@ -156,6 +156,7 @@ typedef struct {
XICCallback draw_callback;
} ICStatusAttributes, *ICStatusAttributesPtr;
+
/*
* Methods for Xrm parsing
*/
@@ -166,51 +167,44 @@ typedef struct {
/* Sets the state to the initial state.
Initiates a sequence of calls to the XmbCharProc. */
typedef void (*XmbInitProc)(
-#if NeedFunctionPrototypes
- XPointer /* state */
-#endif
+ XPointer state
);
/* Transforms one multibyte character, starting at str, and return a 'char'
in the same parsing class (not a wide character!). Returns the number of
consumed bytes in *lenp. */
typedef char (*XmbCharProc)(
-#if NeedFunctionPrototypes
- XPointer /* state */,
- char* /* str */,
- int* /* lenp */
-#endif
+ XPointer state,
+ const char * str,
+ int* lenp
);
/* Terminates a sequence of calls to the XmbCharProc. */
typedef void (*XmbFinishProc)(
-#if NeedFunctionPrototypes
- XPointer /* state */
-#endif
+ XPointer state
);
/* Returns the name of the state's locale, as a static string. */
-typedef char* (*XlcNameProc)(
-#if NeedFunctionPrototypes
- XPointer /* state */
-#endif
+typedef const char* (*XlcNameProc)(
+ XPointer state
);
/* Frees the state, which was allocated by the locale's init_parse_info
function. */
typedef void (*XrmDestroyProc)(
-#if NeedFunctionPrototypes
- XPointer /* state */
-#endif
+ XPointer state
);
+/* Set of methods for Xrm parsing. */
typedef struct {
XmbInitProc mbinit;
XmbCharProc mbchar;
XmbFinishProc mbfinish;
XlcNameProc lcname;
XrmDestroyProc destroy;
-} XrmMethodsRec, *XrmMethods;
+} XrmMethodsRec;
+typedef const XrmMethodsRec *XrmMethods;
+
typedef struct _XLCd *XLCd; /* need forward reference */
@@ -284,58 +278,46 @@ typedef XrmMethods (*XrmInitParseInfoProc)(
);
typedef int (*XmbTextPropertyToTextListProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* display */,
- XTextProperty* /* text_prop */,
- char*** /* list_return */,
- int* /* count_return */
-#endif
+ XLCd lcd,
+ Display* display,
+ const XTextProperty* text_prop,
+ char*** list_return,
+ int* count_return
);
typedef int (*XwcTextPropertyToTextListProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* display */,
- XTextProperty* /* text_prop */,
- wchar_t*** /* list_return */,
- int* /* count_return */
-#endif
+ XLCd lcd,
+ Display* display,
+ const XTextProperty* text_prop,
+ wchar_t*** list_return,
+ int* count_return
);
typedef int (*XmbTextListToTextPropertyProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* display */,
- char** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop_return */
-#endif
+ XLCd lcd,
+ Display* display,
+ char** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
);
typedef int (*XwcTextListToTextPropertyProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* display */,
- wchar_t** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop_return */
-#endif
+ XLCd lcd,
+ Display* display,
+ wchar_t** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
);
typedef void (*XwcFreeStringListProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- wchar_t** /* list */
-#endif
+ XLCd lcd,
+ wchar_t** list
);
-typedef char* (*XDefaultStringProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+typedef const char* (*XDefaultStringProc)(
+ XLCd lcd
);
typedef struct {
@@ -346,8 +328,10 @@ typedef struct {
XrmInitParseInfoProc init_parse_info;
XmbTextPropertyToTextListProc mb_text_prop_to_list;
XwcTextPropertyToTextListProc wc_text_prop_to_list;
+ XmbTextPropertyToTextListProc utf8_text_prop_to_list;
XmbTextListToTextPropertyProc mb_text_list_to_prop;
XwcTextListToTextPropertyProc wc_text_list_to_prop;
+ XmbTextListToTextPropertyProc utf8_text_list_to_prop;
XwcFreeStringListProc wc_free_string_list;
XDefaultStringProc default_string;
XRegisterIMInstantiateCBProc register_callback;
@@ -618,6 +602,14 @@ typedef struct {
XwcTextPerCharExtentsProc wc_extents_per_char;
XwcDrawStringProc wc_draw_string;
XwcDrawImageStringProc wc_draw_image_string;
+
+ /* UTF-8 text drawing methods */
+
+ XmbTextEscapementProc utf8_escapement;
+ XmbTextExtentsProc utf8_extents;
+ XmbTextPerCharExtentsProc utf8_extents_per_char;
+ XmbDrawStringProc utf8_draw_string;
+ XmbDrawImageStringProc utf8_draw_image_string;
} XOCMethodsRec, *XOCMethods;
@@ -692,6 +684,11 @@ typedef struct {
XIM, char*, int, wchar_t*, int, Status *
#endif
);
+ int (*ctstoutf8)(
+#if NeedFunctionPrototypes
+ XIM, char*, int, char*, int, Status *
+#endif
+ );
} XIMMethodsRec, *XIMMethods;
/*
@@ -775,6 +772,11 @@ typedef struct {
XIC
#endif
);
+ char* (*utf8_reset)(
+#if NeedFunctionPrototypes
+ XIC
+#endif
+ );
int (*mb_lookup_string)(
#if NeedFunctionPrototypes
XIC, XKeyEvent*, char*, int, KeySym*, Status*
@@ -785,6 +787,11 @@ typedef struct {
XIC, XKeyEvent*, wchar_t*, int, KeySym*, Status*
#endif
);
+ int (*utf8_lookup_string)(
+#if NeedFunctionPrototypes
+ XIC, XKeyEvent*, char*, int, KeySym*, Status*
+#endif
+ );
} XICMethodsRec, *XICMethods;
@@ -834,44 +841,30 @@ typedef struct _XIC {
XLCd object with appropriate locale methods and returns it. May return
NULL; in this case, the remaining loaders are tried. */
typedef XLCd (*XLCdLoadProc)(
-#if NeedFunctionPrototypes
- _Xconst char* /* name */
-#endif
+ const char* name
);
_XFUNCPROTOBEGIN
extern XLCd _XOpenLC(
-#if NeedFunctionPrototypes
- _Xconst char* /* name */
-#endif
+ const char* name
);
extern void _XCloseLC(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
-extern XLCd _XlcCurrentLC(
-#if NeedFunctionPrototypes
- void
-#endif
-);
+extern XLCd _XlcCurrentLC (void);
extern Bool _XlcValidModSyntax(
-#if NeedFunctionPrototypes
- char* /* mods */,
- char** /* valid */
-#endif
+ const char* mods,
+ const char* const * valid
);
extern char *_XlcDefaultMapModifiers(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- char* /* user_mods */,
- char* /* prog_mods */
-#endif
+ XLCd lcd,
+ const char* user_mods,
+ const char* prog_mods
);
extern void _XIMCompileResourceList(
@@ -897,9 +890,7 @@ extern char ** _XParseBaseFontNameList(
);
extern XrmMethods _XrmInitParseInfo(
-#if NeedFunctionPrototypes
- XPointer* /* statep */
-#endif
+ XPointer* statep
);
extern void _XRegisterFilterByMask(
@@ -954,70 +945,94 @@ extern void _XUnregisterFilter(
);
extern void _XlcCountVaList(
-#if NeedFunctionPrototypes
- va_list /* var */,
- int* /* count_return */
-#endif
+ va_list var,
+ int* count_return
);
extern void _XlcVaToArgList(
-#if NeedFunctionPrototypes
- va_list /* var */,
- int /* count */,
- XlcArgList* /* args_return */
-#endif
+ va_list var,
+ int count,
+ XlcArgList* args_return
);
extern void _XlcCompileResourceList(
-#if NeedFunctionPrototypes
- XlcResourceList /* resources */,
- int /* num_resources */
-#endif
+ XlcResourceList resources,
+ int num_resources
);
extern char *_XlcGetValues(
-#if NeedFunctionPrototypes
- XPointer /* base */,
- XlcResourceList /* resources */,
- int /* num_resources */,
- XlcArgList /* args */,
- int /* num_args */,
- unsigned long /* mask */
-#endif
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask
);
extern char *_XlcSetValues(
-#if NeedFunctionPrototypes
- XPointer /* base */,
- XlcResourceList /* resources */,
- int /* num_resources */,
- XlcArgList /* args */,
- int /* num_args */,
- unsigned long /* mask */
-#endif
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask
);
/* documented in i18n/Framework.PS */
-extern void _XlcInitLoader(
-#if NeedFunctionPrototypes
- void
-#endif
-);
+extern void _XlcInitLoader (void);
/* documented in i18n/Framework.PS */
/* Returns True on success, False on failure. */
extern Bool _XlcAddLoader(
-#if NeedFunctionPrototypes
- XLCdLoadProc /* proc */,
- XlcPosition /* position */
-#endif
+ XLCdLoadProc proc,
+ XlcPosition position
);
/* documented in i18n/Framework.PS */
extern void _XlcRemoveLoader(
-#if NeedFunctionPrototypes
- XLCdLoadProc /* proc */
-#endif
+ XLCdLoadProc proc
+);
+
+/* Registers UTF-8 converters for a non-UTF-8 locale. */
+extern void _XlcAddUtf8Converters(
+ XLCd lcd
+);
+
+/* The default locale loader. Assumes an ASCII encoding. */
+extern XLCd _XlcDefaultLoader(
+ const char* name
+);
+
+/* The generic locale loader. Suitable for all encodings except UTF-8.
+ Uses an XLC_LOCALE configuration file. */
+extern XLCd _XlcGenericLoader(
+ const char* name
+);
+
+/* The UTF-8 locale loader. Suitable for UTF-8 encoding.
+ Uses an XLC_LOCALE configuration file. */
+extern XLCd _XlcUtf8Loader(
+ const char* name
+);
+
+/* The old EUC locale loader. */
+extern XLCd _XlcEucLoader(
+ const char* name
+);
+
+/* The old SJIS locale loader. */
+extern XLCd _XlcSjisLoader(
+ const char* name
+);
+
+/* The old ISO-2022-JP locale loader. */
+extern XLCd _XlcJisLoader(
+ const char* name
+);
+
+/* The old dynamic loader. */
+extern XLCd _XlcDynamicLoader(
+ const char* name
);
_XFUNCPROTOEND
diff --git a/xc/lib/X11/Xlib.h b/xc/lib/X11/Xlib.h
index 776f51fd5..1c5d44f8d 100644
--- a/xc/lib/X11/Xlib.h
+++ b/xc/lib/X11/Xlib.h
@@ -20,7 +20,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
-/* $XFree86: xc/lib/X11/Xlib.h,v 3.16 2000/01/29 18:58:11 dawes Exp $ */
+/* $XFree86: xc/lib/X11/Xlib.h,v 3.17 2000/11/28 18:49:27 dawes Exp $ */
/*
@@ -83,6 +83,10 @@ typedef unsigned long wchar_t;
#endif
#endif
+/* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in
+ November 2000. Its presence is indicated through the following macro. */
+#define X_HAVE_UTF8_STRING 1
+
typedef char *XPointer;
#define Bool int
@@ -4239,16 +4243,10 @@ extern int XWriteBitmapFile(
#endif
);
-extern Bool XSupportsLocale(
-#if NeedFunctionPrototypes
- void
-#endif
-);
+extern Bool XSupportsLocale (void);
extern char *XSetLocaleModifiers(
-#if NeedFunctionPrototypes
- _Xconst char* /* modifier_list */
-#endif
+ const char* modifier_list
);
extern XOM XOpenOM(
@@ -4402,6 +4400,14 @@ extern int XwcTextEscapement(
#endif
);
+extern int Xutf8TextEscapement(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* bytes_text */
+#endif
+);
+
extern int XmbTextExtents(
#if NeedFunctionPrototypes
XFontSet /* font_set */,
@@ -4422,6 +4428,16 @@ extern int XwcTextExtents(
#endif
);
+extern int Xutf8TextExtents(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* bytes_text */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+#endif
+);
+
extern Status XmbTextPerCharExtents(
#if NeedFunctionPrototypes
XFontSet /* font_set */,
@@ -4450,6 +4466,20 @@ extern Status XwcTextPerCharExtents(
#endif
);
+extern Status Xutf8TextPerCharExtents(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* bytes_text */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+#endif
+);
+
extern void XmbDrawText(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -4474,6 +4504,18 @@ extern void XwcDrawText(
#endif
);
+extern void Xutf8DrawText(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XmbTextItem* /* text_items */,
+ int /* nitems */
+#endif
+);
+
extern void XmbDrawString(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -4500,6 +4542,19 @@ extern void XwcDrawString(
#endif
);
+extern void Xutf8DrawString(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* text */,
+ int /* bytes_text */
+#endif
+);
+
extern void XmbDrawImageString(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -4526,6 +4581,19 @@ extern void XwcDrawImageString(
#endif
);
+extern void Xutf8DrawImageString(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* text */,
+ int /* bytes_text */
+#endif
+);
+
extern XIM XOpenIM(
#if NeedFunctionPrototypes
Display* /* dpy */,
@@ -4595,6 +4663,12 @@ extern char *XmbResetIC(
#endif
);
+extern char *Xutf8ResetIC(
+#if NeedFunctionPrototypes
+ XIC /* ic */
+#endif
+);
+
extern char *XSetICValues(
#if NeedVarargsPrototypes
XIC /* ic */, ...
@@ -4642,6 +4716,17 @@ extern int XwcLookupString(
#endif
);
+extern int Xutf8LookupString(
+#if NeedFunctionPrototypes
+ XIC /* ic */,
+ XKeyPressedEvent* /* event */,
+ char* /* buffer_return */,
+ int /* bytes_buffer */,
+ KeySym* /* keysym_return */,
+ Status* /* status_return */
+#endif
+);
+
extern XVaNestedList XVaCreateNestedList(
#if NeedVarargsPrototypes
int /*unused*/, ...
diff --git a/xc/lib/X11/XomGeneric.h b/xc/lib/X11/XomGeneric.h
index 0b1083db6..f1e4933a7 100644
--- a/xc/lib/X11/XomGeneric.h
+++ b/xc/lib/X11/XomGeneric.h
@@ -31,6 +31,7 @@
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
+/* $XFree86: xc/lib/X11/XomGeneric.h,v 1.3 2000/11/29 17:40:23 dawes Exp $ */
#ifndef _XOMGENERIC_H_
#define _XOMGENERIC_H_
@@ -59,7 +60,8 @@ typedef struct _VRotateRec {
typedef enum {
XOMMultiByte,
- XOMWideChar
+ XOMWideChar,
+ XOMUtf8String
} XOMTextType;
typedef struct _FontDataRec {
@@ -134,6 +136,7 @@ typedef struct _FontSetRec {
typedef struct _XOCGenericPart {
XlcConv mbs_to_cs;
XlcConv wcs_to_cs;
+ XlcConv utf8_to_cs;
int font_set_num;
FontSet font_set;
} XOCGenericPart;
diff --git a/xc/lib/X11/Xresource.h b/xc/lib/X11/Xresource.h
index da8501315..7f4e80a90 100644
--- a/xc/lib/X11/Xresource.h
+++ b/xc/lib/X11/Xresource.h
@@ -42,7 +42,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/lib/X11/Xresource.h,v 3.4 2000/09/28 20:17:06 tsi Exp $ */
+/* $XFree86: xc/lib/X11/Xresource.h,v 3.5 2000/11/28 18:49:28 dawes Exp $ */
#ifndef _XRESOURCE_H_
#define _XRESOURCE_H_
@@ -358,7 +358,7 @@ extern Bool XrmEnumerateDatabase(
#endif
);
-extern char *XrmLocaleOfDatabase(
+extern const char *XrmLocaleOfDatabase(
#if NeedFunctionPrototypes
XrmDatabase /* database */
#endif
diff --git a/xc/lib/X11/Xrm.c b/xc/lib/X11/Xrm.c
index 20353efb1..b065365be 100644
--- a/xc/lib/X11/Xrm.c
+++ b/xc/lib/X11/Xrm.c
@@ -45,7 +45,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/lib/X11/Xrm.c,v 3.13 1999/05/30 03:03:19 dawes Exp $ */
+/* $XFree86: xc/lib/X11/Xrm.c,v 3.14 2000/11/28 18:49:29 dawes Exp $ */
#include <stdio.h>
#include <ctype.h>
@@ -450,37 +450,44 @@ static void PrintQuarkList(quarks, stream)
#endif /* DEBUG */
-/*ARGSUSED*/
-static void mbnoop(state)
- XPointer state;
+
+/*
+ * Fallback methods for Xrm parsing.
+ * Simulate a C locale. No state needed here.
+ */
+
+static void
+c_mbnoop(
+ XPointer state)
{
}
-/*ARGSUSED*/
-static char mbchar(state, str, lenp)
- XPointer state;
- char *str;
- int *lenp;
+static char
+c_mbchar(
+ XPointer state,
+ const char *str,
+ int *lenp)
{
*lenp = 1;
return *str;
}
-/*ARGSUSED*/
-static char *lcname(state)
- XPointer state;
+static const char *
+c_lcname(
+ XPointer state)
{
return "C";
}
-static RConst XrmMethodsRec mb_methods = {
- mbnoop,
- mbchar,
- mbnoop,
- lcname,
- mbnoop
+static const XrmMethodsRec mb_methods = {
+ c_mbnoop, /* mbinit */
+ c_mbchar, /* mbchar */
+ c_mbnoop, /* mbfinish */
+ c_lcname, /* lcname */
+ c_mbnoop /* destroy */
};
+
static XrmDatabase NewDatabase()
{
register XrmDatabase db;
@@ -492,7 +499,7 @@ static XrmDatabase NewDatabase()
db->mbstate = (XPointer)NULL;
db->methods = _XrmInitParseInfo(&db->mbstate);
if (!db->methods)
- db->methods = (XrmMethods)&mb_methods;
+ db->methods = &mb_methods;
}
return db;
}
@@ -2650,10 +2657,11 @@ static void DestroyNTable(table)
Xfree((char *)table);
}
-char *XrmLocaleOfDatabase(db)
+const char *
+XrmLocaleOfDatabase(db)
XrmDatabase db;
{
- char* retval;
+ const char* retval;
_XLockMutex(&db->linfo);
retval = (*db->methods->lcname)(db->mbstate);
_XUnlockMutex(&db->linfo);
diff --git a/xc/lib/X11/Xutil.h b/xc/lib/X11/Xutil.h
index 9b217ca0f..d92f0d9f6 100644
--- a/xc/lib/X11/Xutil.h
+++ b/xc/lib/X11/Xutil.h
@@ -42,7 +42,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/lib/X11/Xutil.h,v 3.1 1998/10/03 08:41:31 dawes Exp $ */
+/* $XFree86: xc/lib/X11/Xutil.h,v 3.2 2000/11/28 18:49:29 dawes Exp $ */
#ifndef _XUTIL_H_
#define _XUTIL_H_
@@ -163,7 +163,9 @@ typedef enum {
XStringStyle, /* STRING */
XCompoundTextStyle, /* COMPOUND_TEXT */
XTextStyle, /* text in owner's encoding (current locale)*/
- XStdICCTextStyle /* STRING, else COMPOUND_TEXT */
+ XStdICCTextStyle, /* STRING, else COMPOUND_TEXT */
+ /* The following is an XFree86 extension, introduced in November 2000 */
+ XUTF8StringStyle /* UTF8_STRING */
} XICCEncodingStyle;
typedef struct {
@@ -364,11 +366,7 @@ extern Region XCreateRegion(
#endif
);
-extern char *XDefaultString(
-#if NeedFunctionPrototypes
- void
-#endif
-);
+extern const char *XDefaultString (void);
extern int XDeleteContext(
#if NeedFunctionPrototypes
@@ -748,6 +746,20 @@ extern void XmbSetWMProperties(
#endif
);
+extern void Xutf8SetWMProperties(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ _Xconst char* /* window_name */,
+ _Xconst char* /* icon_name */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* normal_hints */,
+ XWMHints* /* wm_hints */,
+ XClassHint* /* class_hints */
+#endif
+);
+
extern void XSetWMSizeHints(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -807,29 +819,31 @@ extern int XSubtractRegion(
);
extern int XmbTextListToTextProperty(
-#if NeedFunctionPrototypes
- Display* /* display */,
- char** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop_return */
-#endif
+ Display* display,
+ char** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
);
extern int XwcTextListToTextProperty(
-#if NeedFunctionPrototypes
- Display* /* display */,
- wchar_t** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop_return */
-#endif
+ Display* display,
+ wchar_t** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
+);
+
+extern int Xutf8TextListToTextProperty(
+ Display* display,
+ char** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
);
extern void XwcFreeStringList(
-#if NeedFunctionPrototypes
- wchar_t** /* list */
-#endif
+ wchar_t** list
);
extern Status XTextPropertyToStringList(
@@ -841,21 +855,24 @@ extern Status XTextPropertyToStringList(
);
extern int XmbTextPropertyToTextList(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XTextProperty* /* text_prop */,
- char*** /* list_return */,
- int* /* count_return */
-#endif
+ Display* display,
+ const XTextProperty* text_prop,
+ char*** list_return,
+ int* count_return
);
extern int XwcTextPropertyToTextList(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XTextProperty* /* text_prop */,
- wchar_t*** /* list_return */,
- int* /* count_return */
-#endif
+ Display* display,
+ const XTextProperty* text_prop,
+ wchar_t*** list_return,
+ int* count_return
+);
+
+extern int Xutf8TextPropertyToTextList(
+ Display* display,
+ const XTextProperty* text_prop,
+ char*** list_return,
+ int* count_return
);
extern int XUnionRectWithRegion(
diff --git a/xc/lib/X11/Xvarargs.h b/xc/lib/X11/Xvarargs.h
index 8d166a72a..78c2e42d9 100644
--- a/xc/lib/X11/Xvarargs.h
+++ b/xc/lib/X11/Xvarargs.h
@@ -22,37 +22,11 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Xvarargs.h,v 1.2 2000/11/28 18:49:30 dawes Exp $ */
#ifndef _XVARARGS_H_
#define _XVARARGS_H_
-#ifdef __HIGHC__
-#ifndef _STDARG_H
-#define _STDARG_H
-
-typedef char *va_list;
-
-/* Amount of space required in an argument list for an arg of type TYPE.
- TYPE may alternatively be an expression whose type is used. */
-
-#define __va_rounded_size(TYPE) \
- (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
-
-#define va_start(AP, LASTARG) \
- (AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG)))
-
-#define va_end(AP)
-
-#define va_arg(AP, TYPE) \
- (AP += __va_rounded_size (TYPE), \
- *((TYPE *) (AP - __va_rounded_size (TYPE))))
-
-#endif /* _STDARG_H */
-
-#define Va_start(a,b) va_start(a,b)
-
-#else /* !__HIGHC__ */
-
#if NeedVarargsPrototypes
# include <stdarg.h>
# define Va_start(a,b) va_start(a,b)
@@ -61,6 +35,4 @@ typedef char *va_list;
# define Va_start(a,b) va_start(a)
#endif
-#endif /* __HIGHC__ */
-
#endif /* _XVARARGS_H_ */
diff --git a/xc/lib/X11/imConv.c b/xc/lib/X11/imConv.c
index 3de140b9c..f1d4e981d 100644
--- a/xc/lib/X11/imConv.c
+++ b/xc/lib/X11/imConv.c
@@ -31,7 +31,9 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
-/* $XFree86: xc/lib/X11/imConv.c,v 1.26 2000/10/27 18:30:48 dawes Exp $ */
+/* 2000 Modifier: Ivan Pascal The XFree86 Project.
+ */
+/* $XFree86: xc/lib/X11/imConv.c,v 1.28 2000/11/28 18:49:32 dawes Exp $ */
#define NEED_EVENTS
#include <stdio.h>
@@ -39,8 +41,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "Xlcint.h"
#include "Ximint.h"
#include "XlcPubI.h"
-#define XK_PUBLISHING
-#include "X11/keysym.h"
#ifdef XKB
/*
@@ -54,1231 +54,101 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define XLOOKUPSTRING XLookupString
#endif
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
-/* bit (1<<i) means character is in codeset i */
-unsigned int Const _Xlatin1[128] = {
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x2b90ee, 0x088000, 0x2a9000, 0x2a9084, 0x02902e, 0x289000, 0x029080, 0x2b908e,
-0x00908e, 0x2a9080, 0x088000, 0x2a9080, 0x0a9080, 0x2b90ee, 0x2a9000, 0x089008,
-0x2b908e, 0x0a9080, 0x2a9084, 0x2a9084, 0x00908e, 0x2a9004, 0x0a9000, 0x2b9084,
-0x00900c, 0x2a9000, 0x088000, 0x2a9080, 0x029000, 0x029084, 0x029000, 0x088000,
-0x288004, 0x29800e, 0x29800e, 0x298008, 0x2b800e, 0x0b8008, 0x098008, 0x288006,
-0x288004, 0x2b800e, 0x288004, 0x29800e, 0x288004, 0x29800e, 0x29800e, 0x298004,
-0x090000, 0x288004, 0x288004, 0x2b8006, 0x29800e, 0x2b8008, 0x2b800e, 0x0a800e,
-0x298008, 0x288004, 0x29800e, 0x29800c, 0x2b800e, 0x090002, 0x090000, 0x2b800e,
-0x288004, 0x29800e, 0x29800e, 0x298008, 0x2b800e, 0x0b8008, 0x098008, 0x288004,
-0x288004, 0x2b800e, 0x288004, 0x29800e, 0x288004, 0x29800e, 0x29800e, 0x298004,
-0x090000, 0x288004, 0x288004, 0x2b8006, 0x29800e, 0x2b8008, 0x2b800e, 0x0a800e,
-0x298008, 0x288004, 0x29800e, 0x29800c, 0x2b800e, 0x090002, 0x090000, 0x288000
-};
-
-/* bit (1<<i) means character is in codeset i */
-unsigned int Const _Xlatin2[128] = {
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x1800c, 0x10008, 0x00004, 0x00000, 0x0800c, 0x00000, 0x00000, 0x1800c,
-0x0800c, 0x00008, 0x00004, 0x00000, 0x00000, 0x1800c, 0x00008, 0x00004,
-0x1800c, 0x10008, 0x00008, 0x00000, 0x0800c, 0x00000, 0x00000, 0x00008,
-0x0800c, 0x00008, 0x00004, 0x00000, 0x00000, 0x00000, 0x00008, 0x00004,
-0x00000, 0x1800c, 0x1800c, 0x00000, 0x1800c, 0x00000, 0x00000, 0x08004,
-0x30008, 0x1800c, 0x10008, 0x1800c, 0x00000, 0x18008, 0x18008, 0x00000,
-0x00008, 0x20000, 0x00000, 0x18004, 0x1800c, 0x00000, 0x1800c, 0x0800c,
-0x00000, 0x00000, 0x0800c, 0x00000, 0x0800c, 0x10000, 0x00000, 0x1800c,
-0x00000, 0x1800c, 0x1800c, 0x00000, 0x1800c, 0x00000, 0x00000, 0x08004,
-0x30008, 0x1800c, 0x10008, 0x1800c, 0x00000, 0x1800c, 0x1800c, 0x00000,
-0x00008, 0x20000, 0x00000, 0x18004, 0x1800c, 0x00000, 0x1800c, 0x0800c,
-0x00000, 0x00000, 0x0800c, 0x00000, 0x0800c, 0x10000, 0x00000, 0x0000c
-};
-
-/* maps Cyrillic keysyms to 8859-5 */
-unsigned char Const _Xcyrillic[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xf2, 0xf3, 0xf1, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xa0 - */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff,
- 0xf0, 0xa2, 0xa3, 0xa1, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xb0 - */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf,
- 0xee, 0xd0, 0xd1, 0xe6, 0xd4, 0xd5, 0xe4, 0xd3, /* 0xc0 - */
- 0xe5, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde,
- 0xdf, 0xef, 0xe0, 0xe1, 0xe2, 0xe3, 0xd6, 0xd2, /* 0xd0 - */
- 0xec, 0xeb, 0xd7, 0xe8, 0xed, 0xe9, 0xe7, 0xea,
- 0xce, 0xb0, 0xb1, 0xc6, 0xb4, 0xb5, 0xc4, 0xb3, /* 0xe0 - */
- 0xc5, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe,
- 0xbf, 0xcf, 0xc0, 0xc1, 0xc2, 0xc3, 0xb6, 0xb2, /* 0xf0 - */
- 0xcc, 0xcb, 0xb7, 0xc8, 0xcd, 0xc9, 0xc7, 0xca
-};
-
-/* maps Cyrillic keysyms to microsoft-cp1241 */
-unsigned char _Xms_cp1251[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x90, 0x83, 0xb8, 0xba, 0xbe, 0xb3, 0xbf, /* 0xa0 - */
- 0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0xb4, 0xa2, 0x9f,
- 0xb9, 0x80, 0x81, 0xa8, 0xaa, 0xbd, 0xb2, 0xaf, /* 0xb0 - */
- 0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0xa5, 0xa1, 0x8f,
- 0xfe, 0xe0, 0xe1, 0xf6, 0xe4, 0xe5, 0xf4, 0xe3, /* 0xc0 - */
- 0xf5, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee,
- 0xef, 0xff, 0xf0, 0xf1, 0xf2, 0xf3, 0xe6, 0xe2, /* 0xd0 - */
- 0xfc, 0xfb, 0xe7, 0xf8, 0xfd, 0xf9, 0xf7, 0xfa,
- 0xde, 0xc0, 0xc1, 0xd6, 0xc4, 0xc5, 0xd4, 0xc3, /* 0xe0 - */
- 0xd5, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
- 0xcf, 0xdf, 0xd0, 0xd1, 0xd2, 0xd3, 0xc6, 0xc2, /* 0xf0 - */
- 0xdc, 0xdb, 0xc7, 0xd8, 0xdd, 0xd9, 0xd7, 0xda
-};
-
-unsigned short _Xms_cp1251_size = sizeof _Xms_cp1251;
-
-/* maps Cyrillic keysyms to tatar-cyr */
-unsigned char _Xtatar_cyr[] = {
- 0x00, 0x9d, 0x00, 0x00, 0x9e, 0x9c, 0x00, 0x00, /* 0x80 - */
- 0x00, 0x00, 0x9f, 0x00, 0x90, 0x00, 0x9a, 0x00,
- 0x00, 0x8d, 0x00, 0x00, 0x8e, 0x8c, 0x00, 0x00, /* 0x90 - */
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x8a, 0x00,
- 0x00, 0x00, 0x83, 0xb8, 0xba, 0xbe, 0xb3, 0xbf, /* 0xa0 - */
- 0xbc, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xa2, 0x00,
- 0xb9, 0x00, 0x81, 0xa8, 0xaa, 0xbd, 0xb2, 0xaf, /* 0xb0 - */
- 0xa3, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xa1, 0x00,
- 0xfe, 0xe0, 0xe1, 0xf6, 0xe4, 0xe5, 0xf4, 0xe3, /* 0xc0 - */
- 0xf5, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee,
- 0xef, 0xff, 0xf0, 0xf1, 0xf2, 0xf3, 0xe6, 0xe2, /* 0xd0 - */
- 0xfc, 0xfb, 0xe7, 0xf8, 0xfd, 0xf9, 0xf7, 0xfa,
- 0xde, 0xc0, 0xc1, 0xd6, 0xc4, 0xc5, 0xd4, 0xc3, /* 0xe0 - */
- 0xd5, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
- 0xcf, 0xdf, 0xd0, 0xd1, 0xd2, 0xd3, 0xc6, 0xc2, /* 0xf0 - */
- 0xdc, 0xdb, 0xc7, 0xd8, 0xdd, 0xd9, 0xd7, 0xda
-};
-
-unsigned short _Xtatar_cyr_size = sizeof _Xms_cp1251;
-
-/* maps Cyrillic keysyms to KOI8-R */
-unsigned char Const _Xkoi8_r[] =
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, /* 10 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, /* 11 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 12 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 13 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 14 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 15 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff};
-
-/* maps Cyrillic keysyms to KOI8-U */
-unsigned char Const _Xkoi8_u[] =
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, /* 10 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xb3, 0xb4, 0x00, 0xb6, 0xb7, /* 11 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00,
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 12 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 13 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 14 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 15 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff};
-
-/* maps Cyrillic keysyms to KOI8-C */
-unsigned char Const _Xkoi8_c[] =
- {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
- 0x88, 0x89, 0x8a, 0x00, 0x8c, 0x8d, 0x8e, 0x8f,
- 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
- 0x98, 0x99, 0x9a, 0x00, 0x9c, 0x9d, 0x9e, 0x9f,
- 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 10 */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 11 */
- 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 12 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 13 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 14 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 15 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff};
-
-unsigned short Const _Xkoi8_size = sizeof _Xkoi8_r;
-
-/* maps Greek keysyms to 8859-7 */
-unsigned char Const _Xgreek[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xb6, 0xb8, 0xb9, 0xba, 0xda, 0x00, 0xbc, /* 0xa0 - */
- 0xbe, 0xdb, 0x00, 0xbf, 0x00, 0x00, 0xb5, 0xaf,
- 0x00, 0xdc, 0xdd, 0xde, 0xdf, 0xfa, 0xc0, 0xfc, /* 0xb0 - */
- 0xfd, 0xfb, 0xe0, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0 - */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
- 0xd0, 0xd1, 0xd3, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0 - */
- 0xd8, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0 - */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
- 0xf0, 0xf1, 0xf3, 0xf2, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0 - */
- 0xf8, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-/* maps Georgian keysyms to georgian-ps */
-unsigned char _Xgeorgian_ps[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc8, /* 0xd0 - */
- 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xcf, 0xd0, 0xd1,
- 0xd2, 0xd3, 0xd4, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, /* 0xe0 - */
- 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe3,
- 0xe4, 0xc7, 0xce, 0xd5, 0xe2, 0xe5, 0xe6, 0x00, /* 0xf0 - */
- 0xf8, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-unsigned short _Xgeorgian_ps_size = sizeof _Xgeorgian_ps;
+typedef unsigned int ucs4_t;
-/* maps Vietnamese keysyms to TCVN-5712 */
-unsigned char _Xtcvn[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x84, 0xb9, 0x81, 0xb6, 0xc4, 0xca, 0xc1, 0xc7, /* 0xa0 - */
- 0xc2, 0xc8, 0xc3, 0xc9, 0x86, 0xcb, 0xc0, 0xbe,
- 0xaf, 0xbb, 0xba, 0xbc, 0xbf, 0xbd, 0x85, 0xc6, /* 0xb0 - */
- 0x8b, 0xd1, 0x88, 0xce, 0x89, 0xcf, 0xda, 0xd5,
- 0xc5, 0xd2, 0xcd, 0xd3, 0xd9, 0xd4, 0x8c, 0xd6, /* 0xc0 - */
- 0x8e, 0xd8, 0x91, 0xde, 0x96, 0xe4, 0x93, 0xe1,
- 0xff, 0xe8, 0xdb, 0xe5, 0xe0, 0xe6, 0xf0, 0xe7, /* 0xd0 - */
- 0x97, 0xe9, 0x9b, 0xed, 0x98, 0xea, 0x99, 0xeb,
- 0x9a, 0xec, 0x9c, 0xee, 0x02, 0xf4, 0x9e, 0xf1, /* 0xe0 - */
- 0x11, 0xf8, 0x04, 0xf5, 0x05, 0xf6, 0x06, 0xf7,
- 0x12, 0xf9, 0xb0, 0xb3, 0x17, 0xfe, 0x14, 0xfb, /* 0xf0 - */
- 0x15, 0xfc, 0xa5, 0xac, 0xa6, 0xad, 0xb1, 0xb4
-};
-
-/* maps Vietnamese keysyms to VISCII 1.1 */
-unsigned char _Xviscii[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0xd5, 0xc4, 0xe4, 0x84, 0xa4, 0x85, 0xa5, /* 0xa0 - */
- 0x86, 0xa6, 0x06, 0xe7, 0x87, 0xa7, 0x81, 0xa1,
- 0x82, 0xa2, 0x02, 0xc6, 0x05, 0xc7, 0x83, 0xa3, /* 0xb0 - */
- 0x89, 0xa9, 0xcb, 0xeb, 0x88, 0xa8, 0x8a, 0xaa,
- 0x8b, 0xab, 0x8c, 0xac, 0x8d, 0xad, 0x8e, 0xae, /* 0xc0 - */
- 0x9b, 0xef, 0x98, 0xb8, 0x9a, 0xf7, 0x99, 0xf6,
- 0x8f, 0xaf, 0x90, 0xb0, 0x91, 0xb1, 0x92, 0xb2, /* 0xd0 - */
- 0x93, 0xb5, 0x95, 0xbe, 0x96, 0xb6, 0x97, 0xb7,
- 0xb3, 0xde, 0x94, 0xfe, 0x9e, 0xf8, 0x9c, 0xfc, /* 0xe0 - */
- 0xba, 0xd1, 0xbb, 0xd7, 0xbc, 0xd8, 0xff, 0xe6,
- 0xb9, 0xf1, 0x00, 0x00, 0x1e, 0xdc, 0x14, 0xd6, /* 0xf0 - */
- 0x19, 0xdb, 0xb4, 0xbd, 0xbf, 0xdf, 0x00, 0x00
-};
-
-unsigned short _Xtcvn_size = sizeof _Xtcvn;
-unsigned short _Xviscii_size = sizeof _Xviscii;
-
-
-static unsigned short Const keysym_to_unicode_1a1_1ff[] = {
- 0x0104, 0x02d8, 0x0141, 0x0000, 0x013d, 0x015a, 0x0000, /* 0x01a0-0x01a7 */
- 0x0000, 0x0160, 0x015e, 0x0164, 0x0179, 0x0000, 0x017d, 0x017b, /* 0x01a8-0x01af */
- 0x0000, 0x0105, 0x02db, 0x0142, 0x0000, 0x013e, 0x015b, 0x02c7, /* 0x01b0-0x01b7 */
- 0x0000, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, /* 0x01b8-0x01bf */
- 0x0154, 0x0000, 0x0000, 0x0102, 0x0000, 0x0139, 0x0106, 0x0000, /* 0x01c0-0x01c7 */
- 0x010c, 0x0000, 0x0118, 0x0000, 0x011a, 0x0000, 0x0000, 0x010e, /* 0x01c8-0x01cf */
- 0x0110, 0x0143, 0x0147, 0x0000, 0x0000, 0x0150, 0x0000, 0x0000, /* 0x01d0-0x01d7 */
- 0x0158, 0x016e, 0x0000, 0x0170, 0x0000, 0x0000, 0x0162, 0x0000, /* 0x01d8-0x01df */
- 0x0155, 0x0000, 0x0000, 0x0103, 0x0000, 0x013a, 0x0107, 0x0000, /* 0x01e0-0x01e7 */
- 0x010d, 0x0000, 0x0119, 0x0000, 0x011b, 0x0000, 0x0000, 0x010f, /* 0x01e8-0x01ef */
- 0x0111, 0x0144, 0x0148, 0x0000, 0x0000, 0x0151, 0x0000, 0x0000, /* 0x01f0-0x01f7 */
- 0x0159, 0x016f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0163, 0x02d9 /* 0x01f8-0x01ff */
-};
-
-static unsigned short Const keysym_to_unicode_2a1_2fe[] = {
- 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0124, 0x0000, /* 0x02a0-0x02a7 */
- 0x0000, 0x0130, 0x0000, 0x011e, 0x0134, 0x0000, 0x0000, 0x0000, /* 0x02a8-0x02af */
- 0x0000, 0x0127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0125, 0x0000, /* 0x02b0-0x02b7 */
- 0x0000, 0x0131, 0x0000, 0x011f, 0x0135, 0x0000, 0x0000, 0x0000, /* 0x02b8-0x02bf */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010a, 0x0108, 0x0000, /* 0x02c0-0x02c7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x02c8-0x02cf */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0120, 0x0000, 0x0000, /* 0x02d0-0x02d7 */
- 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x016c, 0x015c, 0x0000, /* 0x02d8-0x02df */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010b, 0x0109, 0x0000, /* 0x02e0-0x02e7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x02e8-0x02ef */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, /* 0x02f0-0x02f7 */
- 0x011d, 0x0000, 0x0000, 0x0000, 0x0000, 0x016c, 0x015d /* 0x02f8-0x02ff */
-};
-
-static unsigned short Const keysym_to_unicode_3a2_3fe[] = {
- 0x0138, 0x0156, 0x0000, 0x0128, 0x013b, 0x0000, /* 0x03a0-0x03a7 */
- 0x0000, 0x0000, 0x0112, 0x0122, 0x0166, 0x0000, 0x0000, 0x0000, /* 0x03a8-0x03af */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013c, 0x0000, /* 0x03b0-0x03b7 */
- 0x0000, 0x0000, 0x0113, 0x0123, 0x0167, 0x014a, 0x0000, 0x014b, /* 0x03b8-0x03bf */
- 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x012e, /* 0x03c0-0x03c7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0116, 0x0000, 0x0000, 0x012a, /* 0x03c8-0x03cf */
- 0x0000, 0x0145, 0x014c, 0x0136, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x03d0-0x03d7 */
- 0x0000, 0x0172, 0x0000, 0x0000, 0x0000, 0x0168, 0x016a, 0x0000, /* 0x03d8-0x03df */
- 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x012f, /* 0x03e0-0x03e7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0117, 0x0000, 0x0000, 0x012b, /* 0x03e8-0x03ef */
- 0x0000, 0x0146, 0x014d, 0x0137, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x03f0-0x03f7 */
- 0x0000, 0x0173, 0x0000, 0x0000, 0x0000, 0x0169, 0x016b /* 0x03f8-0x03ff */
-};
-
-static unsigned short Const keysym_to_unicode_4a1_4df[] = {
- 0x3002, 0x3008, 0x3009, 0x3001, 0x30fb, 0x30f2, 0x30a1, /* 0x04a0-0x04a7 */
- 0x30a3, 0x03a5, 0x30a7, 0x30a9, 0x30e3, 0x30e5, 0x30e7, 0x30c3, /* 0x04a8-0x04af */
- 0x30fc, 0x03a2, 0x30a4, 0x30a6, 0x30a8, 0x30aa, 0x30ab, 0x30ad, /* 0x04b0-0x04b7 */
- 0x30af, 0x30b1, 0x30b3, 0x30b5, 0x30b7, 0x30b9, 0x30bb, 0x30bd, /* 0x04b8-0x04bf */
- 0x30bf, 0x30c1, 0x30c4, 0x30c6, 0x30c8, 0x30ca, 0x30cb, 0x30cc, /* 0x04c0-0x04c7 */
- 0x30cd, 0x30ce, 0x30cf, 0x30d2, 0x30d5, 0x30d8, 0x30db, 0x30de, /* 0x04c8-0x04cf */
- 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30e9, /* 0x04d0-0x04d7 */
- 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ef, 0x30f3, 0x309b, 0x309c /* 0x04d8-0x04df */
-};
-
-static unsigned short Const keysym_to_unicode_590_5fe[] = {
- 0x06f0, 0x06f1, 0x06f2, 0x06f3, 0x06f4, 0x06f5, 0x06f6, 0x06f7, /* 0x0590-0x0597 */
- 0x06f8, 0x06f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0598-0x059f */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x066a, 0x0670, 0x0679, /* 0x05a0-0x05a7 */
-
- 0x067e, 0x0686, 0x0688, 0x0691, 0x060c, 0x0000, 0x06d4, 0x0000, /* 0x05ac-0x05af */
- 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, /* 0x05b0-0x05b7 */
- 0x0668, 0x0669, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f, /* 0x05b8-0x05bf */
- 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* 0x05c0-0x05c7 */
- 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, /* 0x05c8-0x05cf */
- 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, /* 0x05d0-0x05d7 */
- 0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x05d8-0x05df */
- 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, /* 0x05e0-0x05e7 */
- 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, /* 0x05e8-0x05ef */
- 0x0650, 0x0651, 0x0652, 0x0653, 0x0654, 0x0655, 0x0698, 0x06a4, /* 0x05f0-0x05f7 */
- 0x06a9, 0x06af, 0x06ba, 0x06be, 0x06cc, 0x06d2, 0x06c1 /* 0x05f8-0x05fe */
-};
-
-static unsigned short keysym_to_unicode_680_6ff[] = {
- 0x0492, 0x0496, 0x049a, 0x049c, 0x04a2, 0x04ae, 0x04b0, 0x04b2, /* 0x0680-0x0687 */
- 0x04b6, 0x04b8, 0x04ba, 0x0000, 0x04d8, 0x04e2, 0x04e8, 0x04ee, /* 0x0688-0x068f */
- 0x0493, 0x0497, 0x049b, 0x049d, 0x04a3, 0x04af, 0x04b1, 0x04b3, /* 0x0690-0x0697 */
- 0x04b7, 0x04b9, 0x04bb, 0x0000, 0x04d9, 0x04e3, 0x04e9, 0x04ef, /* 0x0698-0x069f */
- 0x0000, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, /* 0x06a0-0x06a7 */
- 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0491, 0x045e, 0x045f, /* 0x06a8-0x06af */
- 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, /* 0x06b0-0x06b7 */
- 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x0490, 0x040e, 0x040f, /* 0x06b8-0x06bf */
- 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 0x06c0-0x06c7 */
- 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, /* 0x06c8-0x06cf */
- 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 0x06d0-0x06d7 */
- 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, /* 0x06d8-0x06df */
- 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 0x06e0-0x06e7 */
- 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, /* 0x06e8-0x06ef */
- 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 0x06f0-0x06f7 */
- 0x042c, 0x042d, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a /* 0x06f8-0x06ff */
-};
-
-static unsigned short Const keysym_to_unicode_7a1_7f9[] = {
- 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0x0000, 0x038c, /* 0x07a0-0x07a7 */
- 0x038e, 0x03ab, 0x0000, 0x038f, 0x0000, 0x0000, 0x0385, 0x2015, /* 0x07a8-0x07af */
- 0x0000, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, /* 0x07b0-0x07b7 */
- 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x07b8-0x07bf */
- 0x0000, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 0x07c0-0x07c7 */
- 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, /* 0x07c8-0x07cf */
- 0x03a0, 0x03a1, 0x03a2, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, /* 0x07d0-0x07d7 */
- 0x03a8, 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x07d8-0x07df */
- 0x0000, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, /* 0x07e0-0x07e7 */
- 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, /* 0x07e8-0x07ef */
- 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, /* 0x07f0-0x07f7 */
- 0x03c8, 0x03c9 /* 0x07f8-0x07ff */
-};
-
-static unsigned short Const keysym_to_unicode_8a4_8fe[] = {
- 0x2320, 0x2321, 0x0000, 0x231c, /* 0x08a0-0x08a7 */
- 0x231d, 0x231e, 0x231f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08a8-0x08af */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08b0-0x08b7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2264, 0x2260, 0x2265, 0x222b, /* 0x08b8-0x08bf */
- 0x2234, 0x0000, 0x221e, 0x0000, 0x0000, 0x2207, 0x0000, 0x0000, /* 0x08c0-0x08c7 */
- 0x2245, 0x2246, 0x0000, 0x0000, 0x0000, 0x0000, 0x22a2, 0x0000, /* 0x08c8-0x08cf */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x221a, 0x0000, /* 0x08d0-0x08d7 */
- 0x0000, 0x0000, 0x2282, 0x2283, 0x2229, 0x222a, 0x2227, 0x2228, /* 0x08d8-0x08df */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08e0-0x08e7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08e8-0x08ef */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0192, 0x0000, /* 0x08f0-0x08f7 */
- 0x0000, 0x0000, 0x0000, 0x2190, 0x2191, 0x2192, 0x2193 /* 0x08f8-0x08ff */
-};
-
-static unsigned short Const keysym_to_unicode_9df_9f8[] = {
- 0x2422, /* 0x09d8-0x09df */
- 0x2666, 0x25a6, 0x2409, 0x240c, 0x240d, 0x240a, 0x0000, 0x0000, /* 0x09e0-0x09e7 */
- 0x240a, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 0x2500, /* 0x09e8-0x09ef */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x251c, 0x2524, 0x2534, 0x252c, /* 0x09f0-0x09f7 */
- 0x2502 /* 0x09f8-0x09ff */
-};
-
-static unsigned short Const keysym_to_unicode_aa1_afe[] = {
- 0x2003, 0x2002, 0x2004, 0x2005, 0x2007, 0x2008, 0x2009, /* 0x0aa0-0x0aa7 */
- 0x200a, 0x2014, 0x2013, 0x0000, 0x0000, 0x0000, 0x2026, 0x2025, /* 0x0aa8-0x0aaf */
- 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x215a, /* 0x0ab0-0x0ab7 */
- 0x2105, 0x0000, 0x0000, 0x2012, 0x2039, 0x2024, 0x203a, 0x0000, /* 0x0ab8-0x0abf */
- 0x0000, 0x0000, 0x0000, 0x215b, 0x215c, 0x215d, 0x215e, 0x0000, /* 0x0ac0-0x0ac7 */
- 0x0000, 0x2122, 0x2120, 0x00ae, 0x25c1, 0x25b7, 0x25cb, 0x25ad, /* 0x0ac8-0x0acf */
- 0x2018, 0x2019, 0x201c, 0x201d, 0x211e, 0x0000, 0x2032, 0x2033, /* 0x0ad0-0x0ad7 */
- 0x0000, 0x271d, 0x0000, 0x220e, 0x25c2, 0x2023, 0x25cf, 0x25ac, /* 0x0ad8-0x0adf */
- 0x25e6, 0x25ab, 0x25ae, 0x25b5, 0x25bf, 0x2606, 0x2022, 0x25aa, /* 0x0ae0-0x0ae7 */
- 0x25b4, 0x25be, 0x261a, 0x261b, 0x2663, 0x2666, 0x2665, 0x0000, /* 0x0ae8-0x0aef */
- 0x2720, 0x2020, 0x2021, 0x2713, 0x2612, 0x266f, 0x266d, 0x2642, /* 0x0af0-0x0af7 */
- 0x2640, 0x2121, 0x2315, 0x2117, 0x2038, 0x201a, 0x201e /* 0x0af8-0x0aff */
-};
-
-/* none of the APL keysyms match the Unicode characters */
-
-static unsigned short Const keysym_to_unicode_cdf_cfa[] = {
- 0x2017, /* 0x0cd8-0x0cdf */
- 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, /* 0x0ce0-0x0ce7 */
- 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, /* 0x0ce8-0x0cef */
- 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, /* 0x0cf0-0x0cf7 */
- 0x05e8, 0x05e9, 0x05ea /* 0x0cf8-0x0cff */
-};
-
-static unsigned short Const keysym_to_unicode_da1_df9[] = {
- 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, /* 0x0da0-0x0da7 */
- 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, /* 0x0da8-0x0daf */
- 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, /* 0x0db0-0x0db7 */
- 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, /* 0x0db8-0x0dbf */
- 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, /* 0x0dc0-0x0dc7 */
- 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, /* 0x0dc8-0x0dcf */
- 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, /* 0x0dd0-0x0dd7 */
- 0x0e38, 0x0e39, 0x0e3a, 0x0e3b, 0x0e3c, 0x0e3d, 0x0e3e, 0x0e3f, /* 0x0dd8-0x0ddf */
- 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, /* 0x0de0-0x0de7 */
- 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0000, 0x0000, /* 0x0de8-0x0def */
- 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, /* 0x0df0-0x0df7 */
- 0x0e58, 0x0e59 /* 0x0df8-0x0dff */
-};
-
-static unsigned short Const keysym_to_unicode_ea0_eff[] = {
- 0x0000, 0x1101, 0x1101, 0x11aa, 0x1102, 0x11ac, 0x11ad, 0x1103, /* 0x0ea0-0x0ea7 */
- 0x1104, 0x1105, 0x11b0, 0x11b1, 0x11b2, 0x11b3, 0x11b4, 0x11b5, /* 0x0ea8-0x0eaf */
- 0x11b6, 0x1106, 0x1107, 0x1108, 0x11b9, 0x1109, 0x110a, 0x110b, /* 0x0eb0-0x0eb7 */
- 0x110c, 0x110d, 0x110e, 0x110f, 0x1110, 0x1111, 0x1112, 0x1161, /* 0x0eb8-0x0ebf */
- 0x1162, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167, 0x1168, 0x1169, /* 0x0ec0-0x0ec7 */
- 0x116a, 0x116b, 0x116c, 0x116d, 0x116e, 0x116f, 0x1170, 0x1171, /* 0x0ec8-0x0ecf */
- 0x1172, 0x1173, 0x1174, 0x1175, 0x11a8, 0x11a9, 0x11aa, 0x11ab, /* 0x0ed0-0x0ed7 */
- 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2, 0x11b3, /* 0x0ed8-0x0edf */
- 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba, 0x11bb, /* 0x0ee0-0x0ee7 */
- 0x11bc, 0x11bd, 0x11be, 0x11bf, 0x11c0, 0x11c1, 0x11c2, 0x0000, /* 0x0ee8-0x0eef */
- 0x0000, 0x0000, 0x1140, 0x0000, 0x0000, 0x1159, 0x119e, 0x0000, /* 0x0ef0-0x0ef7 */
- 0x11eb, 0x0000, 0x11f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x20a9, /* 0x0ef8-0x0eff */
-};
-
-static unsigned short keysym_to_unicode_12a1_12fe[] = {
- 0x1e02, 0x1e03, 0x0000, 0x0000, 0x0000, 0x1e0a, 0x0000, /* 0x12a0-0x12a7 */
- 0x1e80, 0x0000, 0x1e82, 0x1e0b, 0x1ef2, 0x0000, 0x0000, 0x0000, /* 0x12a8-0x12af */
- 0x1e1e, 0x1e1f, 0x0000, 0x0000, 0x1e40, 0x1e41, 0x0000, 0x1e56, /* 0x12b0-0x12b7 */
- 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, /* 0x12b8-0x12bf */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12c0-0x12c7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12c8-0x12cf */
- 0x0174, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e6a, /* 0x12d0-0x12d7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0176, 0x0000, /* 0x12d8-0x12df */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12e0-0x12e7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12e8-0x12ef */
- 0x0175, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e6b, /* 0x12f0-0x12f7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0177 /* 0x12f0-0x12ff */
-};
-
-static unsigned short Const keysym_to_unicode_13bc_13be[] = {
- 0x0152, 0x0153, 0x0178 /* 0x13b8-0x13bf */
-};
-
-static unsigned short keysym_to_unicode_14a1_14ff[] = {
- 0x0530, 0x0587, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab, /* 0x14a0-0x14a7 */
- 0x2014, 0x002e, 0x055d, 0x002c, 0x2013, 0x058a, 0x2026, 0x055c, /* 0x14a8-0x14af */
- 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563, /* 0x14b0-0x14b7 */
- 0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567, /* 0x14b8-0x14bf */
- 0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b, /* 0x14c0-0x14c7 */
- 0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f, /* 0x14c8-0x14cf */
- 0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573, /* 0x14d0-0x14d7 */
- 0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577, /* 0x14d8-0x14df */
- 0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b, /* 0x14e0-0x14e7 */
- 0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f, /* 0x14e8-0x14ef */
- 0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583, /* 0x14f0-0x14f7 */
- 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x02bc, 0x00a7, /* 0x14f8-0x14ff */
-};
-
-static unsigned short keysym_to_unicode_15d0_15f6[] = {
- 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, /* 0x15d0-0x15d7 */
- 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, /* 0x15d8-0x15df */
- 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, /* 0x15e0-0x15e7 */
- 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef, /* 0x15e8-0x15ef */
- 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0xf0f6 /* 0x15f0-0x15f7 */
-};
-
-static unsigned short keysym_to_unicode_16a0_16f6[] = {
- 0x0000, 0x0000, 0xf0a2, 0x1e8a, 0x0000, 0xf0a5, 0x012c, 0xf0a7, /* 0x16a0-0x16a7 */
- 0xf0a8, 0x01b5, 0x01e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x019f, /* 0x16a8-0x16af */
- 0x0000, 0x017e, 0xf0b2, 0x1e8b, 0x01d1, 0xf0b5, 0x012d, 0xf0b7, /* 0x16b0-0x16b7 */
- 0xf0b8, 0x01b6, 0x01e7, 0x01d2, 0x0000, 0x0000, 0x0000, 0x0275, /* 0x16b8-0x16bf */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x018f, 0x0000, /* 0x16c0-0x16c7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16c8-0x16cf */
- 0x0000, 0x1e36, 0xf0d2, 0xf0d3, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16d0-0x16d7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16d8-0x16df */
- 0x0000, 0x1e37, 0xf0e2, 0xf0e3, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16e0-0x16e7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16e8-0x16ef */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0259 /* 0x16f0-0x16f6 */
-};
-
-static unsigned short Const keysym_to_unicode_1e9f_1eff[] = {
- 0x0303,
- 0x1ea0, 0x1ea1, 0x1ea2, 0x1ea3, 0x1ea4, 0x1ea5, 0x1ea6, 0x1ea7, /* 0x1ea0-0x1ea7 */
- 0x1ea8, 0x1ea9, 0x1eaa, 0x1eab, 0x1eac, 0x1ead, 0x1eae, 0x1eaf, /* 0x1ea8-0x1eaf */
- 0x1eb0, 0x1eb1, 0x1eb2, 0x1eb3, 0x1eb4, 0x1eb5, 0x1eb6, 0x1eb7, /* 0x1eb0-0x1eb7 */
- 0x1eb8, 0x1eb9, 0x1eba, 0x1ebb, 0x1ebc, 0x1ebd, 0x1ebe, 0x1ebf, /* 0x1eb8-0x1ebf */
- 0x1ec0, 0x1ec1, 0x1ec2, 0x1ec3, 0x1ec4, 0x1ec5, 0x1ec6, 0x1ec7, /* 0x1ec0-0x1ec7 */
- 0x1ec8, 0x1ec9, 0x1eca, 0x1ecb, 0x1ecc, 0x1ecd, 0x1ece, 0x1ecf, /* 0x1ec8-0x1ecf */
- 0x1ed0, 0x1ed1, 0x1ed2, 0x1ed3, 0x1ed4, 0x1ed5, 0x1ed6, 0x1ed7, /* 0x1ed0-0x1ed7 */
- 0x1ed8, 0x1ed9, 0x1eda, 0x1edb, 0x1edc, 0x1edd, 0x1ede, 0x1edf, /* 0x1ed8-0x1edf */
- 0x1ee0, 0x1ee1, 0x1ee2, 0x1ee3, 0x1ee4, 0x1ee5, 0x1ee6, 0x1ee7, /* 0x1ee0-0x1ee7 */
- 0x1ee8, 0x1ee9, 0x1eea, 0x1eeb, 0x1eec, 0x1eed, 0x1eee, 0x1eef, /* 0x1ee8-0x1eef */
- 0x1ef0, 0x1ef1, 0x0300, 0x0301, 0x1ef4, 0x1ef5, 0x1ef6, 0x1ef7, /* 0x1ef0-0x1ef7 */
- 0x1ef8, 0x1ef9, 0x01a0, 0x01a1, 0x01af, 0x01b0, 0x0309, 0x0323 /* 0x1ef8-0x1eff */
-};
-
-static unsigned short Const keysym_to_unicode_20a0_20ac[] = {
- 0x20a0, 0x20a1, 0x20a2, 0x20a3, 0x20a4, 0x20a5, 0x20a6, 0x20a7, /* 0x20a0-0x20a7 */
- 0x20a8, 0x20a9, 0x20aa, 0x20ab, 0x20ac /* 0x20a8-0x20af */
-};
+typedef int (*ucstocsConvProc)(
+#if NeedFunctionPrototypes
+ XPointer,
+ unsigned char *,
+ ucs4_t,
+ int
+#endif
+);
-static int keysym_to_ucs4(keysym)
- KeySym keysym;
-{
- if (keysym > 0 && keysym < 0x100)
- return keysym;
- else if (keysym > 0x1a0 && keysym < 0x200)
- return keysym_to_unicode_1a1_1ff[keysym - 0x1a1];
- else if (keysym > 0x2a0 && keysym < 0x2ff)
- return keysym_to_unicode_2a1_2fe[keysym - 0x2a1];
- else if (keysym > 0x3a1 && keysym < 0x3ff)
- return keysym_to_unicode_3a2_3fe[keysym - 0x3a2];
- else if (keysym > 0x4a0 && keysym < 0x4e0)
- return keysym_to_unicode_4a1_4df[keysym - 0x4a1];
- else if (keysym > 0x589 && keysym < 0x5ff)
- return keysym_to_unicode_590_5fe[keysym - 0x590];
- else if (keysym > 0x67f && keysym < 0x700)
- return keysym_to_unicode_680_6ff[keysym - 0x680];
- else if (keysym > 0x7a0 && keysym < 0x7fa)
- return keysym_to_unicode_7a1_7f9[keysym - 0x7a1];
- else if (keysym > 0x8a3 && keysym < 0x8ff)
- return keysym_to_unicode_8a4_8fe[keysym - 0x8a4];
- else if (keysym > 0x9de && keysym < 0x9f9)
- return keysym_to_unicode_9df_9f8[keysym - 0x9df];
- else if (keysym > 0xaa0 && keysym < 0xaff)
- return keysym_to_unicode_aa1_afe[keysym - 0xaa1];
- else if (keysym > 0xcde && keysym < 0xcfb)
- return keysym_to_unicode_cdf_cfa[keysym - 0xcdf];
- else if (keysym > 0xda0 && keysym < 0xdfa)
- return keysym_to_unicode_da1_df9[keysym - 0xda1];
- else if (keysym > 0xe9f && keysym < 0xf00)
- return keysym_to_unicode_ea0_eff[keysym - 0xea0];
- else if (keysym > 0x12a0 && keysym < 0x12ff)
- return keysym_to_unicode_12a1_12fe[keysym - 0x12a1];
- else if (keysym > 0x13bb && keysym < 0x13bf)
- return keysym_to_unicode_13bc_13be[keysym - 0x13bc];
- else if (keysym > 0x14a0 && keysym < 0x1500)
- return keysym_to_unicode_14a1_14ff[keysym - 0x14a1];
- else if (keysym > 0x15cf && keysym < 0x15f7)
- return keysym_to_unicode_15d0_15f6[keysym - 0x15d0];
- else if (keysym > 0x169f && keysym < 0x16f7)
- return keysym_to_unicode_16a0_16f6[keysym - 0x16a0];
- else if (keysym > 0x1e9e && keysym < 0x1f00)
- return keysym_to_unicode_1e9f_1eff[keysym - 0x1ea0];
- else if (keysym > 0x209f && keysym < 0x20ad)
- return keysym_to_unicode_20a0_20ac[keysym - 0x20a0];
- else
- return 0;
-}
+XPointer _Utf8GetConvByName(
+ const char * name
+);
-struct CodesetRec {
- unsigned long locale_code;
- char* locale_name;
- char* charset_name;
+struct SubstRec {
+ char* encoding_name;
+ char* charset_name;
};
-#define sLatin1 0L
-#define sLatin2 1L
-#define sLatin3 2L
-#define sLatin4 3L
-#define sKana 4L
-#define sX0201 0x01000004L
-#define sArabic 5L
-#define sMs_cp1256 0x01000005L
-#define sIsiri_3342 0x02000005L
-#define sCyrillic 6L
-#define sKoi8_r 0x01000006L
-#define sKoi8_u 0x02000006L
-#define sKoi8_c 0x03000006L
-#define sMs_cp1251 0x04000006L
-#define sTatar_cyr 0x05000006L
-#define sGreek 7L
-#define sHebrew 12L
-#define sMs_cp1255 0x0100000cL
-#define sThai 13L
-#define sKorean 14L
-#define sLatin5 15L
-#define sLatin6 16L
-#define sLatin7 17L
-#define sLatin8 18L
-#define sLatin9 19L
-#define sArmenian 20L
-#define sGeorgian 21L
-#define sGeorgianPS 0x01000015L
-#define sLatin9e 22L
-#define sVietnamese 30L
-#define sVietnamese_tcvn 0x0100001eL
-#define sVietnamese_viscii 0x0200001eL
-#define sCurrency 32L
-#define sUTF8 0x02000000L
-
-static struct CodesetRec CodesetTable[] = {
- {sLatin1, "ISO8859-1", NULL },
- {sLatin2, "ISO8859-2", NULL },
- {sLatin3, "ISO8859-3", NULL },
- {sLatin4, "ISO8859-4", NULL },
- {sCyrillic, "ISO8859-5", NULL },
- {sArabic, "ISO8859-6", NULL },
- {sGreek, "ISO8859-7", NULL },
- {sHebrew, "ISO8859-8", NULL },
- {sLatin5, "ISO8859-9", NULL },
- {sLatin6, "ISO8859-10",NULL },
- {sKorean, "ko.euc", "KSC5601.1987-0:GL"},
- {sThai, "TACTIS", "TIS620.2533-1:GR" },
- {sThai, "ISO8859-11", "TIS620.2533-1:GR" },
- {sThai, "TIS620.2533-1", NULL },
-#if 0
- {sLatin8, "ISO8859-12", ""},/* Celtic, superceded by -14 */
-#endif
- {sLatin7, "ISO8859-13",NULL }, /* Baltic Rim */
- {sLatin8, "ISO8859-14", NULL},/* Celtic */
- {sLatin9, "ISO8859-15", NULL },/* a.k.a. Latin-0 */
- {sUTF8, "UTF-8", "ISO10646-1"},
- /* Non-standard */
- {sLatin9e, "ISO8859-9E", NULL },
- {sKoi8_r, "KOI8-R", NULL },
- {sKoi8_u, "KOI8-U", NULL },
- {sKoi8_c, "KOI8-C", NULL },
- {sMs_cp1251,"MICROSOFT-CP1251",NULL },
- {sMs_cp1255,"MICROSOFT-CP1255",NULL },
- {sMs_cp1256,"MICROSOFT-CP1256",NULL },
- {sTatar_cyr,"TATAR-CYR",NULL },
- {sIsiri_3342,"ISIRI-3342",NULL },
- {sArmenian, "ARMSCII-8", NULL },
- {sGeorgian, "GEORGIAN-ACADEMY", NULL },
- {sGeorgianPS,"GEORGIAN-PS", NULL },
- {sVietnamese_viscii,"VISCII1.1-1", NULL },
- {sVietnamese_tcvn, "TCVN-5712", NULL },
- /* TODO find better values for the sLatin1 below */
- {sLatin1, "IBM-CP1133", NULL },
- {sLatin1, "MULELAO-1", NULL },
-
+static struct SubstRec SubstTable[] = {
+ {"STRING", "ISO8859-1"},
+ {"TACTIS", "TIS620.2533-1"},
+ {"UTF-8", "ISO10646-1"}
};
-
-#define NUM_CODESETS sizeof CodesetTable / sizeof CodesetTable[0]
+#define num_substitute (sizeof SubstTable / sizeof SubstTable[0])
/*
- * Given the encoding name of a locale, returns the corresponding codeset
- * in two formats:
- * - If cset_set is not NULL, *cset_ret is set to the corresponding
- * struct CodesetRec *.
- * - A pointer to the corresponding constant locale_code is returned.
- * If the encoding name is not known, ISO-8859-1 is used as a fallback;
- * thus the returned pointers are never NULL.
+ * Given the name of a charset, returns the pointer to convertors
+ * from UCS char to specified charset char.
+ * This converter is needed for _XimGetCharCode subroutine.
*/
-unsigned long Const *
+XPointer
#if NeedFunctionPrototypes
_XimGetLocaleCode (
- _Xconst char* encoding_name,
- XlcCharSet* charset_ret)
+ _Xconst char* encoding_name)
#else
_XimGetLocaleCode (encoding_name, charset_ret)
_Xconst char* encoding_name;
- XlcCharSet* charset_ret;
#endif
{
- int i;
- struct CodesetRec* cset = &CodesetTable[0]; /* ISO8859-1 */
-
- if (encoding_name) {
- for (i = 0; i < NUM_CODESETS; i++) {
- if (strcmp (encoding_name, CodesetTable[i].locale_name) == 0) {
- cset = &CodesetTable[i];
- break;
- }
- }
- }
-
- if (charset_ret) {
- *charset_ret = NULL;
- if (cset->charset_name == NULL) {
- char *name = Xmalloc(strlen(cset->locale_name) + 4);
- if (name != NULL) {
- strcpy(name, cset->locale_name);
- strcat(name, ":GR");
- *charset_ret = _XlcGetCharSet(name);
- }
- } else {
- *charset_ret = _XlcGetCharSet(cset->charset_name);
- }
- if (*charset_ret == NULL)
- *charset_ret = _XlcGetCharSet("ISO8859-1:GR");
+ XPointer cvt = _Utf8GetConvByName(encoding_name);
+ if (!cvt) {
+ int i;
+ for (i = 0; i < num_substitute; i++)
+ if (!strcmp(encoding_name, SubstTable[i].encoding_name))
+ return _Utf8GetConvByName(SubstTable[i].charset_name);
}
- return &(cset->locale_code);
+ return cvt;
}
-#ifndef XK_emdash
-#define XK_emdash 0xaa9
-#endif
-
/*
* Returns the locale dependent representation of a keysym.
- * The locale's encoding is passed in form of its locale_code.
+ * The locale's encoding is passed in form of pointer to UCS convertor.
* The resulting multi-byte sequence is placed starting at buf (a buffer
* with nbytes bytes, nbytes should be >= 8) and is NUL terminated.
* Returns the length of the resulting multi-byte sequence, excluding the
* terminating NUL byte. Return 0 if the keysym is not representable in the
- * locale,
+ * locale
*/
/*ARGSUSED*/
int
#if NeedFunctionPrototypes
_XimGetCharCode (
- unsigned long locale_code,
+ XPointer ucs_conv,
KeySym keysym,
unsigned char* buf,
int nbytes)
#else
-_XimGetCharCode (locale_code, keysym, buf, nbytes)
- unsigned long locale_code;
+_XimGetCharCode (ucs_conv, keysym, buf, nbytes)
+ XPointer ucs_conv;
KeySym keysym;
unsigned char *buf;
int nbytes;
#endif
{
- unsigned long kset;
- int count,isLatin1;
-
- if ( keysym == NoSymbol )
- return 0;
-
- if (locale_code == sUTF8) {
- unsigned int ucs4 = keysym_to_ucs4 (keysym);
-
- if (!ucs4)
- return 0;
- if (ucs4 < 0x80)
- count = 1;
- else if (ucs4 < 0x800)
- count = 2;
- else if (ucs4 < 0x10000)
- count = 3;
- else if (ucs4 < 0x200000)
- count = 4;
- else if (ucs4 < 0x4000000)
- count = 5;
- else if (ucs4 <= 0x7fffffff)
- count = 6;
- else {
- fprintf(stderr, "bug in keysym_to_ucs4: 0x%04x\n", ucs4);
- return 0;
- }
- if (nbytes <= count) {
- fprintf(stderr, "_XimGetCharCode buffer too small\n");
- return 0;
- }
- switch (count) { /* note: code falls through cases! */
- case 6:
- buf[5] = 0x80 | (ucs4 & 0x3f);
- ucs4 = ucs4 >> 6; ucs4 |= 0x4000000;
- case 5:
- buf[4] = 0x80 | (ucs4 & 0x3f);
- ucs4 = ucs4 >> 6; ucs4 |= 0x200000;
- case 4:
- buf[3] = 0x80 | (ucs4 & 0x3f);
- ucs4 = ucs4 >> 6; ucs4 |= 0x10000;
- case 3:
- buf[2] = 0x80 | (ucs4 & 0x3f);
- ucs4 = ucs4 >> 6; ucs4 |= 0x800;
- case 2:
- buf[1] = 0x80 | (ucs4 & 0x3f);
- ucs4 = ucs4 >> 6; ucs4 |= 0xc0;
- case 1:
- buf[0] = ucs4;
- }
- buf[count]= '\0';
- return count;
- }
-
- kset = locale_code&0xffffff;
+ int count = 0;
+ ucstocsConvProc cvt = (ucstocsConvProc) ucs_conv;
+ ucs4_t ucs4;
- isLatin1 = ((keysym&0xffffff00)==0);
- count = 0;
-
- if ((keysym >> 8) == kset) {
- count = 1;
- switch (kset) {
- case sKana:
- *buf = (unsigned char)(keysym & 0xff);
- if (buf[0] == 0x7e)
- count = 0;
- break;
- case sCyrillic:
- if (locale_code == sKoi8_r)
- *buf = _Xkoi8_r[keysym & 0x7f];
- else if (locale_code == sKoi8_u)
- *buf = _Xkoi8_u[keysym & 0x7f];
- else if (locale_code == sKoi8_c)
- *buf = _Xkoi8_c[keysym & 0x7f];
- else if (locale_code == sMs_cp1251)
- *buf = _Xms_cp1251[keysym & 0x7f];
- else if (locale_code == sTatar_cyr)
- *buf = _Xtatar_cyr[keysym & 0x7f];
- else
- *buf = _Xcyrillic[keysym & 0x7f];
- break;
- case sGreek:
- *buf = _Xgreek[keysym & 0x7f];
- break;
- case sGeorgian:
- if (locale_code == sGeorgianPS)
- *buf = _Xgeorgian_ps[keysym & 0x7f];
- else
- *buf = (unsigned char)((keysym - 0x10) & 0xff);
- break;
- case sVietnamese:
- if (locale_code == sVietnamese_tcvn)
- *buf = _Xtcvn[keysym & 0x7f];
- else if (locale_code == sVietnamese_viscii)
- *buf = _Xviscii[keysym & 0x7f];
- else /* other viet encodings not defined */
- *buf = (unsigned char)(keysym & 0xff);
- break;
- default:
- *buf = (unsigned char)(keysym & 0xff);
- break;
- }
- if (!buf[0])
- count = 0;
- } else if ((locale_code != 0) && (isLatin1) && (keysym & 0x80)) {
- if (_Xlatin1[keysym & 0x7f] & (1 << kset)) {
- /* Most non-latin1 locales use some latin-1 upper half
- keysyms as defined by bitpatterns in array latin1.
- Enforce it. */
- *buf = (unsigned char)(keysym & 0xff);
- count = 1;
- } else {
- count= 1;
- if ((locale_code == sHebrew) && (keysym == XK_multiply))
- *buf = (unsigned char)0xaa;
- else if ((locale_code == sHebrew) && (keysym == XK_division))
- *buf = (unsigned char)0xba;
- else if ((locale_code == sCyrillic) && (keysym == XK_section))
- *buf = (unsigned char)0xfd;
- else if ((locale_code == sX0201) && (keysym == XK_yen))
- *buf = (unsigned char)0x5c;
- else if (locale_code == sLatin7) {
- switch (keysym) {
- case XK_acute: *buf = (unsigned char)0xff; break;
- case XK_AE: *buf = (unsigned char)0xaf; break;
- case XK_ae: *buf = (unsigned char)0xbf; break;
- case XK_Ooblique: *buf = (unsigned char)0xa8; break;
- case XK_oslash: *buf = (unsigned char)0xb8; break;
- default: count = 0;
- }
- } else if (locale_code == sVietnamese_tcvn) {
- switch (keysym) {
- case XK_Agrave: *buf = (unsigned char)0x80; break;
- case XK_agrave: *buf = (unsigned char)0xb5; break;
- case XK_Aacute: *buf = (unsigned char)0x83; break;
- case XK_aacute: *buf = (unsigned char)0xb8; break;
- case XK_Acircumflex:*buf = (unsigned char)0xa2; break;
- case XK_acircumflex:*buf = (unsigned char)0xa9; break;
- case XK_Atilde: *buf = (unsigned char)0x82; break;
- case XK_atilde: *buf = (unsigned char)0xb7; break;
- case XK_Egrave: *buf = (unsigned char)0x87; break;
- case XK_egrave: *buf = (unsigned char)0xcc; break;
- case XK_Eacute: *buf = (unsigned char)0x8a; break;
- case XK_eacute: *buf = (unsigned char)0xd0; break;
- case XK_Ecircumflex:*buf = (unsigned char)0xa3; break;
- case XK_ecircumflex:*buf = (unsigned char)0xaa; break;
- case XK_Igrave: *buf = (unsigned char)0x8d; break;
- case XK_igrave: *buf = (unsigned char)0xd7; break;
- case XK_Iacute: *buf = (unsigned char)0x90; break;
- case XK_iacute: *buf = (unsigned char)0xdd; break;
- case XK_Ograve: *buf = (unsigned char)0x92; break;
- case XK_ograve: *buf = (unsigned char)0xdf; break;
- case XK_Oacute: *buf = (unsigned char)0x95; break;
- case XK_oacute: *buf = (unsigned char)0xe3; break;
- case XK_Ocircumflex:*buf = (unsigned char)0xa4; break;
- case XK_ocircumflex:*buf = (unsigned char)0xab; break;
- case XK_Otilde: *buf = (unsigned char)0x94; break;
- case XK_otilde: *buf = (unsigned char)0xe2; break;
- case XK_Ugrave: *buf = (unsigned char)0x9d; break;
- case XK_ugrave: *buf = (unsigned char)0xef; break;
- case XK_Uacute: *buf = (unsigned char)0x01; break;
- case XK_uacute: *buf = (unsigned char)0xf3; break;
- case XK_Yacute: *buf = (unsigned char)0x16; break;
- case XK_yacute: *buf = (unsigned char)0xfd; break;
- default: count = 0;
- }
- } else if (locale_code == sVietnamese_viscii) {
- switch (keysym) {
- case XK_Otilde: *buf = (unsigned char)0xa0; break;
- case XK_otilde: *buf = (unsigned char)0xf5; break;
- default: *buf = (unsigned char)(keysym&0x7f);
- }
- } else if (locale_code == sLatin9e) {
- switch (keysym) {
- case XK_Yacute: *buf = (unsigned char)0xd7; break;
- case XK_yacute: *buf = (unsigned char)0xf7; break;
- default: *buf = (unsigned char)(keysym&0x7f);
- }
- }
- else count = 0;
- }
- if (!buf[0])
- count = 0;
- } else if (isLatin1) {
- if ((locale_code == sX0201) &&
- ((keysym == XK_backslash) || (keysym == XK_asciitilde)))
- count = 0;
- if ( (keysym&0x80)==0 ) {
- *buf = (unsigned char)(keysym&0x7f);
- count = 1;
- }
- } else if ((keysym >> 8) == sLatin2) {
- count = 1;
- if ((keysym & 0x80) && (_Xlatin2[keysym & 0x7f] & (1 << kset)))
- *buf = (unsigned char)(keysym & 0xff);
- else if (locale_code == sLatin5) {
- if (keysym == XK_Scedilla)
- *buf = (unsigned char)0xde;
- else if (keysym == XK_scedilla)
- *buf = (unsigned char)0xfe;
- else count = 0;
- } else if (locale_code == sLatin7) {
- switch (keysym) {
- case XK_Aogonek: *buf = (unsigned char)0xc0; break;
- case XK_aogonek: *buf = (unsigned char)0xe0; break;
- case XK_Cacute: *buf = (unsigned char)0xc3; break;
- case XK_cacute: *buf = (unsigned char)0xe3; break;
- case XK_Eogonek: *buf = (unsigned char)0xc6; break;
- case XK_eogonek: *buf = (unsigned char)0xe6; break;
- case XK_Zacute: *buf = (unsigned char)0xca; break;
- case XK_zacute: *buf = (unsigned char)0xea; break;
- case XK_Scaron: *buf = (unsigned char)0xd0; break;
- case XK_scaron: *buf = (unsigned char)0xf0; break;
- case XK_Lstroke: *buf = (unsigned char)0xd9; break;
- case XK_lstroke: *buf = (unsigned char)0xf9; break;
- case XK_Sacute: *buf = (unsigned char)0xda; break;
- case XK_sacute: *buf = (unsigned char)0xfa; break;
- case XK_Zabovedot: *buf = (unsigned char)0xdd; break;
- case XK_zabovedot: *buf = (unsigned char)0xfd; break;
- case XK_Zcaron: *buf = (unsigned char)0xde; break;
- case XK_zcaron: *buf = (unsigned char)0xfe; break;
- default: count = 0;
- }
- } else if (locale_code == sLatin9) {
- if (keysym == XK_Scaron)
- *buf = (unsigned char)0xa6;
- else if (keysym == XK_scaron)
- *buf = (unsigned char)0xa8;
- else if (keysym == XK_Zcaron)
- *buf = (unsigned char)0xb4;
- else if (keysym == XK_zcaron)
- *buf = (unsigned char)0xb8;
- else count = 0;
- } else if (locale_code == sLatin9e) {
- if (keysym == XK_Scedilla)
- *buf = (unsigned char)0xde;
- else if (keysym == XK_scedilla)
- *buf = (unsigned char)0xfe;
- else if (keysym == XK_Zcaron)
- *buf = (unsigned char)0xa1;
- else if (keysym == XK_zcaron)
- *buf = (unsigned char)0xb1;
- else count = 0;
- } else if (locale_code == sVietnamese_viscii) {
- if (keysym == XK_Abreve)
- *buf = (unsigned char)0xc5;
- else if (keysym == XK_abreve)
- *buf = (unsigned char)0xe5;
- else if (keysym == XK_Dstroke)
- *buf = (unsigned char)0xd0;
- else if (keysym == XK_dstroke)
- *buf = (unsigned char)0xf0;
- else count = 0;
- } else if (locale_code == sVietnamese_tcvn) {
- if (keysym == XK_Abreve)
- *buf = (unsigned char)0xa1;
- else if (keysym == XK_abreve)
- *buf = (unsigned char)0xa8;
- else if (keysym == XK_Dstroke)
- *buf = (unsigned char)0xa7;
- else if (keysym == XK_dstroke)
- *buf = (unsigned char)0xae;
- else count = 0;
- } else count = 0;
- if (!buf[0])
- count = 0;
- } else if ((keysym >> 8) == sLatin3) {
- if (locale_code == sLatin3) {
- count = 1;
- *buf = (unsigned char)(keysym & 0xff);
- } else if (locale_code == sLatin5) {
- count = 1;
- switch (keysym) {
- case XK_Gbreve: *buf = (unsigned char)0xd0; break;
- case XK_gbreve: *buf = (unsigned char)0xf0; break;
- case XK_Scedilla: *buf = (unsigned char)0xde; break;
- case XK_scedilla: *buf = (unsigned char)0xfe; break;
- case XK_Iabovedot: *buf = (unsigned char)0xdd; break;
- case XK_idotless: *buf = (unsigned char)0xfd; break;
- default: count = 0;
- }
- } else if (locale_code == sLatin7) {
- if (keysym == XK_Cabovedot)
- *buf = (unsigned char)0xa4;
- else if (keysym == XK_cabovedot)
- *buf = (unsigned char)0xa5;
- else if (keysym == XK_Gabovedot)
- *buf = (unsigned char)0xb2;
- else if (keysym == XK_gabovedot)
- *buf = (unsigned char)0xb3;
- else count = 0;
- } else if (locale_code == sLatin9e) {
- count = 1;
- switch (keysym) {
- case XK_Ubreve: *buf = (unsigned char)0xa8; break;
- case XK_ubreve: *buf = (unsigned char)0xb8; break;
- case XK_Gbreve: *buf = (unsigned char)0xd0; break;
- case XK_gbreve: *buf = (unsigned char)0xf0; break;
- case XK_Scedilla: *buf = (unsigned char)0xde; break;
- case XK_scedilla: *buf = (unsigned char)0xfe; break;
- case XK_Iabovedot: *buf = (unsigned char)0xdd; break;
- case XK_idotless: *buf = (unsigned char)0xfd; break;
- default: count = 0;
- }
- } else count = 0;
- if (!buf[0])
- count = 0;
- } else if ((keysym >> 8) == sLatin4) {
- if (locale_code == sLatin4) {
- count = 1;
- *buf = (unsigned char)(keysym & 0xff);
- } else if (locale_code == sLatin6) {
- count = 1;
- switch (keysym) {
- case XK_Emacron: *buf = (unsigned char)0xa2; break;
- case XK_Gcedilla: *buf = (unsigned char)0xa3; break;
- case XK_Imacron: *buf = (unsigned char)0xa4; break;
- case XK_Lcedilla: *buf = (unsigned char)0xa8; break;
- case XK_Dstroke: *buf = (unsigned char)0xa9; break;
- case XK_Scaron: *buf = (unsigned char)0xaa; break;
- case XK_Tslash: *buf = (unsigned char)0xab; break;
- case XK_Zcaron: *buf = (unsigned char)0xac; break;
- case XK_Umacron: *buf = (unsigned char)0xae; break;
- case XK_Utilde: *buf = (unsigned char)0xd7; break;
- case XK_ENG: *buf = (unsigned char)0xaf; break;
- case XK_emacron: *buf = (unsigned char)0xb2; break;
- case XK_gcedilla: *buf = (unsigned char)0xb3; break;
- case XK_imacron: *buf = (unsigned char)0xb4; break;
- case XK_lcedilla: *buf = (unsigned char)0xb8; break;
- case XK_dstroke: *buf = (unsigned char)0xb9; break;
- case XK_scaron: *buf = (unsigned char)0xba; break;
- case XK_tslash: *buf = (unsigned char)0xbb; break;
- case XK_zcaron: *buf = (unsigned char)0xbc; break;
- case XK_umacron: *buf = (unsigned char)0xbe; break;
- case XK_utilde: *buf = (unsigned char)0xf7; break;
- case XK_eng: *buf = (unsigned char)0xbf; break;
- case XK_kra: *buf = (unsigned char)0xff; break;
- case XK_Itilde:
- case XK_Kcedilla:
- case XK_Iogonek:
- case XK_Ncedilla:
- case XK_Omacron:
- case XK_Uogonek:
- case XK_itilde:
- case XK_kcedilla:
- case XK_iogonek:
- case XK_ncedilla:
- case XK_omacron:
- case XK_uogonek: *buf = (unsigned char)(keysym & 0xff); break;
- default: count = 0;
- }
- } else if (locale_code == sLatin7) {
- count = 1;
- switch (keysym) {
- case XK_Emacron: *buf = (unsigned char)0xc7; break;
- case XK_emacron: *buf = (unsigned char)0xe7; break;
- case XK_Gcedilla: *buf = (unsigned char)0xcc; break;
- case XK_gcedilla: *buf = (unsigned char)0xec; break;
- case XK_Rcedilla: *buf = (unsigned char)0xaa; break;
- case XK_rcedilla: *buf = (unsigned char)0xba; break;
- case XK_Imacron: *buf = (unsigned char)0xce; break;
- case XK_imacron: *buf = (unsigned char)0xee; break;
- case XK_Lcedilla: *buf = (unsigned char)0xcf; break;
- case XK_lcedilla: *buf = (unsigned char)0xef; break;
- case XK_Umacron: *buf = (unsigned char)0xdb; break;
- case XK_umacron: *buf = (unsigned char)0xfb; break;
- case XK_Amacron: *buf = (unsigned char)0xc2; break;
- case XK_amacron: *buf = (unsigned char)0xe2; break;
- case XK_Kcedilla: *buf = (unsigned char)0xcd; break;
- case XK_kcedilla: *buf = (unsigned char)0xed; break;
- case XK_Iogonek: *buf = (unsigned char)0xc1; break;
- case XK_iogonek: *buf = (unsigned char)0xe1; break;
- case XK_Eabovedot: *buf = (unsigned char)0xcb; break;
- case XK_eabovedot: *buf = (unsigned char)0xeb; break;
- case XK_Ncedilla: *buf = (unsigned char)0xd2; break;
- case XK_ncedilla: *buf = (unsigned char)0xf2; break;
- case XK_Omacron: *buf = (unsigned char)0xd4; break;
- case XK_omacron: *buf = (unsigned char)0xf4; break;
- case XK_Uogonek: *buf = (unsigned char)0xd8; break;
- case XK_uogonek: *buf = (unsigned char)0xf8; break;
- default: count = 0;
- }
- } else if (locale_code == sLatin9e) {
- if (keysym == XK_ENG)
- *buf = (unsigned char)0xac;
- else if (keysym == XK_eng)
- *buf = (unsigned char)0xbc;
- else count = 0;
- } else if (locale_code == sVietnamese_tcvn) {
- if (keysym == XK_Itilde)
- *buf = (unsigned char)0x8f;
- else if (keysym == XK_itilde)
- *buf = (unsigned char)0xdc;
- else if (keysym == XK_Utilde)
- *buf = (unsigned char)0x9f;
- else if (keysym == XK_utilde)
- *buf = (unsigned char)0xf2;
- else count = 0;
- } else if (locale_code == sVietnamese_viscii) {
- if (keysym == XK_Itilde)
- *buf = (unsigned char)0xce;
- else if (keysym == XK_itilde)
- *buf = (unsigned char)0xee;
- else if (keysym == XK_Utilde)
- *buf = (unsigned char)0x9d;
- else if (keysym == XK_utilde)
- *buf = (unsigned char)0xfb;
- else count = 0;
- }
- if (!buf[0])
- count = 0;
- } else if ((keysym >> 8) == sLatin8) {
- count = 1;
- if (locale_code == sLatin8) {
- *buf = (unsigned char)(keysym & 0xff);
- } else if (locale_code == sVietnamese_viscii) {
- if (keysym == XK_Ygrave)
- *buf = (unsigned char)0x9f;
- else if (keysym == XK_ygrave)
- *buf = (unsigned char)0xcf;
- else count = 0;
- } else if (locale_code == sVietnamese_tcvn) {
- if (keysym == XK_Ygrave)
- *buf = (unsigned char)0x13;
- else if (keysym == XK_ygrave)
- *buf = (unsigned char)0xfa;
- else count = 0;
- } else count = 0;
- if (!buf[0])
- count = 0;
- } else if ((keysym >> 8) == sLatin9) {
+ if (keysym < 0x80) {
+ buf[0] = (char) keysym;
count = 1;
- if (locale_code == sLatin9) {
- if (keysym == XK_OE)
- *buf = (unsigned char)0xbc;
- if (keysym == XK_oe)
- *buf = (unsigned char)0xbd;
- if (keysym == XK_Ydiaeresis)
- *buf = (unsigned char)0xbe;
- } else if (locale_code == sLatin9e) {
- if (keysym == XK_Ydiaeresis)
- *buf = (unsigned char)0xbe;
- } else count = 0;
- } else if (locale_code == sLatin7) {
- if (keysym == XK_rightdoublequotemark) {
- count = 1;
- *buf = (unsigned char)0xa1;
- } else if (keysym == XK_doublelowquotemark) {
- count = 1;
- *buf = (unsigned char)0xa5;
- } else if (keysym == XK_leftdoublequotemark) {
- count = 1;
- *buf = (unsigned char)0xb4;
- } else if (keysym == XK_rightsinglequotemark) {
- count = 1;
- *buf = (unsigned char)0xff;
- } else count = 0;
- } else if (locale_code == sLatin9e) {
- if (keysym == XK_SCHWA)
- *buf = (unsigned char)0xc6;
- else if (keysym == XK_schwa)
- *buf = (unsigned char)0xe6;
- else if (keysym == XK_Gcaron)
- *buf = (unsigned char)0xaa;
- else if (keysym == XK_gcaron)
- *buf = (unsigned char)0xba;
- else if (keysym == XK_Ocaron)
- *buf = (unsigned char)0xb4;
- else if (keysym == XK_ocaron)
- *buf = (unsigned char)0xbd;
- else if (keysym == XK_Obarred)
- *buf = (unsigned char)0xaf;
- else if (keysym == XK_obarred)
- *buf = (unsigned char)0xbf;
- else if (keysym == XK_Ibreve)
- *buf = (unsigned char)0xa6;
- else if (keysym == XK_ibreve)
- *buf = (unsigned char)0xb6;
- else count = 0;
- } else if (keysym == XK_EuroSign && ((locale_code == sLatin9) ||
- (locale_code == sLatin9e))) {
- count = 1;
- *buf = (unsigned char)0xa4;
- } else if ((locale_code == sGreek) &&
- ((keysym == XK_leftsinglequotemark) ||
- (keysym == XK_rightsinglequotemark))) {
- *buf = (unsigned char)(keysym - (XK_leftsinglequotemark - 0xa1));
- count = 1;
+ } else if (cvt) {
+ ucs4 = KeySymToUcs4(keysym);
+ if (ucs4)
+ count = (*cvt)((XPointer)NULL, buf, ucs4, nbytes);
}
+
+ if (count < 0)
+ count = 0;
if (count>nbytes)
- return nbytes;
+ return nbytes;
if (count<nbytes)
- buf[count]= '\0';
+ buf[count]= '\0';
return count;
}
@@ -1318,6 +188,7 @@ _XimLookupMBText(ic, event, buffer, nbytes, keysym, status)
Xim im = (Xim)ic->core.im;
XimCommonPrivateRec* private = &im->private.common;
unsigned char look[BUF_SIZE];
+ ucs4_t ucs4;
/* force a latin-1 lookup for compatibility */
count = XLOOKUPSTRING(event, (char *)buffer, nbytes, &symbol, status);
@@ -1333,29 +204,39 @@ _XimLookupMBText(ic, event, buffer, nbytes, keysym, status)
count = 0;
}
} else if ((count == 0) ||
- (count == 1 && (symbol > 0x7f && symbol < 0xff00) &&
- private->locale_code != 0)) {
- if ((count = _XimGetCharCode(private->locale_code, symbol,
- look, sizeof look))) {
+ (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
+
+ XPointer from = (XPointer) &ucs4;
+ XPointer to = (XPointer) look;
+ int from_len = 1;
+ int to_len = BUF_SIZE;
+ XPointer args[1];
+ XlcCharSet charset;
+ args[0] = (XPointer) &charset;
+ ucs4 = (ucs4_t) KeySymToUcs4(symbol);
+ if (!ucs4)
+ return 0;
- XPointer args[1];
- unsigned char *from = look;
- unsigned char *to = (unsigned char*) buffer;
- int from_len = count;
- int to_len = nbytes;
- args[0] = (XPointer) private->keyboard_charset;
-
- if ((count = _XlcConvert(private->cstomb_conv,
- (XPointer*) &from, &from_len,
- (XPointer*) &to, &to_len,
- args, 1 )) != 0) {
+ if ((count = _XlcConvert(private->ucs_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 )) != 0) {
+ count = 0;
+ } else {
+ from = (XPointer) look;
+ to = (XPointer) buffer;
+ from_len = BUF_SIZE - to_len;
+ to_len = nbytes;
+ args[0] = (XPointer) charset;
+ if (_XlcConvert(private->cstomb_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
count = 0;
} else {
count = nbytes - to_len;
}
}
}
- /*
+ /* FIXME:
* we should make sure that if the character is a Latin1 character
* and it's on the right side, and we're in a non-Latin1 locale
* that this is a valid Latin1 character for this locale.
@@ -1378,6 +259,7 @@ _XimLookupWCText(ic, event, buffer, nbytes, keysym, status)
Xim im = (Xim)ic->core.im;
XimCommonPrivateRec* private = &im->private.common;
unsigned char look[BUF_SIZE];
+ ucs4_t ucs4;
/* force a latin-1 lookup for compatibility */
count = XLOOKUPSTRING(event, (char *)look, nbytes, &symbol, status);
@@ -1391,28 +273,40 @@ _XimLookupWCText(ic, event, buffer, nbytes, keysym, status)
count = 0;
}
} else if ((count == 0) ||
- (count == 1 && (symbol > 0x7f && symbol < 0xff00) &&
- private->locale_code != 0)) {
- if ((count = _XimGetCharCode(private->locale_code, symbol,
- look, sizeof look))) {
- XPointer args[1];
- unsigned char *from = look;
- wchar_t *to = buffer;
- int from_len = count;
- int to_len = nbytes;
- args[0] = (XPointer) private->keyboard_charset;
-
- if ((count = _XlcConvert(private->cstowc_conv,
- (XPointer*) &from, &from_len,
- (XPointer*) &to, &to_len,
- args, 1 )) != 0) {
+ (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
+
+ XPointer from = (XPointer) &ucs4;
+ XPointer to = (XPointer) look;
+ int from_len = 1;
+ int to_len = BUF_SIZE;
+ XPointer args[1];
+ XlcCharSet charset;
+ args[0] = (XPointer) &charset;
+ ucs4 = (ucs4_t) KeySymToUcs4(symbol);
+ if (!ucs4)
+ return 0;
+
+ if ((count = _XlcConvert(private->ucs_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 )) != 0) {
+ count = 0;
+ } else {
+ from = (XPointer) look;
+ to = (XPointer) buffer;
+ from_len = BUF_SIZE - to_len;
+ to_len = nbytes;
+ args[0] = (XPointer) charset;
+
+ if (_XlcConvert(private->cstowc_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
count = 0;
} else {
count = nbytes - to_len;
}
}
} else
- /*
+ /* FIXME:
* we should make sure that if the character is a Latin1 character
* and it's on the right side, and we're in a non-Latin1 locale
* that this is a valid Latin1 character for this locale.
@@ -1421,3 +315,74 @@ _XimLookupWCText(ic, event, buffer, nbytes, keysym, status)
return count;
}
+
+int
+_XimLookupUTF8Text(ic, event, buffer, nbytes, keysym, status)
+ Xic ic;
+ XKeyEvent* event;
+ char* buffer;
+ int nbytes;
+ KeySym* keysym;
+ XComposeStatus* status;
+{
+ int count;
+ KeySym symbol;
+ Status dummy;
+ Xim im = (Xim)ic->core.im;
+ XimCommonPrivateRec* private = &im->private.common;
+ unsigned char look[BUF_SIZE];
+ ucs4_t ucs4;
+
+ /* force a latin-1 lookup for compatibility */
+ count = XLOOKUPSTRING(event, (char *)buffer, nbytes, &symbol, status);
+ if (keysym != NULL) *keysym = symbol;
+ if ((nbytes == 0) || (symbol == NoSymbol)) return count;
+
+ if (count > 1) {
+ memcpy(look, (char *)buffer,count);
+ look[count] = '\0';
+ if ((count = im->methods->ctstoutf8(ic->core.im,
+ (char*) look, count,
+ buffer, nbytes, &dummy)) < 0) {
+ count = 0;
+ }
+ } else if ((count == 0) ||
+ (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
+
+ XPointer from = (XPointer) &ucs4;
+ XPointer to = (XPointer) look;
+ int from_len = 1;
+ int to_len = BUF_SIZE;
+ XPointer args[1];
+ XlcCharSet charset;
+ args[0] = (XPointer) &charset;
+ ucs4 = (ucs4_t) KeySymToUcs4(symbol);
+ if (!ucs4)
+ return 0;
+
+ if ((count = _XlcConvert(private->ucs_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 )) != 0) {
+ count = 0;
+ } else {
+ from = (XPointer) look;
+ to = (XPointer) buffer;
+ from_len = BUF_SIZE - to_len;
+ to_len = nbytes;
+ args[0] = (XPointer) charset;
+ if (_XlcConvert(private->cstoutf8_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
+ count = 0;
+ } else {
+ count = nbytes - to_len;
+ }
+ }
+ }
+ /* FIXME:
+ * we should make sure that if the character is a Latin1 character
+ * and it's on the right side, and we're in a non-Latin1 locale
+ * that this is a valid Latin1 character for this locale.
+ */
+ return count;
+}
diff --git a/xc/lib/X11/imDefIc.c b/xc/lib/X11/imDefIc.c
index 7193cf02e..7c6202201 100644
--- a/xc/lib/X11/imDefIc.c
+++ b/xc/lib/X11/imDefIc.c
@@ -28,7 +28,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
-/* $XFree86: xc/lib/X11/imDefIc.c,v 3.6 1999/05/09 10:50:31 dawes Exp $ */
+/* $XFree86: xc/lib/X11/imDefIc.c,v 3.7 2000/11/28 18:49:35 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
@@ -187,17 +187,17 @@ _XimReCreateIC(ic)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimCreateICCheck, 0);
- if(ret_code == XIM_TRUE) {
+ if (ret_code == XIM_TRUE) {
preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
- if(len <= 0) {
+ } else if (ret_code == XIM_OVERFLOW) {
+ if (len <= 0) {
preply = reply;
} else {
buf_size = (int)len;
preply = (XPointer)Xmalloc(buf_size);
ret_code = _XimRead(im, &len, preply, buf_size,
_XimCreateICCheck, 0);
- if(ret_code != XIM_TRUE) {
+ if (ret_code != XIM_TRUE) {
Xfree(preply);
ic->private.proto.waitCallback = False;
goto ErrorOnReCreateIC;
@@ -211,13 +211,13 @@ _XimReCreateIC(ic)
buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
if (*((CARD8 *)preply) == XIM_ERROR) {
_XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
goto ErrorOnReCreateIC;
}
ic->private.proto.icid = buf_s[1]; /* icid */
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
_XimRegisterFilter(ic);
@@ -377,17 +377,17 @@ _XimProtoGetICValues(xic, arg)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimGetICValuesCheck, (XPointer)ic);
- if(ret_code == XIM_TRUE) {
+ if (ret_code == XIM_TRUE) {
preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
- if(len <= 0) {
+ } else if (ret_code == XIM_OVERFLOW) {
+ if (len <= 0) {
preply = reply;
} else {
buf_size = (int)len;
preply = (XPointer)Xmalloc(len);
ret_code = _XimRead(im, &len, preply, buf_size,
_XimGetICValuesCheck, (XPointer)ic);
- if(ret_code != XIM_TRUE) {
+ if (ret_code != XIM_TRUE) {
if (preply != reply)
Xfree(preply);
return arg->name;
@@ -399,7 +399,7 @@ _XimProtoGetICValues(xic, arg)
buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
if (*((CARD8 *)preply) == XIM_ERROR) {
_XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
return arg->name;
}
@@ -784,14 +784,14 @@ _XimProtoSetICValues(xic, arg)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimSetICValuesCheck, (XPointer)ic);
- if(ret_code == XIM_TRUE) {
+ if (ret_code == XIM_TRUE) {
preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
+ } else if (ret_code == XIM_OVERFLOW) {
buf_size = (int)len;
preply = (XPointer)Xmalloc(buf_size);
ret_code = _XimRead(im, &len, preply, buf_size,
_XimSetICValuesCheck, (XPointer)ic);
- if(ret_code != XIM_TRUE) {
+ if (ret_code != XIM_TRUE) {
Xfree(preply);
ic->private.proto.waitCallback = False;
return tmp_name;
@@ -804,11 +804,11 @@ _XimProtoSetICValues(xic, arg)
buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
if (*((CARD8 *)preply) == XIM_ERROR) {
_XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
return tmp_name;
}
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
return name;
@@ -928,7 +928,7 @@ _XimProtoDestroyIC(xic)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimDestroyICCheck, (XPointer)ic);
- if(ret_code == XIM_OVERFLOW) {
+ if (ret_code == XIM_OVERFLOW) {
buf_size = len;
preply = (XPointer)Xmalloc(buf_size);
(void)_XimRead(im, &len, preply, buf_size,
@@ -1070,58 +1070,9 @@ _XimResetICCheck(im, len, data, arg)
}
Private char *
-_XimCommitedMbString(im, ic, buf)
- Xim im;
- Xic ic;
- XPointer buf;
-{
- CARD16 *buf_s = (CARD16 *)buf;
- XimCommitInfo info;
- int len;
- int new_len;
- char *commit;
- char *new_commit = NULL;
- char *str;
- Status status;
-
- len = 0;
- for (info = ic->private.proto.commit_info; info; info = info->next)
- len += info->string_len;
- len += buf_s[0];
- if( len == 0 )
- return( NULL );
-
- if (!(commit = (char *)Xmalloc(len + 1)))
- goto Error_On_Reset;
-
- str = commit;
- for (info = ic->private.proto.commit_info; info; info = info->next) {
- (void)memcpy(str, info->string, info->string_len);
- str += info->string_len;
- }
- (void)memcpy(str, (char *)&buf_s[1], buf_s[0]);
- commit[len] = '\0';
-
- new_len = im->methods->ctstombs((XIM)im, commit, len, NULL, 0, &status);
- if (status != XLookupNone) {
- if (!(new_commit = Xmalloc(new_len + 1))) {
- Xfree(commit);
- goto Error_On_Reset;
- }
- (void)im->methods->ctstombs((XIM)im, commit, len,
- new_commit, new_len, NULL);
- new_commit[new_len] = '\0';
- }
- Xfree(commit);
-
-Error_On_Reset:
- _XimFreeCommitInfo( ic );
- return new_commit;
-}
-
-Private char *
-_XimProtoMbReset(xic)
+_XimProtoReset(xic, retfunc)
XIC xic;
+ char * (*retfunc) (Xim im, Xic ic, XPointer buf);
{
Xic ic = (Xic)xic;
Xim im = (Xim)ic->core.im;
@@ -1153,17 +1104,17 @@ _XimProtoMbReset(xic)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimResetICCheck, (XPointer)ic);
- if(ret_code == XIM_TRUE) {
+ if (ret_code == XIM_TRUE) {
preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
- if(len < 0) {
+ } else if (ret_code == XIM_OVERFLOW) {
+ if (len < 0) {
preply = reply;
} else {
buf_size = len;
preply = (XPointer)Xmalloc(buf_size);
ret_code = _XimRead(im, &len, preply, buf_size,
_XimResetICCheck, (XPointer)ic);
- if(ret_code != XIM_TRUE) {
+ if (ret_code != XIM_TRUE) {
Xfree(preply);
ic->private.proto.waitCallback = False;
return NULL;
@@ -1177,18 +1128,75 @@ _XimProtoMbReset(xic)
buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
if (*((CARD8 *)preply) == XIM_ERROR) {
_XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
+ if (reply != preply)
free(preply);
return NULL;
}
- commit = _XimCommitedMbString(im, ic, (XPointer)&buf_s[2]);
+ commit = retfunc(im, ic, (XPointer)&buf_s[2]);
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
return commit;
}
+Private char *
+_XimCommitedMbString(im, ic, buf)
+ Xim im;
+ Xic ic;
+ XPointer buf;
+{
+ CARD16 *buf_s = (CARD16 *)buf;
+ XimCommitInfo info;
+ int len;
+ int new_len;
+ char *commit;
+ char *new_commit = NULL;
+ char *str;
+ Status status;
+
+ len = 0;
+ for (info = ic->private.proto.commit_info; info; info = info->next)
+ len += info->string_len;
+ len += buf_s[0];
+ if ( len == 0 )
+ return( NULL );
+
+ if (!(commit = (char *)Xmalloc(len + 1)))
+ goto Error_On_Reset;
+
+ str = commit;
+ for (info = ic->private.proto.commit_info; info; info = info->next) {
+ (void)memcpy(str, info->string, info->string_len);
+ str += info->string_len;
+ }
+ (void)memcpy(str, (char *)&buf_s[1], buf_s[0]);
+ commit[len] = '\0';
+
+ new_len = im->methods->ctstombs((XIM)im, commit, len, NULL, 0, &status);
+ if (status != XLookupNone) {
+ if (!(new_commit = Xmalloc(new_len + 1))) {
+ Xfree(commit);
+ goto Error_On_Reset;
+ }
+ (void)im->methods->ctstombs((XIM)im, commit, len,
+ new_commit, new_len, NULL);
+ new_commit[new_len] = '\0';
+ }
+ Xfree(commit);
+
+Error_On_Reset:
+ _XimFreeCommitInfo( ic );
+ return new_commit;
+}
+
+Private char *
+_XimProtoMbReset(xic)
+ XIC xic;
+{
+ return _XimProtoReset(xic, _XimCommitedMbString);
+}
+
Private wchar_t *
_XimCommitedWcString(im, ic, buf)
Xim im;
@@ -1208,7 +1216,7 @@ _XimCommitedWcString(im, ic, buf)
for (info = ic->private.proto.commit_info; info; info = info->next)
len += info->string_len;
len += buf_s[0];
- if( len == 0 )
+ if ( len == 0 )
return( (wchar_t *)NULL );
if (!(commit = (char *)Xmalloc(len + 1)))
@@ -1244,69 +1252,65 @@ Private wchar_t *
_XimProtoWcReset(xic)
XIC xic;
{
- Xic ic = (Xic)xic;
- Xim im = (Xim)ic->core.im;
- CARD32 buf32[BUFSIZE/4];
- CARD8 *buf = (CARD8 *)buf32;
- CARD16 *buf_s = (CARD16 *)&buf[XIM_HEADER_SIZE];
- INT16 len;
- CARD32 reply32[BUFSIZE/4];
- char *reply = (char *)reply32;
- XPointer preply;
- int buf_size;
- int ret_code;
- wchar_t *commit;
+ return (wchar_t *) _XimProtoReset(xic,
+ (char * (*) (Xim, Xic, XPointer)) _XimCommitedWcString);
+}
- if (!IS_IC_CONNECTED(ic))
- return (wchar_t *)NULL;
+Private char *
+_XimCommitedUtf8String(im, ic, buf)
+ Xim im;
+ Xic ic;
+ XPointer buf;
+{
+ CARD16 *buf_s = (CARD16 *)buf;
+ XimCommitInfo info;
+ int len;
+ int new_len;
+ char *commit;
+ char *new_commit = NULL;
+ char *str;
+ Status status;
- buf_s[0] = im->private.proto.imid; /* imid */
- buf_s[1] = ic->private.proto.icid; /* icid */
+ len = 0;
+ for (info = ic->private.proto.commit_info; info; info = info->next)
+ len += info->string_len;
+ len += buf_s[0];
+ if ( len == 0 )
+ return( NULL );
- len = sizeof(CARD16) /* sizeof imid */
- + sizeof(CARD16); /* sizeof icid */
+ if (!(commit = (char *)Xmalloc(len + 1)))
+ goto Error_On_Reset;
- _XimSetHeader((XPointer)buf, XIM_RESET_IC, 0, &len);
- if (!(_XimWrite(im, len, (XPointer)buf)))
- return NULL;
- _XimFlush(im);
- ic->private.proto.waitCallback = True;
- buf_size = BUFSIZE;
- ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
- _XimResetICCheck, (XPointer)ic);
- if(ret_code == XIM_TRUE) {
- preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
- if(len <= 0) {
- preply = reply;
- } else {
- buf_size = len;
- preply = (XPointer)Xmalloc(buf_size);
- ret_code = _XimRead(im, &len, preply, buf_size,
- _XimResetICCheck, (XPointer)ic);
- if(ret_code != XIM_TRUE) {
- Xfree(preply);
- ic->private.proto.waitCallback = False;
- return NULL;
- }
- }
- } else {
- ic->private.proto.waitCallback = False;
- return NULL;
+ str = commit;
+ for (info = ic->private.proto.commit_info; info; info = info->next) {
+ (void)memcpy(str, info->string, info->string_len);
+ str += info->string_len;
}
- ic->private.proto.waitCallback = False;
- buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
- if (*((CARD8 *)preply) == XIM_ERROR) {
- _XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
- free(preply);
- return NULL;
+ (void)memcpy(str, (char *)&buf_s[1], buf_s[0]);
+ commit[len] = '\0';
+
+ new_len = im->methods->ctstoutf8((XIM)im, commit, len, NULL, 0, &status);
+ if (status != XLookupNone) {
+ if (!(new_commit = Xmalloc(new_len + 1))) {
+ Xfree(commit);
+ goto Error_On_Reset;
+ }
+ (void)im->methods->ctstoutf8((XIM)im, commit, len,
+ new_commit, new_len, NULL);
+ new_commit[new_len] = '\0';
}
+ Xfree(commit);
- commit = _XimCommitedWcString(im, ic, (XPointer)&buf_s[2]);
+Error_On_Reset:
+ _XimFreeCommitInfo( ic );
+ return new_commit;
+}
- Xfree(preply);
- return commit;
+Private char *
+_XimProtoUtf8Reset(xic)
+ XIC xic;
+{
+ return _XimProtoReset(xic, _XimCommitedUtf8String);
}
Private XICMethodsRec ic_methods = {
@@ -1317,8 +1321,10 @@ Private XICMethodsRec ic_methods = {
_XimProtoGetICValues, /* get_values */
_XimProtoMbReset, /* mb_reset */
_XimProtoWcReset, /* wc_reset */
+ _XimProtoUtf8Reset, /* utf8_reset */
_XimProtoMbLookupString, /* mb_lookup_string */
_XimProtoWcLookupString, /* wc_lookup_string */
+ _XimProtoUtf8LookupString /* utf8_lookup_string */
};
Private Bool
@@ -1357,12 +1363,12 @@ _XimDelayModeCreateIC(ic, values, res, num)
_XimSetICMode(res, num, input_style);
- if(_XimSetICValueData(ic, (XPointer)&ic_values, res, num,
+ if (_XimSetICValueData(ic, (XPointer)&ic_values, res, num,
values, XIM_CREATEIC, False)) {
return False;
}
_XimSetCurrentICValues(ic, &ic_values);
- if(!_XimSetICDefaults(ic, (XPointer)&ic_values,
+ if (!_XimSetICDefaults(ic, (XPointer)&ic_values,
XIM_SETICDEFAULTS, res, num)) {
return False;
}
@@ -1549,17 +1555,17 @@ _XimProtoCreateIC(xim, arg)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimCreateICCheck, 0);
- if(ret_code == XIM_TRUE) {
+ if (ret_code == XIM_TRUE) {
preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
- if(len <= 0) {
+ } else if (ret_code == XIM_OVERFLOW) {
+ if (len <= 0) {
preply = reply;
} else {
buf_size = (int)len;
preply = (XPointer)Xmalloc(buf_size);
ret_code = _XimRead(im, &len, preply, buf_size,
_XimCreateICCheck, 0);
- if(ret_code != XIM_TRUE) {
+ if (ret_code != XIM_TRUE) {
Xfree(preply);
ic->private.proto.waitCallback = False;
goto ErrorOnCreatingIC;
@@ -1573,14 +1579,14 @@ _XimProtoCreateIC(xim, arg)
buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
if (*((CARD8 *)preply) == XIM_ERROR) {
_XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
goto ErrorOnCreatingIC;
}
ic->private.proto.icid = buf_s[1]; /* icid */
- if(reply != preply)
- Xfree(preply);
+ if (reply != preply)
+ Xfree(preply);
MARK_IC_CONNECTED(ic);
return (XIC)ic;
diff --git a/xc/lib/X11/imDefIm.c b/xc/lib/X11/imDefIm.c
index 4b58da348..6b036f333 100644
--- a/xc/lib/X11/imDefIm.c
+++ b/xc/lib/X11/imDefIm.c
@@ -31,7 +31,7 @@ OF THIS SOFTWARE.
makoto@sm.sony.co.jp
******************************************************************/
-/* $XFree86: xc/lib/X11/imDefIm.c,v 1.4 2000/06/13 02:28:28 dawes Exp $ */
+/* $XFree86: xc/lib/X11/imDefIm.c,v 1.6 2000/11/28 18:49:35 dawes Exp $ */
#include <X11/Xatom.h>
#define NEED_EVENTS
@@ -1037,6 +1037,10 @@ _XimProtoIMFree(im)
_XlcCloseConverter(im->private.proto.ctow_conv);
im->private.proto.ctow_conv = NULL;
}
+ if (im->private.proto.ctoutf8_conv) {
+ _XlcCloseConverter(im->private.proto.ctoutf8_conv);
+ im->private.proto.ctoutf8_conv = NULL;
+ }
if (im->private.proto.cstomb_conv) {
_XlcCloseConverter(im->private.proto.cstomb_conv);
im->private.proto.cstomb_conv = NULL;
@@ -1045,6 +1049,10 @@ _XimProtoIMFree(im)
_XlcCloseConverter(im->private.proto.cstowc_conv);
im->private.proto.cstowc_conv = NULL;
}
+ if (im->private.proto.cstoutf8_conv) {
+ _XlcCloseConverter(im->private.proto.cstoutf8_conv);
+ im->private.proto.cstoutf8_conv = NULL;
+ }
#ifdef XIM_CONNECTABLE
if (!IS_SERVER_CONNECTED(im) && IS_RECONNECTABLE(im)) {
@@ -1549,7 +1557,8 @@ Private XIMMethodsRec im_methods = {
_XimProtoGetIMValues, /* get_values */
_XimProtoCreateIC, /* create_ic */
_Ximctstombs, /* ctstombs */
- _Ximctstowcs /* ctstowcs */
+ _Ximctstowcs, /* ctstowcs */
+ _Ximctstoutf8 /* ctstoutf8 */
};
Private Bool
@@ -1611,6 +1620,7 @@ _XimGetEncoding(im, buf, name, name_len, detail, detail_len)
int len;
XlcConv ctom_conv;
XlcConv ctow_conv;
+ XlcConv ctoutf8_conv;
XlcConv conv;
XimProtoPrivateRec *private = &im->private.proto;
@@ -1621,6 +1631,9 @@ _XimGetEncoding(im, buf, name, name_len, detail, detail_len)
if (!(ctow_conv = _XlcOpenConverter(lcd,
XlcNCompoundText, lcd, XlcNWideChar)))
return False;
+ if (!(ctoutf8_conv = _XlcOpenConverter(lcd,
+ XlcNCompoundText, lcd, XlcNUtf8String)))
+ return False;
}
if (category == XIM_Encoding_NameCategory) {
@@ -1633,6 +1646,9 @@ _XimGetEncoding(im, buf, name, name_len, detail, detail_len)
if (!(ctow_conv = _XlcOpenConverter(lcd,
XlcNCompoundText, lcd, XlcNWideChar)))
return False;
+ if (!(ctoutf8_conv = _XlcOpenConverter(lcd,
+ XlcNCompoundText, lcd, XlcNUtf8String)))
+ return False;
break;
} else {
/*
@@ -1653,6 +1669,8 @@ _XimGetEncoding(im, buf, name, name_len, detail, detail_len)
private->ctom_conv = ctom_conv;
private->ctow_conv = ctow_conv;
+ private->ctoutf8_conv = ctoutf8_conv;
+
if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte)))
return False;
private->cstomb_conv = conv;
@@ -1661,8 +1679,14 @@ _XimGetEncoding(im, buf, name, name_len, detail, detail_len)
return False;
private->cstowc_conv = conv;
- private->locale_code = * _XimGetLocaleCode(XLC_PUBLIC(lcd,encoding_name),
- (XlcCharSet*) &(private->keyboard_charset));
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String)))
+ return False;
+ private->cstoutf8_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNChar)))
+ return False;
+ private->ucs_conv = conv;
+
return True;
}
diff --git a/xc/lib/X11/imDefLkup.c b/xc/lib/X11/imDefLkup.c
index c877e0af9..1c88cc0fd 100644
--- a/xc/lib/X11/imDefLkup.c
+++ b/xc/lib/X11/imDefLkup.c
@@ -26,7 +26,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
-/* $XFree86: xc/lib/X11/imDefLkup.c,v 3.6 1999/05/09 10:50:32 dawes Exp $ */
+/* $XFree86: xc/lib/X11/imDefLkup.c,v 3.7 2000/11/28 18:49:36 dawes Exp $ */
#include <X11/Xatom.h>
#define NEED_EVENTS
@@ -827,7 +827,7 @@ _XimErrorCallback(xim, len, data, call_data)
XIMID imid;
XICID icid;
Xim im = (Xim)call_data;
- Xic ic;
+ Xic ic = NULL;
if (flag & XIM_IMID_VALID) {
imid = buf_s[0];
@@ -902,17 +902,15 @@ _XimError(im, ic, error_code, detail_length, type, detail)
#define MAXINT (~((unsigned int)1 << ((8 * sizeof(int)) - 1)))
#endif /* !MAXINT */
-Public int
-_Ximctstombs(xim, from, from_len, to, to_len, state)
- XIM xim;
+Private int
+_Ximctsconvert(conv, from, from_len, to, to_len, state)
+ XlcConv conv;
char *from;
int from_len;
char *to;
int to_len;
Status *state;
{
- Xim im = (Xim)xim;
- XlcConv conv = im->private.proto.ctom_conv;
int from_left;
int to_left;
int from_savelen;
@@ -988,6 +986,19 @@ _Ximctstombs(xim, from, from_len, to, to_len, state)
}
Public int
+_Ximctstombs(xim, from, from_len, to, to_len, state)
+ XIM xim;
+ char *from;
+ int from_len;
+ char *to;
+ int to_len;
+ Status *state;
+{
+ return _Ximctsconvert(((Xim)xim)->private.proto.ctom_conv,
+ from, from_len, to, to_len, state);
+}
+
+Public int
_Ximctstowcs(xim, from, from_len, to, to_len, state)
XIM xim;
char *from;
@@ -1073,6 +1084,19 @@ _Ximctstowcs(xim, from, from_len, to, to_len, state)
}
Public int
+_Ximctstoutf8(xim, from, from_len, to, to_len, state)
+ XIM xim;
+ char *from;
+ int from_len;
+ char *to;
+ int to_len;
+ Status *state;
+{
+ return _Ximctsconvert(((Xim)xim)->private.proto.ctoutf8_conv,
+ from, from_len, to, to_len, state);
+}
+
+Public int
_XimProtoMbLookupString(xic, ev, buffer, bytes, keysym, state)
XIC xic;
XKeyEvent *ev;
@@ -1195,3 +1219,65 @@ _XimProtoWcLookupString(xic, ev, buffer, bytes, keysym, state)
return ret;
}
+
+Public int
+_XimProtoUtf8LookupString(xic, ev, buffer, bytes, keysym, state)
+ XIC xic;
+ XKeyEvent *ev;
+ char *buffer;
+ int bytes;
+ KeySym *keysym;
+ Status *state;
+{
+ Xic ic = (Xic)xic;
+ Xim im = (Xim)ic->core.im;
+ int ret;
+ Status tmp_state;
+ XimCommitInfo info;
+
+ if (!IS_SERVER_CONNECTED(im))
+ return 0;
+
+ if (!state)
+ state = &tmp_state;
+
+ if (ev->type == KeyPress && ev->keycode == 0) { /* Filter function */
+ if (!(info = ic->private.proto.commit_info)) {
+ if (state)
+ *state = XLookupNone;
+ return 0;
+ }
+
+ ret = im->methods->ctstoutf8((XIM)im, info->string,
+ info->string_len, buffer, bytes, state);
+ if (*state == XBufferOverflow)
+ return 0;
+ if (keysym && (info->keysym && *(info->keysym))) {
+ *keysym = *(info->keysym);
+ if (*state == XLookupChars)
+ *state = XLookupBoth;
+ else
+ *state = XLookupKeySym;
+ }
+ _XimUnregCommitInfo(ic);
+
+ } else if (ev->type == KeyPress) {
+ ret = _XimLookupUTF8Text(ic, ev, buffer, bytes, keysym, NULL);
+ if (ret > 0) {
+ if (keysym && *keysym != NoSymbol)
+ *state = XLookupBoth;
+ else
+ *state = XLookupChars;
+ } else {
+ if (keysym && *keysym != NoSymbol)
+ *state = XLookupKeySym;
+ else
+ *state = XLookupNone;
+ }
+ } else {
+ *state = XLookupNone;
+ ret = 0;
+ }
+
+ return ret;
+}
diff --git a/xc/lib/X11/imKStoUCS.c b/xc/lib/X11/imKStoUCS.c
new file mode 100644
index 000000000..7fed86376
--- /dev/null
+++ b/xc/lib/X11/imKStoUCS.c
@@ -0,0 +1,330 @@
+/* $XFree86: xc/lib/X11/imKStoUCS.c,v 1.1 2000/11/28 17:25:08 dawes Exp $ */
+
+#include "Xlibint.h"
+
+#ifdef __STDC__
+#define Const const
+#else
+#define Const /**/
+#endif
+
+static unsigned short Const keysym_to_unicode_1a1_1ff[] = {
+ 0x0104, 0x02d8, 0x0141, 0x0000, 0x013d, 0x015a, 0x0000, /* 0x01a0-0x01a7 */
+ 0x0000, 0x0160, 0x015e, 0x0164, 0x0179, 0x0000, 0x017d, 0x017b, /* 0x01a8-0x01af */
+ 0x0000, 0x0105, 0x02db, 0x0142, 0x0000, 0x013e, 0x015b, 0x02c7, /* 0x01b0-0x01b7 */
+ 0x0000, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, /* 0x01b8-0x01bf */
+ 0x0154, 0x0000, 0x0000, 0x0102, 0x0000, 0x0139, 0x0106, 0x0000, /* 0x01c0-0x01c7 */
+ 0x010c, 0x0000, 0x0118, 0x0000, 0x011a, 0x0000, 0x0000, 0x010e, /* 0x01c8-0x01cf */
+ 0x0110, 0x0143, 0x0147, 0x0000, 0x0000, 0x0150, 0x0000, 0x0000, /* 0x01d0-0x01d7 */
+ 0x0158, 0x016e, 0x0000, 0x0170, 0x0000, 0x0000, 0x0162, 0x0000, /* 0x01d8-0x01df */
+ 0x0155, 0x0000, 0x0000, 0x0103, 0x0000, 0x013a, 0x0107, 0x0000, /* 0x01e0-0x01e7 */
+ 0x010d, 0x0000, 0x0119, 0x0000, 0x011b, 0x0000, 0x0000, 0x010f, /* 0x01e8-0x01ef */
+ 0x0111, 0x0144, 0x0148, 0x0000, 0x0000, 0x0151, 0x0000, 0x0000, /* 0x01f0-0x01f7 */
+ 0x0159, 0x016f, 0x0000, 0x0171, 0x0000, 0x0000, 0x0163, 0x02d9 /* 0x01f8-0x01ff */
+};
+
+static unsigned short Const keysym_to_unicode_2a1_2fe[] = {
+ 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0124, 0x0000, /* 0x02a0-0x02a7 */
+ 0x0000, 0x0130, 0x0000, 0x011e, 0x0134, 0x0000, 0x0000, 0x0000, /* 0x02a8-0x02af */
+ 0x0000, 0x0127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0125, 0x0000, /* 0x02b0-0x02b7 */
+ 0x0000, 0x0131, 0x0000, 0x011f, 0x0135, 0x0000, 0x0000, 0x0000, /* 0x02b8-0x02bf */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010a, 0x0108, 0x0000, /* 0x02c0-0x02c7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x02c8-0x02cf */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0120, 0x0000, 0x0000, /* 0x02d0-0x02d7 */
+ 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x016c, 0x015c, 0x0000, /* 0x02d8-0x02df */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010b, 0x0109, 0x0000, /* 0x02e0-0x02e7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x02e8-0x02ef */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, /* 0x02f0-0x02f7 */
+ 0x011d, 0x0000, 0x0000, 0x0000, 0x0000, 0x016d, 0x015d /* 0x02f8-0x02ff */
+};
+
+static unsigned short Const keysym_to_unicode_3a2_3fe[] = {
+ 0x0138, 0x0156, 0x0000, 0x0128, 0x013b, 0x0000, /* 0x03a0-0x03a7 */
+ 0x0000, 0x0000, 0x0112, 0x0122, 0x0166, 0x0000, 0x0000, 0x0000, /* 0x03a8-0x03af */
+ 0x0000, 0x0000, 0x0000, 0x0157, 0x0000, 0x0129, 0x013c, 0x0000, /* 0x03b0-0x03b7 */
+ 0x0000, 0x0000, 0x0113, 0x0123, 0x0167, 0x014a, 0x0000, 0x014b, /* 0x03b8-0x03bf */
+ 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x012e, /* 0x03c0-0x03c7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0116, 0x0000, 0x0000, 0x012a, /* 0x03c8-0x03cf */
+ 0x0000, 0x0145, 0x014c, 0x0136, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x03d0-0x03d7 */
+ 0x0000, 0x0172, 0x0000, 0x0000, 0x0000, 0x0168, 0x016a, 0x0000, /* 0x03d8-0x03df */
+ 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x012f, /* 0x03e0-0x03e7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0117, 0x0000, 0x0000, 0x012b, /* 0x03e8-0x03ef */
+ 0x0000, 0x0146, 0x014d, 0x0137, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x03f0-0x03f7 */
+ 0x0000, 0x0173, 0x0000, 0x0000, 0x0000, 0x0169, 0x016b /* 0x03f8-0x03ff */
+};
+
+static unsigned short Const keysym_to_unicode_4a1_4df[] = {
+ 0x3002, 0x3008, 0x3009, 0x3001, 0x30fb, 0x30f2, 0x30a1, /* 0x04a0-0x04a7 */
+ 0x30a3, 0x30a5, 0x30a7, 0x30a9, 0x30e3, 0x30e5, 0x30e7, 0x30c3, /* 0x04a8-0x04af */
+ 0x30fc, 0x30a2, 0x30a4, 0x30a6, 0x30a8, 0x30aa, 0x30ab, 0x30ad, /* 0x04b0-0x04b7 */
+ 0x30af, 0x30b1, 0x30b3, 0x30b5, 0x30b7, 0x30b9, 0x30bb, 0x30bd, /* 0x04b8-0x04bf */
+ 0x30bf, 0x30c1, 0x30c4, 0x30c6, 0x30c8, 0x30ca, 0x30cb, 0x30cc, /* 0x04c0-0x04c7 */
+ 0x30cd, 0x30ce, 0x30cf, 0x30d2, 0x30d5, 0x30d8, 0x30db, 0x30de, /* 0x04c8-0x04cf */
+ 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30e9, /* 0x04d0-0x04d7 */
+ 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ef, 0x30f3, 0x309b, 0x309c /* 0x04d8-0x04df */
+};
+
+static unsigned short Const keysym_to_unicode_590_5fe[] = {
+ 0x06f0, 0x06f1, 0x06f2, 0x06f3, 0x06f4, 0x06f5, 0x06f6, 0x06f7, /* 0x0590-0x0597 */
+ 0x06f8, 0x06f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0598-0x059f */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x066a, 0x0670, 0x0679, /* 0x05a0-0x05a7 */
+
+ 0x067e, 0x0686, 0x0688, 0x0691, 0x060c, 0x0000, 0x06d4, 0x0000, /* 0x05ac-0x05af */
+ 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, /* 0x05b0-0x05b7 */
+ 0x0668, 0x0669, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f, /* 0x05b8-0x05bf */
+ 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* 0x05c0-0x05c7 */
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, /* 0x05c8-0x05cf */
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, /* 0x05d0-0x05d7 */
+ 0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x05d8-0x05df */
+ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, /* 0x05e0-0x05e7 */
+ 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, /* 0x05e8-0x05ef */
+ 0x0650, 0x0651, 0x0652, 0x0653, 0x0654, 0x0655, 0x0698, 0x06a4, /* 0x05f0-0x05f7 */
+ 0x06a9, 0x06af, 0x06ba, 0x06be, 0x06cc, 0x06d2, 0x06c1 /* 0x05f8-0x05fe */
+};
+
+static unsigned short keysym_to_unicode_680_6ff[] = {
+ 0x0492, 0x0496, 0x049a, 0x049c, 0x04a2, 0x04ae, 0x04b0, 0x04b2, /* 0x0680-0x0687 */
+ 0x04b6, 0x04b8, 0x04ba, 0x0000, 0x04d8, 0x04e2, 0x04e8, 0x04ee, /* 0x0688-0x068f */
+ 0x0493, 0x0497, 0x049b, 0x049d, 0x04a3, 0x04af, 0x04b1, 0x04b3, /* 0x0690-0x0697 */
+ 0x04b7, 0x04b9, 0x04bb, 0x0000, 0x04d9, 0x04e3, 0x04e9, 0x04ef, /* 0x0698-0x069f */
+ 0x0000, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, /* 0x06a0-0x06a7 */
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0491, 0x045e, 0x045f, /* 0x06a8-0x06af */
+ 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, /* 0x06b0-0x06b7 */
+ 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x0490, 0x040e, 0x040f, /* 0x06b8-0x06bf */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 0x06c0-0x06c7 */
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, /* 0x06c8-0x06cf */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 0x06d0-0x06d7 */
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, /* 0x06d8-0x06df */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 0x06e0-0x06e7 */
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, /* 0x06e8-0x06ef */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 0x06f0-0x06f7 */
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a /* 0x06f8-0x06ff */
+};
+
+static unsigned short Const keysym_to_unicode_7a1_7f9[] = {
+ 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0x0000, 0x038c, /* 0x07a0-0x07a7 */
+ 0x038e, 0x03ab, 0x0000, 0x038f, 0x0000, 0x0000, 0x0385, 0x2015, /* 0x07a8-0x07af */
+ 0x0000, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, /* 0x07b0-0x07b7 */
+ 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x07b8-0x07bf */
+ 0x0000, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 0x07c0-0x07c7 */
+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, /* 0x07c8-0x07cf */
+ 0x03a0, 0x03a1, 0x03a3, 0x0000, 0x03a4, 0x03a5, 0x03a6, 0x03a7, /* 0x07d0-0x07d7 */
+ 0x03a8, 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x07d8-0x07df */
+ 0x0000, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, /* 0x07e0-0x07e7 */
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, /* 0x07e8-0x07ef */
+ 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, /* 0x07f0-0x07f7 */
+ 0x03c8, 0x03c9 /* 0x07f8-0x07ff */
+};
+
+static unsigned short Const keysym_to_unicode_8a4_8fe[] = {
+ 0x2320, 0x2321, 0x0000, 0x231c, /* 0x08a0-0x08a7 */
+ 0x231d, 0x231e, 0x231f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08a8-0x08af */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08b0-0x08b7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2264, 0x2260, 0x2265, 0x222b, /* 0x08b8-0x08bf */
+ 0x2234, 0x0000, 0x221e, 0x0000, 0x0000, 0x2207, 0x0000, 0x0000, /* 0x08c0-0x08c7 */
+ 0x2245, 0x2246, 0x0000, 0x0000, 0x0000, 0x0000, 0x22a2, 0x0000, /* 0x08c8-0x08cf */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x221a, 0x0000, /* 0x08d0-0x08d7 */
+ 0x0000, 0x0000, 0x2282, 0x2283, 0x2229, 0x222a, 0x2227, 0x2228, /* 0x08d8-0x08df */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08e0-0x08e7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08e8-0x08ef */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0192, 0x0000, /* 0x08f0-0x08f7 */
+ 0x0000, 0x0000, 0x0000, 0x2190, 0x2191, 0x2192, 0x2193 /* 0x08f8-0x08ff */
+};
+
+static unsigned short Const keysym_to_unicode_9df_9f8[] = {
+ 0x2422, /* 0x09d8-0x09df */
+ 0x2666, 0x25a6, 0x2409, 0x240c, 0x240d, 0x240a, 0x0000, 0x0000, /* 0x09e0-0x09e7 */
+ 0x240a, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 0x2500, /* 0x09e8-0x09ef */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x251c, 0x2524, 0x2534, 0x252c, /* 0x09f0-0x09f7 */
+ 0x2502 /* 0x09f8-0x09ff */
+};
+
+static unsigned short Const keysym_to_unicode_aa1_afe[] = {
+ 0x2003, 0x2002, 0x2004, 0x2005, 0x2007, 0x2008, 0x2009, /* 0x0aa0-0x0aa7 */
+ 0x200a, 0x2014, 0x2013, 0x0000, 0x0000, 0x0000, 0x2026, 0x2025, /* 0x0aa8-0x0aaf */
+ 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x215a, /* 0x0ab0-0x0ab7 */
+ 0x2105, 0x0000, 0x0000, 0x2012, 0x2039, 0x2024, 0x203a, 0x0000, /* 0x0ab8-0x0abf */
+ 0x0000, 0x0000, 0x0000, 0x215b, 0x215c, 0x215d, 0x215e, 0x0000, /* 0x0ac0-0x0ac7 */
+ 0x0000, 0x2122, 0x2120, 0x0000, 0x25c1, 0x25b7, 0x25cb, 0x25ad, /* 0x0ac8-0x0acf */
+ 0x2018, 0x2019, 0x201c, 0x201d, 0x211e, 0x0000, 0x2032, 0x2033, /* 0x0ad0-0x0ad7 */
+ 0x0000, 0x271d, 0x0000, 0x220e, 0x25c2, 0x2023, 0x25cf, 0x25ac, /* 0x0ad8-0x0adf */
+ 0x25e6, 0x25ab, 0x25ae, 0x25b5, 0x25bf, 0x2606, 0x2022, 0x25aa, /* 0x0ae0-0x0ae7 */
+ 0x25b4, 0x25be, 0x261a, 0x261b, 0x2663, 0x2666, 0x2665, 0x0000, /* 0x0ae8-0x0aef */
+ 0x2720, 0x2020, 0x2021, 0x2713, 0x2612, 0x266f, 0x266d, 0x2642, /* 0x0af0-0x0af7 */
+ 0x2640, 0x2121, 0x2315, 0x2117, 0x2038, 0x201a, 0x201e /* 0x0af8-0x0aff */
+};
+
+/* none of the APL keysyms match the Unicode characters */
+
+static unsigned short Const keysym_to_unicode_cdf_cfa[] = {
+ 0x2017, /* 0x0cd8-0x0cdf */
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, /* 0x0ce0-0x0ce7 */
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, /* 0x0ce8-0x0cef */
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, /* 0x0cf0-0x0cf7 */
+ 0x05e8, 0x05e9, 0x05ea /* 0x0cf8-0x0cff */
+};
+
+static unsigned short Const keysym_to_unicode_da1_df9[] = {
+ 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, /* 0x0da0-0x0da7 */
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, /* 0x0da8-0x0daf */
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, /* 0x0db0-0x0db7 */
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, /* 0x0db8-0x0dbf */
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, /* 0x0dc0-0x0dc7 */
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, /* 0x0dc8-0x0dcf */
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, /* 0x0dd0-0x0dd7 */
+ 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0e3e, 0x0e3f, /* 0x0dd8-0x0ddf */
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, /* 0x0de0-0x0de7 */
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0000, 0x0000, /* 0x0de8-0x0def */
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, /* 0x0df0-0x0df7 */
+ 0x0e58, 0x0e59 /* 0x0df8-0x0dff */
+};
+
+static unsigned short Const keysym_to_unicode_ea0_eff[] = {
+ 0x0000, 0x1101, 0x1101, 0x11aa, 0x1102, 0x11ac, 0x11ad, 0x1103, /* 0x0ea0-0x0ea7 */
+ 0x1104, 0x1105, 0x11b0, 0x11b1, 0x11b2, 0x11b3, 0x11b4, 0x11b5, /* 0x0ea8-0x0eaf */
+ 0x11b6, 0x1106, 0x1107, 0x1108, 0x11b9, 0x1109, 0x110a, 0x110b, /* 0x0eb0-0x0eb7 */
+ 0x110c, 0x110d, 0x110e, 0x110f, 0x1110, 0x1111, 0x1112, 0x1161, /* 0x0eb8-0x0ebf */
+ 0x1162, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167, 0x1168, 0x1169, /* 0x0ec0-0x0ec7 */
+ 0x116a, 0x116b, 0x116c, 0x116d, 0x116e, 0x116f, 0x1170, 0x1171, /* 0x0ec8-0x0ecf */
+ 0x1172, 0x1173, 0x1174, 0x1175, 0x11a8, 0x11a9, 0x11aa, 0x11ab, /* 0x0ed0-0x0ed7 */
+ 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2, 0x11b3, /* 0x0ed8-0x0edf */
+ 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba, 0x11bb, /* 0x0ee0-0x0ee7 */
+ 0x11bc, 0x11bd, 0x11be, 0x11bf, 0x11c0, 0x11c1, 0x11c2, 0x0000, /* 0x0ee8-0x0eef */
+ 0x0000, 0x0000, 0x1140, 0x0000, 0x0000, 0x1159, 0x119e, 0x0000, /* 0x0ef0-0x0ef7 */
+ 0x11eb, 0x0000, 0x11f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x20a9, /* 0x0ef8-0x0eff */
+};
+
+static unsigned short keysym_to_unicode_12a1_12fe[] = {
+ 0x1e02, 0x1e03, 0x0000, 0x0000, 0x0000, 0x1e0a, 0x0000, /* 0x12a0-0x12a7 */
+ 0x1e80, 0x0000, 0x1e82, 0x1e0b, 0x1ef2, 0x0000, 0x0000, 0x0000, /* 0x12a8-0x12af */
+ 0x1e1e, 0x1e1f, 0x0000, 0x0000, 0x1e40, 0x1e41, 0x0000, 0x1e56, /* 0x12b0-0x12b7 */
+ 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, /* 0x12b8-0x12bf */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12c0-0x12c7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12c8-0x12cf */
+ 0x0174, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e6a, /* 0x12d0-0x12d7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0176, 0x0000, /* 0x12d8-0x12df */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12e0-0x12e7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12e8-0x12ef */
+ 0x0175, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e6b, /* 0x12f0-0x12f7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0177 /* 0x12f0-0x12ff */
+};
+
+static unsigned short Const keysym_to_unicode_13bc_13be[] = {
+ 0x0152, 0x0153, 0x0178 /* 0x13b8-0x13bf */
+};
+
+static unsigned short keysym_to_unicode_14a1_14ff[] = {
+ 0x2741, 0x00a7, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab, /* 0x14a0-0x14a7 */
+ 0x2014, 0x002e, 0x055d, 0x002c, 0x2013, 0x058a, 0x2026, 0x055c, /* 0x14a8-0x14af */
+ 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563, /* 0x14b0-0x14b7 */
+ 0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567, /* 0x14b8-0x14bf */
+ 0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b, /* 0x14c0-0x14c7 */
+ 0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f, /* 0x14c8-0x14cf */
+ 0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573, /* 0x14d0-0x14d7 */
+ 0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577, /* 0x14d8-0x14df */
+ 0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b, /* 0x14e0-0x14e7 */
+ 0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f, /* 0x14e8-0x14ef */
+ 0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583, /* 0x14f0-0x14f7 */
+ 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x2019, 0x0027, /* 0x14f8-0x14ff */
+};
+
+static unsigned short keysym_to_unicode_15d0_15f6[] = {
+ 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, /* 0x15d0-0x15d7 */
+ 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, /* 0x15d8-0x15df */
+ 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, /* 0x15e0-0x15e7 */
+ 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef, /* 0x15e8-0x15ef */
+ 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6 /* 0x15f0-0x15f7 */
+};
+
+static unsigned short keysym_to_unicode_16a0_16f6[] = {
+ 0x0000, 0x0000, 0xf0a2, 0x1e8a, 0x0000, 0xf0a5, 0x012c, 0xf0a7, /* 0x16a0-0x16a7 */
+ 0xf0a8, 0x01b5, 0x01e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x019f, /* 0x16a8-0x16af */
+ 0x0000, 0x017e, 0xf0b2, 0x1e8b, 0x01d1, 0xf0b5, 0x012d, 0xf0b7, /* 0x16b0-0x16b7 */
+ 0xf0b8, 0x01b6, 0x01e7, 0x01d2, 0x0000, 0x0000, 0x0000, 0x0275, /* 0x16b8-0x16bf */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x018f, 0x0000, /* 0x16c0-0x16c7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16c8-0x16cf */
+ 0x0000, 0x1e36, 0xf0d2, 0xf0d3, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16d0-0x16d7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16d8-0x16df */
+ 0x0000, 0x1e37, 0xf0e2, 0xf0e3, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16e0-0x16e7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16e8-0x16ef */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0259 /* 0x16f0-0x16f6 */
+};
+
+static unsigned short Const keysym_to_unicode_1e9f_1eff[] = {
+ 0x0303,
+ 0x1ea0, 0x1ea1, 0x1ea2, 0x1ea3, 0x1ea4, 0x1ea5, 0x1ea6, 0x1ea7, /* 0x1ea0-0x1ea7 */
+ 0x1ea8, 0x1ea9, 0x1eaa, 0x1eab, 0x1eac, 0x1ead, 0x1eae, 0x1eaf, /* 0x1ea8-0x1eaf */
+ 0x1eb0, 0x1eb1, 0x1eb2, 0x1eb3, 0x1eb4, 0x1eb5, 0x1eb6, 0x1eb7, /* 0x1eb0-0x1eb7 */
+ 0x1eb8, 0x1eb9, 0x1eba, 0x1ebb, 0x1ebc, 0x1ebd, 0x1ebe, 0x1ebf, /* 0x1eb8-0x1ebf */
+ 0x1ec0, 0x1ec1, 0x1ec2, 0x1ec3, 0x1ec4, 0x1ec5, 0x1ec6, 0x1ec7, /* 0x1ec0-0x1ec7 */
+ 0x1ec8, 0x1ec9, 0x1eca, 0x1ecb, 0x1ecc, 0x1ecd, 0x1ece, 0x1ecf, /* 0x1ec8-0x1ecf */
+ 0x1ed0, 0x1ed1, 0x1ed2, 0x1ed3, 0x1ed4, 0x1ed5, 0x1ed6, 0x1ed7, /* 0x1ed0-0x1ed7 */
+ 0x1ed8, 0x1ed9, 0x1eda, 0x1edb, 0x1edc, 0x1edd, 0x1ede, 0x1edf, /* 0x1ed8-0x1edf */
+ 0x1ee0, 0x1ee1, 0x1ee2, 0x1ee3, 0x1ee4, 0x1ee5, 0x1ee6, 0x1ee7, /* 0x1ee0-0x1ee7 */
+ 0x1ee8, 0x1ee9, 0x1eea, 0x1eeb, 0x1eec, 0x1eed, 0x1eee, 0x1eef, /* 0x1ee8-0x1eef */
+ 0x1ef0, 0x1ef1, 0x0300, 0x0301, 0x1ef4, 0x1ef5, 0x1ef6, 0x1ef7, /* 0x1ef0-0x1ef7 */
+ 0x1ef8, 0x1ef9, 0x01a0, 0x01a1, 0x01af, 0x01b0, 0x0309, 0x0323 /* 0x1ef8-0x1eff */
+};
+
+static unsigned short Const keysym_to_unicode_20a0_20ac[] = {
+ 0x20a0, 0x20a1, 0x20a2, 0x20a3, 0x20a4, 0x20a5, 0x20a6, 0x20a7, /* 0x20a0-0x20a7 */
+ 0x20a8, 0x20a9, 0x20aa, 0x20ab, 0x20ac /* 0x20a8-0x20af */
+};
+
+unsigned int
+#if NeedFunctionPrototypes
+KeySymToUcs4(KeySym keysym)
+#else
+KeySymToUcs4(keysym)
+ KeySym keysym;
+#endif
+{
+ /* 'Unicode keysym' */
+ if ((keysym & 0xff000000) == 0x01000000)
+ return (keysym & 0x00ffffff);
+
+ if (keysym > 0 && keysym < 0x100)
+ return keysym;
+ else if (keysym > 0x1a0 && keysym < 0x200)
+ return keysym_to_unicode_1a1_1ff[keysym - 0x1a1];
+ else if (keysym > 0x2a0 && keysym < 0x2ff)
+ return keysym_to_unicode_2a1_2fe[keysym - 0x2a1];
+ else if (keysym > 0x3a1 && keysym < 0x3ff)
+ return keysym_to_unicode_3a2_3fe[keysym - 0x3a2];
+ else if (keysym > 0x4a0 && keysym < 0x4e0)
+ return keysym_to_unicode_4a1_4df[keysym - 0x4a1];
+ else if (keysym > 0x589 && keysym < 0x5ff)
+ return keysym_to_unicode_590_5fe[keysym - 0x590];
+ else if (keysym > 0x67f && keysym < 0x700)
+ return keysym_to_unicode_680_6ff[keysym - 0x680];
+ else if (keysym > 0x7a0 && keysym < 0x7fa)
+ return keysym_to_unicode_7a1_7f9[keysym - 0x7a1];
+ else if (keysym > 0x8a3 && keysym < 0x8ff)
+ return keysym_to_unicode_8a4_8fe[keysym - 0x8a4];
+ else if (keysym > 0x9de && keysym < 0x9f9)
+ return keysym_to_unicode_9df_9f8[keysym - 0x9df];
+ else if (keysym > 0xaa0 && keysym < 0xaff)
+ return keysym_to_unicode_aa1_afe[keysym - 0xaa1];
+ else if (keysym > 0xcde && keysym < 0xcfb)
+ return keysym_to_unicode_cdf_cfa[keysym - 0xcdf];
+ else if (keysym > 0xda0 && keysym < 0xdfa)
+ return keysym_to_unicode_da1_df9[keysym - 0xda1];
+ else if (keysym > 0xe9f && keysym < 0xf00)
+ return keysym_to_unicode_ea0_eff[keysym - 0xea0];
+ else if (keysym > 0x12a0 && keysym < 0x12ff)
+ return keysym_to_unicode_12a1_12fe[keysym - 0x12a1];
+ else if (keysym > 0x13bb && keysym < 0x13bf)
+ return keysym_to_unicode_13bc_13be[keysym - 0x13bc];
+ else if (keysym > 0x14a0 && keysym < 0x1500)
+ return keysym_to_unicode_14a1_14ff[keysym - 0x14a1];
+ else if (keysym > 0x15cf && keysym < 0x15f7)
+ return keysym_to_unicode_15d0_15f6[keysym - 0x15d0];
+ else if (keysym > 0x169f && keysym < 0x16f7)
+ return keysym_to_unicode_16a0_16f6[keysym - 0x16a0];
+ else if (keysym > 0x1e9e && keysym < 0x1f00)
+ return keysym_to_unicode_1e9f_1eff[keysym - 0x1ea0];
+ else if (keysym > 0x209f && keysym < 0x20ad)
+ return keysym_to_unicode_20a0_20ac[keysym - 0x20a0];
+ else
+ return 0;
+}
diff --git a/xc/lib/X11/imLcIc.c b/xc/lib/X11/imLcIc.c
index 263868905..bca64aad6 100644
--- a/xc/lib/X11/imLcIc.c
+++ b/xc/lib/X11/imLcIc.c
@@ -26,7 +26,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
-/* $XFree86: xc/lib/X11/imLcIc.c,v 1.2 2000/02/18 16:23:11 dawes Exp $ */
+/* $XFree86: xc/lib/X11/imLcIc.c,v 1.3 2000/11/28 18:49:36 dawes Exp $ */
#include <stdio.h>
#include <X11/Xlib.h>
@@ -89,24 +89,29 @@ _XimLocalSetFocus(xic)
return;
}
-Private char *
-_XimLocalMbReset(xic)
+Private void
+_XimLocalReset(xic)
XIC xic;
{
Xic ic = (Xic)xic;
ic->private.local.composed = (DefTree *)NULL;
ic->private.local.context = ((Xim)ic->core.im)->private.local.top;
- return((char *)NULL);
+}
+
+Private char *
+_XimLocalMbReset(xic)
+ XIC xic;
+{
+ _XimLocalReset(xic);
+ return (char *)NULL;
}
Private wchar_t *
_XimLocalWcReset(xic)
XIC xic;
{
- Xic ic = (Xic)xic;
- ic->private.local.composed = (DefTree *)NULL;
- ic->private.local.context = ((Xim)ic->core.im)->private.local.top;
- return((wchar_t *)NULL);
+ _XimLocalReset(xic);
+ return (wchar_t *)NULL;
}
Private XICMethodsRec Local_ic_methods = {
@@ -117,8 +122,10 @@ Private XICMethodsRec Local_ic_methods = {
_XimLocalGetICValues, /* get_values */
_XimLocalMbReset, /* mb_reset */
_XimLocalWcReset, /* wc_reset */
+ _XimLocalMbReset, /* utf8_reset */
_XimLocalMbLookupString, /* mb_lookup_string */
_XimLocalWcLookupString, /* wc_lookup_string */
+ _XimLocalUtf8LookupString /* utf8_lookup_string */
};
Public XIC
diff --git a/xc/lib/X11/imLcIm.c b/xc/lib/X11/imLcIm.c
index 7b978e8fb..89149c0ae 100644
--- a/xc/lib/X11/imLcIm.c
+++ b/xc/lib/X11/imLcIm.c
@@ -32,7 +32,7 @@ THIS SOFTWARE.
frankyling@hgrd01.enet.dec.com
******************************************************************/
-/* $XFree86: xc/lib/X11/imLcIm.c,v 1.5 2000/06/14 18:20:33 dawes Exp $ */
+/* $XFree86: xc/lib/X11/imLcIm.c,v 1.7 2000/11/28 18:49:37 dawes Exp $ */
#include <stdio.h>
/*
@@ -82,6 +82,7 @@ XimFreeDefaultTree(top)
if (top->next) XimFreeDefaultTree(top->next);
if (top->mb) Xfree(top->mb);
if (top->wc) Xfree(top->wc);
+ if (top->utf8) Xfree(top->utf8);
Xfree(top);
}
@@ -130,6 +131,10 @@ _XimLocalIMFree(im)
_XlcCloseConverter(im->private.local.ctow_conv);
im->private.local.ctow_conv = NULL;
}
+ if (im->private.local.ctoutf8_conv) {
+ _XlcCloseConverter(im->private.local.ctoutf8_conv);
+ im->private.local.ctoutf8_conv = NULL;
+ }
if (im->private.local.cstomb_conv) {
_XlcCloseConverter(im->private.local.cstomb_conv);
im->private.local.cstomb_conv = NULL;
@@ -138,6 +143,10 @@ _XimLocalIMFree(im)
_XlcCloseConverter(im->private.local.cstowc_conv);
im->private.local.cstowc_conv = NULL;
}
+ if (im->private.local.cstoutf8_conv) {
+ _XlcCloseConverter(im->private.local.cstoutf8_conv);
+ im->private.local.cstoutf8_conv = NULL;
+ }
return;
}
@@ -214,7 +223,8 @@ Private XIMMethodsRec Xim_im_local_methods = {
_XimLocalGetIMValues, /* get_values */
_XimLocalCreateIC, /* create_ic */
_XimLcctstombs, /* ctstombs */
- _XimLcctstowcs /* ctstowcs */
+ _XimLcctstowcs, /* ctstowcs */
+ _XimLcctstoutf8 /* ctstoutf8 */
};
Public Bool
@@ -255,6 +265,10 @@ _XimLocalOpenIM(im)
goto Open_Error;
private->ctow_conv = conv;
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->ctoutf8_conv = conv;
+
if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte)))
goto Open_Error;
private->cstomb_conv = conv;
@@ -263,8 +277,13 @@ _XimLocalOpenIM(im)
goto Open_Error;
private->cstowc_conv = conv;
- private->locale_code = * _XimGetLocaleCode(XLC_PUBLIC(lcd,encoding_name),
- (XlcCharSet*) &(private->keyboard_charset));
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->cstoutf8_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNChar)))
+ goto Open_Error;
+ private->ucs_conv = conv;
im->methods = &Xim_im_local_methods;
private->current_ic = (XIC)NULL;
diff --git a/xc/lib/X11/imLcLkup.c b/xc/lib/X11/imLcLkup.c
index 641a03e17..e96d5bc12 100644
--- a/xc/lib/X11/imLcLkup.c
+++ b/xc/lib/X11/imLcLkup.c
@@ -29,7 +29,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
-/* $XFree86: xc/lib/X11/imLcLkup.c,v 3.2 1999/05/09 10:50:36 dawes Exp $ */
+/* $XFree86: xc/lib/X11/imLcLkup.c,v 3.3 2000/11/28 18:49:37 dawes Exp $ */
#include <stdio.h>
#include <X11/Xatom.h>
@@ -156,21 +156,76 @@ _XimLocalWcLookupString(xic, ev, buffer, wlen, keysym, status)
return (ret);
}
+Public int
+_XimLocalUtf8LookupString(xic, ev, buffer, bytes, keysym, status)
+ XIC xic;
+ XKeyEvent *ev;
+ char *buffer;
+ int bytes;
+ KeySym *keysym;
+ Status *status;
+{
+ Xic ic = (Xic)xic;
+ int ret;
+
+ if(ev->type != KeyPress) {
+ if(status) *status = XLookupNone;
+ return(0);
+ }
+ if(ev->keycode == 0) { /* Composed Event */
+ ret = strlen(ic->private.local.composed->utf8);
+ if(ret > bytes) {
+ if(status) *status = XBufferOverflow;
+ return (ret);
+ }
+ memcpy(buffer, ic->private.local.composed->utf8, ret);
+ if(keysym) *keysym = ic->private.local.composed->ks;
+ if (ret > 0) {
+ if(keysym && *keysym != NoSymbol) {
+ if(status) *status = XLookupBoth;
+ } else {
+ if(status) *status = XLookupChars;
+ }
+ } else {
+ if(keysym && *keysym != NoSymbol) {
+ if(status) *status = XLookupKeySym;
+ } else {
+ if(status) *status = XLookupNone;
+ }
+ }
+ return (ret);
+ } else { /* Throughed Event */
+ ret = _XimLookupUTF8Text(ic, ev, buffer, bytes, keysym, NULL);
+ if(ret > 0) {
+ if(keysym && *keysym != NoSymbol) {
+ if(status) *status = XLookupBoth;
+ } else {
+ if(status) *status = XLookupChars;
+ }
+ } else {
+ if(keysym && *keysym != NoSymbol) {
+ if(status) *status = XLookupKeySym;
+ } else {
+ if(status) *status = XLookupNone;
+ }
+ }
+ }
+ return (ret);
+}
+
#ifndef MAXINT
#define MAXINT (~((unsigned int)1 << ((8 * sizeof(int)) - 1)))
#endif /* !MAXINT */
-Public int
-_XimLcctstombs(xim, from, from_len, to, to_len, state)
- XIM xim;
+Private int
+_XimLcctsconvert(conv, from, from_len, to, to_len, state)
+ XlcConv conv;
char *from;
int from_len;
char *to;
int to_len;
Status *state;
{
- Xim im = (Xim)xim;
- XlcConv conv = im->private.local.ctom_conv;
int from_left;
int to_left;
int from_savelen;
@@ -246,6 +301,19 @@ _XimLcctstombs(xim, from, from_len, to, to_len, state)
}
Public int
+_XimLcctstombs(xim, from, from_len, to, to_len, state)
+ XIM xim;
+ char *from;
+ int from_len;
+ char *to;
+ int to_len;
+ Status *state;
+{
+ return _XimLcctsconvert(((Xim)xim)->private.local.ctom_conv,
+ from, from_len, to, to_len, state);
+}
+
+Public int
_XimLcctstowcs(xim, from, from_len, to, to_len, state)
XIM xim;
char *from;
@@ -329,3 +397,16 @@ _XimLcctstowcs(xim, from, from_len, to, to_len, state)
}
return to_cnvlen;
}
+
+Public int
+_XimLcctstoutf8(xim, from, from_len, to, to_len, state)
+ XIM xim;
+ char *from;
+ int from_len;
+ char *to;
+ int to_len;
+ Status *state;
+{
+ return _XimLcctsconvert(((Xim)xim)->private.local.ctoutf8_conv,
+ from, from_len, to, to_len, state);
+}
diff --git a/xc/lib/X11/imLcPrs.c b/xc/lib/X11/imLcPrs.c
index beaebea11..f9ecd6d27 100644
--- a/xc/lib/X11/imLcPrs.c
+++ b/xc/lib/X11/imLcPrs.c
@@ -30,7 +30,7 @@ OR PERFORMANCE OF THIS SOFTWARE.
******************************************************************/
-/* $XFree86: xc/lib/X11/imLcPrs.c,v 1.4 1998/10/04 11:48:07 dawes Exp $ */
+/* $XFree86: xc/lib/X11/imLcPrs.c,v 1.5 2000/11/28 18:49:38 dawes Exp $ */
#include <X11/Xlib.h>
#include <X11/Xmd.h>
@@ -49,6 +49,14 @@ extern int _Xmbstowcs(
#endif
);
+extern int _Xmbstoutf8(
+#if NeedFunctionPrototypes
+ char *ustr,
+ const char *str,
+ int len
+#endif
+);
+
/*
* Parsing File Format:
*
@@ -295,6 +303,7 @@ modmask(name)
#define AllMask (ShiftMask | LockMask | ControlMask | Mod1Mask)
#define LOCAL_WC_BUFSIZE 128
+#define LOCAL_UTF8_BUFSIZE 256
#define SEQUENCE_MAX 10
static int
@@ -315,6 +324,7 @@ parseline(fp, top, tokenbuf)
int l;
int lastch = 0;
wchar_t local_wc_buf[LOCAL_WC_BUFSIZE], *rhs_string_wc;
+ char local_utf8_buf[LOCAL_UTF8_BUFSIZE], *rhs_string_utf8;
struct DefBuffer {
unsigned modifier_mask;
@@ -445,6 +455,17 @@ parseline(fp, top, tokenbuf)
}
memcpy((char *)rhs_string_wc, (char *)local_wc_buf, (l + 1) * sizeof(wchar_t) );
+ l = _Xmbstoutf8(local_utf8_buf, rhs_string_mb, LOCAL_UTF8_BUFSIZE - 1);
+ if (l == LOCAL_UTF8_BUFSIZE - 1) {
+ local_wc_buf[l] = '\0';
+ }
+ if( (rhs_string_utf8 = (char *)Xmalloc(l + 1)) == NULL ) {
+ Xfree( rhs_string_wc );
+ Xfree( rhs_string_mb );
+ return( 0 );
+ }
+ memcpy(rhs_string_utf8, local_utf8_buf, l + 1);
+
for (i = 0; i < n; i++) {
for (p = *top; p; p = p->next) {
if (buf[i].keysym == p->keysym &&
@@ -467,6 +488,7 @@ parseline(fp, top, tokenbuf)
p->next = *top;
p->mb = NULL;
p->wc = NULL;
+ p->utf8 = NULL;
p->ks = NoSymbol;
*top = p;
top = &p->succession;
@@ -479,6 +501,9 @@ parseline(fp, top, tokenbuf)
if( p->wc != NULL )
Xfree( p->wc );
p->wc = rhs_string_wc;
+ if( p->utf8 != NULL )
+ Xfree( p->utf8 );
+ p->utf8 = rhs_string_utf8;
p->ks = rhs_keysym;
return(n);
error:
diff --git a/xc/lib/X11/imThaiFlt.c b/xc/lib/X11/imThaiFlt.c
index 14bad4db5..a5dad60f7 100644
--- a/xc/lib/X11/imThaiFlt.c
+++ b/xc/lib/X11/imThaiFlt.c
@@ -41,7 +41,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/lib/X11/imThaiFlt.c,v 3.3 2000/01/29 18:58:16 dawes Exp $ */
+/* $XFree86: xc/lib/X11/imThaiFlt.c,v 3.5 2000/11/28 18:49:38 dawes Exp $ */
/*
**++
@@ -75,7 +75,18 @@ SOFTWARE.
extern int _XKeyInitialize();
/* lcStd.c */
-extern int _Xlcmbstowcs();
+extern int _Xlcmbstowcs(
+ XLCd lcd,
+ wchar_t *wstr,
+ char *str,
+ int len
+);
+extern int _Xlcmbstoutf8(
+ XLCd lcd,
+ char *ustr,
+ const char *str,
+ int len
+);
#define SPACE 32
@@ -557,9 +568,11 @@ Private Bool ThaiComposeConvert();
* Macros to save and recall last input character in XIC
*/
#define IC_SavePreviousChar(ic,ch) \
- *((ic)->private.local.context->mb) = (char) (ch)
+ (*((ic)->private.local.context->mb) = (char) (ch))
#define IC_GetPreviousChar(ic,ch) \
- (ch) = (unsigned char) *((ic)->private.local.context->mb)
+ ((ch) = (unsigned char) *((ic)->private.local.context->mb))
+#define IC_ClearPreviousChar(ic) \
+ (*((ic)->private.local.context->mb) = 0)
/*
* Input sequence check mode in XIC
*/
@@ -1161,6 +1174,33 @@ XPointer client_data;
if (!IC_IscMode(ic)) InitIscMode(ic);
+ count = XmbLookupString(ic, &ev->xkey, buf, sizeof(buf), &symbol, NULL);
+
+ if (((symbol >> 8 == 0xFF) &&
+ ((XK_BackSpace <= symbol && symbol <= XK_Clear) ||
+ (symbol == XK_Return) ||
+ (symbol == XK_Pause) ||
+ (symbol == XK_Scroll_Lock) ||
+ (symbol == XK_Sys_Req) ||
+ (symbol == XK_Escape) ||
+ (symbol == XK_Delete) ||
+ (XK_Home <= symbol && symbol <= XK_Begin) ||
+ (XK_Select <= symbol && symbol <= XK_Insert) ||
+ (XK_Undo <= symbol && symbol <= XK_Break) ||
+ (symbol == XK_Num_Lock) ||
+ (symbol == XK_KP_Space) ||
+ (symbol == XK_KP_Tab) ||
+ (symbol == XK_KP_Enter) ||
+ (XK_KP_F1 <= symbol && symbol <= XK_KP_Delete) ||
+ (XK_KP_Multiply <= symbol && symbol <= XK_KP_9) ||
+ (XK_F1 <= symbol && symbol <= XK_F35) ||
+ (symbol == XK_KP_Equal) ||
+ (symbol == NoSymbol))))
+ {
+ IC_ClearPreviousChar(ic);
+ return False;
+ }
+#if 0
if (! XThaiTranslateKey(ev->xkey.display, ev->xkey.keycode, ev->xkey.state,
&modifiers, &symbol, &lsym, &usym))
return False;
@@ -1188,17 +1228,17 @@ XPointer client_data;
/* Return symbol if cannot convert to character */
if (!count)
return False;
+#endif
/*
* Thai Input sequence check
*/
isc_mode = IC_IscMode(ic);
- if ((IC_GetPreviousChar(ic, previous_char))) {
- if (!THAI_isaccepted(buf[0],previous_char, isc_mode)) {
- /* reject character */
- XBell(ev->xkey.display, BellVolume);
- return True;
- }
+ if (!IC_GetPreviousChar(ic, previous_char)) previous_char = ' ';
+ if (!THAI_isaccepted(buf[0],previous_char, isc_mode)) {
+ /* reject character */
+ XBell(ev->xkey.display, BellVolume);
+ return True;
}
/* Remember the last character inputted. */
IC_SavePreviousChar(ic, buf[count-1]);
@@ -1206,9 +1246,12 @@ XPointer client_data;
ic->private.local.composed->mb[i] = buf[i];
ic->private.local.composed->mb[count] = '\0';
- i = _Xlcmbstowcs(ic->core.im->core.lcd, ic->private.local.composed->wc,
- ic->private.local.composed->mb, count);
-
+ _Xlcmbstowcs(ic->core.im->core.lcd, ic->private.local.composed->wc,
+ ic->private.local.composed->mb, count);
+
+ _Xlcmbstoutf8(ic->core.im->core.lcd, ic->private.local.composed->utf8,
+ ic->private.local.composed->mb, count);
+
if (!((buf[0] > 0 && buf[0] <= 0x1f) || (buf[0] == 0) || (buf[0] == 0x7f)))
ic->private.local.composed->keysym = NoSymbol;
else
diff --git a/xc/lib/X11/imThaiIc.c b/xc/lib/X11/imThaiIc.c
index b22b06089..5c2c0836e 100644
--- a/xc/lib/X11/imThaiIc.c
+++ b/xc/lib/X11/imThaiIc.c
@@ -32,6 +32,7 @@ THIS SOFTWARE.
frankyling@hgrd01.enet.dec.com
******************************************************************/
+/* $XFree86: xc/lib/X11/imThaiIc.c,v 1.3 2000/11/29 17:40:24 dawes Exp $ */
#include <stdio.h>
#include <X11/Xlib.h>
@@ -68,9 +69,11 @@ _XimThaiDestroyIC(xic)
Xfree(ic->private.local.context->mb);
Xfree(ic->private.local.context->wc);
+ Xfree(ic->private.local.context->utf8);
Xfree(ic->private.local.context);
Xfree(ic->private.local.composed->mb);
Xfree(ic->private.local.composed->wc);
+ Xfree(ic->private.local.composed->utf8);
Xfree(ic->private.local.composed);
return;
}
@@ -96,8 +99,8 @@ _XimThaiSetFocus(xic)
return;
}
-Private char *
-_XimThaiMbReset(xic)
+Private void
+_XimThaiReset(xic)
XIC xic;
{
Xic ic = (Xic)xic;
@@ -105,19 +108,23 @@ _XimThaiMbReset(xic)
ic->private.local.thai.keysym = 0;
ic->private.local.composed->mb[0] = '\0';
ic->private.local.composed->wc[0] = 0;
- return((char *)NULL);
+ ic->private.local.composed->utf8[0] = '\0';
+}
+
+Private char *
+_XimThaiMbReset(xic)
+ XIC xic;
+{
+ _XimThaiReset(xic);
+ return (char *)NULL;
}
Private wchar_t *
_XimThaiWcReset(xic)
XIC xic;
{
- Xic ic = (Xic)xic;
- ic->private.local.thai.comp_state = 0;
- ic->private.local.thai.keysym = 0;
- ic->private.local.composed->mb[0] = '\0';
- ic->private.local.composed->wc[0] = 0;
- return((wchar_t *)NULL);
+ _XimThaiReset(xic);
+ return (wchar_t *)NULL;
}
Private XICMethodsRec Thai_ic_methods = {
@@ -128,8 +135,10 @@ Private XICMethodsRec Thai_ic_methods = {
_XimLocalGetICValues, /* get_values */
_XimThaiMbReset, /* mb_reset */
_XimThaiWcReset, /* wc_reset */
+ _XimThaiMbReset, /* utf8_reset */
_XimLocalMbLookupString, /* mb_lookup_string */
_XimLocalWcLookupString, /* wc_lookup_string */
+ _XimLocalUtf8LookupString /* utf8_lookup_string */
};
XIC
@@ -160,6 +169,9 @@ _XimThaiCreateIC(im, values)
if ((ic->private.local.context->wc = (wchar_t *)Xmalloc(10*sizeof(wchar_t)))
== (wchar_t *)NULL)
goto Set_Error;
+ if ((ic->private.local.context->utf8 = (char *)Xmalloc(10))
+ == (char *)NULL)
+ goto Set_Error;
if ((ic->private.local.composed = (DefTree *)Xmalloc(sizeof(DefTree)))
== (DefTree *)NULL)
goto Set_Error;
@@ -169,6 +181,9 @@ _XimThaiCreateIC(im, values)
if ((ic->private.local.composed->wc = (wchar_t *)Xmalloc(10*sizeof(wchar_t)))
== (wchar_t *)NULL)
goto Set_Error;
+ if ((ic->private.local.composed->utf8 = (char *)Xmalloc(10))
+ == (char *)NULL)
+ goto Set_Error;
ic->private.local.thai.comp_state = 0;
ic->private.local.thai.keysym = 0;
diff --git a/xc/lib/X11/imThaiIm.c b/xc/lib/X11/imThaiIm.c
index 06ff28fca..3bdd5b8b9 100644
--- a/xc/lib/X11/imThaiIm.c
+++ b/xc/lib/X11/imThaiIm.c
@@ -32,7 +32,7 @@ THIS SOFTWARE.
frankyling@hgrd01.enet.dec.com
******************************************************************/
-/* $XFree86: xc/lib/X11/imThaiIm.c,v 1.3 2000/06/14 18:20:33 dawes Exp $ */
+/* $XFree86: xc/lib/X11/imThaiIm.c,v 1.5 2000/11/28 18:49:39 dawes Exp $ */
#include <stdio.h>
#include <X11/Xlib.h>
@@ -51,7 +51,8 @@ Private XIMMethodsRec Xim_im_thai_methods = {
_XimLocalGetIMValues, /* get_values */
_XimThaiCreateIC, /* create_ic */
_XimLcctstombs, /* ctstombs */
- _XimLcctstowcs /* ctstowcs */
+ _XimLcctstowcs, /* ctstowcs */
+ _XimLcctstoutf8 /* ctstoutf8 */
};
#define THAI_LANGUAGE_NAME "th"
@@ -104,7 +105,11 @@ _XimThaiOpenIM(im)
if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar)))
goto Open_Error;
private->ctow_conv = conv;
-
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->ctoutf8_conv = conv;
+
if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte)))
goto Open_Error;
private->cstomb_conv = conv;
@@ -113,8 +118,13 @@ _XimThaiOpenIM(im)
goto Open_Error;
private->cstowc_conv = conv;
- private->locale_code = * _XimGetLocaleCode(XLC_PUBLIC(lcd,encoding_name),
- (XlcCharSet*) &(private->keyboard_charset));
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->cstoutf8_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNChar)))
+ goto Open_Error;
+ private->ucs_conv = conv;
im->methods = &Xim_im_thai_methods;
private->current_ic = (XIC)NULL;
@@ -170,6 +180,10 @@ _XimThaiIMFree(im)
_XlcCloseConverter(im->private.local.ctow_conv);
im->private.local.ctow_conv = NULL;
}
+ if (im->private.local.ctoutf8_conv) {
+ _XlcCloseConverter(im->private.local.ctoutf8_conv);
+ im->private.local.ctoutf8_conv = NULL;
+ }
if (im->private.local.cstomb_conv) {
_XlcCloseConverter(im->private.local.cstomb_conv);
im->private.local.cstomb_conv = NULL;
@@ -178,6 +192,10 @@ _XimThaiIMFree(im)
_XlcCloseConverter(im->private.local.cstowc_conv);
im->private.local.cstowc_conv = NULL;
}
+ if (im->private.local.cstoutf8_conv) {
+ _XlcCloseConverter(im->private.local.cstoutf8_conv);
+ im->private.local.cstoutf8_conv = NULL;
+ }
return;
}
diff --git a/xc/lib/X11/lcCT.c b/xc/lib/X11/lcCT.c
index 1777473a1..206e142df 100644
--- a/xc/lib/X11/lcCT.c
+++ b/xc/lib/X11/lcCT.c
@@ -36,7 +36,7 @@
* Modifier: Ivan Pascal The XFree86 Project
* Modifier: Bruno Haible The XFree86 Project
*/
-/* $XFree86: xc/lib/X11/lcCT.c,v 3.18 2000/10/27 18:30:48 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcCT.c,v 3.19 2000/11/28 18:49:39 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
@@ -50,8 +50,8 @@
* Static representation of a character set that can be used in Compound Text.
*/
typedef struct _CTDataRec {
- _Xconst char *name;
- _Xconst char *encoding; /* Compound Text encoding, ESC sequence */
+ const char *name;
+ const char *encoding; /* Compound Text encoding, ESC sequence */
} CTDataRec, *CTData;
static CTDataRec default_ct_data[] =
@@ -174,14 +174,14 @@ static CTDataRec default_ct_data[] =
* Parses the header of a Compound Text segment, i.e. the charset designator.
*/
static unsigned int
-_XlcParseCT(text, length, extra_data)
- _Xconst char **text;
- int *length;
- unsigned int *extra_data;
+_XlcParseCT(
+ const char **text,
+ int *length,
+ unsigned int *extra_data)
{
unsigned int ret = 0, dummy, *data = extra_data;
unsigned char ch;
- register _Xconst unsigned char *str = (_Xconst unsigned char *) *text;
+ const unsigned char *str = (const unsigned char *) *text;
if (data == NULL)
data = &dummy;
@@ -277,11 +277,11 @@ _XlcParseCT(text, length, extra_data)
* Used by _XlcCreateDefaultCharSet.
*/
Bool
-_XlcParseCharSet(charset)
- XlcCharSet charset;
+_XlcParseCharSet(
+ XlcCharSet charset)
{
unsigned int type, final_byte;
- _Xconst char *ptr = charset->ct_sequence;
+ const char *ptr = charset->ct_sequence;
int length;
int char_size = 1;
@@ -359,10 +359,10 @@ typedef struct _CTInfoRec {
static CTInfo ct_list = NULL;
static CTInfo
-_XlcGetCTInfo(text, type, final_byte)
- _Xconst char *text;
- unsigned int type;
- unsigned char final_byte;
+_XlcGetCTInfo(
+ const char *text,
+ unsigned int type,
+ unsigned char final_byte)
{
CTInfo ct_info;
@@ -381,13 +381,13 @@ _XlcGetCTInfo(text, type, final_byte)
}
XlcCharSet
-_XlcAddCT(name, ct_sequence)
- _Xconst char *name;
- _Xconst char *ct_sequence;
+_XlcAddCT(
+ const char *name,
+ const char *ct_sequence)
{
CTInfo ct_info;
XlcCharSet charset;
- _Xconst char *ct_ptr = ct_sequence;
+ const char *ct_ptr = ct_sequence;
int length;
unsigned int type, final_byte;
@@ -445,10 +445,10 @@ _XlcAddCT(name, ct_sequence)
}
static CTInfo
-_XlcGetCTInfoFromCharSet(charset)
- register XlcCharSet charset;
+_XlcGetCTInfoFromCharSet(
+ XlcCharSet charset)
{
- register CTInfo ct_info;
+ CTInfo ct_info;
for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
if (ct_info->charset == charset)
@@ -480,10 +480,10 @@ typedef enum { resOK, resNotCTSeq, resNotInList } CheckResult;
*/
static CheckResult
-_XlcCheckCTSequence(state, ctext, ctext_len)
- State state;
- _Xconst char **ctext;
- int *ctext_len;
+_XlcCheckCTSequence(
+ State state,
+ const char **ctext,
+ int *ctext_len)
{
XlcCharSet charset;
CTInfo ct_info;
@@ -529,8 +529,8 @@ _XlcCheckCTSequence(state, ctext, ctext_len)
}
static void
-init_state(conv)
- XlcConv conv;
+init_state(
+ XlcConv conv)
{
State state = (State) conv->state;
static XlcCharSet GL_charset = NULL;
@@ -550,24 +550,24 @@ init_state(conv)
/* from XlcNCompoundText to XlcNCharSet */
static int
-cttocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cttocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register State state = (State) conv->state;
- register unsigned char ch;
+ State state = (State) conv->state;
+ unsigned char ch;
CheckResult ret;
XlcCharSet charset = NULL;
- _Xconst char *ctptr;
+ const char *ctptr;
char *bufptr;
int ctext_len, buf_len;
- ctptr = (char *) *from;
+ ctptr = (const char *) *from;
bufptr = (char *) *to;
ctext_len = *from_left;
buf_len = *to_left;
@@ -615,33 +615,35 @@ cttocs(conv, from, from_left, to, to_left, args, num_args)
/* from XlcNCharSet to XlcNCompoundText */
static int
-cstoct(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstoct(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XlcSide side;
unsigned char min_ch, max_ch;
- register unsigned char ch;
- int length;
+ unsigned char ch;
+ int length, unconv_num;
CTInfo ct_info;
XlcCharSet charset;
- char *csptr, *ctptr;
+ const char *csptr;
+ char *ctptr;
int csstr_len, ct_len;
+ /* One argument is required, of type XlcCharSet. */
if (num_args < 1)
return -1;
-
- csptr = *((char **) from);
+
+ csptr = *((const char **) from);
ctptr = *((char **) to);
csstr_len = *from_left;
ct_len = *to_left;
-
+
charset = (XlcCharSet) args[0];
ct_info = _XlcGetCTInfoFromCharSet(charset);
@@ -732,21 +734,22 @@ cstoct(conv, from, from_left, to, to_left, args, num_args)
/* from XlcNString to XlcNCharSet */
static int
-strtocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+strtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
- register char *src, *dst;
+ const char *src;
+ char *dst;
unsigned char side;
- register int length;
+ int length;
- src = (char *) *from;
+ src = (const char *) *from;
dst = (char *) *to;
length = min(*from_left, *to_left);
@@ -769,17 +772,18 @@ strtocs(conv, from, from_left, to, to_left, args, num_args)
/* from XlcNCharSet to XlcNString */
static int
-cstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
- char *csptr, *string_ptr;
+ const char *csptr;
+ char *string_ptr;
int csstr_len, str_len;
unsigned char ch;
int unconv_num = 0;
@@ -788,7 +792,7 @@ cstostr(conv, from, from_left, to, to_left, args, num_args)
state->GR_charset != (XlcCharSet) args[0]))
return -1;
- csptr = *((char **) from);
+ csptr = *((const char **) from);
string_ptr = *((char **) to);
csstr_len = *from_left;
str_len = *to_left;
@@ -815,10 +819,10 @@ cstostr(conv, from, from_left, to, to_left, args, num_args)
static XlcConv
-create_conv(methods)
- XlcConvMethods methods;
+create_conv(
+ XlcConvMethods methods)
{
- register XlcConv conv;
+ XlcConv conv;
conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + sizeof(StateRec));
if (conv == NULL)
@@ -834,8 +838,8 @@ create_conv(methods)
}
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
/* conv->state is allocated together with conv, free both at once. */
Xfree((char *) conv);
@@ -846,14 +850,14 @@ static XlcConvMethodsRec cttocs_methods = {
close_converter,
cttocs,
init_state
-} ;
+};
static XlcConv
-open_cttocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cttocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(&cttocs_methods);
}
@@ -863,14 +867,14 @@ static XlcConvMethodsRec cstoct_methods = {
close_converter,
cstoct,
init_state
-} ;
+};
static XlcConv
-open_cstoct(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstoct(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(&cstoct_methods);
}
@@ -880,14 +884,14 @@ static XlcConvMethodsRec strtocs_methods = {
close_converter,
strtocs,
init_state
-} ;
+};
static XlcConv
-open_strtocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_strtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(&strtocs_methods);
}
@@ -897,14 +901,14 @@ static XlcConvMethodsRec cstostr_methods = {
close_converter,
cstostr,
init_state
-} ;
+};
static XlcConv
-open_cstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(&cstostr_methods);
}
diff --git a/xc/lib/X11/lcCharSet.c b/xc/lib/X11/lcCharSet.c
index 4ee9c3413..c9954616f 100644
--- a/xc/lib/X11/lcCharSet.c
+++ b/xc/lib/X11/lcCharSet.c
@@ -23,19 +23,12 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
-/* $XFree86: xc/lib/X11/lcCharSet.c,v 3.5 2000/02/29 03:09:04 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcCharSet.c,v 3.6 2000/11/28 18:49:40 dawes Exp $ */
#include <stdio.h>
#include "Xlibint.h"
#include "XlcPublic.h"
-
-/* EXTERNS */
-/* lcCt.c */
-extern Bool _XlcParseCharSet(
-#if NeedFunctionPrototypes
- XlcCharSet /* charset */
-#endif
-);
+#include "XlcPubI.h"
#if NeedVarargsPrototypes
char *
@@ -81,8 +74,8 @@ typedef struct _XlcCharSetListRec {
static XlcCharSetList charset_list = NULL;
XlcCharSet
-_XlcGetCharSet(name)
- _Xconst char *name;
+_XlcGetCharSet(
+ const char *name)
{
XlcCharSetList list;
XrmQuark xrm_name;
@@ -98,9 +91,9 @@ _XlcGetCharSet(name)
}
XlcCharSet
-_XlcGetCharSetWithSide(encoding_name, side)
- _Xconst char *encoding_name;
- XlcSide side;
+_XlcGetCharSetWithSide(
+ const char *encoding_name,
+ XlcSide side)
{
XlcCharSetList list;
XrmQuark xrm_encoding_name;
@@ -117,8 +110,8 @@ _XlcGetCharSetWithSide(encoding_name, side)
}
Bool
-_XlcAddCharSet(charset)
- XlcCharSet charset;
+_XlcAddCharSet(
+ XlcCharSet charset)
{
XlcCharSetList list;
@@ -152,10 +145,10 @@ static XlcResource resources[] = {
};
static char *
-get_values(charset, args, num_args)
- register XlcCharSet charset;
- register XlcArgList args;
- register int num_args;
+get_values(
+ XlcCharSet charset,
+ XlcArgList args,
+ int num_args)
{
if (resources[0].xrm_name == NULLQUARK)
_XlcCompileResourceList(resources, XlcNumber(resources));
@@ -165,12 +158,12 @@ get_values(charset, args, num_args)
}
XlcCharSet
-_XlcCreateDefaultCharSet(name, ct_sequence)
- _Xconst char *name;
- _Xconst char *ct_sequence;
+_XlcCreateDefaultCharSet(
+ const char *name,
+ const char *ct_sequence)
{
XlcCharSet charset;
- _Xconst char *colon;
+ const char *colon;
charset = (XlcCharSet) Xmalloc(sizeof(XlcCharSetRec));
if (charset == NULL)
diff --git a/xc/lib/X11/lcConv.c b/xc/lib/X11/lcConv.c
index f824a87b5..1d7ca8bcb 100644
--- a/xc/lib/X11/lcConv.c
+++ b/xc/lib/X11/lcConv.c
@@ -23,46 +23,40 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
-/* $XFree86: xc/lib/X11/lcConv.c,v 1.3 2000/02/12 02:54:10 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcConv.c,v 1.4 2000/11/28 18:49:41 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
#include <stdio.h>
-#if NeedFunctionPrototypes
-typedef XlcConv (*XlcConverter)(XLCd, char *, XLCd, char *);
-#else
-typedef XlcConv (*XlcConverter)();
-#endif
-
typedef struct _XlcConverterListRec {
XLCd from_lcd;
- char *from;
+ const char *from;
XrmQuark from_type;
XLCd to_lcd;
- char *to;
+ const char *to;
XrmQuark to_type;
- XlcConverter converter;
+ XlcOpenConverterProc converter;
struct _XlcConverterListRec *next;
} XlcConverterListRec, *XlcConverterList;
static XlcConverterList conv_list = NULL;
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
(*conv->methods->close)(conv);
}
static XlcConv
-get_converter(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- XrmQuark from_type;
- XLCd to_lcd;
- XrmQuark to_type;
+get_converter(
+ XLCd from_lcd,
+ XrmQuark from_type,
+ XLCd to_lcd,
+ XrmQuark to_type)
{
- register XlcConverterList list, prev = NULL;
+ XlcConverterList list, prev = NULL;
for (list = conv_list; list; list = list->next) {
if (list->from_lcd == from_lcd && list->to_lcd == to_lcd
@@ -79,20 +73,20 @@ get_converter(from_lcd, from_type, to_lcd, to_type)
prev = list;
}
-
+
return (XlcConv) NULL;
}
Bool
-_XlcSetConverter(from_lcd, from, to_lcd, to, converter)
- XLCd from_lcd;
- char *from;
- XLCd to_lcd;
- char *to;
- XlcOpenConverterProc converter;
+_XlcSetConverter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to,
+ XlcOpenConverterProc converter)
{
- register XlcConverterList list;
- register XrmQuark from_type, to_type;
+ XlcConverterList list;
+ XrmQuark from_type, to_type;
from_type = XrmStringToQuark(from);
to_type = XrmStringToQuark(to);
@@ -109,7 +103,7 @@ _XlcSetConverter(from_lcd, from, to_lcd, to, converter)
list = (XlcConverterList) Xmalloc(sizeof(XlcConverterListRec));
if (list == NULL)
return False;
-
+
list->from_lcd = from_lcd;
list->from = from;
list->from_type = from_type;
@@ -129,14 +123,14 @@ typedef struct _ConvRec {
} ConvRec, *Conv;
static int
-indirect_convert(lc_conv, from, from_left, to, to_left, args, num_args)
- XlcConv lc_conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+indirect_convert(
+ XlcConv lc_conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
Conv conv = (Conv) lc_conv->state;
XlcConv from_conv = conv->from_conv;
@@ -166,6 +160,8 @@ indirect_convert(lc_conv, from, from_left, to, to_left, args, num_args)
if (ret < 0)
break;
+ unconv_num += ret;
+
length = cs_left = cs - buf;
cs = buf;
@@ -177,7 +173,9 @@ indirect_convert(lc_conv, from, from_left, to, to_left, args, num_args)
unconv_num += length / charset->char_size;
continue;
}
-
+
+ unconv_num += ret;
+
if (*to_left < 1)
break;
}
@@ -186,8 +184,8 @@ indirect_convert(lc_conv, from, from_left, to, to_left, args, num_args)
}
static void
-close_indirect_converter(lc_conv)
- XlcConv lc_conv;
+close_indirect_converter(
+ XlcConv lc_conv)
{
Conv conv = (Conv) lc_conv->state;
@@ -204,8 +202,8 @@ close_indirect_converter(lc_conv)
}
static void
-reset_indirect_converter(lc_conv)
- XlcConv lc_conv;
+reset_indirect_converter(
+ XlcConv lc_conv)
{
Conv conv = (Conv) lc_conv->state;
@@ -224,11 +222,11 @@ static XlcConvMethodsRec conv_methods = {
} ;
static XlcConv
-open_indirect_converter(from_lcd, from, to_lcd, to)
- XLCd from_lcd;
- char *from;
- XLCd to_lcd;
- char *to;
+open_indirect_converter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to)
{
XlcConv lc_conv, from_conv, to_conv;
Conv conv;
@@ -251,13 +249,13 @@ open_indirect_converter(from_lcd, from, to_lcd, to)
lc_conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
if (lc_conv == NULL)
return (XlcConv) NULL;
-
+
lc_conv->methods = &conv_methods;
lc_conv->state = (XPointer) Xcalloc(1, sizeof(ConvRec));
if (lc_conv->state == NULL)
goto err;
-
+
conv = (Conv) lc_conv->state;
from_conv = get_converter(from_lcd, from_type, from_lcd, QCTCharSet);
@@ -289,11 +287,11 @@ err:
}
XlcConv
-_XlcOpenConverter(from_lcd, from, to_lcd, to)
- XLCd from_lcd;
- char *from;
- XLCd to_lcd;
- char *to;
+_XlcOpenConverter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to)
{
XlcConv conv;
XrmQuark from_type, to_type;
@@ -301,36 +299,36 @@ _XlcOpenConverter(from_lcd, from, to_lcd, to)
from_type = XrmStringToQuark(from);
to_type = XrmStringToQuark(to);
- if ((conv = get_converter(from_lcd, from_type, to_lcd, to_type)))
+ if ((conv = get_converter(from_lcd, from_type, to_lcd, to_type)) != NULL)
return conv;
-
+
return open_indirect_converter(from_lcd, from, to_lcd, to);
}
void
-_XlcCloseConverter(conv)
- XlcConv conv;
+_XlcCloseConverter(
+ XlcConv conv)
{
close_converter(conv);
}
int
-_XlcConvert(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+_XlcConvert(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
return (*conv->methods->convert)(conv, from, from_left, to, to_left, args,
num_args);
}
void
-_XlcResetConverter(conv)
- XlcConv conv;
+_XlcResetConverter(
+ XlcConv conv)
{
if (conv->methods->reset)
(*conv->methods->reset)(conv);
diff --git a/xc/lib/X11/lcDB.c b/xc/lib/X11/lcDB.c
index c6c7f7fb9..5c4a45443 100644
--- a/xc/lib/X11/lcDB.c
+++ b/xc/lib/X11/lcDB.c
@@ -28,7 +28,7 @@
* This is source code modified by FUJITSU LIMITED under the Joint
* Development Agreement for the CDE/Motif PST.
*/
-/* $XFree86: xc/lib/X11/lcDB.c,v 3.11 2000/01/29 18:58:16 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcDB.c,v 3.12 2000/11/28 18:49:41 dawes Exp $ */
@@ -96,21 +96,22 @@ typedef enum {
typedef struct {
Token token; /* token id */
- char *name; /* token sequence */
+ const char *name; /* token sequence */
int len; /* length of token sequence */
- int (*parse_proc)(); /* parsing procedure */
+ int (*parse_proc)(const char *str, Token token, Database *db);
+ /* parsing procedure */
} TokenTable;
-static int f_newline();
-static int f_comment();
-static int f_semicolon();
-static int f_double_quote();
-static int f_left_brace();
-static int f_right_brace();
-static int f_white();
-static int f_backslash();
-static int f_numeric();
-static int f_default();
+static int f_newline (const char *str, Token token, Database *db);
+static int f_comment (const char *str, Token token, Database *db);
+static int f_semicolon (const char *str, Token token, Database *db);
+static int f_double_quote (const char *str, Token token, Database *db);
+static int f_left_brace (const char *str, Token token, Database *db);
+static int f_right_brace (const char *str, Token token, Database *db);
+static int f_white (const char *str, Token token, Database *db);
+static int f_backslash (const char *str, Token token, Database *db);
+static int f_numeric (const char *str, Token token, Database *db);
+static int f_default (const char *str, Token token, Database *db);
static TokenTable token_tbl[] = {
{ T_NEWLINE, "\n", 1, f_newline },
@@ -159,11 +160,12 @@ typedef struct {
static DBParseInfo parse_info;
-static void init_parse_info()
+static void
+init_parse_info (void)
{
static int allocated /* = 0 */;
char *ptr;
- int size;
+ int size;
if (!allocated) {
bzero(&parse_info, sizeof(DBParseInfo));
parse_info.buf = (char *)Xmalloc(BUFSIZE);
@@ -179,22 +181,22 @@ static void init_parse_info()
}
static void
-clear_parse_info()
+clear_parse_info (void)
{
int i;
char *ptr;
int size;
parse_info.pre_state = S_NULL;
- if(parse_info.category != NULL){
+ if (parse_info.category != NULL) {
Xfree(parse_info.category);
}
- for(i = 0; i <= parse_info.nest_depth; ++i){
- if(parse_info.name[i]){
+ for (i = 0; i <= parse_info.nest_depth; ++i) {
+ if (parse_info.name[i]) {
Xfree(parse_info.name[i]);
}
}
- if(parse_info.value){
- if(*parse_info.value){
+ if (parse_info.value) {
+ if (*parse_info.value) {
Xfree(*parse_info.value);
}
Xfree((char *)parse_info.value);
@@ -207,23 +209,22 @@ clear_parse_info()
}
static Bool
-realloc_parse_info(len)
-int len;
+realloc_parse_info(
+ int len)
{
char *p;
-
- parse_info.bufMaxSize = BUFSIZE *
- ((parse_info.bufsize + len)/BUFSIZE + 1);
+ parse_info.bufMaxSize = BUFSIZE * ((parse_info.bufsize + len)/BUFSIZE + 1);
p = (char *)Xrealloc(parse_info.buf, parse_info.bufMaxSize);
- if(p == NULL){
- return(False);
- }
+ if (p == NULL)
+ return False;
parse_info.buf = p;
- return(True);
+ return True;
}
+
/************************************************************************/
+
typedef struct _Line {
char *str;
int cursize;
@@ -232,28 +233,28 @@ typedef struct _Line {
} Line;
static void
-free_line(line)
- Line *line;
+free_line(
+ Line *line)
{
- if(line->str != NULL){
+ if (line->str != NULL) {
Xfree(line->str);
}
bzero(line, sizeof(Line));
}
static int
-realloc_line(line, size)
- Line *line;
- int size;
+realloc_line(
+ Line *line,
+ int size)
{
char *str = line->str;
- if(str != NULL){
+ if (str != NULL) {
str = (char *)Xrealloc(str, size);
- }else{
+ } else {
str = (char *)Xmalloc(size);
}
- if(str == NULL){
+ if (str == NULL) {
/* malloc error */
if (line->str != NULL) {
Xfree(line->str);
@@ -269,34 +270,34 @@ realloc_line(line, size)
#define iswhite(ch) ((ch) == SYM_SPACE || (ch) == SYM_TAB)
static void
-zap_comment(str, quoted)
- char *str;
- int *quoted;
+zap_comment(
+ char *str,
+ int *quoted)
{
char *p = str;
#ifdef never
*quoted = 0;
- if(*p == SYM_COMMENT){
+ if (*p == SYM_COMMENT) {
int len = strlen(str);
- if(p[len - 1] == SYM_NEWLINE || p[len - 1] == SYM_CR){
+ if (p[len - 1] == SYM_NEWLINE || p[len - 1] == SYM_CR) {
*p++ = SYM_NEWLINE;
}
*p = '\0';
}
#else
- while(*p){
- if(*p == SYM_DOUBLE_QUOTE){
- if(p == str || p[-1] != SYM_BACKSLASH){
+ while (*p) {
+ if (*p == SYM_DOUBLE_QUOTE) {
+ if (p == str || p[-1] != SYM_BACKSLASH) {
/* unescaped double quote changes quoted state. */
*quoted = *quoted ? 0 : 1;
}
}
- if(*p == SYM_COMMENT && !*quoted){
+ if (*p == SYM_COMMENT && !*quoted) {
int pos = p - str;
- if(pos == 0 ||
- (iswhite(p[-1]) && (pos == 1 || p[-2] != SYM_BACKSLASH))) {
+ if (pos == 0 ||
+ (iswhite(p[-1]) && (pos == 1 || p[-2] != SYM_BACKSLASH))) {
int len = strlen(p);
- if(len > 0 && (p[len - 1] == SYM_NEWLINE || p[len-1] == SYM_CR)) {
+ if (len > 0 && (p[len - 1] == SYM_NEWLINE || p[len-1] == SYM_CR)) {
/* newline is the identifier for finding end of value.
therefore, it should not be removed. */
*p++ = SYM_NEWLINE;
@@ -311,9 +312,9 @@ zap_comment(str, quoted)
}
static int
-read_line(fd, line)
- FILE *fd;
- Line *line;
+read_line(
+ FILE *fd,
+ Line *line)
{
char buf[BUFSIZE], *p;
int len;
@@ -324,19 +325,19 @@ read_line(fd, line)
str = line->str;
cur = line->cursize = 0;
- while((p = fgets(buf, BUFSIZE, fd)) != NULL){
+ while ((p = fgets(buf, BUFSIZE, fd)) != NULL) {
++line->seq;
zap_comment(p, &quoted); /* remove comment line */
len = strlen(p);
- if(len == 0){
- if(cur > 0){
+ if (len == 0) {
+ if (cur > 0) {
break;
}
continue;
}
- if(cur + len + 1 > line->maxsize){
+ if (cur + len + 1 > line->maxsize) {
/* need to reallocate buffer. */
- if(! realloc_line(line, line->maxsize + BUFSIZE)){
+ if (! realloc_line(line, line->maxsize + BUFSIZE)) {
return -1; /* realloc error. */
}
str = line->str;
@@ -346,27 +347,27 @@ read_line(fd, line)
cur += len;
str[cur] = '\0';
#ifdef __EMX__ /* Take out carriage returns under OS/2 */
- if(cur>1) {
- if(str[cur-2] == '\r' && str[cur-1] == '\n'){
+ if (cur>1) {
+ if (str[cur-2] == '\r' && str[cur-1] == '\n') {
str[cur-2] = '\n';
str[cur-1] = '\0';
cur--;
}
}
#endif
- if(!quoted){
- if(cur > 1 && str[cur - 2] == SYM_BACKSLASH &&
- (str[cur - 1] == SYM_NEWLINE || str[cur-1] == SYM_CR)){
+ if (!quoted) {
+ if (cur > 1 && str[cur - 2] == SYM_BACKSLASH &&
+ (str[cur - 1] == SYM_NEWLINE || str[cur-1] == SYM_CR)) {
/* the line is ended backslash followed by newline.
need to concatinate the next line. */
cur -= 2;
str[cur] = '\0';
- }else{
+ } else {
break;
}
}
}
- if(quoted){
+ if (quoted) {
/* error. still in quoted state. */
return -1;
}
@@ -376,21 +377,21 @@ read_line(fd, line)
/************************************************************************/
static Token
-get_token(str)
- char *str;
+get_token(
+ const char *str)
{
- switch(*str){
+ switch (*str) {
case SYM_NEWLINE:
- case SYM_CR: return T_NEWLINE;
- case SYM_COMMENT: return T_COMMENT;
- case SYM_SEMICOLON: return T_SEMICOLON;
+ case SYM_CR: return T_NEWLINE;
+ case SYM_COMMENT: return T_COMMENT;
+ case SYM_SEMICOLON: return T_SEMICOLON;
case SYM_DOUBLE_QUOTE: return T_DOUBLE_QUOTE;
case SYM_LEFT_BRACE: return T_LEFT_BRACE;
case SYM_RIGHT_BRACE: return T_RIGHT_BRACE;
- case SYM_SPACE: return T_SPACE;
- case SYM_TAB: return T_TAB;
+ case SYM_SPACE: return T_SPACE;
+ case SYM_TAB: return T_TAB;
case SYM_BACKSLASH:
- switch(str[1]){
+ switch (str[1]) {
case 'x': return T_NUMERIC_HEX;
case 'd': return T_NUMERIC_DEC;
case 'o': return T_NUMERIC_OCT;
@@ -402,26 +403,25 @@ get_token(str)
}
static int
-get_word(str, word)
- char *str;
- char *word;
+get_word(
+ const char *str,
+ char *word)
{
- char *p = str, *w = word;
+ const char *p = str;
+ char *w = word;
Token token;
int token_len;
- while(*p != '\0'){
+ while (*p != '\0') {
token = get_token(p);
token_len = token_tbl[token].len;
- if(token == T_BACKSLASH){
+ if (token == T_BACKSLASH) {
p += token_len;
- if(*p == '\0'){
+ if (*p == '\0')
break;
- }
token = get_token(p);
token_len = token_tbl[token].len;
- }else if(token != T_COMMENT &&
- token != T_DEFAULT){
+ } else if (token != T_COMMENT && token != T_DEFAULT) {
break;
}
strncpy(w, p, token_len);
@@ -432,27 +432,28 @@ get_word(str, word)
}
static int
-get_quoted_word(str, word)
- char *str;
- char *word;
+get_quoted_word(
+ const char *str,
+ char *word)
{
- char *p = str, *w = word;
+ const char *p = str;
+ char *w = word;
Token token;
int token_len;
- if(*p == SYM_DOUBLE_QUOTE){
+ if (*p == SYM_DOUBLE_QUOTE) {
++p;
}
- while(*p != '\0'){
+ while (*p != '\0') {
token = get_token(p);
token_len = token_tbl[token].len;
- if(token == T_DOUBLE_QUOTE){
+ if (token == T_DOUBLE_QUOTE) {
p += token_len;
goto found;
}
- if(token == T_BACKSLASH){
+ if (token == T_BACKSLASH) {
p += token_len;
- if(*p == '\0'){
+ if (*p == '\0') {
break;
}
token = get_token(p);
@@ -472,7 +473,7 @@ get_quoted_word(str, word)
/************************************************************************/
static int
-append_value_list()
+append_value_list (void)
{
char **value_list = parse_info.value;
char *value;
@@ -482,45 +483,44 @@ append_value_list()
int len = parse_info.bufsize;
char *p;
- if(len < 1){
+ if (len < 1) {
return 1; /* return with no error */
}
- if(value_list == (char **)NULL){
+ if (value_list == (char **)NULL) {
value_list = (char **)Xmalloc(sizeof(char *) * 2);
*value_list = NULL;
- }else{
+ } else {
char **prev_list = value_list;
value_list = (char **)
Xrealloc(value_list, sizeof(char *) * (value_num + 2));
- if (value_list == NULL){
+ if (value_list == NULL) {
Xfree(prev_list);
}
}
- if(value_list == (char **)NULL){
- goto err;
- }
+ if (value_list == (char **)NULL)
+ goto err2;
value = *value_list;
- if(value == NULL){
+ if (value == NULL) {
value = (char *)Xmalloc(value_len + len + 1);
- }else{
+ } else {
char *prev_value = value;
value = (char *)Xrealloc(value, value_len + len + 1);
- if (value == NULL){
+ if (value == NULL) {
Xfree(prev_value);
}
}
- if(value == NULL){
- goto err;
+ if (value == NULL) {
+ goto err1;
}
- if(value != *value_list){
+ if (value != *value_list) {
int delta, i;
delta = value - *value_list;
*value_list = value;
- for(i = 1; i < value_num; ++i){
+ for (i = 1; i < value_num; ++i) {
value_list[i] += delta;
}
}
@@ -536,13 +536,14 @@ append_value_list()
parse_info.bufsize = 0;
return 1;
- err:
- if(value_list){
+ err1:
+ if (value_list) {
Xfree((char **)value_list);
}
- if(value){
+ if (value) {
Xfree(value);
}
+ err2:
parse_info.value = (char **)NULL;
parse_info.value_num = 0;
parse_info.value_len = 0;
@@ -551,14 +552,15 @@ append_value_list()
}
static int
-construct_name(name, size)
- char *name;
- int size;
+construct_name(
+ char *name,
+ int size)
{
- register int i, len = 0;
+ int i;
+ int len = 0;
char *p = name;
- for(i = 0; i <= parse_info.nest_depth; ++i){
+ for (i = 0; i <= parse_info.nest_depth; ++i) {
len += strlen(parse_info.name[i]) + 1;
}
if (len >= size)
@@ -566,7 +568,7 @@ construct_name(name, size)
strcpy(p, parse_info.name[0]);
p += strlen(parse_info.name[0]);
- for(i = 1; i <= parse_info.nest_depth; ++i){
+ for (i = 1; i <= parse_info.nest_depth; ++i) {
*p++ = '.';
strcpy(p, parse_info.name[i]);
p += strlen(parse_info.name[i]);
@@ -575,39 +577,39 @@ construct_name(name, size)
}
static int
-store_to_database(db)
- Database *db;
+store_to_database(
+ Database *db)
{
Database new = (Database)NULL;
char name[BUFSIZE];
- if(parse_info.pre_state == S_VALUE){
- if(! append_value_list()){
+ if (parse_info.pre_state == S_VALUE) {
+ if (! append_value_list()) {
goto err;
}
}
- if(parse_info.name[parse_info.nest_depth] == NULL){
+ if (parse_info.name[parse_info.nest_depth] == NULL) {
goto err;
}
new = (Database)Xmalloc(sizeof(DatabaseRec));
- if(new == (Database)NULL){
+ if (new == (Database)NULL) {
goto err;
}
bzero(new, sizeof(DatabaseRec));
new->category = (char *)Xmalloc(strlen(parse_info.category) + 1);
- if(new->category == NULL){
+ if (new->category == NULL) {
goto err;
}
strcpy(new->category, parse_info.category);
- if(! construct_name(name, sizeof(name))){
+ if (! construct_name(name, sizeof(name))) {
goto err;
}
new->name = (char *)Xmalloc(strlen(name) + 1);
- if(new->name == NULL){
+ if (new->name == NULL) {
goto err;
}
strcpy(new->name, name);
@@ -626,16 +628,16 @@ store_to_database(db)
return 1;
err:
- if(new){
- if(new->category){
+ if (new) {
+ if (new->category) {
Xfree(new->category);
}
- if(new->name){
+ if (new->name) {
Xfree(new->name);
}
}
- if(parse_info.value){
- if(*parse_info.value){
+ if (parse_info.value) {
+ if (*parse_info.value) {
Xfree(*parse_info.value);
}
Xfree((char **)parse_info.value);
@@ -650,23 +652,23 @@ store_to_database(db)
#define END_MARK_LEN 3 /*strlen(END_MARK)*/
static int
-check_category_end(str)
- char *str;
+check_category_end(
+ const char *str)
{
- char *p;
+ const char *p;
int len;
p = str;
- if(strncmp(p, END_MARK, END_MARK_LEN)){
+ if (strncmp(p, END_MARK, END_MARK_LEN)) {
return 0;
}
p += END_MARK_LEN;
- while(iswhite(*p)){
+ while (iswhite(*p)) {
++p;
}
len = strlen(parse_info.category);
- if(strncmp(p, parse_info.category, len)){
+ if (strncmp(p, parse_info.category, len)) {
return 0;
}
p += len;
@@ -676,19 +678,19 @@ check_category_end(str)
/************************************************************************/
static int
-f_newline(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_newline(
+ const char *str,
+ Token token,
+ Database *db)
{
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_CATEGORY:
break;
case S_NAME:
return 0; /* no value */
case S_VALUE:
- if(!store_to_database(db))
+ if (!store_to_database(db))
return 0;
parse_info.pre_state = S_CATEGORY;
break;
@@ -699,49 +701,49 @@ f_newline(str, token, db)
}
static int
-f_comment(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_comment(
+ const char *str,
+ Token token,
+ Database *db)
{
/* NOTE: comment is already handled in read_line(),
so this function is not necessary. */
- char *p = str;
+ const char *p = str;
- while(*p != SYM_NEWLINE && *p != SYM_CR && *p != '\0'){
+ while (*p != SYM_NEWLINE && *p != SYM_CR && *p != '\0') {
++p; /* zap to the end of line */
}
return p - str;
}
static int
-f_white(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_white(
+ const char *str,
+ Token token,
+ Database *db)
{
- char *p = str;
+ const char *p = str;
- while(iswhite(*p)){
+ while (iswhite(*p)) {
++p;
}
return p - str;
}
static int
-f_semicolon(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_semicolon(
+ const char *str,
+ Token token,
+ Database *db)
{
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_CATEGORY:
case S_NAME:
return 0;
case S_VALUE:
- if(! append_value_list())
+ if (! append_value_list())
return 0;
parse_info.pre_state = S_VALUE;
break;
@@ -752,19 +754,19 @@ f_semicolon(str, token, db)
}
static int
-f_left_brace(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_left_brace(
+ const char *str,
+ Token token,
+ Database *db)
{
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_CATEGORY:
case S_VALUE:
return 0;
case S_NAME:
- if(parse_info.name[parse_info.nest_depth] == NULL ||
- parse_info.nest_depth + 1 > MAX_NAME_NEST)
+ if (parse_info.name[parse_info.nest_depth] == NULL
+ || parse_info.nest_depth + 1 > MAX_NAME_NEST)
return 0;
++parse_info.nest_depth;
parse_info.pre_state = S_CATEGORY;
@@ -776,24 +778,24 @@ f_left_brace(str, token, db)
}
static int
-f_right_brace(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_right_brace(
+ const char *str,
+ Token token,
+ Database *db)
{
- if(parse_info.nest_depth < 1)
+ if (parse_info.nest_depth < 1)
return 0;
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_NAME:
return 0;
case S_VALUE:
- if(! store_to_database(db))
+ if (! store_to_database(db))
return 0;
/* fall into next case */
case S_CATEGORY:
- if(parse_info.name[parse_info.nest_depth] != NULL){
+ if (parse_info.name[parse_info.nest_depth] != NULL) {
Xfree(parse_info.name[parse_info.nest_depth]);
parse_info.name[parse_info.nest_depth] = NULL;
}
@@ -807,10 +809,10 @@ f_right_brace(str, token, db)
}
static int
-f_double_quote(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_double_quote(
+ const char *str,
+ Token token,
+ Database *db)
{
char word[BUFSIZE];
char* wordp;
@@ -824,18 +826,18 @@ f_double_quote(str, token, db)
return 0;
len = 0;
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_CATEGORY:
goto err;
case S_NAME:
case S_VALUE:
len = get_quoted_word(str, wordp);
- if(len < 1)
+ if (len < 1)
goto err;
- if( (parse_info.bufsize + (int)strlen(wordp) +1)
- >= parse_info.bufMaxSize){
- if(realloc_parse_info(strlen(wordp) +1) == False){
+ if ((parse_info.bufsize + (int)strlen(wordp) + 1)
+ >= parse_info.bufMaxSize) {
+ if (realloc_parse_info(strlen(wordp)+1) == False) {
goto err;
}
}
@@ -846,30 +848,33 @@ f_double_quote(str, token, db)
default:
goto err;
}
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return len; /* including length of token */
err:
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return 0;
}
static int
-f_backslash(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_backslash(
+ const char *str,
+ Token token,
+ Database *db)
{
return f_default(str, token, db);
}
static int
-f_numeric(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_numeric(
+ const char *str,
+ Token token,
+ Database *db)
{
- char word[BUFSIZE], *p;
+ char word[BUFSIZE];
+ const char *p;
char* wordp;
int len;
int token_len;
@@ -881,7 +886,7 @@ f_numeric(str, token, db)
if (wordp == NULL)
return 0;
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_CATEGORY:
goto err;
@@ -890,11 +895,11 @@ f_numeric(str, token, db)
token_len = token_tbl[token].len;
p = str + token_len;
len = get_word(p, wordp);
- if(len < 1)
+ if (len < 1)
goto err;
- if( (parse_info.bufsize + token_len + (int)strlen(wordp) +1)
- >= parse_info.bufMaxSize){
- if(realloc_parse_info(token_len + strlen(wordp) +1) == False)
+ if ((parse_info.bufsize + token_len + (int)strlen(wordp) + 1)
+ >= parse_info.bufMaxSize) {
+ if (realloc_parse_info(token_len + strlen(wordp) + 1) == False)
goto err;
}
strncpy(&parse_info.buf[parse_info.bufsize], str, token_len);
@@ -905,19 +910,21 @@ f_numeric(str, token, db)
default:
goto err;
}
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return len + token_len;
err:
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return 0;
}
static int
-f_default(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_default(
+ const char *str,
+ Token token,
+ Database *db)
{
char word[BUFSIZE], *p;
char* wordp;
@@ -931,23 +938,23 @@ f_default(str, token, db)
return 0;
len = get_word(str, wordp);
- if(len < 1)
+ if (len < 1)
goto err;
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
- if(parse_info.category != NULL)
+ if (parse_info.category != NULL)
goto err;
p = (char *)Xmalloc(strlen(wordp) + 1);
- if(p == NULL)
+ if (p == NULL)
goto err;
strcpy(p, wordp);
parse_info.category = p;
parse_info.pre_state = S_CATEGORY;
break;
case S_CATEGORY:
- if(parse_info.nest_depth == 0){
- if(check_category_end(str)){
+ if (parse_info.nest_depth == 0) {
+ if (check_category_end(str)) {
/* end of category is detected.
clear context and zap to end of this line */
clear_parse_info();
@@ -956,10 +963,10 @@ f_default(str, token, db)
}
}
p = (char *)Xmalloc(strlen(wordp) + 1);
- if(p == NULL)
+ if (p == NULL)
goto err;
strcpy(p, wordp);
- if(parse_info.name[parse_info.nest_depth] != NULL){
+ if (parse_info.name[parse_info.nest_depth] != NULL) {
Xfree(parse_info.name[parse_info.nest_depth]);
}
parse_info.name[parse_info.nest_depth] = p;
@@ -967,9 +974,9 @@ f_default(str, token, db)
break;
case S_NAME:
case S_VALUE:
- if( (parse_info.bufsize + (int)strlen(wordp) +1 )
- >= parse_info.bufMaxSize){
- if(realloc_parse_info(strlen(wordp) +1) == False)
+ if ((parse_info.bufsize + (int)strlen(wordp) + 1)
+ >= parse_info.bufMaxSize) {
+ if (realloc_parse_info(strlen(wordp) + 1) == False)
goto err;
}
strcpy(&parse_info.buf[parse_info.bufsize], wordp);
@@ -979,30 +986,32 @@ f_default(str, token, db)
default:
goto err;
}
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return len;
err:
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return 0;
}
/************************************************************************/
-#ifdef DEBUG
+#ifdef DEBUG
static void
-PrintDatabase(db)
- Database db;
+PrintDatabase(
+ Database db)
{
Database p = db;
int i = 0, j;
printf("***\n*** BEGIN Database\n***\n");
- while(p){
+ while (p) {
printf("%3d: ", i++);
printf("%s, %s, ", p->category, p->name);
printf("\t[%d: ", p->value_num);
- for(j = 0; j < p->value_num; ++j){
+ for (j = 0; j < p->value_num; ++j) {
printf("%s, ", p->value[j]);
}
printf("]\n");
@@ -1013,20 +1022,20 @@ PrintDatabase(db)
#endif
static void
-DestroyDatabase(db)
- Database db;
+DestroyDatabase(
+ Database db)
{
Database p = db;
- while(p){
- if(p->category != NULL){
+ while (p) {
+ if (p->category != NULL) {
Xfree(p->category);
}
- if(p->name != NULL){
+ if (p->name != NULL) {
Xfree(p->name);
}
- if(p->value != (char **)NULL){
- if(*p->value != NULL){
+ if (p->value != (char **)NULL) {
+ if (*p->value != NULL) {
Xfree(*p->value);
}
Xfree((char *)p->value);
@@ -1038,13 +1047,13 @@ DestroyDatabase(db)
}
static int
-CountDatabase(db)
- Database db;
+CountDatabase(
+ Database db)
{
Database p = db;
int cnt = 0;
- while(p){
+ while (p) {
++cnt;
p = p->next;
}
@@ -1052,8 +1061,8 @@ CountDatabase(db)
}
static Database
-CreateDatabase(dbfile)
- char *dbfile;
+CreateDatabase(
+ char *dbfile)
{
Database db = (Database)NULL;
FILE *fd;
@@ -1064,26 +1073,25 @@ CreateDatabase(dbfile)
int error = 0;
fd = _XFopenFile(dbfile, "r");
- if(fd == (FILE *)NULL){
+ if (fd == (FILE *)NULL)
return NULL;
- }
bzero(&line, sizeof(Line));
init_parse_info();
do {
int rc = read_line(fd, &line);
- if(rc < 0){
+ if (rc < 0) {
error = 1;
break;
- }else if(rc == 0){
+ } else if (rc == 0) {
break;
}
p = line.str;
- while(*p){
+ while (*p) {
token = get_token(p);
len = (*token_tbl[token].parse_proc)(p, token, &db);
- if(len < 1){
+ if (len < 1) {
error = 1;
break;
}
@@ -1091,11 +1099,11 @@ CreateDatabase(dbfile)
}
} while (!error);
- if(parse_info.pre_state != S_NULL){
+ if (parse_info.pre_state != S_NULL) {
clear_parse_info();
error = 1;
}
- if(error){
+ if (error) {
#ifdef DEBUG
fprintf(stderr, "database format error at line %d.\n", line.seq);
#endif
@@ -1143,12 +1151,12 @@ static XlcDatabaseList _db_list = (XlcDatabaseList)NULL;
/* This function retrieves XLocale database information. */
/************************************************************************/
void
-_XlcGetResource(lcd, category, class, value, count)
- XLCd lcd;
- char *category;
- char *class;
- char ***value;
- int *count;
+_XlcGetResource(
+ XLCd lcd,
+ const char *category,
+ const char *class,
+ char ***value,
+ int *count)
{
XLCdPublicMethodsPart *methods = XLC_PUBLIC_METHODS(lcd);
@@ -1162,20 +1170,20 @@ _XlcGetResource(lcd, category, class, value, count)
/* This function retrieves XLocale database information. */
/************************************************************************/
void
-_XlcGetLocaleDataBase(lcd, category, name, value, count)
- XLCd lcd;
- char *category;
- char *name;
- char ***value;
- int *count;
+_XlcGetLocaleDataBase(
+ XLCd lcd,
+ const char *category,
+ const char *name,
+ char ***value,
+ int *count)
{
XlcDatabase lc_db = (XlcDatabase)XLC_PUBLIC(lcd, xlocale_db);
XrmQuark category_q, name_q;
category_q = XrmStringToQuark(category);
name_q = XrmStringToQuark(name);
- for(; lc_db->db; ++lc_db){
- if(category_q == lc_db->category_q && name_q == lc_db->name_q){
+ for (; lc_db->db; ++lc_db) {
+ if (category_q == lc_db->category_q && name_q == lc_db->name_q) {
*value = lc_db->db->value;
*count = lc_db->db->value_num;
return;
@@ -1195,23 +1203,23 @@ _XlcGetLocaleDataBase(lcd, category, name, value, count)
/* remove it from the cache list and free work area. */
/************************************************************************/
void
-_XlcDestroyLocaleDataBase(lcd)
- XLCd lcd;
+_XlcDestroyLocaleDataBase(
+ XLCd lcd)
{
XlcDatabase lc_db = (XlcDatabase)XLC_PUBLIC(lcd, xlocale_db);
XlcDatabaseList p, prev;
- for(p = _db_list, prev = (XlcDatabaseList)NULL; p;
- prev = p, p = p->next){
- if(p->lc_db == lc_db){
- if((-- p->ref_count) < 1){
- if(p->lc_db != (XlcDatabase)NULL){
+ for (p = _db_list, prev = (XlcDatabaseList)NULL; p;
+ prev = p, p = p->next) {
+ if (p->lc_db == lc_db) {
+ if ((-- p->ref_count) < 1) {
+ if (p->lc_db != (XlcDatabase)NULL) {
Xfree((char *)p->lc_db);
}
DestroyDatabase(p->database);
- if(prev == (XlcDatabaseList)NULL){
+ if (prev == (XlcDatabaseList)NULL) {
_db_list = p->next;
- }else{
+ } else {
prev->next = p->next;
}
Xfree((char*)p);
@@ -1229,8 +1237,8 @@ _XlcDestroyLocaleDataBase(lcd)
/* the specified XLCd. */
/************************************************************************/
XPointer
-_XlcCreateLocaleDataBase(lcd)
- XLCd lcd;
+_XlcCreateLocaleDataBase(
+ XLCd lcd)
{
XlcDatabaseList list, new;
Database p, database = (Database)NULL;
@@ -1240,17 +1248,16 @@ _XlcCreateLocaleDataBase(lcd)
int i, n;
name = _XlcFileName(lcd, "locale");
- if(name == NULL){
+ if (name == NULL)
return (XPointer)NULL;
- }
#ifndef __EMX__
name_q = XrmStringToQuark(name);
#else
name_q = XrmStringToQuark((char*)__XOS2RedirRoot(name));
#endif
- for(list = _db_list; list; list = list->next){
- if(name_q == list->name_q){
+ for (list = _db_list; list; list = list->next) {
+ if (name_q == list->name_q) {
list->ref_count++;
Xfree (name);
return XLC_PUBLIC(lcd, xlocale_db) = (XPointer)list->lc_db;
@@ -1258,24 +1265,23 @@ _XlcCreateLocaleDataBase(lcd)
}
database = CreateDatabase(name);
- if(database == (Database)NULL){
+ if (database == (Database)NULL) {
Xfree (name);
return (XPointer)NULL;
}
n = CountDatabase(database);
lc_db = (XlcDatabase)Xmalloc(sizeof(XlcDatabaseRec) * (n + 1));
- if(lc_db == (XlcDatabase)NULL){
+ if (lc_db == (XlcDatabase)NULL)
goto err;
- }
bzero(lc_db, sizeof(XlcDatabaseRec) * (n + 1));
- for(p = database, i = 0; p && i < n; p = p->next, ++i){
+ for (p = database, i = 0; p && i < n; p = p->next, ++i) {
lc_db[i].category_q = XrmStringToQuark(p->category);
lc_db[i].name_q = XrmStringToQuark(p->name);
lc_db[i].db = p;
}
new = (XlcDatabaseList)Xmalloc(sizeof(XlcDatabaseListRec));
- if(new == (XlcDatabaseList)NULL){
+ if (new == (XlcDatabaseList)NULL) {
goto err;
}
new->name_q = name_q;
@@ -1290,7 +1296,7 @@ _XlcCreateLocaleDataBase(lcd)
err:
DestroyDatabase(database);
- if(lc_db != (XlcDatabase)NULL){
+ if (lc_db != (XlcDatabase)NULL) {
Xfree((char *)lc_db);
}
Xfree (name);
diff --git a/xc/lib/X11/lcDefConv.c b/xc/lib/X11/lcDefConv.c
index cbf7679fd..3e02d5075 100644
--- a/xc/lib/X11/lcDefConv.c
+++ b/xc/lib/X11/lcDefConv.c
@@ -27,7 +27,7 @@
* 2000
* Modifier: Ivan Pascal The XFree86 Project
*/
-/* $XFree86: xc/lib/X11/lcDefConv.c,v 1.4 2000/02/25 18:27:54 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcDefConv.c,v 1.5 2000/11/28 18:49:42 dawes Exp $ */
/*
* The default locale loader.
@@ -43,12 +43,6 @@
#define MB_LEN_MAX 6
#endif
-extern void _XlcAddUtf8Converters(
-#if NeedFunctionPrototypes
- XLCd
-#endif
-);
-
#if !defined(X_NOT_STDC_ENV) && !defined(macII) && !defined(Lynx_22) && !defined(X_LOCALE)
#define STDCVT
#endif
@@ -56,47 +50,47 @@ extern void _XlcAddUtf8Converters(
#define GR 0x80
#define GL 0x7f
+typedef struct _StateRec *State;
typedef struct _StateRec {
CodeSet GL_codeset;
CodeSet GR_codeset;
wchar_t wc_mask;
wchar_t wc_encode_mask;
- Bool (*MBtoWC)();
- Bool (*WCtoMB)();
-} StateRec, *State;
+ Bool (*MBtoWC) (State state, const char *ch, wchar_t *wc);
+ Bool (*WCtoMB) (State state, wchar_t wc, char *ch);
+} StateRec;
static
-Bool MBtoWCdef(state, ch, wc)
- State state;
- char *ch;
- wchar_t *wc;
+Bool MBtoWCdef(
+ State state,
+ const char *ch,
+ wchar_t *wc)
{
wchar_t wc_encoding;
- CodeSet codeset = (*ch & GR) ? state->GR_codeset :
- state->GL_codeset;
+ CodeSet codeset = (*ch & GR) ? state->GR_codeset : state->GL_codeset;
if (!codeset)
return False;
wc_encoding = codeset->wc_encoding;
- *wc = ((wchar_t) * ch & state->wc_mask) | wc_encoding;
+ *wc = ((wchar_t) *ch & state->wc_mask) | wc_encoding;
return True;
}
#ifdef STDCVT
static
-Bool MBtoWCstd(state, ch, wc)
- State state;
- char *ch;
- wchar_t *wc;
+Bool MBtoWCstd(
+ State state,
+ const char *ch,
+ wchar_t *wc)
{
return (mbtowc(wc, ch, 1) == 1);
}
#endif
static
-Bool WCtoMBdef(state, wc, ch)
- State state;
- wchar_t wc;
- char *ch;
+Bool WCtoMBdef(
+ State state,
+ wchar_t wc,
+ char *ch)
{
wchar_t wc_encoding = wc & state->wc_encode_mask;
CodeSet codeset;
@@ -116,19 +110,19 @@ Bool WCtoMBdef(state, wc, ch)
#ifdef STDCVT
static
-Bool WCtoMBstd(state, wc, ch)
- State state;
- wchar_t wc;
- char *ch;
+Bool WCtoMBstd(
+ State state,
+ wchar_t wc,
+ char *ch)
{
return (wctomb(ch, wc) == 1);
}
#endif
static
-XlcCharSet get_charset(state, side)
- State state;
- char side;
+XlcCharSet get_charset(
+ State state,
+ char side)
{
CodeSet codeset = side ? state->GR_codeset : state->GL_codeset;
if (codeset) {
@@ -145,17 +139,17 @@ XlcCharSet get_charset(state, side)
}
static int
-def_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+def_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register char *src = (char *) *from;
- register wchar_t *dst = (wchar_t *) * to;
+ const char *src = (const char *) *from;
+ wchar_t *dst = (wchar_t *) * to;
State state = (State) conv->state;
int unconv = 0;
@@ -164,7 +158,7 @@ def_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
while (*from_left && *to_left) {
(*from_left)--;
- if ((state->MBtoWC) (state, src++, dst)) {
+ if (state->MBtoWC (state, src++, dst)) {
dst++;
(*to_left)--;
} else {
@@ -177,17 +171,17 @@ def_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-def_wcstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+def_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register wchar_t *src = (wchar_t *) * from;
- register char *dst = (char *) *to;
+ const wchar_t *src = (const wchar_t *) * from;
+ char *dst = (char *) *to;
State state = (State) conv->state;
char ch[MB_LEN_MAX];
int unconv = 0;
@@ -197,7 +191,7 @@ def_wcstombs(conv, from, from_left, to, to_left, args, num_args)
while (*from_left && *to_left) {
(*from_left)--;
- if ((state->WCtoMB) (state, *src++, ch)) {
+ if (state->WCtoMB (state, *src++, ch)) {
*dst++ = *ch;
(*to_left)--;
} else {
@@ -210,17 +204,17 @@ def_wcstombs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-mbstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register char *src = (char *) *from;
- register char *dst = (char *) *to;
+ const char *src = (const char *) *from;
+ char *dst = (char *) *to;
CodeSet codeset;
State state = (State) conv->state;
char ch;
@@ -247,17 +241,17 @@ mbstostr(conv, from, from_left, to, to_left, args, num_args)
}
static int
-wcstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register wchar_t *src = (wchar_t *) * from;
- register char *dst = (char *) *to;
+ const wchar_t *src = (const wchar_t *) *from;
+ char *dst = (char *) *to;
CodeSet codeset;
State state = (State) conv->state;
char ch[MB_LEN_MAX];
@@ -268,7 +262,7 @@ wcstostr(conv, from, from_left, to, to_left, args, num_args)
while (*from_left && *to_left) {
(*from_left)--;
- if ((state->WCtoMB) (state, *src++, ch)) {
+ if (state->WCtoMB (state, *src++, ch)) {
codeset = (*ch & GR) ? state->GR_codeset : state->GL_codeset;
if (codeset && codeset->string_encoding) {
*dst++ = *ch;
@@ -286,18 +280,18 @@ wcstostr(conv, from, from_left, to, to_left, args, num_args)
}
static int
-mbstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register char *src = (char *) *from;
- register char *dst = (char *) *to;
- register int length;
+ const char *src = (const char *) *from;
+ char *dst = (char *) *to;
+ int length;
State state = (State) conv->state;
char cur_side;
int unconv = 0;
@@ -332,17 +326,17 @@ mbstocs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register wchar_t *src = (wchar_t *) * from;
- register char *dst = (char *) *to;
+ const wchar_t *src = (const wchar_t *) * from;
+ char *dst = (char *) *to;
State state = (State) conv->state;
char cur_side = 0, ch[MB_LEN_MAX];
int unconv = 0;
@@ -352,7 +346,7 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
return 0;
while (*from_left) {
- if (found = (state->WCtoMB)(state, *src, ch))
+ if ((found = state->WCtoMB (state, *src, ch)))
break;
unconv++;
src++;
@@ -363,7 +357,7 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
cur_side = *ch & GR;
while (*from_left && *to_left) {
(*from_left)--;
- if ((state->WCtoMB)(state, *src++, ch)) {
+ if (state->WCtoMB (state, *src++, ch)) {
if ((char) (*ch & GR) != cur_side) {
src--;
(*from_left)++;
@@ -381,7 +375,7 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
}
if (num_args > 0) {
- XlcCharSet charset = get_charset(state, cur_side);
+ XlcCharSet charset = get_charset(state, cur_side);
if (charset) {
*((XlcCharSet *) args[0]) = charset;
} else {
@@ -394,17 +388,17 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-cstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register char *src = (char *) *from;
- register char *dst = (char *) *to;
+ const char *src = (const char *) *from;
+ char *dst = (char *) *to;
CodeSet codeset;
XlcCharSet charset;
State state = (State) conv->state;
@@ -446,7 +440,7 @@ cstombs(conv, from, from_left, to, to_left, args, num_args)
}
}
if (found) {
- register int length = min(*from_left, *to_left);
+ int length = min(*from_left, *to_left);
while (length) {
*dst++ = *src++ | cur_side;
length--;
@@ -463,17 +457,17 @@ cstombs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register char *src = (char *) *from;
- register wchar_t *dst = (wchar_t *) * to;
+ const char *src = (const char *) *from;
+ wchar_t *dst = (wchar_t *) * to;
CodeSet codeset;
XlcCharSet charset;
State state = (State) conv->state;
@@ -519,7 +513,7 @@ cstowcs(conv, from, from_left, to, to_left, args, num_args)
while (*from_left && *to_left) {
ch = *src++ | cur_side;
(*from_left)--;
- if ((state->MBtoWC) (state, &ch, dst)) {
+ if (state->MBtoWC (state, &ch, dst)) {
dst++;
(*to_left)--;
} else {
@@ -535,18 +529,18 @@ cstowcs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-strtombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+strtombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register char *src = (char *) *from;
- register char *dst = (char *) *to;
- register int length;
+ const char *src = (const char *) *from;
+ char *dst = (char *) *to;
+ int length;
if (from == NULL || *from == NULL)
return 0;
@@ -565,8 +559,8 @@ strtombs(conv, from, from_left, to, to_left, args, num_args)
}
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
if (conv->state)
Xfree((char *) conv->state);
@@ -575,11 +569,11 @@ close_converter(conv)
}
static XlcConv
-create_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
- register XlcConv conv;
+ XlcConv conv;
State state;
conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
@@ -623,11 +617,11 @@ static XlcConvMethodsRec mbstowcs_methods = {
};
static XlcConv
-open_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstowcs_methods);
}
@@ -639,11 +633,11 @@ static XlcConvMethodsRec mbstostr_methods = {
};
static XlcConv
-open_mbstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstostr_methods);
}
@@ -655,11 +649,11 @@ static XlcConvMethodsRec mbstocs_methods = {
};
static XlcConv
-open_mbstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstocs_methods);
}
@@ -671,11 +665,11 @@ static XlcConvMethodsRec wcstombs_methods = {
};
static XlcConv
-open_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstombs_methods);
}
@@ -687,11 +681,11 @@ static XlcConvMethodsRec wcstostr_methods = {
};
static XlcConv
-open_wcstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstostr_methods);
}
@@ -703,11 +697,11 @@ static XlcConvMethodsRec wcstocs_methods = {
};
static XlcConv
-open_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstocs_methods);
}
@@ -719,11 +713,11 @@ static XlcConvMethodsRec strtombs_methods = {
};
static XlcConv
-open_strtombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_strtombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &strtombs_methods);
}
@@ -735,11 +729,11 @@ static XlcConvMethodsRec cstombs_methods = {
};
static XlcConv
-open_cstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &cstombs_methods);
}
@@ -751,18 +745,18 @@ static XlcConvMethodsRec cstowcs_methods = {
};
static XlcConv
-open_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &cstowcs_methods);
}
XLCd
-_XlcDefaultLoader(name)
- _Xconst char *name;
+_XlcDefaultLoader(
+ const char *name)
{
XLCd lcd;
diff --git a/xc/lib/X11/lcDynamic.c b/xc/lib/X11/lcDynamic.c
index a5b409c99..88f002832 100644
--- a/xc/lib/X11/lcDynamic.c
+++ b/xc/lib/X11/lcDynamic.c
@@ -28,7 +28,7 @@ from The Open Group.
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
-/* $XFree86: xc/lib/X11/lcDynamic.c,v 1.2 2000/02/12 02:54:11 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcDynamic.c,v 1.3 2000/11/28 18:49:42 dawes Exp $ */
/*
* A dynamically loaded locale.
@@ -43,6 +43,7 @@ from The Open Group.
#include <dlfcn.h>
#include "Xlibint.h"
+#include "Xlcint.h"
#ifndef XLOCALEDIR
#define XLOCALEDIR "/usr/lib/X11/locale"
@@ -51,8 +52,8 @@ from The Open Group.
#define LCLIBNAME "xi18n.so"
XLCd
-_XlcDynamicLoader(name)
- char *name;
+_XlcDynamicLoader(
+ const char *name)
{
char libpath[1024];
XLCdMethods _XlcGenericMethods;
@@ -62,11 +63,11 @@ _XlcDynamicLoader(name)
sprintf(libpath,"%s/%s/%s",
XLOCALEDIR,name,LCLIBNAME);
nlshandler = dlopen(libpath,LAZY);
- _XlcGenericMethods = (XLCdMethods)dlsym(nlshandler,
- "genericMethods");
+ _XlcGenericMethods = (XLCdMethods)dlsym(nlshandler,"genericMethods");
lcd = _XlcCreateLC(name,_XlcGenericMethods);
-
return lcd;
}
+#else
+typedef int dummy;
#endif /* USE_DYNAMIC_LOADER */
diff --git a/xc/lib/X11/lcEuc.c b/xc/lib/X11/lcEuc.c
index 709064bd2..417c3075c 100644
--- a/xc/lib/X11/lcEuc.c
+++ b/xc/lib/X11/lcEuc.c
@@ -30,7 +30,7 @@ OF THIS SOFTWARE.
Yoshiyuki Segawa (segawa@ossi.com)
*****************************************************************/
-/* $XFree86: xc/lib/X11/lcEuc.c,v 3.7 2000/02/12 02:54:11 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcEuc.c,v 3.8 2000/11/28 18:49:43 dawes Exp $ */
/*
* An EUC locale.
@@ -76,8 +76,8 @@ typedef unsigned char Uchar;
typedef unsigned long Ulong;
typedef unsigned int Uint;
-static CodeSet GetCodeSetFromCharSet();
-static CodeSet wc_codeset();
+static CodeSet GetCodeSetFromCharSet (XLCd lcd, XlcCharSet charset);
+static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
#define BADCHAR(min_ch, c) (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
@@ -92,23 +92,22 @@ static CodeSet wc_codeset();
*/
static int
-euc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
-
XLCd lcd = (XLCd)conv->state;
- register Uchar ch;
- register int chr_len = 0;
- register int sshift = False;
- register int shift_mult = 0;
- register Uint chrcode;
+ Uchar ch;
+ int chr_len = 0;
+ int sshift = False;
+ int shift_mult = 0;
+ Uint chrcode;
Uint wc_encode = 0;
Uint wc_tmp = 0;
@@ -121,7 +120,7 @@ euc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
Bool new_char;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *) *to;
wchar_t *outbuf_base = outbufptr;
@@ -129,7 +128,6 @@ euc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
int codeset_num = XLC_GENERIC(lcd, codeset_num);
Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -246,20 +244,20 @@ euc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- wchar_t *inbufptr = (wchar_t *) *from;
- register XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ XPointer outbufptr = *to;
XPointer outbuf_base = outbufptr;
wchar_t wch;
- register int length;
+ int length;
Uchar tmp;
int num_conv;
int unconv_num = 0;
@@ -268,7 +266,6 @@ euc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -309,14 +306,14 @@ euc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
XlcCharSet charset;
@@ -325,8 +322,8 @@ euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
int length;
int unconv_num = 0;
int min_ch = 0;
- register char *src = *from, *dst = *to;
-
+ const char *src = *from;
+ char *dst = *to;
if (isleftside(*src)) { /* 7-bit (CS0) */
if (ASCII_CODESET >= codeset_num)
@@ -382,7 +379,7 @@ euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
} while (--length);
*to = dst;
- *from = src;
+ *from = (XPointer) src;
*from_left -= charset->char_size;
*to_left -= charset->char_size - length;
@@ -394,22 +391,22 @@ euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_mbstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- char *tmp_from, *tmp_to;
+ const char *tmp_from;
+ char *tmp_to;
int tmp_from_left, tmp_to_left;
XlcCharSet charset, tmp_charset;
XPointer tmp_args[1];
int unconv_num = 0, ret;
-
/* Determine the charset of the segment and convert one characater: */
tmp_args[0] = (XPointer) &charset; /* charset from euc_mbtocs() */
@@ -424,12 +421,11 @@ euc_mbstocs(conv, from, from_left, to, to_left, args, num_args)
tmp_to_left = *to_left;
tmp_to = *to;
-
/* Convert remainder of the segment: */
tmp_args[0] = (XPointer) &tmp_charset;
- while( (ret = euc_mbtocs(conv, &tmp_from, &tmp_from_left, &tmp_to,
- &tmp_to_left, tmp_args, 1)) >= 0 ) {
+ while( (ret = euc_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
+ (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
if (ret > 0) {
unconv_num += ret;
@@ -439,9 +435,9 @@ euc_mbstocs(conv, from, from_left, to, to_left, args, num_args)
if (tmp_charset != charset) /* quit on end of segment */
break;
- *from = tmp_from;
+ *from = (XPointer) tmp_from;
*from_left = tmp_from_left;
- *to = tmp_to;
+ *to = (XPointer) tmp_to;
*to_left = tmp_to_left;
}
@@ -453,26 +449,25 @@ euc_mbstocs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
- wchar_t *wcptr = (wchar_t *) *from;
- register char *bufptr = (char *) *to;
+ const wchar_t *wcptr = (const wchar_t *) *from;
+ char *bufptr = (char *) *to;
wchar_t wch;
char *tmpptr;
- register int length;
+ int length;
CodeSet codeset;
Ulong wc_encoding;
int wcstr_len = *from_left, buf_len = *to_left;
-
if (!(codeset = wc_codeset(lcd, *wcptr)))
return -1;
@@ -514,25 +509,24 @@ euc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_cstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_cstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
- register char *csptr = *from;
- register char *bufptr = *to;
+ const char *csptr = *from;
+ char *bufptr = *to;
int csstr_len = *from_left;
- register int buf_len = *to_left;
+ int buf_len = *to_left;
int length;
CodeSet codeset;
int cvt_length;
-
if (num_args < 1)
return -1;
@@ -564,7 +558,7 @@ euc_cstombs(conv, from, from_left, to, to_left, args, num_args)
}
*from_left -= csptr - *from;
- *from = csptr;
+ *from = (XPointer) csptr;
if (bufptr)
*to += cvt_length;
*to_left -= cvt_length;
@@ -574,26 +568,25 @@ euc_cstombs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
- register char *csptr = *from;
+ const char *csptr = *from;
wchar_t *bufptr = (wchar_t *) *to;
wchar_t *toptr = (wchar_t *) *to;
int csstr_len = *from_left;
- register int buf_len = *to_left;
+ int buf_len = *to_left;
wchar_t wch;
int length;
Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
CodeSet codeset;
-
if (num_args < 1)
return -1;
@@ -625,21 +618,20 @@ euc_cstowcs(conv, from, from_left, to, to_left, args, num_args)
}
}
*from_left -= csptr - *from;
- *from = csptr;
+ *from = (XPointer) csptr;
return 0;
}
static CodeSet
-wc_codeset(lcd, wch)
- XLCd lcd;
- wchar_t wch;
+wc_codeset(
+ XLCd lcd,
+ wchar_t wch)
{
-
- register CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- register int end = XLC_GENERIC(lcd, codeset_num);
- register Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int end = XLC_GENERIC(lcd, codeset_num);
+ Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
for (; --end >= 0; codesets++)
if ( widech == (*codesets)->wc_encoding )
@@ -650,13 +642,13 @@ wc_codeset(lcd, wch)
static CodeSet
-GetCodeSetFromCharSet(lcd, charset)
- XLCd lcd;
- XlcCharSet charset;
+GetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset)
{
- register CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
- register XlcCharSet *charset_list;
- register int codeset_num, num_charsets;
+ CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
+ XlcCharSet *charset_list;
+ int codeset_num, num_charsets;
codeset_num = XLC_GENERIC(lcd, codeset_num);
@@ -674,9 +666,9 @@ GetCodeSetFromCharSet(lcd, charset)
static XlcConv
-create_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
XlcConv conv;
@@ -764,8 +756,8 @@ static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
* initCTptr(): Set ctdptr[] to point at ctdata[], indexed by codeset_num.
*/
static void
-initCTptr(lcd)
- XLCd lcd;
+initCTptr(
+ XLCd lcd)
{
int num_codesets = XLC_GENERIC(lcd, codeset_num);
int num_charsets;
@@ -818,27 +810,26 @@ initCTptr(lcd)
#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
static int
-euc_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- register XPointer inbufptr = *from;
- XPointer inbuf_base;
- register wchar_t *outbufptr = (wchar_t *) *to;
+ const char *inbufptr = *from;
+ const char *inbuf_base;
+ wchar_t *outbufptr = (wchar_t *) *to;
wchar_t *outbuf_base = outbufptr;
- register int clen, length;
- int num_conv;
+ int clen, length;
int unconv_num = 0;
unsigned int ct_seglen = 0;
Uchar ct_type = 0;
- register int shift_mult;
+ int shift_mult;
wchar_t wc_tmp;
wchar_t wch;
Ulong wc_encoding;
@@ -947,22 +938,22 @@ euc_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
#define userdef (codeset->cs_num == 3)
static int
-euc_wcstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register int ct_len = *to_left;
- register wchar_t *inbufptr = (wchar_t *) *from;
- register char *ctptr = *to;
+ int ct_len = *to_left;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *ctptr = *to;
XPointer ct_base = ctptr;
wchar_t wch;
- register int length;
- register int unconv_num = 0;
+ int length;
+ int unconv_num = 0;
Uchar tmp;
Uchar t1 = 0;
int num_conv;
@@ -973,7 +964,6 @@ euc_wcstocts(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
/* Initial State: */
ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
ct_state.GR_charset = NULL;
@@ -1085,22 +1075,21 @@ euc_wcstocts(conv, from, from_left, to, to_left, args, num_args)
#define userdef (ctdp == ctdptr[Userdef])
static int
-euc_ctstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_ctstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register XPointer inbufptr = *from;
- register XPointer outbufptr = *to;
- XPointer inbuf_base;
+ const char *inbufptr = *from;
+ XPointer outbufptr = *to;
+ const char *inbuf_base;
XPointer outbuf_base = outbufptr;
- register int clen, length;
+ int clen, length;
int unconv_num = 0;
- int num_conv;
unsigned int ct_seglen = 0;
Uchar ct_type = 0;
CTData ctdp = &ctdata[0]; /* default */
@@ -1176,8 +1165,9 @@ euc_ctstombs(conv, from, from_left, to, to_left, args, num_args)
clen = length;
do {
- if (byte1)
+ if (byte1) {
if (kanji) {
+ /* FIXME: assignment of read-only location */
*inbufptr = BIT8ON(*inbufptr);
*(inbufptr+1) = BIT8ON(*(inbufptr+1));
}
@@ -1187,6 +1177,7 @@ euc_ctstombs(conv, from, from_left, to, to_left, args, num_args)
}
(*to_left)--;
}
+ }
if (save_outbuf == True) {
*outbufptr++ = *inbufptr;
}
@@ -1213,22 +1204,22 @@ euc_ctstombs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_mbstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_mbstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register int ct_len = *to_left;
+ int ct_len = *to_left;
int cs_num;
int clen, length;
int unconv_num = 0;
int num_conv;
- XPointer inbufptr = *from;
- register char *ctptr = *to;
+ const char *inbufptr = *from;
+ char *ctptr = *to;
XPointer ct_base = ctptr;
StateRec ct_state;
@@ -1236,7 +1227,6 @@ euc_mbstocts(conv, from, from_left, to, to_left, args, num_args)
XLCd lcd = (XLCd) conv->state;
int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
/* Initial State: */
ct_state.GL_charset = NULL;
ct_state.GR_charset = NULL;
@@ -1333,8 +1323,8 @@ euc_mbstocts(conv, from, from_left, to, to_left, args, num_args)
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
Xfree((char *) conv);
}
@@ -1358,118 +1348,118 @@ static XlcConvMethodsRec conv_methods[] = {
static XlcConv
-open_mbstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOCS]);
}
static XlcConv
-open_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOCS]);
}
static XlcConv
-open_mbtocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBTOCS]);
}
static XlcConv
-open_cstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CSTOMBS]);
}
static XlcConv
-open_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CSTOWCS]);
}
static XlcConv
-open_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
}
static XlcConv
-open_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
}
static XlcConv
-open_ctstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
}
static XlcConv
-open_ctstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
}
static XlcConv
-open_wcstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
}
static XlcConv
-open_mbstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
}
XLCd
-_XlcEucLoader(name)
- _Xconst char *name;
+_XlcEucLoader(
+ const char *name)
{
XLCd lcd;
@@ -1477,7 +1467,6 @@ _XlcEucLoader(name)
if (lcd == NULL)
return lcd;
-
if (!XLC_PUBLIC_PART(lcd)->codeset ||
(_XlcNCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "euc", 3))) {
_XlcDestroyLC(lcd);
diff --git a/xc/lib/X11/lcFile.c b/xc/lib/X11/lcFile.c
index e9f773feb..94179aff4 100644
--- a/xc/lib/X11/lcFile.c
+++ b/xc/lib/X11/lcFile.c
@@ -23,16 +23,14 @@
* SOFTWARE.
*
*/
-/* $XFree86: xc/lib/X11/lcFile.c,v 3.18 2000/01/29 18:58:17 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcFile.c,v 3.19 2000/11/28 18:49:43 dawes Exp $ */
+#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include "Xlibint.h"
#include "XlcPubI.h"
#include <X11/Xos.h>
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
/************************************************************************/
@@ -77,27 +75,32 @@ extern char *getenv();
#define NUM_LOCALEDIR 64
+/* Splits a NUL terminated line into constituents, at colons and newline
+ characters. Leading whitespace is removed from constituents. The
+ constituents are stored at argv[0..argsize-1]. The number of stored
+ constituents (<= argsize) is returned. The line is destructively
+ modified. */
static int
-parse_line(line, argv, argsize)
- char *line;
- char **argv;
- int argsize;
+parse_line(
+ char *line,
+ char **argv,
+ int argsize)
{
int argc = 0;
char *p = line;
- while(argc < argsize){
- while(isspace(*p)){
+ while (argc < argsize) {
+ while (isspace(*p)) {
++p;
}
- if(*p == '\0'){
+ if (*p == '\0') {
break;
}
argv[argc++] = p;
- while(*p != ':' && *p != '\n' && *p != '\0'){
+ while (*p != ':' && *p != '\n' && *p != '\0') {
++p;
}
- if(*p == '\0'){
+ if (*p == '\0') {
break;
}
*p++ = '\0';
@@ -106,31 +109,25 @@ parse_line(line, argv, argsize)
return argc;
}
-/* parse the colon separated list in path into argv */
-int
-_XlcParsePath(path, argv, argsize)
- char *path;
- char **argv;
- int argsize;
+/* Splits a colon separated list of directories, and returns the constituent
+ paths (without trailing slash). At most argsize constituents are stored
+ at argv[0..argsize-1]. The number of stored constituents is returned. */
+static int
+_XlcParsePath(
+ char *path,
+ char **argv,
+ int argsize)
{
char *p = path;
- int i, n;
+ int n, i;
-#if 0
- while((p = strchr(p, LC_PATHDELIM)) != NULL){
- *p = ' '; /* place space on delimter */
- }
-#endif
n = parse_line(path, argv, argsize);
- if(n == 0){
- return 0;
- }
- for(i = 0; i < n; ++i){
+ for (i = 0; i < n; ++i) {
int len;
p = argv[i];
len = strlen(p);
- if(p[len - 1] == '/'){
- /* eliminate slash */
+ if (len > 0 && p[len - 1] == '/') {
+ /* eliminate trailing slash */
p[len - 1] = '\0';
}
}
@@ -142,15 +139,15 @@ _XlcParsePath(path, argv, argsize)
#endif
static void
-xlocaledir(buf, buf_len)
- char *buf;
- int buf_len;
+xlocaledir(
+ char *buf,
+ int buf_len)
{
char *dir, *p = buf;
int len = 0;
dir = getenv("XLOCALEDIR");
- if(dir != NULL){
+ if (dir != NULL) {
len = strlen(dir);
strncpy(p, dir, buf_len);
if (len < buf_len) {
@@ -167,89 +164,88 @@ xlocaledir(buf, buf_len)
buf[buf_len-1] = '\0';
}
-enum { LtoR, RtoL };
+/* Mapping direction */
+typedef enum {
+ LtoR, /* Map first field to second field */
+ RtoL /* Map second field to first field */
+} MapDirection;
static char *
-resolve_name(lc_name, file_name, direction)
- char *lc_name;
- char *file_name;
- int direction; /* mapping direction */
+resolve_name(
+ const char *lc_name,
+ char *file_name,
+ MapDirection direction)
{
FILE *fp;
char buf[XLC_BUFSIZE], *name = NULL;
fp = _XFopenFile (file_name, "r");
- if(fp == (FILE *)NULL){
+ if (fp == NULL)
return NULL;
- }
- while(fgets(buf, XLC_BUFSIZE, fp) != NULL){
+ while (fgets(buf, XLC_BUFSIZE, fp) != NULL) {
char *p = buf;
int n;
char *args[2], *from, *to;
#ifdef __EMX__ /* Take out CR under OS/2 */
int len;
- len=strlen(p);
- if (len>1) {
- if (*(p+len-2) == '\r' && *(p+len-1) == '\n') {
+ len = strlen(p);
+ if (len > 1) {
+ if (*(p+len-2) == '\r' && *(p+len-1) == '\n') {
*(p+len-2) = '\n';
*(p+len-1) = '\0';
- }
+ }
}
#endif
- while(isspace(*p)){
+ while (isspace(*p)) {
++p;
}
- if(iscomment(*p)){
+ if (iscomment(*p)) {
continue;
}
n = parse_line(p, args, 2); /* get first 2 fields */
- if(n != 2){
+ if (n != 2) {
continue;
}
- if(direction == LtoR){
+ if (direction == LtoR) {
from = args[0], to = args[1]; /* left to right */
- }else{
+ } else {
from = args[1], to = args[0]; /* right to left */
}
- if(! strcmp(from, lc_name)){
+ if (! strcmp(from, lc_name)) {
name = Xmalloc(strlen(to) + 1);
- if(name != NULL){
+ if (name != NULL) {
strcpy(name, to);
}
break;
}
}
- if(fp != (FILE *)NULL){
- fclose(fp);
- }
+ fclose(fp);
return name;
}
-/*
-#define isupper(ch) ('A' <= (ch) && (ch) <= 'Z')
-#define tolower(ch) ((ch) - 'A' + 'a')
-*/
+#define c_tolower(ch) ((ch) >= 'A' && (ch) <= 'Z' ? (ch) - 'A' + 'a' : (ch))
+
static char *
-lowercase(dst, src)
- char *dst;
- char *src;
+lowercase(
+ char *dst,
+ const char *src)
{
- char *s, *t;
+ const char *s;
+ char *t;
- for(s = src, t = dst; *s; ++s, ++t){
- *t = isupper(*s) ? tolower(*s) : *s;
- }
+ for (s = src, t = dst; *s; ++s, ++t)
+ *t = c_tolower(*s);
*t = '\0';
return dst;
}
/************************************************************************/
char *
-_XlcFileName(lcd, category)
- XLCd lcd;
- char *category;
+_XlcFileName(
+ XLCd lcd,
+ const char *category)
{
char *siname;
char cat[XLC_BUFSIZE], dir[XLC_BUFSIZE];
@@ -257,16 +253,15 @@ _XlcFileName(lcd, category)
char *args[NUM_LOCALEDIR];
char *file_name = NULL;
- if(lcd == (XLCd)NULL){
+ if (lcd == (XLCd)NULL)
return NULL;
- }
siname = XLC_PUBLIC(lcd, siname);
lowercase(cat, category);
xlocaledir(dir,XLC_BUFSIZE);
n = _XlcParsePath(dir, args, NUM_LOCALEDIR);
- for(i = 0; i < n; ++i){
+ for (i = 0; i < n; ++i) {
char buf[PATH_MAX], *name;
name = NULL;
@@ -275,20 +270,20 @@ _XlcFileName(lcd, category)
sprintf(buf, "%s/%s.dir", args[i], cat);
name = resolve_name(siname, buf, RtoL);
}
- if(name == NULL){
+ if (name == NULL) {
continue;
}
- if(*name == '/'){
+ if (*name == '/') {
/* supposed to be absolute path name */
file_name = name;
- }else{
+ } else {
file_name = Xmalloc(2 + (args[i] ? strlen (args[i]) : 0) +
(name ? strlen (name) : 0));
if (file_name != NULL)
sprintf(file_name, "%s/%s", args[i], name);
Xfree(name);
}
- if(isreadable(file_name)){
+ if (isreadable(file_name)) {
break;
}
Xfree(file_name);
@@ -304,9 +299,9 @@ _XlcFileName(lcd, category)
#endif
int
-_XlcResolveLocaleName(lc_name, pub)
- char* lc_name;
- XLCdPublicPart* pub;
+_XlcResolveLocaleName(
+ const char* lc_name,
+ XLCdPublicPart* pub)
{
char dir[PATH_MAX], buf[PATH_MAX], *name = NULL;
char *dst;
@@ -317,13 +312,13 @@ _XlcResolveLocaleName(lc_name, pub)
xlocaledir (dir, PATH_MAX);
n = _XlcParsePath(dir, args, NUM_LOCALEDIR);
- for(i = 0; i < n; ++i){
+ for (i = 0; i < n; ++i) {
if ((2 + (args[i] ? strlen (args[i]) : 0) +
strlen (locale_alias)) < PATH_MAX) {
sprintf (buf, "%s/%s", args[i], locale_alias);
name = resolve_name (lc_name, buf, LtoR);
}
- if(name != NULL){
+ if (name != NULL) {
break;
}
}
@@ -383,7 +378,7 @@ _XlcResolveI18NPath(buf, buf_len)
char *buf;
int buf_len;
{
- if(buf != NULL){
+ if (buf != NULL) {
xlocaledir(buf, buf_len);
}
return 1;
diff --git a/xc/lib/X11/lcGenConv.c b/xc/lib/X11/lcGenConv.c
index 7cdd6f00b..9105e722a 100644
--- a/xc/lib/X11/lcGenConv.c
+++ b/xc/lib/X11/lcGenConv.c
@@ -35,7 +35,7 @@
* 2000
* Modifier: Ivan Pascal The XFree86 Project
*/
-/* $XFree86: xc/lib/X11/lcGenConv.c,v 3.15 2000/08/09 23:40:12 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcGenConv.c,v 3.16 2000/11/28 18:49:44 dawes Exp $ */
/*
* A generic locale loader for all kinds of ISO-2022 based codesets.
@@ -60,12 +60,6 @@
int __mb_cur_max = 1;
#endif
-extern void _XlcAddUtf8Converters(
-#if NeedFunctionPrototypes
- XLCd
-#endif
-);
-
typedef struct _CTDataRec {
char *name;
char *encoding; /* Compound Text encoding */
@@ -99,21 +93,24 @@ typedef struct _StateRec {
#define isleftside(c) (!isrightside(c))
/* Forward declarations for local routines. */
-static int mbstocts();
-static int ctstombs();
-static int cstombs();
+static int mbstocts (XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args);
+static int ctstombs (XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args);
+static int cstombs (XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args);
/* ------------------------------------------------------------------------- */
/* Misc */
/* ------------------------------------------------------------------------- */
static int
-compare(src, encoding, length)
- register char *src;
- register char *encoding;
- register int length;
+compare(
+ const char *src,
+ const char *encoding,
+ int length)
{
- char *start = src;
+ const char *start = src;
while (length-- > 0) {
if (*src++ != *encoding++)
@@ -126,9 +123,9 @@ compare(src, encoding, length)
}
static unsigned long
-conv_to_dest(conv, code)
- Conversion conv;
- unsigned long code;
+conv_to_dest(
+ Conversion conv,
+ unsigned long code)
{
int i;
int conv_num = conv->conv_num;
@@ -151,9 +148,9 @@ conv_to_dest(conv, code)
}
static unsigned long
-conv_to_source(conv, code)
- Conversion conv;
- unsigned long code;
+conv_to_source(
+ Conversion conv,
+ unsigned long code)
{
int i;
int conv_num;
@@ -192,9 +189,9 @@ conv_to_source(conv, code)
}
static unsigned long
-mb_to_gi(mb, codeset)
- unsigned long mb;
- CodeSet codeset;
+mb_to_gi(
+ unsigned long mb,
+ CodeSet codeset)
{
int i;
unsigned long mb_tmp, mask = 0;
@@ -217,9 +214,9 @@ mb_to_gi(mb, codeset)
}
static unsigned long
-gi_to_mb(glyph_index, codeset)
- unsigned long glyph_index;
- CodeSet codeset;
+gi_to_mb(
+ unsigned long glyph_index,
+ CodeSet codeset)
{
int i;
unsigned long mask = 0;
@@ -237,11 +234,11 @@ gi_to_mb(glyph_index, codeset)
}
static Bool
-gi_to_wc(lcd, glyph_index, codeset, wc)
- XLCd lcd;
- unsigned long glyph_index;
- CodeSet codeset;
- wchar_t *wc;
+gi_to_wc(
+ XLCd lcd,
+ unsigned long glyph_index,
+ CodeSet codeset,
+ wchar_t *wc)
{
unsigned char mask = 0;
unsigned long wc_encoding = codeset->wc_encoding;
@@ -259,11 +256,11 @@ gi_to_wc(lcd, glyph_index, codeset, wc)
}
static Bool
-wc_to_gi(lcd, wc, glyph_index, codeset)
- XLCd lcd;
- wchar_t wc;
- unsigned long *glyph_index;
- CodeSet *codeset;
+wc_to_gi(
+ XLCd lcd,
+ wchar_t wc,
+ unsigned long *glyph_index,
+ CodeSet *codeset)
{
int i;
unsigned char mask = 0;
@@ -294,20 +291,20 @@ wc_to_gi(lcd, wc, glyph_index, codeset)
}
static CodeSet
-mb_parse_codeset(state, num, inbufptr, from_left)
- State state;
- int num;
- char **inbufptr;
- int *from_left;
+mb_parse_codeset(
+ State state,
+ int num,
+ const char **inbufptr,
+ int *from_left)
{
int len;
int from_len = (*from_left) + 1;
- char *src = (*inbufptr) - 1;
+ const char *src = (*inbufptr) - 1;
ParseInfo *mb_parse_list = XLC_GENERIC(state->lcd, mb_parse_list);
ParseInfo parse_info;
CodeSet codeset;
- for (--num ; parse_info = mb_parse_list[num]; num++) {
+ for (--num ; (parse_info = mb_parse_list[num]) != NULL; num++) {
len = compare(src, parse_info->encoding, from_len);
if (len > 0) {
codeset = parse_info->codeset;
@@ -325,9 +322,9 @@ mb_parse_codeset(state, num, inbufptr, from_left)
}
static CodeSet
-byteM_parse_codeset(lcd, inbufptr)
- XLCd lcd;
- XPointer inbufptr;
+byteM_parse_codeset(
+ XLCd lcd,
+ const char *inbufptr)
{
unsigned char ch;
CodeSet codeset;
@@ -352,7 +349,7 @@ byteM_parse_codeset(lcd, inbufptr)
byteM_rec = byteM[j];
byteinfo = byteM_rec.byteinfo;
- for (hit=False,k=0; k < byteM_rec.byteinfo_num; k++) {
+ for (hit = False, k = 0; k < byteM_rec.byteinfo_num; k++) {
byteinfo_rec = byteinfo[k];
if (byteinfo_rec.start <= ch && ch <= byteinfo_rec.end) {
hit = True;
@@ -376,9 +373,9 @@ byteM_parse_codeset(lcd, inbufptr)
(state->GL_codeset) )
static XlcCharSet
-gi_parse_charset(glyph_index, codeset)
- unsigned long glyph_index;
- CodeSet codeset;
+gi_parse_charset(
+ unsigned long glyph_index,
+ CodeSet codeset)
{
int i;
XlcCharSet *charset_list = codeset->charset_list;
@@ -423,9 +420,9 @@ gi_parse_charset(glyph_index, codeset)
}
static Bool
-ct_parse_csi(inbufptr, ctr_seq_len)
- XPointer inbufptr;
- int *ctr_seq_len;
+ct_parse_csi(
+ const char *inbufptr,
+ int *ctr_seq_len)
{
int i;
int num = sizeof(directionality_data) / sizeof(directionality_data[0]);
@@ -443,9 +440,9 @@ ct_parse_csi(inbufptr, ctr_seq_len)
}
static int
-cmp_esc_sequence(inbufptr, charset)
- XPointer inbufptr;
- XlcCharSet charset;
+cmp_esc_sequence(
+ const char *inbufptr,
+ XlcCharSet charset)
{
int seq_len, name_len, total_len;
unsigned char byte_m, byte_l;
@@ -459,7 +456,7 @@ cmp_esc_sequence(inbufptr, charset)
return(0);
/* Standard Character Set Encoding ? */
- if(charset->source == CSsrcStd)
+ if (charset->source == CSsrcStd)
return(seq_len);
/*
@@ -494,11 +491,11 @@ cmp_esc_sequence(inbufptr, charset)
}
static Bool
-ct_parse_charset(lcd, inbufptr, charset, ctr_seq_len)
- XLCd lcd;
- XPointer inbufptr;
- XlcCharSet *charset;
- int *ctr_seq_len;
+ct_parse_charset(
+ XLCd lcd,
+ const char *inbufptr,
+ XlcCharSet *charset,
+ int *ctr_seq_len)
{
int i, j;
ExtdSegment ctextseg;
@@ -510,7 +507,6 @@ ct_parse_charset(lcd, inbufptr, charset, ctr_seq_len)
int segment_conv_num = XLC_GENERIC(lcd, segment_conv_num);
SegConv segment_conv = XLC_GENERIC(lcd, segment_conv);
-
/* get charset from XLC_XLOCALE by escape sequence */
for (i = 0; i < codeset_num; i++) {
@@ -522,13 +518,13 @@ ct_parse_charset(lcd, inbufptr, charset, ctr_seq_len)
for (j = 0; j < num_charsets; j++) {
*charset = charset_list[j];
- if ( *ctr_seq_len = cmp_esc_sequence(inbufptr, *charset) )
+ if ((*ctr_seq_len = cmp_esc_sequence(inbufptr, *charset)))
return(True);
}
if (ctextseg) {
*charset = ctextseg->charset;
- if ( *ctr_seq_len = cmp_esc_sequence(inbufptr, *charset) )
+ if ((*ctr_seq_len = cmp_esc_sequence(inbufptr, *charset)))
return(True);
}
}
@@ -540,10 +536,10 @@ ct_parse_charset(lcd, inbufptr, charset, ctr_seq_len)
for (i = 0; i < segment_conv_num; i++) {
*charset = segment_conv[i].source;
- if ( *ctr_seq_len = cmp_esc_sequence(inbufptr, *charset) )
+ if ((*ctr_seq_len = cmp_esc_sequence(inbufptr, *charset)))
return(True);
*charset = segment_conv[i].dest;
- if ( *ctr_seq_len = cmp_esc_sequence(inbufptr, *charset) )
+ if ((*ctr_seq_len = cmp_esc_sequence(inbufptr, *charset)))
return(True);
}
@@ -551,10 +547,10 @@ ct_parse_charset(lcd, inbufptr, charset, ctr_seq_len)
}
static Bool
-segment_conversion(lcd, charset, glyph_index)
- XLCd lcd;
- XlcCharSet *charset;
- unsigned long *glyph_index;
+segment_conversion(
+ XLCd lcd,
+ XlcCharSet *charset,
+ unsigned long *glyph_index)
{
int i;
int segment_conv_num = XLC_GENERIC(lcd, segment_conv_num);
@@ -585,10 +581,10 @@ segment_conversion(lcd, charset, glyph_index)
return(True);
}
-CodeSet
-_XlcGetCodeSetFromName(lcd, name)
- XLCd lcd;
- char *name;
+static CodeSet
+_XlcGetCodeSetFromName(
+ XLCd lcd,
+ const char *name)
{
int i, j;
XlcCharSet charset;
@@ -619,11 +615,11 @@ _XlcGetCodeSetFromName(lcd, name)
}
static Bool
-_XlcGetCodeSetFromCharSet(lcd, charset, codeset, glyph_index)
- XLCd lcd;
- XlcCharSet charset;
- CodeSet *codeset;
- unsigned long *glyph_index;
+_XlcGetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset,
+ CodeSet *codeset,
+ unsigned long *glyph_index)
{
int j, num;
CodeSet *codeset_list = XLC_GENERIC(lcd, codeset_list);
@@ -645,7 +641,7 @@ _XlcGetCodeSetFromCharSet(lcd, charset, codeset, glyph_index)
glyph_index_tmp = conv_to_source(ctconv, *glyph_index);
- if(charset->source == CSsrcStd) {
+ if (charset->source == CSsrcStd) {
/* Standard Character Set Encoding */
if (glyph_index_tmp == *glyph_index) {
@@ -687,11 +683,11 @@ end_loop:
#define check_string_encoding(codeset) (codeset->string_encoding)
static void
-output_ulong_value(outbufptr, code, length, side)
- XPointer outbufptr;
- unsigned long code;
- int length;
- XlcSide side;
+output_ulong_value(
+ char *outbufptr,
+ unsigned long code,
+ int length,
+ XlcSide side)
{
int i;
@@ -716,10 +712,10 @@ static XlcCharSet default_GL_charset = 0;
static XlcCharSet default_GR_charset = 0;
static void
-init_state(conv)
- XlcConv conv;
+init_state(
+ XlcConv conv)
{
- register State state = (State) conv->state;
+ State state = (State) conv->state;
/* for CT */
state->charset = NULL;
@@ -736,14 +732,14 @@ init_state(conv)
/* -------------------------------------------------------------------------- */
static int
-mbstowcs_org(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstowcs_org(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -758,7 +754,7 @@ mbstowcs_org(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset = NULL;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *) *to;
int from_size = *from_left;
@@ -797,7 +793,8 @@ mbstowcs_org(conv, from, from_left, to, to_left, args, num_args)
/* next mb char data for single shift ? */
if (mb_parse_table && (num = mb_parse_table[ch]) ) {
- if( codeset = mb_parse_codeset(state, num, &inbufptr, from_left)) {
+ codeset = mb_parse_codeset(state, num, &inbufptr, from_left);
+ if (codeset != NULL) {
length = len_left = codeset->length;
mb = 0;
continue;
@@ -840,24 +837,24 @@ output_one_wc:
unconv_num += (length - len_left);
}
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = (XPointer)outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
-{
- char *src = *((char **) from);
+stdc_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *src = *((const char **) from);
wchar_t *dst = *((wchar_t **) to);
int src_left = *from_left;
int dst_left = *to_left;
@@ -896,14 +893,14 @@ stdc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-wcstombs_org(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstombs_org(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -917,11 +914,11 @@ wcstombs_org(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
- wchar_t *inbufptr = (wchar_t *) *from;
- XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *outbufptr = *to;
int from_size = *from_left;
- char *default_string = XLC_PUBLIC(lcd, default_string);
+ const char *default_string = XLC_PUBLIC(lcd, default_string);
int defstr_len = strlen(default_string);
@@ -1006,24 +1003,24 @@ wcstombs_org(conv, from, from_left, to, to_left, args, num_args)
} /* end of while */
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
-{
- wchar_t *src = *((wchar_t **) from);
+stdc_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const wchar_t *src = *((const wchar_t **) from);
char *dst = *((char **) to);
int src_left = *from_left;
int dst_left = *to_left;
@@ -1055,14 +1052,14 @@ stdc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-wcstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1079,8 +1076,8 @@ wcstocts(conv, from, from_left, to, to_left, args, num_args)
XlcCharSet charset, old_charset = NULL;
char *ct_sequence;
- wchar_t *inbufptr = (wchar_t *) *from;
- XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *outbufptr = *to;
int from_size = *from_left;
@@ -1184,27 +1181,27 @@ wcstocts(conv, from, from_left, to, to_left, args, num_args)
} /* end of while */
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_wcstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX);
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left) * MB_CUR_MAX;
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -1228,14 +1225,14 @@ ret:
}
static int
-ctstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1250,11 +1247,10 @@ ctstowcs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset = NULL;
XlcCharSet charset_tmp;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *) *to;
int from_size = *from_left;
-
_XlcResetConverter(conv); /* ??? */
if (from == NULL || *from == NULL) {
@@ -1409,22 +1405,22 @@ skip_the_seg:
unconv_num += (gi_len - gi_len_left);
}
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = (XPointer)outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1439,7 +1435,7 @@ cstowcs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset = NULL;
XlcCharSet charset, charset_tmp;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *) *to;
int from_size = *from_left;
@@ -1508,27 +1504,27 @@ cstowcs(conv, from, from_left, to, to_left, args, num_args)
unconv_num += (gi_len - gi_len_left);
}
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = (XPointer)outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX);
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left) * MB_CUR_MAX;
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -1552,19 +1548,19 @@ ret:
}
static int
-stdc_cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX);
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left) * MB_CUR_MAX;
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -1588,19 +1584,19 @@ ret:
}
static int
-mbstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * sizeof(wchar_t));
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left);
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -1624,14 +1620,14 @@ ret:
}
static int
-mbstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1645,8 +1641,8 @@ mbstostr(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset = NULL;
- XPointer inbufptr = *from;
- XPointer outbufptr = *to;
+ const char *inbufptr = *from;
+ char *outbufptr = *to;
int from_size = *from_left;
unsigned char *mb_parse_table = XLC_GENERIC(lcd, mb_parse_table);
@@ -1684,7 +1680,8 @@ mbstostr(conv, from, from_left, to, to_left, args, num_args)
/* next mb char data for single shift ? */
if (mb_parse_table && (num = mb_parse_table[ch]) ) {
- if( codeset = mb_parse_codeset(state, num, &inbufptr, from_left)) {
+ codeset = mb_parse_codeset(state, num, &inbufptr, from_left);
+ if (codeset != NULL) {
length = len_left = codeset->length;
mb = 0;
continue;
@@ -1730,22 +1727,22 @@ output_one_mb:
unconv_num += (length - len_left);
}
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = (XPointer)outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-mbtocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1762,8 +1759,8 @@ mbtocs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset = NULL;
XlcCharSet charset;
- XPointer inbufptr = *from;
- XPointer outbufptr = *to;
+ const char *inbufptr = *from;
+ char *outbufptr = *to;
int from_size = *from_left;
unsigned char *mb_parse_table = XLC_GENERIC(lcd, mb_parse_table);
@@ -1795,7 +1792,8 @@ mbtocs(conv, from, from_left, to, to_left, args, num_args)
/* next mb char data for single shift ? */
if (mb_parse_table && (num = mb_parse_table[ch]) ) {
- if( codeset = mb_parse_codeset(state, num, &inbufptr, from_left)) {
+ codeset = mb_parse_codeset(state, num, &inbufptr, from_left);
+ if (codeset != NULL) {
length = len_left = codeset->length;
mb = 0;
continue;
@@ -1854,15 +1852,15 @@ output:
/* error end */
if (unconv_num) {
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return -1;
}
/* nomal end */
- *from = inbufptr;
- *to = outbufptr;
+ *from = (XPointer) inbufptr;
+ *to = (XPointer) outbufptr;
if (num_args > 0)
*((XlcCharSet *) args[0]) = charset;
@@ -1871,22 +1869,22 @@ output:
}
static int
-mbstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
int ret;
XlcCharSet charset_old, charset = NULL;
XPointer tmp_args[1];
- XPointer inbufptr;
+ const char *inbufptr;
int in_left;
- XPointer outbufptr;
+ char *outbufptr;
int out_left;
tmp_args[0] = (XPointer) &charset;
@@ -1900,9 +1898,9 @@ mbstocs(conv, from, from_left, to, to_left, args, num_args)
out_left = *to_left;
ret = mbtocs(conv, from, from_left, to, to_left, tmp_args, 1);
if (charset_old != charset) {
- *from = inbufptr;
+ *from = (XPointer) inbufptr;
*from_left = in_left;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
*to_left = out_left;
break;
}
@@ -1919,14 +1917,14 @@ mbstocs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-wcstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1940,11 +1938,11 @@ wcstostr(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
- wchar_t *inbufptr = (wchar_t *) *from;
- XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *outbufptr = *to;
int from_size = *from_left;
- char *default_string = XLC_PUBLIC(lcd, default_string);
+ const char *default_string = XLC_PUBLIC(lcd, default_string);
int defstr_len = strlen(default_string);
@@ -2035,27 +2033,27 @@ wcstostr(conv, from, from_left, to, to_left, args, num_args)
} /* end of while */
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_wcstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_wcstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX);
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left) * MB_CUR_MAX;
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -2079,14 +2077,14 @@ ret:
}
static int
-wctocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wctocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -2101,8 +2099,8 @@ wctocs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
XlcCharSet charset;
- wchar_t *inbufptr = (wchar_t *) *from;
- XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *outbufptr = *to;
int from_size = *from_left;
if (*from_left > *to_left)
@@ -2153,15 +2151,15 @@ end:
/* error end */
if (unconv_num) {
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return -1;
}
/* nomal end */
- *from = (XPointer)inbufptr;
- *to = outbufptr;
+ *from = (XPointer) inbufptr;
+ *to = (XPointer) outbufptr;
if (num_args > 0)
*((XlcCharSet *) args[0]) = charset;
@@ -2170,16 +2168,17 @@ end:
}
static int
-stdc_wctocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
-{
- wchar_t wch, *src = *((wchar_t **) from);
+stdc_wctocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const wchar_t *src = *((const wchar_t **) from);
+ wchar_t wch;
XPointer tmp_from, save_from = *from;
char tmp[32];
int length, ret, src_left = *from_left;
@@ -2207,7 +2206,7 @@ stdc_wctocs(conv, from, from_left, to, to_left, args, num_args)
end:
/* error end */
if (save_from == (XPointer) src) {
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
return -1;
}
@@ -2220,20 +2219,20 @@ end:
}
static int
-wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
int ret;
XlcCharSet charset_old, charset = NULL;
XPointer tmp_args[1];
- wchar_t *inbufptr;
+ const wchar_t *inbufptr;
int in_left;
XPointer outbufptr;
int out_left;
@@ -2243,15 +2242,15 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
charset_old = charset;
while ( ret == 0 && *from_left && *to_left) {
- inbufptr = (wchar_t *)(*from);
+ inbufptr = (const wchar_t *) *from;
in_left = *from_left;
outbufptr = *to;
out_left = *to_left;
ret = wctocs(conv, from, from_left, to, to_left, tmp_args, 1);
if (charset_old != charset) {
- *from = (XPointer)inbufptr;
+ *from = (XPointer) inbufptr;
*from_left = in_left;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
*to_left = out_left;
break;
}
@@ -2268,20 +2267,20 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-stdc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
int ret;
XlcCharSet charset_old, charset = NULL;
XPointer tmp_args[1];
- wchar_t *inbufptr;
+ const wchar_t *inbufptr;
int in_left;
XPointer outbufptr;
int out_left;
@@ -2291,15 +2290,15 @@ stdc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
charset_old = charset;
while ( ret == 0 && *from_left && *to_left ) {
- inbufptr = (wchar_t *)(*from);
+ inbufptr = (const wchar_t *) *from;
in_left = *from_left;
outbufptr = *to;
out_left = *to_left;
ret = stdc_wctocs(conv, from, from_left, to, to_left, tmp_args, 1);
if (charset_old != charset) {
- *from = (XPointer)inbufptr;
+ *from = (XPointer) inbufptr;
*from_left = in_left;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
*to_left = out_left;
break;
}
@@ -2316,19 +2315,19 @@ stdc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-ctstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+ctstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * sizeof(wchar_t));
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left);
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -2352,19 +2351,19 @@ ret:
}
static int
-cstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * sizeof(wchar_t));
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left);
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -2388,14 +2387,14 @@ ret:
}
static int
-strtombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+strtombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -2409,8 +2408,8 @@ strtombs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
- XPointer inbufptr = *from;
- XPointer outbufptr = *to;
+ const char *inbufptr = *from;
+ char *outbufptr = *to;
int from_size = *from_left;
if (*from_left > *to_left)
@@ -2492,22 +2491,22 @@ strtombs(conv, from, from_left, to, to_left, args, num_args)
} /* end of while */
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-strtowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+strtowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -2519,7 +2518,7 @@ strtowcs(conv, from, from_left, to, to_left, args, num_args)
int unconv_num = 0;
CodeSet codeset;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *)*to;
int from_size = *from_left;
@@ -2559,27 +2558,27 @@ strtowcs(conv, from, from_left, to, to_left, args, num_args)
} /* end of while */
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = (XPointer)outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_strtowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_strtowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX);
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left) * MB_CUR_MAX;
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -2607,8 +2606,8 @@ ret:
/* -------------------------------------------------------------------------- */
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
if (conv->state) {
Xfree((char *) conv->state);
@@ -2626,9 +2625,9 @@ close_converter(conv)
/* -------------------------------------------------------------------------- */
static XlcConv
-create_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
XlcConv conv;
State state;
@@ -2665,14 +2664,14 @@ static XlcConvMethodsRec mbstocts_methods = {
close_converter,
mbstocts,
NULL
-} ;
+};
static XlcConv
-open_mbstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstocts_methods);
}
@@ -2681,14 +2680,14 @@ static XlcConvMethodsRec mbstostr_methods = {
close_converter,
mbstostr,
NULL
-} ;
+};
static XlcConv
-open_mbstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstostr_methods);
}
@@ -2697,14 +2696,14 @@ static XlcConvMethodsRec mbstocs_methods = {
close_converter,
mbstocs,
NULL
-} ;
+};
static XlcConv
-open_mbstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstocs_methods);
}
@@ -2713,14 +2712,14 @@ static XlcConvMethodsRec mbtocs_methods = {
close_converter,
mbtocs,
NULL
-} ;
+};
static XlcConv
-open_mbtocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbtocs_methods);
}
@@ -2729,14 +2728,14 @@ static XlcConvMethodsRec ctstombs_methods = {
close_converter,
ctstombs,
NULL
-} ;
+};
static XlcConv
-open_ctstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &ctstombs_methods);
}
@@ -2745,14 +2744,14 @@ static XlcConvMethodsRec cstombs_methods = {
close_converter,
cstombs,
NULL
-} ;
+};
static XlcConv
-open_cstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &cstombs_methods);
}
@@ -2761,14 +2760,14 @@ static XlcConvMethodsRec strtombs_methods = {
close_converter,
strtombs,
NULL
-} ;
+};
static XlcConv
-open_strtombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_strtombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &strtombs_methods);
}
@@ -2779,14 +2778,14 @@ static XlcConvMethodsRec stdc_mbstowcs_methods = {
close_converter,
stdc_mbstowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_mbstowcs_methods);
}
@@ -2795,14 +2794,14 @@ static XlcConvMethodsRec stdc_wcstombs_methods = {
close_converter,
stdc_wcstombs,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstombs_methods);
}
@@ -2811,14 +2810,14 @@ static XlcConvMethodsRec stdc_wcstocts_methods = {
close_converter,
stdc_wcstocts,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstocts_methods);
}
@@ -2827,14 +2826,14 @@ static XlcConvMethodsRec stdc_wcstostr_methods = {
close_converter,
stdc_wcstostr,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstostr_methods);
}
@@ -2843,14 +2842,14 @@ static XlcConvMethodsRec stdc_wcstocs_methods = {
close_converter,
stdc_wcstocs,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstocs_methods);
}
@@ -2859,14 +2858,14 @@ static XlcConvMethodsRec stdc_wctocs_methods = {
close_converter,
stdc_wctocs,
NULL
-} ;
+};
static XlcConv
-open_stdc_wctocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wctocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wctocs_methods);
}
@@ -2875,14 +2874,14 @@ static XlcConvMethodsRec stdc_ctstowcs_methods = {
close_converter,
stdc_ctstowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_ctstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_ctstowcs_methods);
}
@@ -2891,14 +2890,14 @@ static XlcConvMethodsRec stdc_cstowcs_methods = {
close_converter,
stdc_cstowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_cstowcs_methods);
}
@@ -2907,14 +2906,14 @@ static XlcConvMethodsRec stdc_strtowcs_methods = {
close_converter,
stdc_strtowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_strtowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_strtowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_strtowcs_methods);
}
@@ -2925,14 +2924,14 @@ static XlcConvMethodsRec mbstowcs_methods = {
close_converter,
mbstowcs_org,
NULL
-} ;
+};
static XlcConv
-open_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstowcs_methods);
}
@@ -2941,14 +2940,14 @@ static XlcConvMethodsRec wcstombs_methods = {
close_converter,
wcstombs_org,
NULL
-} ;
+};
static XlcConv
-open_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstombs_methods);
}
@@ -2957,14 +2956,14 @@ static XlcConvMethodsRec wcstocts_methods = {
close_converter,
wcstocts,
NULL
-} ;
+};
static XlcConv
-open_wcstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstocts_methods);
}
@@ -2973,14 +2972,14 @@ static XlcConvMethodsRec wcstostr_methods = {
close_converter,
wcstostr,
NULL
-} ;
+};
static XlcConv
-open_wcstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstostr_methods);
}
@@ -2989,14 +2988,14 @@ static XlcConvMethodsRec wcstocs_methods = {
close_converter,
wcstocs,
NULL
-} ;
+};
static XlcConv
-open_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstocs_methods);
}
@@ -3005,14 +3004,14 @@ static XlcConvMethodsRec wctocs_methods = {
close_converter,
wctocs,
NULL
-} ;
+};
static XlcConv
-open_wctocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wctocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wctocs_methods);
}
@@ -3021,14 +3020,14 @@ static XlcConvMethodsRec ctstowcs_methods = {
close_converter,
ctstowcs,
NULL
-} ;
+};
static XlcConv
-open_ctstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &ctstowcs_methods);
}
@@ -3037,14 +3036,14 @@ static XlcConvMethodsRec cstowcs_methods = {
close_converter,
cstowcs,
NULL
-} ;
+};
static XlcConv
-open_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &cstowcs_methods);
}
@@ -3053,14 +3052,14 @@ static XlcConvMethodsRec strtowcs_methods = {
close_converter,
strtowcs,
NULL
-} ;
+};
static XlcConv
-open_strtowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_strtowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &strtowcs_methods);
}
@@ -3070,8 +3069,8 @@ open_strtowcs(from_lcd, from_type, to_lcd, to_type)
/* -------------------------------------------------------------------------- */
XLCd
-_XlcGenericLoader(name)
- _Xconst char *name;
+_XlcGenericLoader(
+ const char *name)
{
XLCd lcd;
XLCdGenericPart *gen;
diff --git a/xc/lib/X11/lcGeneric.c b/xc/lib/X11/lcGeneric.c
index ba66138dd..d86c538ac 100644
--- a/xc/lib/X11/lcGeneric.c
+++ b/xc/lib/X11/lcGeneric.c
@@ -28,15 +28,15 @@
* This is source code modified by FUJITSU LIMITED under the Joint
* Development Agreement for the CDE/Motif PST.
*/
-/* $XFree86: xc/lib/X11/lcGeneric.c,v 3.10 2000/10/24 22:45:01 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcGeneric.c,v 3.12 2000/11/29 18:12:26 dawes Exp $ */
#include <stdio.h>
#include "Xlibint.h"
#include "XlcGeneric.h"
-static XLCd create();
-static Bool initialize();
-static void destroy();
+static XLCd create (const char *name, XLCdMethods methods);
+static Bool initialize (XLCd lcd);
+static void destroy (XLCd lcd);
static XLCdPublicMethodsRec genericMethods = {
{ NULL }, /* use default methods */
@@ -52,9 +52,9 @@ static XLCdPublicMethodsRec genericMethods = {
XLCdMethods _XlcGenericMethods = (XLCdMethods) &genericMethods;
static XLCd
-create(name, methods)
- char *name;
- XLCdMethods methods;
+create(
+ const char *name,
+ XLCdMethods methods)
{
XLCd lcd;
XLCdPublicMethods new;
@@ -83,9 +83,9 @@ err:
}
static Bool
-string_to_encoding(str, encoding)
- char *str;
- char *encoding;
+string_to_encoding(
+ const char *str,
+ char *encoding)
{
char *next;
long value;
@@ -118,18 +118,18 @@ string_to_encoding(str, encoding)
}
static Bool
-string_to_ulong(str, value)
-char *str;
-unsigned long *value;
+string_to_ulong(
+ const char *str,
+ unsigned long *value)
{
- char *tmp1 = str;
- int base;
+ const char *tmp1 = str;
+ int base;
- if(*tmp1++ != '\\'){
+ if (*tmp1++ != '\\') {
tmp1--;
base = 10;
- }else{
- switch(*tmp1++){
+ } else {
+ switch (*tmp1++) {
case 'x':
base = 16;
break;
@@ -143,15 +143,15 @@ unsigned long *value;
return(False);
}
}
- *value = (unsigned) strtol(tmp1, NULL, base);
+ *value = (unsigned long) strtol(tmp1, NULL, base);
return(True);
}
static Bool
-add_charset(codeset, charset)
- CodeSet codeset;
- XlcCharSet charset;
+add_charset(
+ CodeSet codeset,
+ XlcCharSet charset)
{
XlcCharSet *new_list;
int num;
@@ -173,8 +173,8 @@ add_charset(codeset, charset)
}
static CodeSet
-add_codeset(gen)
- XLCdGenericPart *gen;
+add_codeset(
+ XLCdGenericPart *gen)
{
CodeSet new, *new_list;
int num;
@@ -206,11 +206,11 @@ err:
}
static Bool
-add_parse_list(gen, type, encoding, codeset)
- XLCdGenericPart *gen;
- EncodingType type;
- char *encoding;
- CodeSet codeset;
+add_parse_list(
+ XLCdGenericPart *gen,
+ EncodingType type,
+ const char *encoding,
+ CodeSet codeset)
{
ParseInfo new, *new_list;
char *str;
@@ -271,8 +271,8 @@ err:
}
static void
-free_charset(lcd)
- XLCd lcd;
+free_charset(
+ XLCd lcd)
{
XLCdGenericPart *gen = XLC_GENERIC_PART(lcd);
ParseInfo *parse_info;
@@ -280,7 +280,7 @@ free_charset(lcd)
if (gen->mb_parse_table)
Xfree(gen->mb_parse_table);
- if ((num = gen->mb_parse_list_num)) {
+ if ((num = gen->mb_parse_list_num) > 0) {
for (parse_info = gen->mb_parse_list; num-- > 0; parse_info++) {
if ((*parse_info)->encoding)
Xfree((*parse_info)->encoding);
@@ -289,23 +289,28 @@ free_charset(lcd)
Xfree(gen->mb_parse_list);
}
- if ((num = gen->codeset_num))
+ if ((num = gen->codeset_num) > 0)
Xfree(gen->codeset_list);
}
+
/* For VW/UDC */
#define FORWARD (unsigned long)'+'
#define BACKWARD (unsigned long)'-'
-static char *getscope(str,scp)
-char *str;
-FontScope scp;
+static const char *
+getscope(
+ const char *str,
+ FontScope scp)
{
- char* next;
- unsigned long start=0,end=0,dest=0,shift=0,direction=0;
- sscanf(str,"[\\x%lx,\\x%lx]->\\x%lx", &start, &end,&dest);
- if( dest ){
- if(dest >= start ){
+ unsigned long start = 0;
+ unsigned long end = 0;
+ unsigned long dest = 0;
+ unsigned long shift = 0;
+ unsigned long direction = 0;
+ sscanf(str,"[\\x%lx,\\x%lx]->\\x%lx", &start, &end, &dest);
+ if (dest) {
+ if (dest >= start) {
shift = dest - start;
direction = FORWARD ;
} else {
@@ -319,86 +324,88 @@ FontScope scp;
scp->shift_direction
= direction ;
/* .......... */
- while(*str){
- if(*str == ',' && *(str+1) == '['){
+ while (*str) {
+ if (*str == ',' && *(str+1) == '[')
break;
- }
str++;
}
- next = str+1 ;
- return(next);
+ return str+1;
}
-static int count_scopemap(str)
-char *str;
+static int
+count_scopemap(
+ const char *str)
{
- char *ptr;
+ const char *ptr;
int num=0;
- for(ptr=str;*ptr;ptr++){
- if(*ptr == ']'){
- num ++;
+ for (ptr=str; *ptr; ptr++) {
+ if (*ptr == ']') {
+ num++;
}
}
- return(num);
+ return num;
}
-FontScope _XlcParse_scopemaps(str,size)
-char *str;
-int *size;
+FontScope
+_XlcParse_scopemaps(
+ const char *str,
+ int *size)
{
- int num=0,i;
- FontScope scope,sc_ptr;
- char *str_sc;
- num = count_scopemap(str);
- scope = (FontScope )Xmalloc(num * sizeof(FontScopeRec));
- if(scope == NULL) {
- return (NULL);
- }
- for (i=0,str_sc=str,sc_ptr=scope;
- i < num; i++,sc_ptr++){
- str_sc = getscope(str_sc,sc_ptr);
- }
- *size = num;
- return (scope);
+ int num=0,i;
+ FontScope scope,sc_ptr;
+ const char *str_sc;
+
+ num = count_scopemap(str);
+ scope = (FontScope) Xmalloc(num * sizeof(FontScopeRec));
+ if (scope == NULL)
+ return NULL;
+
+ for (i=0, str_sc=str, sc_ptr=scope; i < num; i++, sc_ptr++) {
+ str_sc = getscope(str_sc, sc_ptr);
+ }
+ *size = num;
+ return scope;
}
-void _XlcDbg_printValue(str,value,num)
-char *str;
-char **value;
-int num;
+void
+_XlcDbg_printValue(
+ const char *str,
+ char **value,
+ int num)
{
/*
int i;
- for(i=0;i<num;i++){
- fprintf(stderr,"%s value[%d] = %s\n",str,i,value[i]);
- }
+ for (i = 0; i < num; i++)
+ fprintf(stderr, "%s value[%d] = %s\n", str, i, value[i]);
*/
}
-static void dmpscope(name,sc,num)
-char* name;
-FontScope sc;
-int num;
+static void
+dmpscope(
+ const char* name,
+ FontScope sc,
+ int num)
{
/*
int i;
- fprintf(stderr,"dmpscope %s\n",name);
- for(i=0;i<num;i++){
+ fprintf(stderr, "dmpscope %s\n", name);
+ for (i=0; i<num; i++)
fprintf(stderr,"%x %x %x %x \n",
sc[i].start,
sc[i].end,
sc[i].shift,
sc[i].shift_direction);
- }
- fprintf(stderr,"dmpscope end\n");
+ fprintf(stderr, "dmpscope end\n");
*/
}
-static XlcCharSet srch_charset_define(name,new)
-char *name;
-int *new;
+static XlcCharSet
+srch_charset_define(
+ const char *name,
+ int *new)
{
- XlcCharSet charset = NULL;
+ XlcCharSet charset;
+
*new = 0;
charset = _XlcGetCharSet(name);
if (charset == NULL &&
@@ -407,28 +414,29 @@ int *new;
*new = 1;
charset->source = CSsrcXLC;
}
- return(charset);
+ return charset;
}
-static void read_charset_define(lcd,gen)
-XLCd lcd;
-XLCdGenericPart *gen;
+static void
+read_charset_define(
+ XLCd lcd,
+ XLCdGenericPart *gen)
{
- int i=0;
- char csd[16],cset_name[256];
+ int i;
+ char csd[16], cset_name[256];
char name[BUFSIZ];
XlcCharSet charsetd;
char **value;
- int num,new;
+ int num, new;
XlcSide side = XlcUnknown;
char *tmp;
- for(i=0;;i++){ /* loop start */
+ for (i=0; ; i++) { /* loop start */
charsetd = 0;
sprintf(csd, "csd%d", i);
- /* charset_name */
- sprintf(name, "%s.%s", csd , "charset_name");
+ /* charset_name */
+ sprintf(name, "%s.%s", csd, "charset_name");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
_XlcDbg_printValue(name,value,num);
if (num > 0) {
@@ -439,108 +447,102 @@ XLCdGenericPart *gen;
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
- if( !_XlcNCompareISOLatin1(value[0], "none", 4) ){
- side = XlcGLGR ;
- } else
- if( !_XlcNCompareISOLatin1(value[0], "GL", 2) ){
- side = XlcGL ;
+ if (!_XlcNCompareISOLatin1(value[0], "none", 4)) {
+ side = XlcGLGR;
+ } else if (!_XlcNCompareISOLatin1(value[0], "GL", 2)) {
+ side = XlcGL;
strcat(cset_name,":GL");
} else {
- side = XlcGR ;
+ side = XlcGR;
strcat(cset_name,":GR");
}
if (charsetd == NULL &&
(charsetd = srch_charset_define(cset_name,&new)) == NULL)
- return ;
+ return;
}
} else {
- if(i == 0){
- continue ;
- } else {
- break ;
- }
+ if (i == 0)
+ continue;
+ else
+ break;
}
- if(new){
+ if (new) {
tmp = (char *)Xmalloc(strlen(cset_name)+1);
- if(tmp == NULL){
- return ;
- }
+ if (tmp == NULL)
+ return;
strcpy(tmp,cset_name);
charsetd->name = tmp;
}
/* side */
- charsetd->side = side ;
+ charsetd->side = side ;
/* length */
- sprintf(name, "%s.%s", csd , "length");
+ sprintf(name, "%s.%s", csd, "length");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
charsetd->char_size = atoi(value[0]);
}
/* gc_number */
- sprintf(name, "%s.%s", csd , "gc_number");
+ sprintf(name, "%s.%s", csd, "gc_number");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
charsetd->set_size = atoi(value[0]);
}
/* string_encoding */
- sprintf(name, "%s.%s", csd , "string_encoding");
+ sprintf(name, "%s.%s", csd, "string_encoding");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
- if(!strcmp("False",value[0])){
+ if (!strcmp("False",value[0])) {
charsetd->string_encoding = False;
} else {
charsetd->string_encoding = True;
}
}
/* sequence */
- sprintf(name, "%s.%s", csd , "sequence");
+ sprintf(name, "%s.%s", csd, "sequence");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
/*
- if(charsetd->ct_sequence){
+ if (charsetd->ct_sequence) {
Xfree(charsetd->ct_sequence);
}
*/
tmp = (char *)Xmalloc(strlen(value[0])+1);
- if(tmp == NULL){
+ if (tmp == NULL)
return;
- }
charsetd->ct_sequence = tmp;
string_to_encoding(value[0],tmp);
}
/* encoding_name */
- sprintf(name, "%s.%s", csd , "encoding_name");
+ sprintf(name, "%s.%s", csd, "encoding_name");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
/*
- if(charsetd->encoding_name){
+ if (charsetd->encoding_name) {
Xfree(charsetd->encoding_name);
}
*/
tmp = (char *)Xmalloc(strlen(value[0]+1));
strcpy(tmp,value[0]);
charsetd->encoding_name = tmp;
- charsetd->xrm_encoding_name =
- XrmStringToQuark(tmp);
+ charsetd->xrm_encoding_name = XrmStringToQuark(tmp);
}
- _XlcAddCT(name, charsetd->ct_sequence);
+ _XlcAddCT(charsetd->name, charsetd->ct_sequence);
}
-
}
-SegConv
-add_conversion(gen)
-XLCdGenericPart *gen;
+static SegConv
+add_conversion(
+ XLCdGenericPart *gen)
{
SegConv new_list;
int num;
- if ((num = gen->segment_conv_num)) {
+ if ((num = gen->segment_conv_num) > 0) {
new_list = (SegConv) Xrealloc(gen->segment_conv,
(num + 1) * sizeof(SegConvRec));
} else {
@@ -548,85 +550,83 @@ XLCdGenericPart *gen;
}
if (new_list == NULL)
- return False;
+ return NULL;
gen->segment_conv = new_list;
gen->segment_conv_num = num + 1;
- return (&new_list[num]);
+ return &new_list[num];
}
-static void read_segmentconversion(lcd,gen)
-XLCd lcd;
-XLCdGenericPart *gen;
+
+static void
+read_segmentconversion(
+ XLCd lcd,
+ XLCdGenericPart *gen)
{
- int i=0;
+ int i;
char conv[16];
char name[BUFSIZ];
char **value;
int num,new;
SegConv conversion;
- for(i=0 ; ; i++){ /* loop start */
+ for (i=0 ; ; i++) { /* loop start */
conversion = 0;
sprintf(conv, "conv%d", i);
/* length */
- sprintf(name, "%s.%s", conv , "length");
+ sprintf(name, "%s.%s", conv, "length");
_XlcGetResource(lcd, "XLC_SEGMENTCONVERSION", name, &value, &num);
if (num > 0) {
if (conversion == NULL &&
(conversion = add_conversion(gen)) == NULL) {
- return ;
+ return;
}
_XlcDbg_printValue(name,value,num);
} else {
- if(i == 0){
+ if (i == 0)
continue;
- } else {
- break ;
- }
+ else
+ break;
}
conversion->length = atoi(value[0]);
/* source_encoding */
- sprintf(name, "%s.%s", conv , "source_encoding");
+ sprintf(name, "%s.%s", conv, "source_encoding");
_XlcGetResource(lcd, "XLC_SEGMENTCONVERSION", name, &value, &num);
if (num > 0) {
char *tmp;
_XlcDbg_printValue(name,value,num);
tmp = (char *)Xmalloc(strlen(value[0])+1);
- if(tmp == NULL){
+ if (tmp == NULL)
return;
- }
strcpy(tmp,value[0]);
conversion->source_encoding = tmp;
conversion->source = srch_charset_define(tmp,&new);
}
/* destination_encoding */
- sprintf(name, "%s.%s", conv , "destination_encoding");
+ sprintf(name, "%s.%s", conv, "destination_encoding");
_XlcGetResource(lcd, "XLC_SEGMENTCONVERSION", name, &value, &num);
if (num > 0) {
char *tmp;
_XlcDbg_printValue(name,value,num);
tmp = (char *)Xmalloc(strlen(value[0])+1);
- if(tmp == NULL){
+ if (tmp == NULL)
return;
- }
strcpy(tmp,value[0]);
conversion->destination_encoding = tmp;
conversion->dest = srch_charset_define(tmp,&new);
}
/* range */
- sprintf(name, "%s.%s", conv , "range");
+ sprintf(name, "%s.%s", conv, "range");
_XlcGetResource(lcd, "XLC_SEGMENTCONVERSION", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
sscanf(value[0],"\\x%lx,\\x%lx",
- &(conversion->range.start),
- &(conversion->range.end));
+ &(conversion->range.start), &(conversion->range.end));
}
/* conversion */
- sprintf(name, "%s.%s", conv , "conversion");
+ sprintf(name, "%s.%s", conv, "conversion");
_XlcGetResource(lcd, "XLC_SEGMENTCONVERSION", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
@@ -636,9 +636,10 @@ XLCdGenericPart *gen;
} /* loop end */
}
-static ExtdSegment create_ctextseg(value,num)
-char **value;
-int num;
+static ExtdSegment
+create_ctextseg(
+ char **value,
+ int num)
{
ExtdSegment ret;
char* ptr;
@@ -646,11 +647,10 @@ int num;
int i,new;
FontScope scope;
ret = (ExtdSegment)Xmalloc(sizeof(ExtdSegmentRec));
- if(ret == NULL){
+ if (ret == NULL)
return NULL;
- }
ret->name = (char *)Xmalloc(strlen(value[0]) + 1);
- if(ret->name == NULL){
+ if (ret->name == NULL) {
Xfree (ret);
return NULL;
}
@@ -661,15 +661,15 @@ int num;
Xfree (ret);
return NULL;
}
- if(strchr(value[0],':')){
+ if (strchr(value[0],':')) {
ptr = strchr(ret->name,':');
*ptr = '\0';
ptr++;
- if( !_XlcNCompareISOLatin1(ptr, "GL", 2) ){
- ret->side = XlcGL ;
+ if (!_XlcNCompareISOLatin1(ptr, "GL", 2)) {
+ ret->side = XlcGL;
sprintf(cset_name,"%s:%s",ret->name,"GL");
} else {
- ret->side = XlcGR ;
+ ret->side = XlcGR;
sprintf(cset_name,"%s:%s",ret->name,"GR");
}
} else {
@@ -677,17 +677,17 @@ int num;
strcpy(cset_name,ret->name);
}
ret->area = (FontScope)Xmalloc((num - 1)*sizeof(FontScopeRec));
- if(ret->area == NULL){
+ if (ret->area == NULL) {
Xfree (cset_name);
Xfree (ret->name);
Xfree (ret);
return NULL;
}
- ret->area_num = num - 1;
+ ret->area_num = num - 1;
scope = ret->area ;
- for(i=1;i<num;i++){
+ for (i = 1; i < num; i++) {
sscanf(value[i],"\\x%lx,\\x%lx",
- &scope[i-1].start,&scope[i-1].end);
+ &scope[i-1].start, &scope[i-1].end);
}
ret->charset = srch_charset_define(cset_name,&new);
Xfree (cset_name);
@@ -697,8 +697,8 @@ int num;
/* For VW/UDC end */
static Bool
-load_generic(lcd)
- XLCd lcd;
+load_generic(
+ XLCd lcd)
{
XLCdGenericPart *gen = XLC_GENERIC_PART(lcd);
char **value;
@@ -755,13 +755,12 @@ load_generic(lcd)
goto err;
/* 3.4.1 side */
- if( !_XlcNCompareISOLatin1(value[0], "none", 4) ){
- codeset->side = XlcNONE ;
- } else
- if( !_XlcNCompareISOLatin1(value[0], "GL", 2) ){
- codeset->side = XlcGL ;
+ if (!_XlcNCompareISOLatin1(value[0], "none", 4)) {
+ codeset->side = XlcNONE;
+ } else if (!_XlcNCompareISOLatin1(value[0], "GL", 2)) {
+ codeset->side = XlcGL;
} else {
- codeset->side = XlcGR ;
+ codeset->side = XlcGR;
}
tmp = strrchr(value[0], ':');
@@ -789,7 +788,7 @@ load_generic(lcd)
_XlcGetResource(lcd, "XLC_XLOCALE", name, &value, &num);
if (num > 0) {
static struct {
- char *str;
+ const char *str;
int type;
} shifts[] = {
{"<SS>", E_SS},
@@ -870,33 +869,33 @@ load_generic(lcd)
codeset->cs_num = i;
/* For VW/UDC */
/***** 3.4.2 byteM (1 <= M <= length)*****/
- for(M=1; M-1 < codeset->length; M++){
+ for (M=1; M-1 < codeset->length; M++) {
long start,end;
ByteInfo tmpb;
sprintf(name,"%s.%s%d",cs,"byte",M);
_XlcGetResource(lcd, "XLC_XLOCALE", name, &value, &num);
- if( M == 1){
- if(num < 1) {
- codeset->byteM = NULL ;
+ if (M == 1) {
+ if (num < 1) {
+ codeset->byteM = NULL;
break ;
}
codeset->byteM =
(ByteInfoListRec *)Xmalloc(
(codeset->length)*sizeof(ByteInfoListRec));
- if(codeset->byteM == NULL){
+ if (codeset->byteM == NULL) {
goto err;
}
}
- if(num > 0){
+ if (num > 0) {
_XlcDbg_printValue(name,value,num);
(codeset->byteM)[M-1].M = M;
(codeset->byteM)[M-1].byteinfo_num = num;
(codeset->byteM)[M-1].byteinfo =
(ByteInfo)Xmalloc( num * sizeof(ByteInfoRec));
- for(ii = 0 ; ii < num ; ii++){
+ for (ii = 0 ; ii < num ; ii++) {
tmpb = (codeset->byteM)[M-1].byteinfo ;
/* default 0x00 - 0xff */
sscanf(value[ii],"\\x%lx,\\x%lx",&start,&end);
@@ -917,7 +916,7 @@ load_generic(lcd)
codeset->mbconv->convlist =
_XlcParse_scopemaps(value[0],&(codeset->mbconv->conv_num));
dmpscope("mb_conv",codeset->mbconv->convlist,
- codeset->mbconv->conv_num);
+ codeset->mbconv->conv_num);
/* [\x%x,\x%x]->\x%x,... */
}
/***** codeset.ct_conversion *****/
@@ -929,7 +928,7 @@ load_generic(lcd)
codeset->ctconv->convlist =
_XlcParse_scopemaps(value[0],&(codeset->ctconv->conv_num));
dmpscope("ctconv",codeset->ctconv->convlist,
- codeset->ctconv->conv_num);
+ codeset->ctconv->conv_num);
/* [\x%x,\x%x]->\x%x,... */
}
/***** codeset.ct_conversion_file *****/
@@ -956,7 +955,7 @@ load_generic(lcd)
if (gen->initial_state_GL == NULL) {
CodeSetRec *codeset;
- for (i = 0; i < gen->codeset_num; i++){
+ for (i = 0; i < gen->codeset_num; i++) {
codeset = gen->codeset_list[i];
if (codeset->side == XlcGL)
gen->initial_state_GL = codeset;
@@ -965,16 +964,16 @@ load_generic(lcd)
if (gen->initial_state_GR == NULL) {
CodeSetRec *codeset;
- for (i = 0; i < gen->codeset_num; i++){
+ for (i = 0; i < gen->codeset_num; i++) {
codeset = gen->codeset_list[i];
if (codeset->side == XlcGR)
gen->initial_state_GR = codeset;
}
}
- for (i = 0; i < gen->codeset_num; i++){
+ for (i = 0; i < gen->codeset_num; i++) {
CodeSetRec *codeset = gen->codeset_list[i];
- for (ii = 0; ii < codeset->num_charsets; ii++){
+ for (ii = 0; ii < codeset->num_charsets; ii++) {
charset = codeset->charset_list[ii];
if (! strcmp(charset->encoding_name, "ISO8859-1"))
charset->string_encoding = True;
@@ -1003,24 +1002,25 @@ initialize(lcd)
return False;
}
- if(load_generic(lcd) == False)
+ if (load_generic(lcd) == False)
return False;
return True;
}
+
/* VW/UDC start 95.01.08 */
static void
-freeByteM(codeset)
- CodeSet codeset;
+freeByteM(
+ CodeSet codeset)
{
int i;
ByteInfoList blst;
- if(codeset->byteM == NULL) {
+ if (codeset->byteM == NULL) {
return ;
}
blst = codeset->byteM;
- for(i=0;i<codeset->length;i++){
- if(blst[i].byteinfo){
+ for (i = 0; i < codeset->length; i++) {
+ if (blst[i].byteinfo) {
Xfree(blst[i].byteinfo);
blst[i].byteinfo = NULL;
}
@@ -1028,25 +1028,26 @@ freeByteM(codeset)
Xfree(codeset->byteM);
codeset->byteM = NULL;
}
+
static void
-freeConversion(codeset)
- CodeSet codeset;
+freeConversion(
+ CodeSet codeset)
{
Conversion mbconv,ctconv;
- if( codeset->mbconv ) {
+ if (codeset->mbconv) {
mbconv = codeset->mbconv;
/* ... */
- if(mbconv->convlist){
+ if (mbconv->convlist) {
Xfree(mbconv->convlist);
mbconv->convlist = NULL;
}
Xfree(mbconv);
codeset->mbconv = NULL;
}
- if( codeset->ctconv ) {
+ if (codeset->ctconv) {
ctconv = codeset->ctconv;
/* ... */
- if(ctconv->convlist){
+ if (ctconv->convlist) {
Xfree(ctconv->convlist);
ctconv->convlist = NULL;
}
@@ -1054,57 +1055,60 @@ freeConversion(codeset)
codeset->ctconv = NULL;
}
}
+
static void
-freeExtdSegment(codeset)
- CodeSet codeset;
+freeExtdSegment(
+ CodeSet codeset)
{
ExtdSegment ctextseg;
- if(codeset->ctextseg == NULL) {
- return ;
+ if (codeset->ctextseg == NULL) {
+ return;
}
ctextseg = codeset->ctextseg;
- if(ctextseg->name){
+ if (ctextseg->name) {
Xfree(ctextseg->name);
ctextseg->name = NULL;
}
- if(ctextseg->area){
+ if (ctextseg->area) {
Xfree(ctextseg->area);
ctextseg->area = NULL;
}
Xfree(codeset->ctextseg);
codeset->ctextseg = NULL;
}
+
static void
-freeParseInfo(codeset)
- CodeSet codeset;
+freeParseInfo(
+ CodeSet codeset)
{
ParseInfo parse_info;
- if(codeset->parse_info == NULL) {
- return ;
+ if (codeset->parse_info == NULL) {
+ return;
}
parse_info = codeset->parse_info;
- if(parse_info->encoding){
+ if (parse_info->encoding) {
Xfree(parse_info->encoding);
parse_info->encoding = NULL;
}
Xfree(codeset->parse_info);
codeset->parse_info = NULL;
}
+
static void
-destroy_CodeSetList(gen)
- XLCdGenericPart *gen ;
+destroy_CodeSetList(
+ XLCdGenericPart *gen)
{
CodeSet *codeset = gen->codeset_list;
int i;
- if(gen->codeset_num == 0) {
+ if (gen->codeset_num == 0) {
return;
}
- for(i=0;i<gen->codeset_num;i++){
+ for (i=0;i<gen->codeset_num;i++) {
freeByteM(codeset[i]);
freeConversion(codeset[i]);
freeExtdSegment(codeset[i]);
freeParseInfo(codeset[i]);
- if(codeset[i]->charset_list){
+ if (codeset[i]->charset_list) {
Xfree(codeset[i]->charset_list);
codeset[i]->charset_list = NULL;
}
@@ -1112,26 +1116,26 @@ destroy_CodeSetList(gen)
}
Xfree(codeset); gen->codeset_list = NULL;
}
-/* */
+
static void
-destroy_SegConv(gen)
- XLCdGenericPart *gen ;
+destroy_SegConv(
+ XLCdGenericPart *gen)
{
SegConv seg = gen->segment_conv;
int i;
- if(gen->segment_conv_num == 0) {
+ if (gen->segment_conv_num == 0) {
return;
}
- for(i=0;i<gen->segment_conv_num;i++){
- if(seg[i].source_encoding){
+ for (i=0;i<gen->segment_conv_num;i++) {
+ if (seg[i].source_encoding) {
Xfree(seg[i].source_encoding);
seg[i].source_encoding = NULL;
}
- if(seg[i].destination_encoding){
+ if (seg[i].destination_encoding) {
Xfree(seg[i].destination_encoding);
seg[i].destination_encoding = NULL;
}
- if(seg[i].conv){
+ if (seg[i].conv) {
Xfree(seg[i].conv); seg[i].conv = NULL;
}
}
@@ -1139,25 +1143,26 @@ destroy_SegConv(gen)
}
static void
-destroy_gen(lcd)
- XLCd lcd;
+destroy_gen(
+ XLCd lcd)
{
XLCdGenericPart *gen = XLC_GENERIC_PART(lcd);
destroy_SegConv(gen);
destroy_CodeSetList(gen);
- if(gen->mb_parse_table){
+ if (gen->mb_parse_table) {
Xfree(gen->mb_parse_table);
gen->mb_parse_table = NULL;
}
- if(gen->mb_parse_list){
+ if (gen->mb_parse_list) {
Xfree(gen->mb_parse_list);
gen->mb_parse_list = NULL;
}
}
/* VW/UDC end 95.01.08 */
+
static void
-destroy(lcd)
- XLCd lcd;
+destroy(
+ XLCd lcd)
{
XLCdPublicMethods superclass = XLC_PUBLIC_METHODS(lcd)->superclass;
diff --git a/xc/lib/X11/lcInit.c b/xc/lib/X11/lcInit.c
index ce42633f7..63021edd9 100644
--- a/xc/lib/X11/lcInit.c
+++ b/xc/lib/X11/lcInit.c
@@ -31,7 +31,7 @@
* Modifier: Masayoshi Shimamura FUJITSU LIMITED
*
*/
-/* $XFree86: xc/lib/X11/lcInit.c,v 3.6 2000/10/24 18:07:36 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcInit.c,v 3.7 2000/11/28 18:49:46 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
@@ -45,78 +45,6 @@
# define USE_JIS_LOADER
#endif
-extern XLCd _XlcDefaultLoader(
-#if NeedFunctionPrototypes
- _Xconst char*
-#endif
-);
-
-#ifdef DYNAMIC_LOAD
-#ifdef sun
-extern XLCd _XsunOsDynamicLoad(
-#if NeedFunctionPrototypes
- _Xconst char*
-#endif
-);
-#endif /* sun */
-
-#ifdef AIXV3
-extern XLCd _XaixOsDynamicLoad(
-#if NeedFunctionPrototypes
- _Xconst char*
-#endif
-);
-#endif /* AIXV3 */
-#endif
-
-#ifdef USE_GENERIC_LOADER
-extern XLCd _XlcGenericLoader(
-#if NeedFunctionPrototypes
- _Xconst char*
-#endif
-);
-#endif
-
-#ifdef USE_UTF8_LOADER
-extern XLCd _XlcUtf8Loader(
-#if NeedFunctionPrototypes
- _Xconst char*
-#endif
-);
-#endif
-
-#ifdef USE_EUC_LOADER
-extern XLCd _XlcEucLoader(
-#if NeedFunctionPrototypes
- _Xconst char*
-#endif
-);
-#endif
-
-#ifdef USE_SJIS_LOADER
-extern XLCd _XlcSjisLoader(
-#if NeedFunctionPrototypes
- _Xconst char*
-#endif
-);
-#endif
-
-#ifdef USE_JIS_LOADER
-extern XLCd _XlcJisLoader(
-#if NeedFunctionPrototypes
- _Xconst char*
-#endif
-);
-#endif
-
-#ifdef USE_DYNAMIC_LOADER
-extern XLCd _XlcDynamicLoader(
-#if NeedFunctionPrototypes
- _Xconst char*
-#endif
-);
-#endif
-
/*
* The _XlcInitLoader function initializes the locale object loader list
* with vendor specific manner.
@@ -149,16 +77,6 @@ _XlcInitLoader()
_XlcAddLoader(_XlcJisLoader, XlcHead);
#endif
-#ifdef DYNAMIC_LOAD
-#ifdef sun
- _XlcAddLoader(_XsunOsDynamicLoad, XlcHead);
-#endif /* sun */
-
-#ifdef AIXV3
- _XlcAddLoader(_XaixOsDynamicLoad, XlcHead);
-#endif /* AIXV3 */
-#endif /* DYNAMIC_LOAD */
-
#ifdef USE_DYNAMIC_LOADER
_XlcAddLoader(_XlcDynamicLoader, XlcHead);
#endif
diff --git a/xc/lib/X11/lcJis.c b/xc/lib/X11/lcJis.c
index 6d44996ec..e5314d5da 100644
--- a/xc/lib/X11/lcJis.c
+++ b/xc/lib/X11/lcJis.c
@@ -23,7 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
-/* $XFree86: xc/lib/X11/lcJis.c,v 1.5 2000/02/12 02:54:13 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcJis.c,v 1.6 2000/11/28 18:49:46 dawes Exp $ */
/*
* A Japanese JIS locale.
@@ -50,12 +50,12 @@ typedef struct _StateRec {
} StateRec, *State;
static void
-init_state(conv)
- XlcConv conv;
+init_state(
+ XlcConv conv)
{
- register State state = (State) conv->state;
- register XLCdGenericPart *gen = XLC_GENERIC_PART(state->lcd);
- register CodeSet codeset;
+ State state = (State) conv->state;
+ XLCdGenericPart *gen = XLC_GENERIC_PART(state->lcd);
+ CodeSet codeset;
codeset = gen->initial_state_GL;
if (codeset && codeset->charset_list)
@@ -65,17 +65,17 @@ init_state(conv)
state->GR_charset = *codeset->charset_list;
if (state->GL_charset == NULL)
- if (codeset = *gen->codeset_list)
+ if ((codeset = *gen->codeset_list) != NULL)
state->GL_charset = *codeset->charset_list;
}
static int
-compare(src, encoding, length)
- register char *src;
- register char *encoding;
- register int length;
+compare(
+ const char *src,
+ const char *encoding,
+ int length)
{
- char *start = src;
+ const char *start = src;
while (length-- > 0) {
if (*src++ != *encoding++)
@@ -88,32 +88,34 @@ compare(src, encoding, length)
}
static int
-mbtocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
- register char *src, *dst;
- unsigned char ch, *mb_parse_table;
+ const char *src;
+ char *dst;
+ unsigned char *mb_parse_table;
ParseInfo *parse_list, parse_info;
XlcCharSet charset;
int length, number, encoding_len = 0;
- register int i;
+ int i;
- src = *((char **) from);
+ src = *((const char **) from);
dst = *((char **) to);
- if (mb_parse_table = XLC_GENERIC(lcd, mb_parse_table)) {
+ mb_parse_table = XLC_GENERIC(lcd, mb_parse_table);
+ if (mb_parse_table != NULL) {
number = mb_parse_table[(unsigned char) *src];
if (number > 0) {
parse_list = XLC_GENERIC(lcd, mb_parse_list) + number - 1;
- for ( ; parse_info = *parse_list; parse_list++) {
+ for ( ; (parse_info = *parse_list) != NULL; parse_list++) {
encoding_len = compare(src, parse_info->encoding, *from_left);
if (encoding_len > 0) {
switch (parse_info->type) {
@@ -184,14 +186,14 @@ end:
}
static int
-mbstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XlcCharSet charset = NULL;
XPointer tmp_args[2], save_from = *from;
@@ -220,13 +222,13 @@ mbstocs(conv, from, from_left, to, to_left, args, num_args)
}
static CodeSet
-wc_parse_codeset(lcd, wcstr)
- XLCd lcd;
- wchar_t *wcstr;
+wc_parse_codeset(
+ XLCd lcd,
+ const wchar_t *wcstr)
{
- register CodeSet *codeset;
+ CodeSet *codeset;
unsigned long wc_encoding;
- register int num;
+ int num;
wc_encoding = *wcstr & XLC_GENERIC(lcd, wc_encode_mask);
num = XLC_GENERIC(lcd, codeset_num);
@@ -241,22 +243,22 @@ wc_parse_codeset(lcd, wcstr)
}
static int
-wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
- wchar_t *wcptr;
- register char *bufptr;
- register wchar_t wch;
+ const wchar_t *wcptr;
+ char *bufptr;
+ wchar_t wch;
char *tmpptr;
- register int length;
+ int length;
CodeSet codeset;
unsigned long wc_encoding;
int wcstr_len, buf_len;
@@ -264,7 +266,7 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
if (from == NULL || *from == NULL)
return 0;
- wcptr = *((wchar_t **) from);
+ wcptr = *((const wchar_t **) from);
bufptr = *((char **) to);
wcstr_len = *from_left;
buf_len = *to_left;
@@ -317,13 +319,13 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
}
static CodeSet
-GetCodeSetFromCharSet(lcd, charset)
- XLCd lcd;
- XlcCharSet charset;
+GetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset)
{
- register CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
- register XlcCharSet *charset_list;
- register int codeset_num, num_charsets;
+ CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
+ XlcCharSet *charset_list;
+ int codeset_num, num_charsets;
codeset_num = XLC_GENERIC(lcd, codeset_num);
@@ -340,27 +342,27 @@ GetCodeSetFromCharSet(lcd, charset)
}
static int
-cstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
- register char *csptr;
- register char *bufptr;
+ const char *csptr;
+ char *bufptr;
int csstr_len;
- register int buf_len;
+ int buf_len;
int num, encoding_len = 0;
CodeSet codeset;
XlcCharSet charset;
EncodingType type;
int cvt_length;
- csptr = *((char **) from);
+ csptr = *((const char **) from);
bufptr = *((char **) to);
csstr_len = *from_left;
buf_len = *to_left;
@@ -444,27 +446,27 @@ cstombs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
- register char *csptr;
+ const char *csptr;
wchar_t *bufptr;
int csstr_len;
- register int buf_len;
- register wchar_t wch;
+ int buf_len;
+ wchar_t wch;
unsigned long code_mask, wc_encoding;
int num, length, wc_shift_bits;
CodeSet codeset;
- csptr = *((char **) from);
+ csptr = *((const char **) from);
bufptr = *((wchar_t **) to);
csstr_len = *from_left;
buf_len = *to_left;
@@ -509,8 +511,8 @@ cstowcs(conv, from, from_left, to, to_left, args, num_args)
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
if (conv->state) {
Xfree((char *) conv->state);
@@ -520,9 +522,9 @@ close_converter(conv)
}
static XlcConv
-create_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
XlcConv conv;
State state;
@@ -559,14 +561,14 @@ static XlcConvMethodsRec mbstocs_methods = {
close_converter,
mbstocs,
NULL
-} ;
+};
static XlcConv
-open_mbstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstocs_methods);
}
@@ -575,14 +577,14 @@ static XlcConvMethodsRec wcstocs_methods = {
close_converter,
wcstocs,
NULL
-} ;
+};
static XlcConv
-open_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstocs_methods);
}
@@ -591,14 +593,14 @@ static XlcConvMethodsRec mbtocs_methods = {
close_converter,
mbtocs,
NULL
-} ;
+};
static XlcConv
-open_mbtocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbtocs_methods);
}
@@ -607,14 +609,14 @@ static XlcConvMethodsRec cstombs_methods = {
close_converter,
cstombs,
NULL
-} ;
+};
static XlcConv
-open_cstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &cstombs_methods);
}
@@ -623,30 +625,30 @@ static XlcConvMethodsRec cstowcs_methods = {
close_converter,
cstowcs,
NULL
-} ;
+};
static XlcConv
-open_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &cstowcs_methods);
}
#ifdef STDCVT
static int
-stdc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- char *src = *((char **) from);
+ const char *src = *((const char **) from);
wchar_t *dst = *((wchar_t **) to);
int src_left = *from_left;
int dst_left = *to_left;
@@ -683,16 +685,16 @@ stdc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-stdc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- wchar_t *src = *((wchar_t **) from);
+ const wchar_t *src = *((const wchar_t **) from);
char *dst = *((char **) to);
int src_left = *from_left;
int dst_left = *to_left;
@@ -727,16 +729,17 @@ stdc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-stdc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- wchar_t wch, *src = *((wchar_t **) from);
+ const wchar_t *src = *((const wchar_t **) from);
+ wchar_t wch;
XlcCharSet charset = NULL;
XPointer tmp_args[2], tmp_from, save_from = *from;
char tmp[32];
@@ -787,14 +790,14 @@ stdc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
#define FreeLocalBuf(ptr) if (ptr != local_buf) Xfree(ptr)
static int
-stdc_cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = ((State) conv->state)->lcd;
DefineLocalBuf;
@@ -825,14 +828,14 @@ static XlcConvMethodsRec stdc_mbstowcs_methods = {
close_converter,
stdc_mbstowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_mbstowcs_methods);
}
@@ -841,14 +844,14 @@ static XlcConvMethodsRec stdc_wcstombs_methods = {
close_converter,
stdc_wcstombs,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstombs_methods);
}
@@ -857,14 +860,14 @@ static XlcConvMethodsRec stdc_wcstocs_methods = {
close_converter,
stdc_wcstocs,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstocs_methods);
}
@@ -873,25 +876,27 @@ static XlcConvMethodsRec stdc_cstowcs_methods = {
close_converter,
stdc_cstowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_cstowcs_methods);
}
#endif /* STDCVT */
XLCd
-_XlcJisLoader(name)
- _Xconst char *name;
+_XlcJisLoader(
+ const char *name)
{
XLCd lcd;
+#ifdef STDCVT
XLCdGenericPart *gen;
+#endif
lcd = _XlcCreateLC(name, _XlcGenericMethods);
if (lcd == NULL)
diff --git a/xc/lib/X11/lcPrTxt.c b/xc/lib/X11/lcPrTxt.c
index effacff51..8ea448d42 100644
--- a/xc/lib/X11/lcPrTxt.c
+++ b/xc/lib/X11/lcPrTxt.c
@@ -23,7 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
-/* $XFree86: xc/lib/X11/lcPrTxt.c,v 1.3 2000/01/30 18:35:19 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcPrTxt.c,v 1.4 2000/11/28 18:49:46 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
@@ -31,10 +31,10 @@
#include <X11/Xatom.h>
static XPointer *
-alloc_list(is_wide_char, count, nitems)
- Bool is_wide_char;
- int count;
- int nitems;
+alloc_list(
+ Bool is_wide_char,
+ int count,
+ int nitems)
{
if (is_wide_char) {
wchar_t **wstr_list;
@@ -68,11 +68,11 @@ alloc_list(is_wide_char, count, nitems)
}
static void
-copy_list(is_wide_char, text, list, count)
- Bool is_wide_char;
- XPointer text;
- XPointer *list;
- int count;
+copy_list(
+ Bool is_wide_char,
+ XPointer text,
+ XPointer *list,
+ int count)
{
int length;
@@ -106,16 +106,16 @@ copy_list(is_wide_char, text, list, count)
}
static int
-_XTextPropertyToTextList(lcd, dpy, text_prop, to_type, list_ret, count_ret)
- XLCd lcd;
- Display *dpy;
- XTextProperty *text_prop;
- char *to_type;
- XPointer **list_ret;
- int *count_ret;
+_XTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ const char *to_type,
+ XPointer **list_ret,
+ int *count_ret)
{
XlcConv conv;
- char *from_type;
+ const char *from_type;
XPointer from, to, buf;
char *str_ptr, *last_ptr;
Atom encoding;
@@ -138,6 +138,8 @@ _XTextPropertyToTextList(lcd, dpy, text_prop, to_type, list_ret, count_ret)
encoding = text_prop->encoding;
if (encoding == XA_STRING)
from_type = XlcNString;
+ else if (encoding == XInternAtom(dpy, "UTF8_STRING", False))
+ from_type = XlcNUtf8String;
else if (encoding == XInternAtom(dpy, "COMPOUND_TEXT", False))
from_type = XlcNCompoundText;
else if (encoding == XInternAtom(dpy, XLC_PUBLIC(lcd, encoding_name), False))
@@ -157,7 +159,8 @@ _XTextPropertyToTextList(lcd, dpy, text_prop, to_type, list_ret, count_ret)
to = buf;
to_left = buf_len;
- /* can be XlcNMultiByte to XlcNMultiByte */
+ /* can be XlcNMultiByte to XlcNMultiByte,
+ or XlcNUtf8String to XlcNUtf8String */
if (!strcmp(from_type, to_type)) {
do_strcpy = True;
} else {
@@ -233,33 +236,45 @@ _XTextPropertyToTextList(lcd, dpy, text_prop, to_type, list_ret, count_ret)
}
int
-_XmbTextPropertyToTextList(lcd, dpy, text_prop, list_ret, count_ret)
- XLCd lcd;
- Display *dpy;
- XTextProperty *text_prop;
- char ***list_ret;
- int *count_ret;
+_XmbTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
{
return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNMultiByte,
(XPointer **) list_ret, count_ret);
}
int
-_XwcTextPropertyToTextList(lcd, dpy, text_prop, list_ret, count_ret)
- XLCd lcd;
- Display *dpy;
- XTextProperty *text_prop;
- wchar_t ***list_ret;
- int *count_ret;
+_XwcTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ wchar_t ***list_ret,
+ int *count_ret)
{
return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNWideChar,
(XPointer **) list_ret, count_ret);
}
+int
+_Xutf8TextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNUtf8String,
+ (XPointer **) list_ret, count_ret);
+}
+
void
-_XwcFreeStringList(lcd, list)
- XLCd lcd;
- wchar_t **list;
+_XwcFreeStringList(
+ XLCd lcd,
+ wchar_t **list)
{
if (list) {
if (*list)
diff --git a/xc/lib/X11/lcPubWrap.c b/xc/lib/X11/lcPubWrap.c
index 3523c5033..21a239f07 100644
--- a/xc/lib/X11/lcPubWrap.c
+++ b/xc/lib/X11/lcPubWrap.c
@@ -23,7 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
-/* $XFree86: xc/lib/X11/lcPubWrap.c,v 1.2 1997/11/22 12:50:11 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcPubWrap.c,v 1.3 2000/11/28 18:49:47 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
@@ -63,8 +63,8 @@ _XGetLCValues(lcd, va_alist)
}
void
-_XlcDestroyLC(lcd)
- XLCd lcd;
+_XlcDestroyLC(
+ XLCd lcd)
{
XLCdPublicMethods methods = (XLCdPublicMethods) lcd->methods;
@@ -72,9 +72,9 @@ _XlcDestroyLC(lcd)
}
XLCd
-_XlcCreateLC(name, methods)
- _Xconst char *name;
- XLCdMethods methods;
+_XlcCreateLC(
+ const char *name,
+ XLCdMethods methods)
{
XLCdPublicMethods pub_methods = (XLCdPublicMethods) methods;
XLCd lcd;
diff --git a/xc/lib/X11/lcPublic.c b/xc/lib/X11/lcPublic.c
index 51ba8b2a9..a43e39dbc 100644
--- a/xc/lib/X11/lcPublic.c
+++ b/xc/lib/X11/lcPublic.c
@@ -23,18 +23,23 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
-/* $XFree86: xc/lib/X11/lcPublic.c,v 1.6 2000/02/12 05:43:16 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcPublic.c,v 1.7 2000/11/28 18:49:47 dawes Exp $ */
#include <stdio.h>
#include "Xlibint.h"
#include "XlcPubI.h"
-static char *default_string();
+static const char *
+default_string(
+ XLCd lcd)
+{
+ return XLC_PUBLIC(lcd, default_string);
+}
-static XLCd create();
-static Bool initialize();
-static void destroy();
-static char *get_values();
+static XLCd create (const char *name, XLCdMethods methods);
+static Bool initialize (XLCd lcd);
+static void destroy (XLCd lcd);
+static char *get_values (XLCd lcd, XlcArgList args, int num_args);
static XLCdPublicMethodsRec publicMethods = {
{
@@ -45,8 +50,10 @@ static XLCdPublicMethodsRec publicMethods = {
_XrmDefaultInitParseInfo,
_XmbTextPropertyToTextList,
_XwcTextPropertyToTextList,
+ _Xutf8TextPropertyToTextList,
_XmbTextListToTextProperty,
_XwcTextListToTextProperty,
+ _Xutf8TextListToTextProperty,
_XwcFreeStringList,
default_string,
NULL,
@@ -64,17 +71,10 @@ static XLCdPublicMethodsRec publicMethods = {
XLCdMethods _XlcPublicMethods = (XLCdMethods) &publicMethods;
-static char *
-default_string(lcd)
- XLCd lcd;
-{
- return XLC_PUBLIC(lcd, default_string);
-}
-
static XLCd
-create(name, methods)
- char *name;
- XLCdMethods methods;
+create(
+ const char *name,
+ XLCdMethods methods)
{
XLCd lcd;
XLCdPublicMethods new;
@@ -103,8 +103,8 @@ err:
}
static Bool
-load_public(lcd)
- XLCd lcd;
+load_public(
+ XLCd lcd)
{
XLCdPublicPart *pub = XLC_PUBLIC_PART(lcd);
char **values, *str;
@@ -138,8 +138,8 @@ load_public(lcd)
}
static Bool
-initialize_core(lcd)
- XLCd lcd;
+initialize_core(
+ XLCd lcd)
{
XLCdMethods methods = lcd->methods;
XLCdMethods core = &publicMethods.core;
@@ -165,12 +165,18 @@ initialize_core(lcd)
if (methods->wc_text_prop_to_list == NULL)
methods->wc_text_prop_to_list = core->wc_text_prop_to_list;
+ if (methods->utf8_text_prop_to_list == NULL)
+ methods->utf8_text_prop_to_list = core->utf8_text_prop_to_list;
+
if (methods->mb_text_list_to_prop == NULL)
methods->mb_text_list_to_prop = core->mb_text_list_to_prop;
if (methods->wc_text_list_to_prop == NULL)
methods->wc_text_list_to_prop = core->wc_text_list_to_prop;
+ if (methods->utf8_text_list_to_prop == NULL)
+ methods->utf8_text_list_to_prop = core->utf8_text_list_to_prop;
+
if (methods->wc_free_string_list == NULL)
methods->wc_free_string_list = core->wc_free_string_list;
@@ -180,11 +186,9 @@ initialize_core(lcd)
return True;
}
-extern Bool _XlcInitCTInfo();
-
static Bool
-initialize(lcd)
- XLCd lcd;
+initialize(
+ XLCd lcd)
{
XLCdPublicMethodsPart *methods = XLC_PUBLIC_METHODS(lcd);
XLCdPublicMethodsPart *pub_methods = &publicMethods.pub;
@@ -241,8 +245,8 @@ initialize(lcd)
}
static void
-destroy_core(lcd)
- XLCd lcd;
+destroy_core(
+ XLCd lcd)
{
if (lcd->core) {
if (lcd->core->name)
@@ -257,8 +261,8 @@ destroy_core(lcd)
}
static void
-destroy(lcd)
- XLCd lcd;
+destroy(
+ XLCd lcd)
{
XLCdPublicPart *pub = XLC_PUBLIC_PART(lcd);
@@ -290,10 +294,10 @@ static XlcResource resources[] = {
};
static char *
-get_values(lcd, args, num_args)
- register XLCd lcd;
- register XlcArgList args;
- register int num_args;
+get_values(
+ XLCd lcd,
+ XlcArgList args,
+ int num_args)
{
XLCdPublic pub = (XLCdPublic) lcd->core;
diff --git a/xc/lib/X11/lcRM.c b/xc/lib/X11/lcRM.c
index 3576c93f9..bbec4a1aa 100644
--- a/xc/lib/X11/lcRM.c
+++ b/xc/lib/X11/lcRM.c
@@ -24,46 +24,113 @@
* mopi@osa.ilab.toshiba.co.jp
* Bug fixes: Bruno Haible XFree86 Inc.
*/
-/* $XFree86: xc/lib/X11/lcRM.c,v 1.3 2000/02/12 05:43:16 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcRM.c,v 1.4 2000/11/28 18:49:48 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
#include <stdio.h>
-typedef struct _StateRec {
- XLCd lcd;
- XlcConv conv;
-} StateRec, *State;
+/*
+ * Default implementation of methods for Xrm parsing.
+ */
+
+/* ======================= Unibyte implementation ======================= */
+
+/* Only for efficiency, to speed up things. */
+
+/* This implementation must keep the locale, for lcname. */
+typedef struct _UbStateRec {
+ XLCd lcd;
+} UbStateRec, *UbState;
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to mbchar. */
static void
-mbinit(state)
- XPointer state;
+ub_mbinit(
+ XPointer state)
{
- _XlcResetConverter(((State) state)->conv);
}
/* Transforms one multibyte character, and return a 'char' in the same
parsing class. Returns the number of consumed bytes in *lenp. */
static char
-mbchar(state, str, lenp)
- XPointer state;
- char *str;
- int *lenp;
+ub_mbchar(
+ XPointer state,
+ const char *str,
+ int *lenp)
+{
+ *lenp = 1;
+ return *str;
+}
+
+/* Terminates a sequence of calls to mbchar. */
+static void
+ub_mbfinish(
+ XPointer state)
{
- XlcConv conv = ((State) state)->conv;
- char *from;
+}
+
+/* Returns the name of the state's locale, as a static string. */
+static const char *
+ub_lcname(
+ XPointer state)
+{
+ return ((UbState) state)->lcd->core->name;
+}
+
+/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
+static void
+ub_destroy(
+ XPointer state)
+{
+ _XCloseLC(((UbState) state)->lcd);
+ Xfree((char *) state);
+}
+
+static const XrmMethodsRec ub_methods = {
+ ub_mbinit,
+ ub_mbchar,
+ ub_mbfinish,
+ ub_lcname,
+ ub_destroy
+};
+
+/* ======================= Multibyte implementation ======================= */
+
+/* This implementation uses an XlcConv from XlcNMultiByte to XlcNWideChar. */
+typedef struct _MbStateRec {
+ XLCd lcd;
+ XlcConv conv;
+} MbStateRec, *MbState;
+
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to mbchar. */
+static void
+mb_mbinit(
+ XPointer state)
+{
+ _XlcResetConverter(((MbState) state)->conv);
+}
+
+/* Transforms one multibyte character, and return a 'char' in the same
+ parsing class. Returns the number of consumed bytes in *lenp. */
+static char
+mb_mbchar(
+ XPointer state,
+ const char *str,
+ int *lenp)
+{
+ XlcConv conv = ((MbState) state)->conv;
+ const char *from;
wchar_t *to, wc;
int cur_max, i, from_left, to_left, ret;
- cur_max = XLC_PUBLIC(((State) state)->lcd, mb_cur_max);
- if (cur_max == 1) {
- *lenp = 1;
- return *str;
- }
+ cur_max = XLC_PUBLIC(((MbState) state)->lcd, mb_cur_max);
from = str;
+ /* Determine from_left. Avoid overrun error which could occur if
+ from_left > strlen(str). */
from_left = cur_max;
- /* Avoid overrun error which could occur if from_left > strlen(str). */
for (i = 0; i < cur_max; i++)
if (str[i] == '\0') {
from_left = i;
@@ -87,55 +154,70 @@ mbchar(state, str, lenp)
return (wc >= 0 && wc <= 0x7f ? wc : 0x7f);
}
+/* Terminates a sequence of calls to mbchar. */
static void
-mbfinish(state)
- XPointer state;
+mb_mbfinish(
+ XPointer state)
{
}
-static char *
-lcname(state)
- XPointer state;
+/* Returns the name of the state's locale, as a static string. */
+static const char *
+mb_lcname(
+ XPointer state)
{
- return ((State) state)->lcd->core->name;
+ return ((MbState) state)->lcd->core->name;
}
+/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
static void
-destroy(state)
- XPointer state;
+mb_destroy(
+ XPointer state)
{
- _XlcCloseConverter(((State) state)->conv);
- _XCloseLC(((State) state)->lcd);
+ _XlcCloseConverter(((MbState) state)->conv);
+ _XCloseLC(((MbState) state)->lcd);
Xfree((char *) state);
}
-static XrmMethodsRec rm_methods = {
- mbinit,
- mbchar,
- mbfinish,
- lcname,
- destroy
-} ;
+static const XrmMethodsRec mb_methods = {
+ mb_mbinit,
+ mb_mbchar,
+ mb_mbfinish,
+ mb_lcname,
+ mb_destroy
+};
+
+/* ======================= Exported function ======================= */
XrmMethods
-_XrmDefaultInitParseInfo(lcd, rm_state)
- XLCd lcd;
- XPointer *rm_state;
+_XrmDefaultInitParseInfo(
+ XLCd lcd,
+ XPointer *rm_state)
{
- State state;
-
- state = (State) Xmalloc(sizeof(StateRec));
- if (state == NULL)
- return (XrmMethods) NULL;
+ if (XLC_PUBLIC(lcd, mb_cur_max) == 1) {
+ /* Unibyte case. */
+ UbState state = (UbState) Xmalloc(sizeof(UbStateRec));
+ if (state == NULL)
+ return (XrmMethods) NULL;
+
+ state->lcd = lcd;
+
+ *rm_state = (XPointer) state;
+ return &ub_methods;
+ } else {
+ /* Multibyte case. */
+ MbState state = (MbState) Xmalloc(sizeof(MbStateRec));
+ if (state == NULL)
+ return (XrmMethods) NULL;
+
+ state->lcd = lcd;
+ state->conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
+ if (state->conv == NULL) {
+ Xfree((char *) state);
+ return (XrmMethods) NULL;
+ }
- state->lcd = lcd;
- state->conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
- if (state->conv == NULL) {
- Xfree((char *) state);
- return (XrmMethods) NULL;
+ *rm_state = (XPointer) state;
+ return &mb_methods;
}
-
- *rm_state = (XPointer) state;
-
- return &rm_methods;
}
diff --git a/xc/lib/X11/lcSjis.c b/xc/lib/X11/lcSjis.c
index 9d0b8a891..94476a664 100644
--- a/xc/lib/X11/lcSjis.c
+++ b/xc/lib/X11/lcSjis.c
@@ -35,7 +35,7 @@ OR PERFORMANCE OF THIS SOFTWARE.
makoto@sm.sony.co.jp
*****************************************************************/
-/* $XFree86: xc/lib/X11/lcSjis.c,v 3.6 2000/02/12 02:54:14 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcSjis.c,v 3.7 2000/11/28 18:49:48 dawes Exp $ */
/*
* A Japanese SJIS locale.
@@ -100,9 +100,9 @@ typedef unsigned int Uint;
#define BIT8ON(c) ((c) | GR)
-static void jis_to_sjis();
-static void sjis_to_jis();
-static CodeSet wc_codeset();
+static void jis_to_sjis (Uchar *p1, Uchar *p2);
+static void sjis_to_jis (Uchar *p1, Uchar *p2);
+static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
/*
@@ -122,21 +122,21 @@ static CodeSet wc_codeset();
static int
-sjis_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
- register int chr_len = 0;
- register int shift_mult = 0;
- register Uint chrcode = 0;
+ int chr_len = 0;
+ int shift_mult = 0;
+ Uint chrcode = 0;
Uchar ch, ch2;
Uint wc_encode = 0;
@@ -149,7 +149,7 @@ sjis_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
int num_conv;
int unconv_num = 0;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *) *to;
wchar_t *outbuf_base = outbufptr;
@@ -157,7 +157,6 @@ sjis_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
int codeset_num = XLC_GENERIC(lcd, codeset_num);
Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -262,20 +261,20 @@ sjis_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
#define byte2 (byte1 == 0)
static int
-sjis_wcstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register wchar_t *inbufptr = (wchar_t *) *from;
- register XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ XPointer outbufptr = *to;
XPointer outbuf_base = outbufptr;
wchar_t wch;
- register int length;
+ int length;
Uchar tmp;
Uchar t1, t2;
int num_conv;
@@ -285,8 +284,6 @@ sjis_wcstombs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -341,43 +338,43 @@ sjis_wcstombs(conv, from, from_left, to, to_left, args, num_args)
* sjis<->jis conversion for widechar kanji (See Note at top of file)
*/
static void
-sjis_to_jis(p1, p2)
- Uchar *p1;
- Uchar *p2;
+sjis_to_jis(
+ Uchar *p1,
+ Uchar *p2)
{
- register Uchar c1 = *p1;
- register Uchar c2 = *p2;
- register Uchar adjust = c2 < 0x9f;
- register Uchar rowOffset = c1 < 0xa0 ? 0x70 : 0xb0;
- register Uchar cellOffset = adjust ? (0x1f + (c2 > 0x7f)) : 0x7e;
+ Uchar c1 = *p1;
+ Uchar c2 = *p2;
+ Uchar adjust = c2 < 0x9f;
+ Uchar rowOffset = c1 < 0xa0 ? 0x70 : 0xb0;
+ Uchar cellOffset = adjust ? (0x1f + (c2 > 0x7f)) : 0x7e;
*p1 = ((c1 - rowOffset) << 1) - adjust;
*p2 -= cellOffset;
}
static void
-jis_to_sjis(p1, p2)
- Uchar *p1;
- Uchar *p2;
+jis_to_sjis(
+ Uchar *p1,
+ Uchar *p2)
{
- register Uchar c1 = *p1;
- register Uchar c2 = *p2;
- register Uchar rowOffset = c1 < 0x5f ? 0x70 : 0xb0;
- register Uchar cellOffset = c1 % 2 ? 0x1f + (c2 > 0x5f) : 0x7e;
+ Uchar c1 = *p1;
+ Uchar c2 = *p2;
+ Uchar rowOffset = c1 < 0x5f ? 0x70 : 0xb0;
+ Uchar cellOffset = c1 % 2 ? 0x1f + (c2 > 0x5f) : 0x7e;
*p1 = ((Uchar)(c1 + 1) >> 1) + rowOffset;
*p2 = c2 + cellOffset;
}
static CodeSet
-wc_codeset(lcd, wch)
- XLCd lcd;
- wchar_t wch;
+wc_codeset(
+ XLCd lcd,
+ wchar_t wch)
{
- register CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
#if !defined(__sony_news) || defined(SVR4)
- register int end = XLC_GENERIC(lcd, codeset_num);
- register Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
+ int end = XLC_GENERIC(lcd, codeset_num);
+ Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
for (; --end >= 0; codesets++)
if ( widech == (*codesets)->wc_encoding )
@@ -395,24 +392,24 @@ wc_codeset(lcd, wch)
static int
-sjis_mbtocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
XlcCharSet charset = NULL;
int char_size = 0;
int unconv_num = 0;
- register char *src = *from, *dst = *to;
+ const char *src = *from;
+ char *dst = *to;
CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
if (iskanji(*src)) {
if (KANJI_CODESET >= codeset_num)
return -1;
@@ -471,8 +468,8 @@ sjis_mbtocs(conv, from, from_left, to, to_left, args, num_args)
*from_left -= char_size;
*to_left -= char_size;
- *to = dst;
- *from = src;
+ *to = (XPointer) dst;
+ *from = (XPointer) src;
if (num_args > 0)
*((XlcCharSet *) args[0]) = charset;
@@ -482,23 +479,22 @@ sjis_mbtocs(conv, from, from_left, to, to_left, args, num_args)
static int
-sjis_mbstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- char *tmp_from, *tmp_to;
+ const char *tmp_from;
+ char *tmp_to;
int tmp_from_left, tmp_to_left;
XlcCharSet charset, tmp_charset;
XPointer tmp_args[1];
int unconv_num = 0, ret;
-
-
/* Determine the charset of the segment and convert one character: */
tmp_args[0] = (XPointer) &charset; /* charset from sjis_mbtocs() */
@@ -516,8 +512,8 @@ sjis_mbstocs(conv, from, from_left, to, to_left, args, num_args)
/* Convert remainder of the segment: */
tmp_args[0] = (XPointer) &tmp_charset;
- while( (ret = sjis_mbtocs(conv, &tmp_from, &tmp_from_left, &tmp_to,
- &tmp_to_left, tmp_args, 1)) >= 0 ) {
+ while( (ret = sjis_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
+ (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
if (ret > 0) {
unconv_num += ret;
@@ -527,9 +523,9 @@ sjis_mbstocs(conv, from, from_left, to, to_left, args, num_args)
if (tmp_charset != charset) /* quit on end of segment */
break;
- *from = tmp_from;
+ *from = (XPointer) tmp_from;
*from_left = tmp_from_left;
- *to = tmp_to;
+ *to = (XPointer) tmp_to;
*to_left = tmp_to_left;
}
@@ -540,27 +536,26 @@ sjis_mbstocs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-sjis_wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd) conv->state;
- wchar_t *wcptr = *((wchar_t **)from);
- register char *bufptr = *((char **) to);
+ const wchar_t *wcptr = *((const wchar_t **)from);
+ char *bufptr = *((char **) to);
wchar_t wch;
char *tmpptr;
- register int length;
+ int length;
CodeSet codeset;
Ulong wc_encoding;
int buf_len = *to_left;
int wcstr_len = *from_left;
-
if (!(codeset = wc_codeset(lcd, *wcptr)))
return -1;
@@ -620,13 +615,13 @@ sjis_wcstocs(conv, from, from_left, to, to_left, args, num_args)
}
static CodeSet
-GetCodeSetFromCharSet(lcd, charset)
- XLCd lcd;
- XlcCharSet charset;
+GetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset)
{
- register CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
- register XlcCharSet *charset_list;
- register int codeset_num, num_charsets;
+ CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
+ XlcCharSet *charset_list;
+ int codeset_num, num_charsets;
codeset_num = XLC_GENERIC(lcd, codeset_num);
@@ -644,26 +639,24 @@ GetCodeSetFromCharSet(lcd, charset)
static int
-sjis_cstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- char **from;
- int *from_left;
- char **to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_cstombs(
+ XlcConv conv,
+ char **from,
+ int *from_left,
+ char **to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd) conv->state;
- register char *csptr = *from;
- register char *bufptr = *to;
+ const char *csptr = *from;
+ char *bufptr = *to;
int csstr_len = *from_left;
- register int buf_len = *to_left;
+ int buf_len = *to_left;
int length;
CodeSet codeset;
- EncodingType type;
int cvt_length = 0;
-
if (num_args < 1)
return -1;
@@ -690,7 +683,7 @@ sjis_cstombs(conv, from, from_left, to, to_left, args, num_args)
}
*from_left -= csptr - *from;
- *from = csptr;
+ *from = (XPointer) csptr;
if (bufptr)
*to += cvt_length;
@@ -701,27 +694,26 @@ sjis_cstombs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-sjis_cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd) conv->state;
- register char *csptr = (char *) *from;
+ const char *csptr = (const char *) *from;
wchar_t *bufptr = (wchar_t *) *to;
wchar_t *toptr = (wchar_t *) *to;
int csstr_len = *from_left;
- register int buf_len = *to_left;
+ int buf_len = *to_left;
wchar_t wch;
int length;
Ulong wc_shift_bits = (int)XLC_GENERIC(lcd, wc_shift_bits);
CodeSet codeset;
-
if (num_args < 1)
return -1;
@@ -753,7 +745,7 @@ sjis_cstowcs(conv, from, from_left, to, to_left, args, num_args)
}
*from_left -= csptr - *from;
- *from = csptr;
+ *from = (XPointer) csptr;
return 0;
}
@@ -836,8 +828,8 @@ static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
* initCTptr(): Set ctptr[] to point at ctdata[], indexed by codeset_num.
*/
static void
-initCTptr(lcd)
- XLCd lcd;
+initCTptr(
+ XLCd lcd)
{
int num_codesets = XLC_GENERIC(lcd, codeset_num);
int num_charsets;
@@ -882,22 +874,22 @@ initCTptr(lcd)
static int
-sjis_mbstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_mbstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register int ct_len = *to_left;
+ int ct_len = *to_left;
int cs_num;
int clen;
int unconv_num = 0;
int num_conv;
- XPointer inbufptr = *from;
- register char *ctptr = *to;
+ const char *inbufptr = *from;
+ char *ctptr = *to;
XPointer ct_base = ctptr;
StateRec ct_state;
@@ -905,13 +897,11 @@ sjis_mbstocts(conv, from, from_left, to, to_left, args, num_args)
XLCd lcd = (XLCd) conv->state;
int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
/* Initial State: */
ct_state.GL_charset = ctdptr[Ascii];
ct_state.GR_charset = NULL;
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -1017,21 +1007,21 @@ sjis_mbstocts(conv, from, from_left, to, to_left, args, num_args)
#define byte2 (byte1 == 0)
static int
-sjis_wcstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register int ct_len = *to_left;
- register wchar_t *inbufptr = (wchar_t *) *from;
- register char *ctptr = *to;
+ int ct_len = *to_left;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *ctptr = *to;
XPointer ct_base = ctptr;
wchar_t wch;
- register int length;
+ int length;
Uchar tmp;
Uchar t1 = 0;
int num_conv;
@@ -1138,27 +1128,26 @@ sjis_wcstocts(conv, from, from_left, to, to_left, args, num_args)
#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
static int
-sjis_ctstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_ctstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register XPointer inbufptr = *from;
- register XPointer outbufptr = *to;
- XPointer inbuf_base;
+ const char *inbufptr = *from;
+ XPointer outbufptr = *to;
+ const char *inbuf_base;
XPointer outbuf_base = outbufptr;
- register int clen, length;
+ int clen, length;
int unconv_num = 0;
int num_conv;
unsigned int ct_seglen = 0;
Uchar ct_type;
CTData ctdp = ctdata; /* default */
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -1251,33 +1240,32 @@ sjis_ctstombs(conv, from, from_left, to, to_left, args, num_args)
static int
-sjis_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- register XPointer inbufptr = *from;
- XPointer inbuf_base;
- register wchar_t *outbufptr = (wchar_t *) *to;
+ const char *inbufptr = *from;
+ const char *inbuf_base;
+ wchar_t *outbufptr = (wchar_t *) *to;
wchar_t *outbuf_base = outbufptr;
- register int clen, length;
+ int clen, length;
int num_conv;
int unconv_num = 0;
unsigned int ct_seglen = 0;
Uchar ct_type = 0;
- register int shift_mult;
+ int shift_mult;
wchar_t wc_tmp;
wchar_t wch;
Ulong wc_encoding;
CTData ctdp = ctdata;
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -1383,17 +1371,17 @@ sjis_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
#undef BADCHAR
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
Xfree((char *) conv);
}
static XlcConv
-create_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
XlcConv conv;
@@ -1426,118 +1414,118 @@ static XlcConvMethodsRec conv_methods[] = {
static XlcConv
-open_mbstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOCS]);
}
static XlcConv
-open_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOCS]);
}
static XlcConv
-open_mbtocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBTOCS]);
}
static XlcConv
-open_cstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CSTOMBS]);
}
static XlcConv
-open_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CSTOWCS]);
}
static XlcConv
-open_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
}
static XlcConv
-open_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
}
static XlcConv
-open_wcstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
}
static XlcConv
-open_mbstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
}
static XlcConv
-open_ctstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
}
static XlcConv
-open_ctstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
}
XLCd
-_XlcSjisLoader(name)
- _Xconst char *name;
+_XlcSjisLoader(
+ const char *name)
{
XLCd lcd;
diff --git a/xc/lib/X11/lcStd.c b/xc/lib/X11/lcStd.c
index 7ef3b34f9..b1daf516c 100644
--- a/xc/lib/X11/lcStd.c
+++ b/xc/lib/X11/lcStd.c
@@ -23,7 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
-/* $XFree86: xc/lib/X11/lcStd.c,v 1.3 1999/05/09 10:50:41 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcStd.c,v 1.4 2000/11/28 18:49:49 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
@@ -314,3 +314,52 @@ _Xwcsncmp(wstr1, wstr2, len)
return *wstr1 - *wstr2;
}
+
+
+int
+_Xlcmbstoutf8(lcd, ustr, str, len)
+ XLCd lcd;
+ char *ustr;
+ const char *str;
+ int len;
+{
+ XlcConv conv;
+ XPointer from, to;
+ int from_left, to_left, ret;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+
+ conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNUtf8String);
+ if (conv == NULL)
+ return -1;
+
+ from = (XPointer) str;
+ from_left = strlen(str);
+ to = (XPointer) ustr;
+ to_left = len;
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ ret = -1;
+ else {
+ ret = len - to_left;
+ if (ustr && to_left > 0)
+ ustr[ret] = '\0';
+ }
+
+ _XlcCloseConverter(conv);
+
+ return ret;
+}
+
+int
+_Xmbstoutf8(ustr, str, len)
+ char *ustr;
+ const char *str;
+ int len;
+{
+ return _Xlcmbstoutf8((XLCd) NULL, ustr, str, len);
+}
diff --git a/xc/lib/X11/lcTxtPr.c b/xc/lib/X11/lcTxtPr.c
index ec6ee49dd..1fd72ca5d 100644
--- a/xc/lib/X11/lcTxtPr.c
+++ b/xc/lib/X11/lcTxtPr.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/lcTxtPr.c,v 3.2 2000/11/28 18:49:49 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
@@ -31,14 +32,14 @@
#include <stdio.h>
static int
-get_buf_size(is_wide_char, list, count)
- Bool is_wide_char;
- XPointer list;
- int count;
+get_buf_size(
+ Bool is_wide_char,
+ XPointer list,
+ int count)
{
- register int length = 0;
- register char **mb_list;
- register wchar_t **wc_list;
+ int length = 0;
+ char **mb_list;
+ wchar_t **wc_list;
if (list == NULL)
return 0;
@@ -64,18 +65,18 @@ get_buf_size(is_wide_char, list, count)
}
static int
-_XTextListToTextProperty(lcd, dpy, from_type, list, count, style, text_prop)
- XLCd lcd;
- Display *dpy;
- char *from_type;
- XPointer list;
- int count;
- XICCEncodingStyle style;
- XTextProperty *text_prop;
+_XTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ const char *from_type,
+ XPointer list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
{
Atom encoding;
XlcConv conv;
- char *to_type;
+ const char *to_type;
char **mb_list;
wchar_t **wc_list;
XPointer from;
@@ -96,6 +97,10 @@ _XTextListToTextProperty(lcd, dpy, from_type, list, count, style, text_prop)
encoding = XA_STRING;
to_type = XlcNString;
break;
+ case XUTF8StringStyle:
+ encoding = XInternAtom(dpy, "UTF8_STRING", False);
+ to_type = XlcNUtf8String;
+ break;
case XCompoundTextStyle:
encoding = XInternAtom(dpy, "COMPOUND_TEXT", False);
to_type = XlcNCompoundText;
@@ -209,27 +214,40 @@ done:
}
int
-_XmbTextListToTextProperty(lcd, dpy, list, count, style, text_prop)
- XLCd lcd;
- Display *dpy;
- char **list;
- int count;
- XICCEncodingStyle style;
- XTextProperty *text_prop;
+_XmbTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
{
return _XTextListToTextProperty(lcd, dpy, XlcNMultiByte, (XPointer) list,
count, style, text_prop);
}
int
-_XwcTextListToTextProperty(lcd, dpy, list, count, style, text_prop)
- XLCd lcd;
- Display *dpy;
- wchar_t **list;
- int count;
- XICCEncodingStyle style;
- XTextProperty *text_prop;
+_XwcTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ wchar_t **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
{
return _XTextListToTextProperty(lcd, dpy, XlcNWideChar, (XPointer) list,
count, style, text_prop);
}
+
+int
+_Xutf8TextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ return _XTextListToTextProperty(lcd, dpy, XlcNUtf8String, (XPointer) list,
+ count, style, text_prop);
+}
diff --git a/xc/lib/X11/lcUTF8.c b/xc/lib/X11/lcUTF8.c
index ff7852481..94faed3ba 100644
--- a/xc/lib/X11/lcUTF8.c
+++ b/xc/lib/X11/lcUTF8.c
@@ -24,17 +24,18 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
******************************************************************/
-/* $XFree86: xc/lib/X11/lcUTF8.c,v 1.6 2000/10/27 18:30:49 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcUTF8.c,v 1.9 2000/11/28 18:49:50 dawes Exp $ */
/*
* This file contains:
*
* I. Conversion routines CompoundText/CharSet <--> Unicode/UTF-8.
*
- * Used for two purposes:
+ * 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. An UTF-8 locale loader.
* Supports: all locales with codeset UTF-8.
@@ -70,14 +71,15 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
* without first going through the list of predefined character sets.
*/
+#include <stdio.h>
#include "Xlibint.h"
#include "XlcPubI.h"
#include "XlcGeneric.h"
static XlcConv
-create_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
XlcConv conv;
@@ -92,21 +94,21 @@ create_conv(lcd, methods)
}
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
Xfree((char *) conv);
}
/* Replacement character for invalid multibyte sequence or wide character. */
-#define BAD_WCHAR ((wchar_t) 0xfffd)
+#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
- * `wchar_t' variables, but don't pass them to the user.
+ * `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.
@@ -119,34 +121,32 @@ close_converter(conv)
* libX11 shared library share the "text" and read-only "data" sections.
*/
-typedef wchar_t original_wchar_t;
-typedef unsigned int local_wchar_t;
-#define wchar_t local_wchar_t
+typedef unsigned int ucs4_t;
#define conv_t XlcConv
typedef struct _Utf8ConvRec {
const char *name;
XrmQuark xrm_name;
#if NeedFunctionPrototypes
- int (* cstowc) (XlcConv, wchar_t *, unsigned char const *, int);
+ int (* cstowc) (XlcConv, ucs4_t *, unsigned char const *, int);
#else
int (* cstowc) ();
#endif
#if NeedFunctionPrototypes
- int (* wctocs) (XlcConv, unsigned char *, wchar_t, int);
+ int (* wctocs) (XlcConv, unsigned char *, ucs4_t, int);
#else
int (* wctocs) ();
#endif
} Utf8ConvRec, *Utf8Conv;
/*
- * int xxx_cstowc (XlcConv conv, wchar_t *pwc, unsigned char const *s, int n)
+ * 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, wchar_t wc, int n)
+ * 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.
@@ -167,6 +167,7 @@ typedef struct _Utf8ConvRec {
*/
#include "lcUniConv/utf8.h"
+#include "lcUniConv/ucs2be.h"
#ifdef notused
#include "lcUniConv/ascii.h"
#endif
@@ -211,9 +212,8 @@ typedef struct {
#include "lcUniConv/jisx0208.h"
#include "lcUniConv/jisx0212.h"
#include "lcUniConv/ksc5601.h"
-#ifdef notdef
#include "lcUniConv/big5.h"
-#endif
+#include "lcUniConv/big5_emacs.h"
static Utf8ConvRec all_charsets[] = {
/* The ISO10646-1/UTF-8 entry occurs twice, once at the beginning
@@ -264,12 +264,12 @@ static Utf8ConvRec all_charsets[] = {
{ "ISO8859-16", NULLQUARK,
iso8859_16_mbtowc, iso8859_16_wctomb
},
- { "ISO8859-9E", NULLQUARK,
- iso8859_9e_mbtowc, iso8859_9e_wctomb
- },
{ "JISX0201.1976-0", NULLQUARK,
jisx0201_mbtowc, jisx0201_wctomb
},
+ { "TIS620.2533-1", NULLQUARK,
+ tis620_mbtowc, tis620_wctomb
+ },
{ "GB2312.1980-0", NULLQUARK,
gb2312_mbtowc, gb2312_wctomb
},
@@ -282,9 +282,6 @@ static Utf8ConvRec all_charsets[] = {
{ "KSC5601.1987-0", NULLQUARK,
ksc5601_mbtowc, ksc5601_wctomb
},
- { "TIS620.2533-1", NULLQUARK,
- tis620_mbtowc, tis620_wctomb
- },
{ "KOI8-R", NULLQUARK,
koi8_r_mbtowc, koi8_r_wctomb
},
@@ -294,6 +291,9 @@ static Utf8ConvRec all_charsets[] = {
{ "KOI8-C", NULLQUARK,
koi8_c_mbtowc, koi8_c_wctomb
},
+ { "TATAR-CYR", NULLQUARK,
+ tatar_cyr_mbtowc, tatar_cyr_wctomb
+ },
{ "ARMSCII-8", NULLQUARK,
armscii_8_mbtowc, armscii_8_wctomb
},
@@ -315,6 +315,9 @@ static Utf8ConvRec all_charsets[] = {
{ "GEORGIAN-PS", NULLQUARK,
georgian_ps_mbtowc, georgian_ps_wctomb
},
+ { "ISO8859-9E", NULLQUARK,
+ iso8859_9e_mbtowc, iso8859_9e_wctomb
+ },
{ "MICROSOFT-CP1251", NULLQUARK,
microsoft_cp1251_mbtowc, microsoft_cp1251_wctomb
},
@@ -324,31 +327,37 @@ static Utf8ConvRec all_charsets[] = {
{ "MICROSOFT-CP1256", NULLQUARK,
microsoft_cp1256_mbtowc, microsoft_cp1256_wctomb
},
- { "TATAR-CYR", NULLQUARK,
- tatar_cyr_mbtowc, tatar_cyr_wctomb
+ { "BIG5-0", NULLQUARK,
+ big5_0_mbtowc, big5_0_wctomb
},
-#ifdef notdef
- { "BIG-5", NULLQUARK,
- big5_mbtowc, big5_wctomb
+ { "BIG5-1", NULLQUARK,
+ big5_1_mbtowc, big5_1_wctomb
},
-#endif
/* The ISO10646-1/UTF-8 entry occurs twice, once at the beginning
(for lookup speed), once at the end (as a fallback). */
{ "ISO10646-1", NULLQUARK,
utf8_mbtowc, utf8_wctomb
},
+
+ /* Encoding ISO10646-1 for fonts means UCS2-like encoding
+ so for conversion to FontCharSet we need this record */
+ { "ISO10646-1", NULLQUARK,
+ ucs2be_mbtowc, ucs2be_wctomb
+ }
};
-#define all_charsets_count (sizeof(all_charsets)/sizeof(all_charsets[0]))
+#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)
static void
-init_all_charsets()
+init_all_charsets (void)
{
Utf8Conv convptr;
int i;
- for (convptr = all_charsets, i = all_charsets_count; i > 0; convptr++, i--)
+ for (convptr = all_charsets, i = charsets_table_size; i > 0; convptr++, i--)
convptr->xrm_name = XrmStringToQuark(convptr->name);
}
@@ -361,14 +370,14 @@ init_all_charsets()
/* from XlcNCharSet to XlcNUtf8String */
static int
-cstoutf8(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XlcCharSet charset;
char *name;
@@ -403,7 +412,7 @@ cstoutf8(conv, from, from_left, to, to_left, args, num_args)
unconv_num = 0;
while (src < srcend) {
- wchar_t wc;
+ ucs4_t wc;
int consumed;
int count;
@@ -441,11 +450,11 @@ static XlcConvMethodsRec methods_cstoutf8 = {
};
static XlcConv
-open_cstoutf8(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
lazy_init_all_charsets();
return create_conv(from_lcd, &methods_cstoutf8);
@@ -454,9 +463,9 @@ open_cstoutf8(from_lcd, from_type, to_lcd, to_type)
/* from XlcNUtf8String to XlcNCharSet */
static XlcConv
-create_tocs_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_tocs_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
XlcConv conv;
CodeSet *codeset_list;
@@ -516,8 +525,8 @@ create_tocs_conv(lcd, methods)
}
static void
-close_tocs_converter(conv)
- XlcConv conv;
+close_tocs_converter(
+ XlcConv conv)
{
Xfree((char *) conv);
}
@@ -529,14 +538,14 @@ close_tocs_converter(conv)
* *sidep is set to the character set side (XlcGL or XlcGR).
*/
static int
-charset_wctocs(preferred, charsetp, sidep, conv, r, wc, n)
- Utf8Conv *preferred;
- Utf8Conv *charsetp;
- XlcSide *sidep;
- XlcConv conv;
- unsigned char *r;
- wchar_t wc;
- int n;
+charset_wctocs(
+ Utf8Conv *preferred,
+ Utf8Conv *charsetp,
+ XlcSide *sidep,
+ XlcConv conv,
+ unsigned char *r,
+ ucs4_t wc,
+ int n)
{
int count;
Utf8Conv convptr;
@@ -567,14 +576,14 @@ charset_wctocs(preferred, charsetp, sidep, conv, r, wc, n)
}
static int
-utf8tocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+utf8tocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
Utf8Conv *preferred_charsets;
XlcCharSet last_charset = NULL;
@@ -597,7 +606,7 @@ utf8tocs(conv, from, from_left, to, to_left, args, num_args)
while (src < srcend && dst < dstend) {
Utf8Conv chosen_charset = NULL;
XlcSide chosen_side = XlcNONE;
- wchar_t wc;
+ ucs4_t wc;
int consumed;
int count;
@@ -658,11 +667,11 @@ static XlcConvMethodsRec methods_utf8tocs = {
};
static XlcConv
-open_utf8tocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_utf8tocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_tocs_conv(from_lcd, &methods_utf8tocs);
}
@@ -670,14 +679,14 @@ open_utf8tocs(from_lcd, from_type, to_lcd, to_type)
/* from XlcNUtf8String to XlcNChar */
static int
-utf8tocs1(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+utf8tocs1(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
Utf8Conv *preferred_charsets;
XlcCharSet last_charset = NULL;
@@ -700,7 +709,7 @@ utf8tocs1(conv, from, from_left, to, to_left, args, num_args)
while (src < srcend && dst < dstend) {
Utf8Conv chosen_charset = NULL;
XlcSide chosen_side = XlcNONE;
- wchar_t wc;
+ ucs4_t wc;
int consumed;
int count;
@@ -762,11 +771,11 @@ static XlcConvMethodsRec methods_utf8tocs1 = {
};
static XlcConv
-open_utf8tocs1(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_utf8tocs1(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_tocs_conv(from_lcd, &methods_utf8tocs1);
}
@@ -774,14 +783,14 @@ open_utf8tocs1(from_lcd, from_type, to_lcd, to_type)
/* from XlcNUtf8String to XlcNString */
static int
-utf8tostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+utf8tostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
unsigned char const *src;
unsigned char const *srcend;
@@ -800,7 +809,7 @@ utf8tostr(conv, from, from_left, to, to_left, args, num_args)
while (src < srcend) {
unsigned char c;
- wchar_t wc;
+ ucs4_t wc;
int consumed;
consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
@@ -813,7 +822,7 @@ utf8tostr(conv, from, from_left, to, to_left, args, num_args)
c = BAD_CHAR;
unconv_num++;
} else {
- if ((wc & ~(wchar_t)0xff) != 0) {
+ if ((wc & ~(ucs4_t)0xff) != 0) {
c = BAD_CHAR;
unconv_num++;
} else
@@ -838,11 +847,11 @@ static XlcConvMethodsRec methods_utf8tostr = {
};
static XlcConv
-open_utf8tostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_utf8tostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &methods_utf8tostr);
}
@@ -850,14 +859,14 @@ open_utf8tostr(from_lcd, from_type, to_lcd, to_type)
/* from XlcNString to XlcNUtf8String */
static int
-strtoutf8(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+strtoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
unsigned char const *src;
unsigned char const *srcend;
@@ -895,30 +904,170 @@ static XlcConvMethodsRec methods_strtoutf8 = {
};
static XlcConv
-open_strtoutf8(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_strtoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &methods_strtoutf8);
}
+/* Support for the input methods. */
+XPointer
+_Utf8GetConvByName(
+ const char *name)
+{
+ XrmQuark xrm_name;
+ Utf8Conv convptr;
+ int i;
+
+ if (name == NULL)
+ return (XPointer) NULL;
+
+ lazy_init_all_charsets();
+ xrm_name = XrmStringToQuark(name);
+
+ for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
+ if (convptr->xrm_name == xrm_name)
+ return (XPointer) convptr->wctocs;
+ return (XPointer) NULL;
+}
+
+/* from XlcNUcsChar to XlcNChar needed for input methods */
+
+static XlcConv
+create_ucstocs_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+
+ if (XLC_PUBLIC_PART(lcd)->codeset &&
+ (!_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "UTF-8"))) {
+
+ XlcConv conv;
+ Utf8Conv *preferred;
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+
+ preferred = (Utf8Conv *) Xmalloc(sizeof(Utf8Conv) * 2);
+ if (preferred == (Utf8Conv *) NULL) {
+ Xfree((char *) conv);
+ return (XlcConv) NULL;
+ }
+ preferred[0] = &all_charsets[0]; /* ISO10646 */
+ preferred[1] = (Utf8Conv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) preferred;
+
+ return conv;
+ } else {
+ return create_tocs_conv(lcd, methods);
+ }
+}
+
+static int
+charset_wctocs_exactly(
+ Utf8Conv *preferred,
+ Utf8Conv *charsetp,
+ XlcSide *sidep,
+ XlcConv conv,
+ unsigned char *r,
+ ucs4_t wc,
+ int n)
+{
+ int count;
+ Utf8Conv convptr;
+
+ for (; *preferred != (Utf8Conv) NULL; preferred++) {
+ convptr = *preferred;
+ count = convptr->wctocs(conv, 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;
+}
+
+static int
+ucstocs1(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ ucs4_t const *src = (ucs4_t const *) *from;
+ unsigned char *dst = (unsigned char *) *to;
+ int unconv_num = 0;
+ Utf8Conv *preferred_charsets = (Utf8Conv *) conv->state;
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ XlcCharSet charset = NULL;
+ int count;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ count = charset_wctocs_exactly(preferred_charsets, &chosen_charset,
+ &chosen_side, conv, dst, *src, *to_left);
+ if (count < 1) {
+ unconv_num++;
+ count = 0;
+ } else {
+ charset = _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ }
+ if (charset == NULL)
+ return -1;
+
+ *from = (XPointer) ++src;
+ (*from_left)--;
+ *to = (XPointer) dst;
+ *to_left -= count;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_ucstocs1 = {
+ close_tocs_converter,
+ ucstocs1,
+ NULL
+};
+
+static XlcConv
+open_ucstocs1(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_ucstocs_conv(from_lcd, &methods_ucstocs1);
+}
+
/* Registers UTF-8 converters for a non-UTF-8 locale. */
void
-_XlcAddUtf8Converters(lcd)
- XLCd lcd;
+_XlcAddUtf8Converters(
+ XLCd lcd)
{
_XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String, open_cstoutf8);
_XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNCharSet, open_utf8tocs);
_XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNChar, open_utf8tocs1);
_XlcSetConverter(lcd, XlcNString, lcd, XlcNUtf8String, open_strtoutf8);
_XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNString, open_utf8tostr);
+ _XlcSetConverter(lcd, XlcNUcsChar, lcd, XlcNChar, open_ucstocs1);
}
-#undef wchar_t
-#define wchar_t original_wchar_t
-
/***************************************************************************/
/* Part II: An UTF-8 locale loader.
*
@@ -928,14 +1077,14 @@ _XlcAddUtf8Converters(lcd)
/* from XlcNMultiByte to XlcNWideChar */
static int
-utf8towcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+utf8towcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
unsigned char const *src;
unsigned char const *srcend;
@@ -953,7 +1102,7 @@ utf8towcs(conv, from, from_left, to, to_left, args, num_args)
unconv_num = 0;
while (src < srcend && dst < dstend) {
- local_wchar_t wc;
+ ucs4_t wc;
int consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
if (consumed == RET_TOOFEW(0))
break;
@@ -983,11 +1132,11 @@ static XlcConvMethodsRec methods_utf8towcs = {
};
static XlcConv
-open_utf8towcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_utf8towcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &methods_utf8towcs);
}
@@ -995,14 +1144,14 @@ open_utf8towcs(from_lcd, from_type, to_lcd, to_type)
/* from XlcNWideChar to XlcNMultiByte */
static int
-wcstoutf8(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
wchar_t const *src;
wchar_t const *srcend;
@@ -1048,11 +1197,11 @@ static XlcConvMethodsRec methods_wcstoutf8 = {
};
static XlcConv
-open_wcstoutf8(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &methods_wcstoutf8);
}
@@ -1060,14 +1209,14 @@ open_wcstoutf8(from_lcd, from_type, to_lcd, to_type)
/* from XlcNString to XlcNWideChar */
static int
-our_strtowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+our_strtowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
unsigned char const *src;
unsigned char const *srcend;
@@ -1100,11 +1249,11 @@ static XlcConvMethodsRec methods_strtowcs = {
};
static XlcConv
-open_strtowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_strtowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &methods_strtowcs);
}
@@ -1112,14 +1261,14 @@ open_strtowcs(from_lcd, from_type, to_lcd, to_type)
/* from XlcNWideChar to XlcNString */
static int
-our_wcstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+our_wcstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
wchar_t const *src;
wchar_t const *srcend;
@@ -1162,11 +1311,11 @@ static XlcConvMethodsRec methods_wcstostr = {
};
static XlcConv
-open_wcstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &methods_wcstostr);
}
@@ -1174,14 +1323,14 @@ open_wcstostr(from_lcd, from_type, to_lcd, to_type)
/* from XlcNCharSet to XlcNWideChar */
static int
-cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XlcCharSet charset;
char *name;
@@ -1244,11 +1393,11 @@ static XlcConvMethodsRec methods_cstowcs = {
};
static XlcConv
-open_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
lazy_init_all_charsets();
return create_conv(from_lcd, &methods_cstowcs);
@@ -1257,14 +1406,14 @@ open_cstowcs(from_lcd, from_type, to_lcd, to_type)
/* from XlcNWideChar to XlcNCharSet */
static int
-wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
Utf8Conv *preferred_charsets;
XlcCharSet last_charset = NULL;
@@ -1338,11 +1487,11 @@ static XlcConvMethodsRec methods_wcstocs = {
};
static XlcConv
-open_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_tocs_conv(from_lcd, &methods_wcstocs);
}
@@ -1350,14 +1499,14 @@ open_wcstocs(from_lcd, from_type, to_lcd, to_type)
/* from XlcNWideChar to XlcNChar */
static int
-wcstocs1(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstocs1(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
Utf8Conv *preferred_charsets;
XlcCharSet last_charset = NULL;
@@ -1432,11 +1581,11 @@ static XlcConvMethodsRec methods_wcstocs1 = {
};
static XlcConv
-open_wcstocs1(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs1(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_tocs_conv(from_lcd, &methods_wcstocs1);
}
@@ -1444,14 +1593,14 @@ open_wcstocs1(from_lcd, from_type, to_lcd, to_type)
/* trivial, no conversion */
static int
-identity(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+identity(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
unsigned char const *src;
unsigned char const *srcend;
@@ -1484,18 +1633,118 @@ static XlcConvMethodsRec methods_identity = {
};
static XlcConv
-open_identity(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_identity(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &methods_identity);
}
+/* from MultiByte/WideChar to FontCharSet. */
+/* They really use converters to CharSet
+ * but with different create_conv procedure. */
+
+#define BUFFSIZE 20
+
+static XlcConv
+create_tofontcs_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+ int i, num, k, count;
+ char **value, buf[BUFFSIZE];
+ Utf8Conv *preferred;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+
+ lazy_init_all_charsets();
+
+ for (i = 0, num= 0;; i++) {
+ sprintf(buf, "fs%d.charset.name", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if( count < 1){
+ sprintf(buf, "fs%d.charset", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if (count < 1)
+ break;
+ }
+ num += count;
+ }
+ preferred = (Utf8Conv *) Xmalloc((num + 1) * sizeof(Utf8Conv));
+ if (preferred == (Utf8Conv *) NULL) {
+ Xfree((char *) conv);
+ return (XlcConv) NULL;
+ }
+
+ /* Loop through all fontsets mentioned in the locale. */
+ for (i = 0, num = 0;; i++) {
+ sprintf(buf, "fs%d.charset.name", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if( count < 1){
+ sprintf(buf, "fs%d.charset", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if (count < 1)
+ break;
+ }
+ while (count-- > 0){
+ XlcCharSet charset = _XlcGetCharSet(*value++);
+ char *name = charset->encoding_name;
+ /* If it wasn't already encountered... */
+ for (k = num - 1; k >= 0; k--)
+ if (!strcmp(preferred[k]->name, name))
+ break;
+ if (k < 0) {
+ /* For fonts "ISO10646-1" means not utf8 but ucs2.*/
+ if (!strcmp("ISO10646-1", name)) {
+ preferred[num++] = &all_charsets[ucs2_conv_index];
+ continue;
+ }
+ /* Look it up in all_charsets[]. */
+ for (k = 0; k < all_charsets_count-1; k++)
+ if (!strcmp(all_charsets[k].name, name)) {
+ /* Add it to the preferred set. */
+ preferred[num++] = &all_charsets[k];
+ break;
+ }
+ }
+ }
+ }
+ preferred[num] = (Utf8Conv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) preferred;
+
+ return conv;
+}
+
+static XlcConv
+open_wcstofcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tofontcs_conv(from_lcd, &methods_wcstocs);
+}
+
+static XlcConv
+open_utf8tofcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tofontcs_conv(from_lcd, &methods_utf8tocs);
+}
+
XLCd
-_XlcUtf8Loader(name)
- _Xconst char *name;
+_XlcUtf8Loader(
+ const char *name)
{
XLCd lcd;
@@ -1535,6 +1784,10 @@ _XlcUtf8Loader(name)
_XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNMultiByte, open_identity);
_XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNUtf8String, open_identity);
+ /* Register converters for XlcNFontCharSet */
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNFontCharSet, open_utf8tofcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNFontCharSet, open_wcstofcs);
+
_XlcAddUtf8Converters(lcd);
return lcd;
diff --git a/xc/lib/X11/lcUniConv/armscii_8.h b/xc/lib/X11/lcUniConv/armscii_8.h
index 4a105151b..32b4e9c5a 100644
--- a/xc/lib/X11/lcUniConv/armscii_8.h
+++ b/xc/lib/X11/lcUniConv/armscii_8.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/armscii_8.h,v 1.3 2000/11/29 17:40:28 dawes Exp $ */
/*
* ARMSCII-8
@@ -25,13 +26,13 @@ static const unsigned short armscii_8_2uni[96] = {
};
static int
-armscii_8_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+armscii_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) armscii_8_2uni[c-0xa0];
+ *pwc = (ucs4_t) armscii_8_2uni[c-0xa0];
return 1;
}
@@ -66,7 +67,7 @@ static const unsigned char armscii_8_page20[24] = {
};
static int
-armscii_8_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+armscii_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0020) {
diff --git a/xc/lib/X11/lcUniConv/ascii.h b/xc/lib/X11/lcUniConv/ascii.h
index bdad43466..183de0bb4 100644
--- a/xc/lib/X11/lcUniConv/ascii.h
+++ b/xc/lib/X11/lcUniConv/ascii.h
@@ -1,21 +1,22 @@
+/* $XFree86: xc/lib/X11/lcUniConv/ascii.h,v 1.3 2000/11/29 17:40:28 dawes Exp $ */
/*
* ASCII
*/
static int
-ascii_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+ascii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0x80) {
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
return RET_ILSEQ;
}
static int
-ascii_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+ascii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
if (wc < 0x0080) {
*r = wc;
diff --git a/xc/lib/X11/lcUniConv/big5.h b/xc/lib/X11/lcUniConv/big5.h
new file mode 100644
index 000000000..83e5f400a
--- /dev/null
+++ b/xc/lib/X11/lcUniConv/big5.h
@@ -0,0 +1,4142 @@
+/* $XFree86: xc/lib/X11/lcUniConv/big5.h,v 1.1 2000/11/28 18:50:03 dawes Exp $ */
+
+/*
+ * BIG5
+ */
+
+static const unsigned short big5_2uni_pagea1[6121] = {
+ /* 0xa1 */
+ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a,
+ 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52,
+ 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
+ 0x2014, 0xfe33, 0xfffd, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
+ 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
+ 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
+ 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
+ 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
+ 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
+ 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
+ 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
+ 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
+ 0x203e, 0xfffd, 0xff3f, 0xfffd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
+ 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
+ 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
+ 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
+ 0xfe66, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
+ 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
+ 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
+ 0x2199, 0x2198, 0x2225, 0x2223, 0xfffd,
+ /* 0xa2 */
+ 0xfffd, 0xff0f, 0xff3c, 0xff04, 0x00a5, 0x3012, 0x00a2, 0x00a3,
+ 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
+ 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
+ 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
+ 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+ 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
+ 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
+ 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e,
+ 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3,
+ 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12,
+ 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
+ 0x3028, 0x3029, 0xfffd, 0x5344, 0xfffd, 0xff21, 0xff22, 0xff23,
+ 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b,
+ 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33,
+ 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41,
+ 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49,
+ 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51,
+ 0xff52, 0xff53, 0xff54, 0xff55, 0xff56,
+ /* 0xa3 */
+ 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
+ 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
+ 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
+ 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
+ 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+ 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
+ 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa4 */
+ 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
+ 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
+ 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
+ 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
+ 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
+ 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
+ 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
+ 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11,
+ 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88,
+ 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3,
+ 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141,
+ 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207,
+ 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347,
+ 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
+ 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f,
+ 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236,
+ 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5,
+ 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4,
+ 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247,
+ 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
+ /* 0xa5 */
+ 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
+ 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
+ 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
+ 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
+ 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
+ 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
+ 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
+ 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e,
+ 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
+ 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17,
+ 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6,
+ 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11,
+ 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389,
+ 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531,
+ 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db,
+ 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f,
+ 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff,
+ 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
+ 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b,
+ 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
+ /* 0xa6 */
+ 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
+ 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
+ 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
+ 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
+ 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
+ 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
+ 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
+ 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f,
+ 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263,
+ 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2,
+ 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64,
+ 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50,
+ 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
+ 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001,
+ 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c,
+ 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e,
+ 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621,
+ 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34,
+ 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38,
+ 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63,
+ /* 0xa7 */
+ 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
+ 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
+ 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
+ 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
+ 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
+ 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
+ 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
+ 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
+ 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d,
+ 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4,
+ 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c,
+ 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90,
+ 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a,
+ 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8,
+ 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212,
+ 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d,
+ 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
+ 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538,
+ 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c,
+ 0x6756, 0x675e, 0x6749, 0x6746, 0x6760,
+ /* 0xa8 */
+ 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
+ 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
+ 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
+ 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
+ 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
+ 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
+ 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
+ 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b,
+ 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d,
+ 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2,
+ 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6,
+ 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
+ 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab,
+ 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b,
+ 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b,
+ 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155,
+ 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238,
+ 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb,
+ 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379,
+ 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475,
+ /* 0xa9 */
+ 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
+ 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
+ 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
+ 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
+ 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
+ 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
+ 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
+ 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46,
+ 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18,
+ 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97,
+ 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80,
+ 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff,
+ 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021,
+ 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e,
+ 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9,
+ 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
+ 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da,
+ 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e,
+ 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602,
+ 0x660e, 0x6600, 0x660f, 0x6615, 0x660a,
+ /* 0xaa */
+ 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
+ 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
+ 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
+ 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
+ 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
+ 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
+ 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
+ 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095,
+ 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248,
+ 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9,
+ 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
+ 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940,
+ 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54,
+ 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1,
+ 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d,
+ 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1,
+ 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7,
+ 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1,
+ 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580,
+ 0x961c, 0x9640, 0x963f, 0x963b, 0x9644,
+ /* 0xab */
+ 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
+ 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
+ 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
+ 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
+ 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
+ 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
+ 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
+ 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4,
+ 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf,
+ 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae,
+ 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8,
+ 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6,
+ 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5,
+ 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7,
+ 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
+ 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c,
+ 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d,
+ 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a,
+ 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301,
+ 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7,
+ /* 0xac */
+ 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
+ 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
+ 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
+ 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
+ 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
+ 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
+ 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
+ 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b,
+ 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38,
+ 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
+ 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272,
+ 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb,
+ 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c,
+ 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678,
+ 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701,
+ 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc,
+ 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947,
+ 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff,
+ 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
+ 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004,
+ /* 0xad */
+ 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
+ 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
+ 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
+ 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
+ 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
+ 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
+ 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
+ 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed,
+ 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b,
+ 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762,
+ 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df,
+ 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef,
+ 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
+ 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1,
+ 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a,
+ 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd,
+ 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d,
+ 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501,
+ 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9,
+ 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea,
+ /* 0xae */
+ 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
+ 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
+ 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
+ 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
+ 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
+ 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
+ 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
+ 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
+ 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f,
+ 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3,
+ 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346,
+ 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328,
+ 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642,
+ 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8,
+ 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853,
+ 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851,
+ 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
+ 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27,
+ 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87,
+ 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93,
+ /* 0xaf */
+ 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
+ 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
+ 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
+ 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
+ 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
+ 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
+ 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
+ 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825,
+ 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f,
+ 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7,
+ 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06,
+ 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
+ 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b,
+ 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015,
+ 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105,
+ 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a,
+ 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b,
+ 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338,
+ 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336,
+ 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
+ /* 0xb0 */
+ 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
+ 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
+ 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
+ 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
+ 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
+ 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
+ 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
+ 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
+ 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8,
+ 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c,
+ 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e,
+ 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d,
+ 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8,
+ 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3,
+ 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543,
+ 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538,
+ 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
+ 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4,
+ 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36,
+ 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40,
+ /* 0xb1 */
+ 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
+ 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
+ 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
+ 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
+ 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
+ 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
+ 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
+ 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5,
+ 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df,
+ 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7,
+ 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa,
+ 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
+ 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b,
+ 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557,
+ 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac,
+ 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668,
+ 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2,
+ 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0,
+ 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8,
+ 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba,
+ /* 0xb2 */
+ 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
+ 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
+ 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
+ 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
+ 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
+ 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
+ 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+ 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7,
+ 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4,
+ 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db,
+ 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843,
+ 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20,
+ 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92,
+ 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c,
+ 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31,
+ 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
+ 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124,
+ 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398,
+ 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393,
+ 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c,
+ /* 0xb3 */
+ 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
+ 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
+ 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
+ 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
+ 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
+ 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
+ 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
+ 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8,
+ 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7,
+ 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670,
+ 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
+ 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5,
+ 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096,
+ 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269,
+ 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7,
+ 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594,
+ 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2,
+ 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599,
+ 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821,
+ 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960,
+ /* 0xb4 */
+ 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
+ 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
+ 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
+ 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
+ 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
+ 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
+ 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
+ 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2,
+ 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4,
+ 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562,
+ 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676,
+ 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f,
+ 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df,
+ 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb,
+ 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
+ 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e,
+ 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67,
+ 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24,
+ 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a,
+ 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb,
+ /* 0xb5 */
+ 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
+ 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
+ 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
+ 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
+ 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
+ 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
+ 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
+ 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97,
+ 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52,
+ 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
+ 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66,
+ 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052,
+ 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146,
+ 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403,
+ 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1,
+ 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2,
+ 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df,
+ 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0,
+ 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
+ 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41,
+ /* 0xb6 */
+ 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
+ 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
+ 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
+ 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
+ 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
+ 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
+ 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
+ 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593,
+ 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686,
+ 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7,
+ 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea,
+ 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd,
+ 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be,
+ 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
+ 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8,
+ 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4,
+ 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712,
+ 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b,
+ 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1,
+ 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
+ /* 0xb7 */
+ 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
+ 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
+ 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
+ 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
+ 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
+ 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
+ 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
+ 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a,
+ 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
+ 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b,
+ 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf,
+ 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5,
+ 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4,
+ 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164,
+ 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e,
+ 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f,
+ 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f,
+ 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
+ 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df,
+ 0x775b, 0x776b, 0x7766, 0x775e, 0x7763,
+ /* 0xb8 */
+ 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
+ 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
+ 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
+ 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
+ 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
+ 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
+ 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
+ 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179,
+ 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431,
+ 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435,
+ 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f,
+ 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702,
+ 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
+ 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3,
+ 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c,
+ 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c,
+ 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca,
+ 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1,
+ 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6,
+ 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a,
+ /* 0xb9 */
+ 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
+ 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
+ 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
+ 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
+ 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
+ 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
+ 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
+ 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
+ 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e,
+ 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da,
+ 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3,
+ 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617,
+ 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616,
+ 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e,
+ 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925,
+ 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7,
+ 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
+ 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84,
+ 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6,
+ 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147,
+ /* 0xba */
+ 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
+ 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
+ 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
+ 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
+ 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
+ 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
+ 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
+ 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff,
+ 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b,
+ 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7,
+ 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292,
+ 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
+ 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1,
+ 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7,
+ 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31,
+ 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75,
+ 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9,
+ 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0,
+ 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5,
+ 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac,
+ /* 0xbb */
+ 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
+ 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
+ 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
+ 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
+ 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
+ 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
+ 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
+ 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa,
+ 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d,
+ 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc,
+ 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c,
+ 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118,
+ 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285,
+ 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291,
+ 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c,
+ 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817,
+ 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
+ 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3,
+ 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9,
+ 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc,
+ /* 0xbc */
+ 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
+ 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
+ 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
+ 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
+ 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
+ 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
+ 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
+ 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c,
+ 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac,
+ 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479,
+ 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495,
+ 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
+ 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4,
+ 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd,
+ 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11,
+ 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84,
+ 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e,
+ 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f,
+ 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b,
+ 0x734e, 0x7357, 0x7469, 0x748b, 0x7483,
+ /* 0xbd */
+ 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
+ 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
+ 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
+ 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
+ 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
+ 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
+ 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
+ 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9,
+ 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517,
+ 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523,
+ 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774,
+ 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c,
+ 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915,
+ 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8,
+ 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6,
+ 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
+ 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1,
+ 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f,
+ 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f,
+ 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e,
+ /* 0xbe */
+ 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
+ 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
+ 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
+ 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
+ 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
+ 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
+ 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
+ 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03,
+ 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114,
+ 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
+ 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668,
+ 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be,
+ 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e,
+ 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be,
+ 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc,
+ 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4,
+ 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8,
+ 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44,
+ 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
+ 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1,
+ /* 0xbf */
+ 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
+ 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
+ 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
+ 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
+ 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
+ 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
+ 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
+ 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11,
+ 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79,
+ 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8,
+ 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568,
+ 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f,
+ 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b,
+ 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
+ 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed,
+ 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44,
+ 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38,
+ 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c,
+ 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f,
+ 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
+ /* 0xc0 */
+ 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
+ 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
+ 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
+ 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
+ 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
+ 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
+ 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
+ 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f,
+ 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
+ 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c,
+ 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234,
+ 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1,
+ 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94,
+ 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90,
+ 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf,
+ 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1,
+ 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6,
+ 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
+ 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c,
+ 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac,
+ /* 0xc1 */
+ 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
+ 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
+ 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
+ 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
+ 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
+ 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
+ 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
+ 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584,
+ 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8,
+ 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab,
+ 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938,
+ 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20,
+ 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd,
+ 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
+ 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084,
+ 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d,
+ 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e,
+ 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc,
+ 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0,
+ 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
+ /* 0xc2 */
+ 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
+ 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
+ 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
+ 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
+ 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
+ 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
+ 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
+ 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652,
+ 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
+ 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23,
+ 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52,
+ 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf,
+ 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba,
+ 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2,
+ 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59,
+ 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d,
+ 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
+ 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a,
+ 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9,
+ 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6,
+ /* 0xc3 */
+ 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
+ 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
+ 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
+ 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
+ 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
+ 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
+ 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
+ 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a,
+ 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7,
+ 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d,
+ 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85,
+ 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea,
+ 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
+ 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58,
+ 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a,
+ 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54,
+ 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1,
+ 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd,
+ 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a,
+ 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e,
+ /* 0xc4 */
+ 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
+ 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
+ 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
+ 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
+ 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
+ 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
+ 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
+ 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82,
+ 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa,
+ 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba,
+ 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f,
+ 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418,
+ 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8,
+ 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5,
+ 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1,
+ 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
+ 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c,
+ 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f,
+ 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821,
+ 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74,
+ /* 0xc5 */
+ 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
+ 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
+ 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
+ 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
+ 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
+ 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
+ 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
+ 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3,
+ 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc,
+ 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444,
+ 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
+ 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b,
+ 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6,
+ 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca,
+ 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638,
+ 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464,
+ 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4,
+ 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1,
+ 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88,
+ 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92,
+ /* 0xc6 */
+ 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
+ 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
+ 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
+ 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
+ 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
+ 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
+ 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
+ 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x30fe,
+ 0x309d, 0x309e, 0x3005, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045,
+ 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d,
+ 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055,
+ 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d,
+ 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065,
+ 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d,
+ 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075,
+ 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d,
+ 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085,
+ 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d,
+ 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2,
+ 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+ /* 0xc7 */
+ 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
+ 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
+ 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
+ 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
+ 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+ 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
+ 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
+ 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+ 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
+ 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0414,
+ 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b,
+ 0x041c, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429,
+ 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431,
+ 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438,
+ 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440,
+ 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
+ 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x2460,
+ 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
+ 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
+ 0x247b, 0x247c, 0x247d,
+};
+static const unsigned short big5_2uni_pagec9[7652] = {
+ /* 0xc9 */
+ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
+ 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
+ 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
+ 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
+ 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
+ 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
+ 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
+ 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36,
+ 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a,
+ 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00,
+ 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04,
+ 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322,
+ 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a,
+ 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977,
+ 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
+ 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4,
+ 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
+ 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738,
+ 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52,
+ 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b,
+ /* 0xca */
+ 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
+ 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
+ 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
+ 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
+ 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
+ 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
+ 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
+ 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d,
+ 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5,
+ 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940,
+ 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
+ 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f,
+ 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95,
+ 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d,
+ 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed,
+ 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef,
+ 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e,
+ 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281,
+ 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4,
+ 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747,
+ /* 0xcb */
+ 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
+ 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
+ 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
+ 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
+ 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
+ 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
+ 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
+ 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a,
+ 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5,
+ 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33,
+ 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74,
+ 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79,
+ 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82,
+ 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
+ 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392,
+ 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b,
+ 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f,
+ 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9,
+ 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780,
+ 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
+ /* 0xcc */
+ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
+ 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
+ 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
+ 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
+ 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
+ 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
+ 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
+ 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034,
+ 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
+ 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214,
+ 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca,
+ 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d,
+ 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb,
+ 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6,
+ 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798,
+ 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791,
+ 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25,
+ 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
+ 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2,
+ 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2,
+ /* 0xcd */
+ 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
+ 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
+ 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+ 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
+ 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
+ 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
+ 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
+ 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7,
+ 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd,
+ 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220,
+ 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7,
+ 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9,
+ 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
+ 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5,
+ 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d,
+ 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9,
+ 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb,
+ 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249,
+ 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398,
+ 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf,
+ /* 0xce */
+ 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
+ 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
+ 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
+ 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
+ 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
+ 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
+ 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
+ 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
+ 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf,
+ 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22,
+ 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3,
+ 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054,
+ 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c,
+ 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e,
+ 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303,
+ 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313,
+ 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
+ 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622,
+ 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f,
+ 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba,
+ /* 0xcf */
+ 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
+ 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
+ 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
+ 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
+ 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
+ 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
+ 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
+ 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01,
+ 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c,
+ 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1,
+ 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a,
+ 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
+ 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8,
+ 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7,
+ 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e,
+ 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703,
+ 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8,
+ 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809,
+ 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5,
+ 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80,
+ /* 0xd0 */
+ 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
+ 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
+ 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
+ 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
+ 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
+ 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
+ 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
+ 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4,
+ 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673,
+ 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07,
+ 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf,
+ 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3,
+ 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005,
+ 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033,
+ 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027,
+ 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
+ 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e,
+ 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2,
+ 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504,
+ 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1,
+ /* 0xd1 */
+ 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
+ 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
+ 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
+ 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
+ 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
+ 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
+ 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
+ 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041,
+ 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095,
+ 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2,
+ 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
+ 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358,
+ 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338,
+ 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4,
+ 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f,
+ 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816,
+ 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844,
+ 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d,
+ 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34,
+ 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4,
+ /* 0xd2 */
+ 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
+ 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
+ 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
+ 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
+ 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
+ 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
+ 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
+ 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277,
+ 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb,
+ 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3,
+ 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7,
+ 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b,
+ 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6,
+ 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712,
+ 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
+ 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821,
+ 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c,
+ 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed,
+ 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b,
+ 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10,
+ /* 0xd3 */
+ 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
+ 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
+ 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
+ 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
+ 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
+ 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
+ 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
+ 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342,
+ 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324,
+ 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
+ 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2,
+ 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686,
+ 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695,
+ 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d,
+ 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883,
+ 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4,
+ 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3,
+ 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6,
+ 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
+ 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150,
+ /* 0xd4 */
+ 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
+ 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
+ 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
+ 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
+ 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
+ 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
+ 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
+ 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c,
+ 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540,
+ 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc,
+ 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3,
+ 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1,
+ 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9,
+ 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
+ 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c,
+ 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b,
+ 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69,
+ 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1,
+ 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c,
+ 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
+ /* 0xd5 */
+ 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
+ 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
+ 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
+ 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
+ 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
+ 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
+ 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
+ 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378,
+ 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
+ 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887,
+ 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f,
+ 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877,
+ 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e,
+ 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b,
+ 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38,
+ 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab,
+ 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6,
+ 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
+ 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0,
+ 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9,
+ /* 0xd6 */
+ 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
+ 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
+ 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
+ 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
+ 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
+ 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
+ 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
+ 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb,
+ 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f,
+ 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b,
+ 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826,
+ 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b,
+ 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
+ 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24,
+ 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f,
+ 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3,
+ 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29,
+ 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63,
+ 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0,
+ 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f,
+ /* 0xd7 */
+ 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
+ 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
+ 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
+ 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
+ 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
+ 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
+ 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
+ 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2,
+ 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8,
+ 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852,
+ 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1,
+ 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac,
+ 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30,
+ 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d,
+ 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf,
+ 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
+ 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea,
+ 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9,
+ 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1,
+ 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea,
+ /* 0xd8 */
+ 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
+ 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
+ 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
+ 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
+ 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
+ 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
+ 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
+ 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819,
+ 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c,
+ 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d,
+ 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
+ 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae,
+ 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b,
+ 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd,
+ 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37,
+ 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e,
+ 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42,
+ 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45,
+ 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9,
+ 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114,
+ /* 0xd9 */
+ 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
+ 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
+ 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
+ 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
+ 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
+ 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
+ 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
+ 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c,
+ 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701,
+ 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1,
+ 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910,
+ 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911,
+ 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8,
+ 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6,
+ 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
+ 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95,
+ 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47,
+ 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b,
+ 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40,
+ 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e,
+ /* 0xda */
+ 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
+ 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
+ 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
+ 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
+ 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
+ 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
+ 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
+ 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a,
+ 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420,
+ 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
+ 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da,
+ 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b,
+ 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d,
+ 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862,
+ 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c,
+ 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48,
+ 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8,
+ 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a,
+ 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
+ 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65,
+ /* 0xdb */
+ 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
+ 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
+ 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
+ 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
+ 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
+ 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
+ 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
+ 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5,
+ 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee,
+ 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8,
+ 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb,
+ 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856,
+ 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6,
+ 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998,
+ 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
+ 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51,
+ 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe,
+ 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3,
+ 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8,
+ 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa,
+ /* 0xdc */
+ 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
+ 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
+ 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
+ 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
+ 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
+ 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
+ 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
+ 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689,
+ 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c,
+ 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
+ 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca,
+ 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb,
+ 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c,
+ 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0,
+ 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5,
+ 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714,
+ 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855,
+ 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871,
+ 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
+ 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6,
+ /* 0xdd */
+ 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
+ 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
+ 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
+ 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
+ 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
+ 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
+ 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
+ 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433,
+ 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
+ 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a,
+ 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e,
+ 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695,
+ 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966,
+ 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
+ 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935,
+ 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969,
+ 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c,
+ 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952,
+ 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48,
+ 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc,
+ /* 0xde */
+ 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
+ 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
+ 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
+ 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
+ 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
+ 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
+ 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
+ 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
+ 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e,
+ 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444,
+ 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450,
+ 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe,
+ 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603,
+ 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6,
+ 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f,
+ 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759,
+ 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
+ 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896,
+ 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19,
+ 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13,
+ /* 0xdf */
+ 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
+ 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
+ 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
+ 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
+ 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
+ 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
+ 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
+ 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144,
+ 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1,
+ 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451,
+ 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459,
+ 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
+ 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b,
+ 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c,
+ 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433,
+ 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450,
+ 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d,
+ 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6,
+ 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0,
+ 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4,
+ /* 0xe0 */
+ 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
+ 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
+ 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
+ 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
+ 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
+ 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
+ 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
+ 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044,
+ 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114,
+ 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a,
+ 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246,
+ 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261,
+ 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253,
+ 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692,
+ 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5,
+ 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
+ 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab,
+ 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4,
+ 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3,
+ 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0,
+ /* 0xe1 */
+ 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
+ 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
+ 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
+ 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
+ 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
+ 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
+ 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
+ 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3,
+ 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77,
+ 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f,
+ 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
+ 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6,
+ 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153,
+ 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165,
+ 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b,
+ 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d,
+ 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b,
+ 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459,
+ 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705,
+ 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9,
+ /* 0xe2 */
+ 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
+ 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
+ 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
+ 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
+ 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
+ 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
+ 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
+ 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36,
+ 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35,
+ 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39,
+ 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21,
+ 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b,
+ 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293,
+ 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475,
+ 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
+ 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8,
+ 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e,
+ 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab,
+ 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a,
+ 0x798b, 0x7996, 0x7995, 0x7994, 0x7993,
+ /* 0xe3 */
+ 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
+ 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
+ 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
+ 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
+ 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
+ 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
+ 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
+ 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024,
+ 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c,
+ 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
+ 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd,
+ 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2,
+ 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6,
+ 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db,
+ 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740,
+ 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741,
+ 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712,
+ 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724,
+ 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
+ 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb,
+ /* 0xe4 */
+ 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
+ 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
+ 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
+ 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
+ 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
+ 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
+ 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
+ 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6,
+ 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e,
+ 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286,
+ 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b,
+ 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e,
+ 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce,
+ 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
+ 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7,
+ 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f,
+ 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8,
+ 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a,
+ 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635,
+ 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
+ /* 0xe5 */
+ 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
+ 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
+ 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
+ 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
+ 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
+ 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
+ 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
+ 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b,
+ 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
+ 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485,
+ 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f,
+ 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2,
+ 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af,
+ 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4,
+ 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27,
+ 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6,
+ 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25,
+ 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
+ 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41,
+ 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92,
+ /* 0xe6 */
+ 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
+ 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
+ 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
+ 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
+ 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
+ 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
+ 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
+ 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362,
+ 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488,
+ 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619,
+ 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d,
+ 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb,
+ 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
+ 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76,
+ 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac,
+ 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc,
+ 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03,
+ 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76,
+ 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6,
+ 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f,
+ /* 0xe7 */
+ 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
+ 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
+ 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
+ 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
+ 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
+ 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
+ 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
+ 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
+ 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b,
+ 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750,
+ 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c,
+ 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a,
+ 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906,
+ 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed,
+ 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4,
+ 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3,
+ 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
+ 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1,
+ 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b,
+ 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27,
+ /* 0xe8 */
+ 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
+ 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
+ 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
+ 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
+ 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
+ 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
+ 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
+ 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5,
+ 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0,
+ 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a,
+ 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829,
+ 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911,
+ 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
+ 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc,
+ 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43,
+ 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68,
+ 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07,
+ 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3,
+ 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de,
+ 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e,
+ /* 0xe9 */
+ 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
+ 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
+ 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
+ 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
+ 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
+ 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
+ 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
+ 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf,
+ 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
+ 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c,
+ 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd,
+ 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67,
+ 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51,
+ 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50,
+ 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56,
+ 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7,
+ 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad,
+ 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
+ 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba,
+ 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8,
+ /* 0xea */
+ 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
+ 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
+ 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
+ 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
+ 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
+ 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
+ 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
+ 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797,
+ 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1,
+ 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47,
+ 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7,
+ 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea,
+ 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
+ 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20,
+ 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f,
+ 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c,
+ 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6,
+ 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2,
+ 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545,
+ 0x856b, 0x854d, 0x8553, 0x8561, 0x8558,
+ /* 0xeb */
+ 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
+ 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
+ 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
+ 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
+ 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
+ 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
+ 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
+ 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2,
+ 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
+ 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91,
+ 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c,
+ 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45,
+ 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36,
+ 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079,
+ 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190,
+ 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306,
+ 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301,
+ 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325,
+ 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329,
+ 0x9339, 0x9335, 0x932a, 0x9314, 0x930c,
+ /* 0xec */
+ 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
+ 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
+ 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
+ 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
+ 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
+ 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
+ 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
+ 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d,
+ 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d,
+ 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87,
+ 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126,
+ 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
+ 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681,
+ 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23,
+ 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2,
+ 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc,
+ 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9,
+ 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da,
+ 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b,
+ 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e,
+ /* 0xed */
+ 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
+ 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
+ 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
+ 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
+ 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
+ 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
+ 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+ 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4,
+ 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc,
+ 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c,
+ 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1,
+ 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4,
+ 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd,
+ 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c,
+ 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47,
+ 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
+ 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4,
+ 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a,
+ 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b,
+ 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e,
+ /* 0xee */
+ 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
+ 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
+ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
+ 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
+ 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
+ 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
+ 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
+ 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18,
+ 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15,
+ 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f,
+ 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
+ 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40,
+ 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f,
+ 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356,
+ 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351,
+ 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355,
+ 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363,
+ 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3,
+ 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
+ 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c,
+ /* 0xef */
+ 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
+ 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
+ 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
+ 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
+ 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
+ 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
+ 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
+ 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45,
+ 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d,
+ 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff,
+ 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e,
+ 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c,
+ 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed,
+ 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
+ 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db,
+ 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6,
+ 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9,
+ 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e,
+ 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201,
+ 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
+ /* 0xf0 */
+ 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
+ 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
+ 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
+ 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
+ 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
+ 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
+ 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
+ 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
+ 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3,
+ 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8,
+ 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be,
+ 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5,
+ 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8,
+ 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd,
+ 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949,
+ 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
+ 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e,
+ 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98,
+ 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60,
+ 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67,
+ /* 0xf1 */
+ 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
+ 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
+ 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
+ 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
+ 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
+ 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
+ 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
+ 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2,
+ 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851,
+ 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09,
+ 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
+ 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c,
+ 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8,
+ 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f,
+ 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52,
+ 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01,
+ 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c,
+ 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad,
+ 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912,
+ 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70,
+ /* 0xf2 */
+ 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
+ 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
+ 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
+ 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
+ 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
+ 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
+ 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
+ 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921,
+ 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c,
+ 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78,
+ 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b,
+ 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7,
+ 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9,
+ 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8,
+ 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
+ 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c,
+ 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962,
+ 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959,
+ 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40,
+ 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55,
+ /* 0xf3 */
+ 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
+ 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
+ 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
+ 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
+ 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
+ 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
+ 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
+ 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3,
+ 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d,
+ 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943,
+ 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
+ 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2,
+ 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0,
+ 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec,
+ 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81,
+ 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b,
+ 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85,
+ 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68,
+ 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d,
+ 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2,
+ /* 0xf4 */
+ 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
+ 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
+ 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
+ 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
+ 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
+ 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
+ 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
+ 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2,
+ 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47,
+ 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff,
+ 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff,
+ 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605,
+ 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816,
+ 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68,
+ 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
+ 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143,
+ 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb,
+ 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419,
+ 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412,
+ 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff,
+ /* 0xf5 */
+ 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
+ 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
+ 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
+ 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
+ 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
+ 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
+ 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
+ 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0,
+ 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8,
+ 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99,
+ 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
+ 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139,
+ 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb,
+ 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8,
+ 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046,
+ 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d,
+ 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88,
+ 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618,
+ 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e,
+ 0x8621, 0x8620, 0x8629, 0x861e, 0x8625,
+ /* 0xf6 */
+ 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
+ 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
+ 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
+ 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
+ 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
+ 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
+ 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
+ 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f,
+ 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b,
+ 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21,
+ 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe,
+ 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac,
+ 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a,
+ 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
+ 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb,
+ 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520,
+ 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056,
+ 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5,
+ 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71,
+ 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
+ /* 0xf7 */
+ 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
+ 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
+ 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
+ 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
+ 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
+ 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
+ 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
+ 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49,
+ 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
+ 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c,
+ 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde,
+ 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9,
+ 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35,
+ 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299,
+ 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201,
+ 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12,
+ 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383,
+ 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
+ 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e,
+ 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe,
+ /* 0xf8 */
+ 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
+ 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
+ 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
+ 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
+ 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
+ 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
+ 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
+ 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71,
+ 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d,
+ 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223,
+ 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97,
+ 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94,
+ 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
+ 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7,
+ 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62,
+ 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05,
+ 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e,
+ 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18,
+ 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9,
+ 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a,
+ /* 0xf9 */
+ 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
+ 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
+ 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
+ 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
+ 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
+ 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
+ 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
+ 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4,
+ 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
+ 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961,
+ 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48,
+ 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481,
+ 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483,
+ 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a,
+ 0x9ea4, 0x9f7e, 0x9f49, 0x9f98,
+};
+
+static int
+big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if ((c1 >= 0xa1 && c1 <= 0xc7) || (c1 >= 0xc9 && c1 <= 0xf9)) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
+ unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
+ unsigned short wc = 0xfffd;
+ if (i < 6280) {
+ if (i < 6121)
+ wc = big5_2uni_pagea1[i];
+ } else {
+ if (i < 13932)
+ wc = big5_2uni_pagec9[i-6280];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short big5_2charset[13703] = {
+ 0xa246, 0xa247, 0xa244, 0xa1b1, 0xa258, 0xa1d3, 0xa150, 0xa1d1,
+ 0xa1d2, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa3bb, 0xa344, 0xa345,
+ 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, 0xa34d,
+ 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352, 0xa353, 0xa354, 0xa355,
+ 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d,
+ 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362, 0xa363, 0xa364, 0xa365,
+ 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d,
+ 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372, 0xa373, 0xc7b3, 0xc7b1,
+ 0xc7b2, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba,
+ 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2,
+ 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca,
+ 0xc7cb, 0xc7cc, 0xc7cd, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3,
+ 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db,
+ 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3,
+ 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7ce, 0xa156, 0xa158,
+ 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145, 0xa14c, 0xa14b, 0xa1ac,
+ 0xa1ab, 0xa1b0, 0xa1c2, 0xa24a, 0xa1c1, 0xa24b, 0xa2b9, 0xa2ba,
+ 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2,
+ 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9, 0xa1fb, 0xa1fa,
+ 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5,
+ 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1e3, 0xa1dc, 0xa1da, 0xa1dd,
+ 0xa1d8, 0xa1d9, 0xa1e6, 0xa1e9, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec,
+ 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4,
+ 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc,
+ 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa275, 0xa274,
+ 0xa273, 0xa272, 0xa271, 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa27e,
+ 0xa2a1, 0xa2a3, 0xa2a2, 0xa2ac, 0xa2ad, 0xa2ae, 0xa262, 0xa263,
+ 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f,
+ 0xa26e, 0xa26d, 0xa26c, 0xa26b, 0xa26a, 0xa276, 0xa279, 0xa1bd,
+ 0xa1bc, 0xa1b6, 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3,
+ 0xa1b7, 0xa1b4, 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8,
+ 0xa1f3, 0xa1f0, 0xa1f2, 0xa1f1, 0xa140, 0xa142, 0xa143, 0xa1b2,
+ 0xc6a4, 0xa171, 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179,
+ 0xa17a, 0xa169, 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1a9, 0xa1aa,
+ 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca,
+ 0xa2cb, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab,
+ 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3,
+ 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb,
+ 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3,
+ 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb,
+ 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3,
+ 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db,
+ 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3,
+ 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb,
+ 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3,
+ 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6a2, 0xc6a3, 0xc6f8, 0xc6f9,
+ 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742,
+ 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a,
+ 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752,
+ 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a,
+ 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762,
+ 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a,
+ 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772,
+ 0xc773, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a,
+ 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
+ 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
+ 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc6a1, 0xa374, 0xa375, 0xa376,
+ 0xa377, 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e,
+ 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8,
+ 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0,
+ 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8,
+ 0xa3b9, 0xa3ba, 0xa1c0, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252,
+ 0xa254, 0xa257, 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0xa440, 0xa442,
+ 0xa443, 0xc945, 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3,
+ 0xc94f, 0xc94d, 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543,
+ 0xa4fe, 0xa5e0, 0xa5e1, 0xa8c3, 0xa458, 0xa4a4, 0xc950, 0xa4a5,
+ 0xc963, 0xa6ea, 0xcbb1, 0xa459, 0xa4a6, 0xa544, 0xc964, 0xc940,
+ 0xa444, 0xa45b, 0xc947, 0xa45c, 0xa4a7, 0xa545, 0xa547, 0xa546,
+ 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441, 0xc941, 0xa445, 0xa45e,
+ 0xa45d, 0xa5e4, 0xa8c5, 0xb0ae, 0xd44b, 0xb6c3, 0xdcb1, 0xdcb2,
+ 0xa446, 0xa4a9, 0xa8c6, 0xa447, 0xc948, 0xa45f, 0xa4aa, 0xa4ac,
+ 0xc951, 0xa4ad, 0xa4ab, 0xa5e5, 0xa8c7, 0xa8c8, 0xab45, 0xa460,
+ 0xa4ae, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46,
+ 0xab47, 0xadbd, 0xdcb3, 0xf6d6, 0xa448, 0xa4b0, 0xa4af, 0xc952,
+ 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3, 0xc954, 0xc953, 0xa4b5, 0xa4b6,
+ 0xa4b4, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a,
+ 0xc966, 0xc969, 0xa551, 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548,
+ 0xc965, 0xc967, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae,
+ 0xa5f3, 0xc9b2, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8, 0xc9b5,
+ 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9, 0xa5ee, 0xc9ab,
+ 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af, 0xa5ed, 0xc9ac,
+ 0xa5eb, 0xc9b4, 0xc9b7, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0xca67,
+ 0xa6f1, 0xa744, 0xa6f9, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7, 0xca60,
+ 0xca68, 0xca64, 0xa6fa, 0xa6fd, 0xa6ee, 0xa747, 0xca5d, 0xcbbd,
+ 0xa6ec, 0xa743, 0xa6ed, 0xa6f5, 0xa6f6, 0xca62, 0xca5e, 0xa6fb,
+ 0xa6f3, 0xca5a, 0xa6ef, 0xca65, 0xa745, 0xa748, 0xa6f2, 0xa740,
+ 0xa746, 0xa6f0, 0xca63, 0xa741, 0xca69, 0xca5c, 0xa6fe, 0xca5f,
+ 0xca61, 0xa8d8, 0xcbbf, 0xcbcb, 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5,
+ 0xa8ce, 0xcbb9, 0xa8d6, 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de,
+ 0xa8d9, 0xcbb3, 0xcbb5, 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9,
+ 0xa8d4, 0xcbbb, 0xcbb4, 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0xa8d2,
+ 0xa8cd, 0xa8dc, 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da,
+ 0xcbbe, 0xcbb2, 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0xab56,
+ 0xab4a, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d, 0xcdee, 0xcdec,
+ 0xcde7, 0xab4b, 0xcded, 0xcde3, 0xab59, 0xab50, 0xab58, 0xcdde,
+ 0xcdea, 0xcde1, 0xab54, 0xcde2, 0xcddd, 0xab5b, 0xab4e, 0xab57,
+ 0xab4d, 0xcddf, 0xcde4, 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a,
+ 0xcde9, 0xcde5, 0xab4f, 0xab5c, 0xab53, 0xab4c, 0xab48, 0xcdef,
+ 0xadd7, 0xadc1, 0xadd1, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4, 0xd0d5,
+ 0xadc4, 0xadcd, 0xadda, 0xadce, 0xd0c9, 0xadc7, 0xd0ca, 0xaddc,
+ 0xadd3, 0xadbe, 0xadbf, 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb,
+ 0xadcf, 0xd45b, 0xadc6, 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce,
+ 0xd0d7, 0xd0c8, 0xadc9, 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3,
+ 0xadc2, 0xd0d9, 0xadd0, 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8,
+ 0xd0db, 0xd0cd, 0xd0dc, 0xd0d1, 0xd0da, 0xd0d2, 0xadc8, 0xd463,
+ 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459,
+ 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba,
+ 0xd466, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f, 0xd45d, 0xd450,
+ 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0xd85b, 0xd45e, 0xd44d,
+ 0xd45f, 0xb0c1, 0xd464, 0xb0c0, 0xd44c, 0xd454, 0xd465, 0xb0bc,
+ 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af, 0xb0b0, 0xb3c8, 0xd85e, 0xd857,
+ 0xb3c5, 0xd85f, 0xd855, 0xd858, 0xb3c4, 0xd859, 0xb3c7, 0xd85d,
+ 0xd853, 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c,
+ 0xd85a, 0xd854, 0xb3c3, 0xd856, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
+ 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
+ 0xdcc4, 0xdcbf, 0xb6cc, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe, 0xdcbc,
+ 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9, 0xdcc1,
+ 0xb9b6, 0xb9b3, 0xb9b4, 0xe0f9, 0xe0f1, 0xb9b2, 0xb9af, 0xe0f2,
+ 0xb9b1, 0xe0f5, 0xe0f7, 0xe0fe, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0,
+ 0xb9ac, 0xe0f3, 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc,
+ 0xe0fb, 0xb9b5, 0xe0f4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7,
+ 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xbbfa, 0xe4e7, 0xbbf5, 0xbbfd,
+ 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef, 0xbeaa,
+ 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab, 0xe8f6, 0xbea8, 0xe8f7,
+ 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb, 0xecbc, 0xecba, 0xecb9,
+ 0xecbe, 0xc075, 0xefb8, 0xefb9, 0xe4e8, 0xefb7, 0xc078, 0xc35f,
+ 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8, 0xf5c1, 0xf5c0, 0xc56c, 0xc56b,
+ 0xf7d0, 0xa449, 0xa461, 0xa4b9, 0xa4b8, 0xa553, 0xa552, 0xa5fc,
+ 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a, 0xa749, 0xa74b, 0xa8e0, 0xa8df,
+ 0xa8e1, 0xab5e, 0xa259, 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b,
+ 0xd860, 0xa25d, 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2,
+ 0xa44b, 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0xa74c, 0xa8e4, 0xa8e3,
+ 0xa8e5, 0xaddd, 0xbeac, 0xc94e, 0xa554, 0xa555, 0xa641, 0xca6a,
+ 0xab60, 0xab5f, 0xd0e0, 0xd0df, 0xb0c3, 0xa4be, 0xc955, 0xcbcd,
+ 0xab61, 0xade0, 0xadde, 0xaddf, 0xbead, 0xa556, 0xa642, 0xc9bc,
+ 0xa74d, 0xa74e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0xd0e2, 0xd0e3,
+ 0xade3, 0xd0e4, 0xd0e1, 0xade4, 0xade2, 0xade1, 0xd0e5, 0xd468,
+ 0xd861, 0xdcc5, 0xe140, 0xbbfe, 0xbeae, 0xe8f9, 0xa44c, 0xa45a,
+ 0xb0c4, 0xb3cd, 0xb9b9, 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558,
+ 0xa8e7, 0xa44d, 0xa44e, 0xa462, 0xa4c0, 0xa4c1, 0xa4c2, 0xc9be,
+ 0xa55a, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645, 0xc9bd, 0xa647,
+ 0xa643, 0xca6c, 0xaaec, 0xca6d, 0xca6e, 0xa750, 0xa74f, 0xa753,
+ 0xa751, 0xa752, 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0xcbd0,
+ 0xa8ee, 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xa8ef, 0xab63, 0xcdf0,
+ 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62,
+ 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xd0e7, 0xade8, 0xade6, 0xade9,
+ 0xd0e9, 0xd0ea, 0xd0e6, 0xd0ec, 0xb3d1, 0xb0c5, 0xd469, 0xd46b,
+ 0xd46a, 0xd46c, 0xb0c6, 0xb3ce, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7,
+ 0xdcc6, 0xdcc8, 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb,
+ 0xb9ba, 0xe35a, 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3,
+ 0xbc43, 0xbeaf, 0xbeb0, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1, 0xa44f,
+ 0xa55c, 0xa55b, 0xa648, 0xc9c0, 0xa755, 0xa756, 0xa754, 0xa757,
+ 0xca6f, 0xca70, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3,
+ 0xab6b, 0xab69, 0xab6a, 0xd0ed, 0xb0c7, 0xd46e, 0xb0ca, 0xd46d,
+ 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3, 0xb3d2, 0xb6d2, 0xb6d5,
+ 0xb6d6, 0xb6d4, 0xb6d3, 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4,
+ 0xbeb1, 0xecbf, 0xc079, 0xf1ee, 0xc455, 0xa463, 0xa4c3, 0xc956,
+ 0xa4c4, 0xa4c5, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7,
+ 0xab6d, 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6,
+ 0xa55f, 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a,
+ 0xc9c1, 0xa758, 0xadea, 0xd46f, 0xb6d7, 0xe145, 0xb9bc, 0xe8fa,
+ 0xf3fd, 0xa4c7, 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451,
+ 0xa464, 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d,
+ 0xc9c3, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452,
+ 0xa4cb, 0xa565, 0xa564, 0xca72, 0xa8f6, 0xc957, 0xa567, 0xa566,
+ 0xa64c, 0xa64d, 0xca73, 0xa759, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9,
+ 0xab6f, 0xcdf5, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74, 0xca75,
+ 0xcbd9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8, 0xab70, 0xd470,
+ 0xaded, 0xd0ef, 0xadec, 0xd864, 0xb3d6, 0xd865, 0xe146, 0xb9bd,
+ 0xbc46, 0xf1ef, 0xc958, 0xa568, 0xb0d1, 0xa453, 0xa465, 0xa4ce,
+ 0xa4cd, 0xa4cf, 0xa8fb, 0xa8fa, 0xa8fc, 0xab71, 0xadee, 0xe8fb,
+ 0xc24f, 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575,
+ 0xa573, 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576,
+ 0xa56b, 0xa572, 0xa571, 0xa57b, 0xa570, 0xa653, 0xa659, 0xa655,
+ 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654, 0xa650, 0xa657,
+ 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xca7e, 0xca7b, 0xa767,
+ 0xca7c, 0xa75b, 0xa75d, 0xa775, 0xa770, 0xcaa5, 0xca7d, 0xa75f,
+ 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d,
+ 0xca76, 0xa773, 0xa764, 0xa76e, 0xa76f, 0xca77, 0xa76c, 0xa76a,
+ 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772, 0xcaa3, 0xa766, 0xa763,
+ 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769, 0xa760, 0xcaa2, 0xca79,
+ 0xcbeb, 0xcbea, 0xa94f, 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee,
+ 0xa950, 0xcbe1, 0xcbe5, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd,
+ 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949,
+ 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0xa948,
+ 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xa94a, 0xcbde,
+ 0xa947, 0xa942, 0xa940, 0xcbec, 0xa94e, 0xce48, 0xcdfb, 0xce4b,
+ 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4, 0xab72,
+ 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0xab79, 0xce45, 0xce42,
+ 0xab77, 0xcdfa, 0xaba6, 0xce4a, 0xab7c, 0xce4c, 0xaba9, 0xab73,
+ 0xab7e, 0xab7b, 0xce40, 0xaba1, 0xce46, 0xce47, 0xab7a, 0xaba2,
+ 0xab76, 0xab75, 0xcdfe, 0xce44, 0xce4e, 0xd144, 0xadfb, 0xd0f1,
+ 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9, 0xadfe, 0xd0fb,
+ 0xadfa, 0xadfd, 0xd0fe, 0xadf5, 0xd0f5, 0xd142, 0xd143, 0xadf7,
+ 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1, 0xd146, 0xd0f9, 0xd0fd,
+ 0xadf6, 0xae42, 0xd0fa, 0xadfc, 0xd140, 0xd147, 0xd4a1, 0xd145,
+ 0xae44, 0xadf0, 0xd0fc, 0xd0f3, 0xadf8, 0xd0f2, 0xd0f7, 0xd0f0,
+ 0xae41, 0xd477, 0xb0e4, 0xd4a7, 0xb0e2, 0xb0df, 0xd47c, 0xb0db,
+ 0xd4a2, 0xb0e6, 0xd476, 0xd47b, 0xd47a, 0xadf2, 0xb0e1, 0xd4a5,
+ 0xd4a8, 0xd473, 0xb3e8, 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e,
+ 0xb0d3, 0xd4a6, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475,
+ 0xd478, 0xd47d, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xb0d7, 0xb1d2,
+ 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0xb0d4, 0xd471,
+ 0xd472, 0xd86a, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8,
+ 0xd871, 0xb3de, 0xb3e4, 0xb5bd, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db,
+ 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0xd866, 0xd873, 0xd86d,
+ 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc, 0xb3e7,
+ 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9, 0xd867,
+ 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0xb3ed, 0xb3e9, 0xb3e5,
+ 0xd870, 0xb3eb, 0xdcd5, 0xdcd1, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5,
+ 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde,
+ 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9,
+ 0xdcdb, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0, 0xb6d8, 0xb6e4,
+ 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db, 0xa25f, 0xb6d9, 0xdcd4,
+ 0xb6e2, 0xdcdd, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0xe14b, 0xb9c2,
+ 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0xb9c4, 0xb9cb,
+ 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc, 0xe14a, 0xe14f,
+ 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0, 0xe14d, 0xe152, 0xb9ca,
+ 0xe147, 0xbc4d, 0xe547, 0xe544, 0xbc47, 0xbc53, 0xbc54, 0xbc4a,
+ 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xe546, 0xbc49, 0xe548, 0xbc48,
+ 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa, 0xe4f7, 0xd86b, 0xe4fd,
+ 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8, 0xbc4f, 0xbc4e, 0xbc50, 0xe4fe,
+ 0xbeb2, 0xe540, 0xe945, 0xe8fd, 0xbebe, 0xe942, 0xbeb6, 0xbeba,
+ 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3, 0xbebd, 0xe943, 0xe8fe,
+ 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940, 0xbc51, 0xbebf, 0xe946,
+ 0xbeb7, 0xbeb4, 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5,
+ 0xecc4, 0xc07d, 0xecc3, 0xc07e, 0xecc1, 0xecc2, 0xc07a, 0xc0a1,
+ 0xc07c, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf, 0xefbd, 0xefbb,
+ 0xefbe, 0xc360, 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5,
+ 0xf1f1, 0xc251, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
+ 0xc45a, 0xf5c5, 0xf5c6, 0xc4da, 0xc4d9, 0xc4db, 0xf5c4, 0xf6d8,
+ 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8, 0xf8a6, 0xc5f1,
+ 0xf8a5, 0xf8ee, 0xc949, 0xa57d, 0xa57c, 0xa65f, 0xa65e, 0xc9c7,
+ 0xa65d, 0xc9c6, 0xa779, 0xcaa9, 0xcaa8, 0xa777, 0xa77a, 0xcaa7,
+ 0xa778, 0xcbf0, 0xcbf1, 0xa954, 0xabaa, 0xd148, 0xd149, 0xae45,
+ 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c, 0xb3f2,
+ 0xb6e9, 0xb6ea, 0xdce1, 0xb9cf, 0xb9ce, 0xe549, 0xe948, 0xe947,
+ 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f, 0xa662, 0xa666, 0xc9c9,
+ 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661, 0xa660, 0xc9ca, 0xa7a6,
+ 0xa7a3, 0xa77d, 0xcaaa, 0xcaab, 0xa7a1, 0xcaad, 0xa77b, 0xcaae,
+ 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf, 0xa959,
+ 0xcbfe, 0xa95b, 0xa95a, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4,
+ 0xcbf2, 0xcbf7, 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8,
+ 0xa956, 0xcbfb, 0xa95c, 0xcc41, 0xcbf9, 0xabab, 0xa955, 0xabac,
+ 0xce54, 0xce5a, 0xabb2, 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b,
+ 0xce5d, 0xce57, 0xce56, 0xce51, 0xce52, 0xabad, 0xabaf, 0xabae,
+ 0xce53, 0xce5c, 0xabb1, 0xce50, 0xd153, 0xd152, 0xd157, 0xd14e,
+ 0xd151, 0xd150, 0xd154, 0xd158, 0xae47, 0xae4a, 0xd14f, 0xd155,
+ 0xae49, 0xd14a, 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c,
+ 0xd4b1, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1, 0xd4bf,
+ 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0xd4ca, 0xd4c8, 0xd4be,
+ 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5, 0xd4b7, 0xb0f6, 0xb0f2,
+ 0xd4ad, 0xd4c3, 0xd4b5, 0xd4b3, 0xd4c6, 0xb0f3, 0xd4cc, 0xb0ed,
+ 0xb0ef, 0xd4bb, 0xd4b6, 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb,
+ 0xd4c2, 0xd4c4, 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2,
+ 0xb3fb, 0xb3f9, 0xd8a4, 0xb3f6, 0xd8a8, 0xd8a3, 0xd8a5, 0xd87d,
+ 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b,
+ 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0xd8b3,
+ 0xdcef, 0xd8ac, 0xd8a7, 0xdce7, 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6,
+ 0xdcea, 0xdce5, 0xb6ec, 0xb6f6, 0xdce2, 0xb6f0, 0xdce9, 0xb6ee,
+ 0xb6ed, 0xdcec, 0xb6ef, 0xdcee, 0xdceb, 0xb6eb, 0xb6f5, 0xdcf0,
+ 0xdce4, 0xdced, 0xdce3, 0xb6f1, 0xb6f3, 0xdce8, 0xdcf1, 0xe15d,
+ 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157, 0xb9d7, 0xb9d1,
+ 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6, 0xe15a, 0xe160,
+ 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168, 0xe158, 0xe161,
+ 0xb9d3, 0xe167, 0xe159, 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d,
+ 0xe552, 0xe54e, 0xe551, 0xbc5c, 0xbea5, 0xbc5b, 0xe54a, 0xe550,
+ 0xbc5a, 0xe54f, 0xe54c, 0xbc58, 0xe94d, 0xe94f, 0xe94a, 0xbec1,
+ 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950, 0xbec2, 0xe949, 0xe94b,
+ 0xc0a5, 0xeccc, 0xc0a4, 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca,
+ 0xc253, 0xc252, 0xf1f6, 0xf1f8, 0xf1f7, 0xc361, 0xc362, 0xc363,
+ 0xf442, 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7,
+ 0xce5f, 0xb3fc, 0xb3fd, 0xdcf2, 0xb9d8, 0xe169, 0xe553, 0xc95a,
+ 0xcab0, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xf1f9, 0xc4dc, 0xa469,
+ 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xb0f7, 0xb9da, 0xb9db,
+ 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b, 0xa4d4, 0xa5a1,
+ 0xc971, 0xa5a2, 0xa669, 0xa66a, 0xc9cb, 0xa7a8, 0xcab1, 0xa961,
+ 0xcc43, 0xa95f, 0xa960, 0xa95e, 0xd15a, 0xabb6, 0xabb5, 0xabb7,
+ 0xabb4, 0xce61, 0xa962, 0xabb3, 0xae4d, 0xae4e, 0xae4f, 0xd4cd,
+ 0xb3fe, 0xd8b4, 0xb0f8, 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d,
+ 0xbec4, 0xefc0, 0xf6da, 0xf7d4, 0xa46b, 0xa5a3, 0xa5a4, 0xc9d1,
+ 0xa66c, 0xa66f, 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc,
+ 0xa671, 0xa670, 0xa66d, 0xa66b, 0xc9ce, 0xa7b3, 0xa7b0, 0xcab6,
+ 0xcab9, 0xcab8, 0xa7aa, 0xa7b2, 0xa7af, 0xcab5, 0xcab3, 0xa7ae,
+ 0xa7a9, 0xa7ac, 0xcab4, 0xcabb, 0xcab7, 0xa7ad, 0xa7b1, 0xa7b4,
+ 0xcab2, 0xcaba, 0xa7ab, 0xa967, 0xa96f, 0xcc4f, 0xcc48, 0xa970,
+ 0xcc53, 0xcc44, 0xcc4b, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50,
+ 0xa963, 0xcc51, 0xcc4a, 0xcc4d, 0xa972, 0xa969, 0xcc54, 0xcc52,
+ 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968,
+ 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xabc0, 0xce6f, 0xabb8,
+ 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe, 0xabc1,
+ 0xabbc, 0xce70, 0xabbf, 0xae56, 0xce76, 0xce64, 0xce66, 0xce6d,
+ 0xce71, 0xce75, 0xce72, 0xce6b, 0xce6e, 0xce68, 0xabc3, 0xce6a,
+ 0xce69, 0xce74, 0xabba, 0xce65, 0xabc2, 0xabbd, 0xae5c, 0xd162,
+ 0xae5b, 0xd160, 0xae50, 0xae55, 0xd15f, 0xd15c, 0xd161, 0xae51,
+ 0xd15b, 0xae54, 0xae52, 0xd163, 0xae53, 0xae57, 0xae58, 0xae5a,
+ 0xae59, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2, 0xd4d3,
+ 0xd4e6, 0xb140, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed, 0xd4dd, 0xd4e0,
+ 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144, 0xd4e7, 0xd4e5, 0xd4d6,
+ 0xd4eb, 0xd4df, 0xd4da, 0xd4d0, 0xd4ec, 0xd4dc, 0xd4cf, 0xb142,
+ 0xd4e1, 0xd4ee, 0xd4de, 0xd4d2, 0xd4d7, 0xd4ce, 0xb141, 0xd4db,
+ 0xd4d8, 0xb0fc, 0xd4d1, 0xd4e9, 0xb0fd, 0xd4d9, 0xd4d5, 0xd4e8,
+ 0xb440, 0xd8bb, 0xd8b8, 0xd8c9, 0xd8bd, 0xd8ca, 0xb442, 0xd8c6,
+ 0xd8c3, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47, 0xb443,
+ 0xd8ce, 0xd8b6, 0xd8c0, 0xd8c5, 0xb441, 0xb444, 0xd8cc, 0xd8cf,
+ 0xd8ba, 0xd8b7, 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xd8bf,
+ 0xd8c1, 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9,
+ 0xdd44, 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd,
+ 0xb6fc, 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0xdcf4, 0xdcfe, 0xdcf3,
+ 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0xe16e, 0xb9e2,
+ 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176, 0xe16b, 0xe179, 0xe178,
+ 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4, 0xe16d, 0xb9df, 0xe17b,
+ 0xb9e0, 0xe16f, 0xe172, 0xe177, 0xe171, 0xe16c, 0xe173, 0xe555,
+ 0xbc61, 0xe558, 0xe557, 0xe55a, 0xe55c, 0xbc5f, 0xe556, 0xe554,
+ 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60,
+ 0xbc62, 0xe560, 0xe957, 0xe956, 0xe955, 0xe958, 0xe951, 0xe952,
+ 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xe95b, 0xe954, 0xecd1, 0xc0a8,
+ 0xeccf, 0xecd4, 0xecd3, 0xe959, 0xc0a7, 0xecd2, 0xecce, 0xecd6,
+ 0xecd5, 0xc0a6, 0xecd0, 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb,
+ 0xf1fc, 0xc45c, 0xc45d, 0xf443, 0xf5c8, 0xf5c7, 0xf6db, 0xf6dc,
+ 0xf7d5, 0xf8a7, 0xa46c, 0xa46d, 0xa46e, 0xa4d5, 0xa5a5, 0xc9d3,
+ 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5, 0xa973, 0xcc55,
+ 0xa975, 0xa974, 0xcc56, 0xabc4, 0xae5d, 0xd165, 0xd4f0, 0xb145,
+ 0xb447, 0xd4ef, 0xb446, 0xb9e5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7,
+ 0xc45e, 0xc570, 0xc972, 0xa5a6, 0xc973, 0xa676, 0xa674, 0xa675,
+ 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0xcabd, 0xcc57, 0xcc58,
+ 0xa976, 0xa978, 0xa97a, 0xa977, 0xa97b, 0xa979, 0xabc8, 0xabc5,
+ 0xabc7, 0xabc9, 0xabc6, 0xd166, 0xce77, 0xd168, 0xd167, 0xae63,
+ 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a,
+ 0xd4f2, 0xd4f1, 0xb149, 0xb148, 0xb147, 0xb14b, 0xb146, 0xd8d5,
+ 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448, 0xb44a,
+ 0xd8d3, 0xdd48, 0xdd49, 0xdd4a, 0xb9e6, 0xb9ee, 0xe17e, 0xb9e8,
+ 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea, 0xb9e7, 0xb9eb, 0xbc66,
+ 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d, 0xbec8, 0xecd8, 0xecd9,
+ 0xc364, 0xc45f, 0xa46f, 0xa678, 0xabca, 0xd169, 0xae67, 0xb14e,
+ 0xb14d, 0xb14c, 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470,
+ 0xc95c, 0xa4d6, 0xc974, 0xc9d4, 0xa679, 0xa97c, 0xdd4b, 0xa471,
+ 0xa4d7, 0xc9d5, 0xcabe, 0xcabf, 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c,
+ 0xc0aa, 0xa472, 0xa4a8, 0xa4d8, 0xc975, 0xa5a7, 0xa7c0, 0xa7bf,
+ 0xa7bd, 0xa7be, 0xcc59, 0xa97e, 0xa9a1, 0xcc5a, 0xa97d, 0xabce,
+ 0xce78, 0xabcd, 0xabcb, 0xabcc, 0xae6a, 0xae68, 0xd16b, 0xae69,
+ 0xd16a, 0xae5e, 0xd4f3, 0xb150, 0xb151, 0xb14f, 0xb9f0, 0xe1a2,
+ 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8,
+ 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8,
+ 0xc9d6, 0xc9d9, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3, 0xa7c4,
+ 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3, 0xcac9,
+ 0xcc68, 0xcc62, 0xcc5d, 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69,
+ 0xcc6c, 0xcc67, 0xcc60, 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64,
+ 0xcc5b, 0xcc5f, 0xcc6b, 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2,
+ 0xa9a4, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b,
+ 0xceac, 0xcea9, 0xce79, 0xabd0, 0xcea7, 0xcea8, 0xcea6, 0xce7c,
+ 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0xae6f, 0xae6e,
+ 0xd16c, 0xae6b, 0xd16e, 0xae70, 0xd16f, 0xae73, 0xae71, 0xd170,
+ 0xceae, 0xd172, 0xae6d, 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153,
+ 0xb152, 0xd4f5, 0xd4f9, 0xd4fb, 0xb154, 0xd4fe, 0xb158, 0xd541,
+ 0xb15a, 0xb156, 0xb15e, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4,
+ 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
+ 0xd4fa, 0xb159, 0xd544, 0xd540, 0xd8e7, 0xd8ee, 0xd8e3, 0xb451,
+ 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4, 0xd8ed, 0xd8e6,
+ 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da, 0xd8f1, 0xb452, 0xd8eb,
+ 0xdd4f, 0xd8dd, 0xb44f, 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2,
+ 0xd8e8, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743,
+ 0xd8db, 0xdd52, 0xb744, 0xdd4d, 0xdd51, 0xe1a9, 0xe1b0, 0xe1a7,
+ 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4, 0xe1a8, 0xe1a3, 0xb9f1,
+ 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab, 0xe1aa, 0xe1af, 0xe565, 0xe567,
+ 0xbc6b, 0xe568, 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d,
+ 0xe564, 0xe569, 0xe56b, 0xe566, 0xe961, 0xe966, 0xe960, 0xe965,
+ 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a,
+ 0xe962, 0xecda, 0xc0af, 0xc0ad, 0xc0ac, 0xc0ae, 0xefc4, 0xf172,
+ 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9, 0xc4de, 0xf5ca, 0xf6de,
+ 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xf7d6, 0xa474, 0xa67b, 0xc9da,
+ 0xcaca, 0xa8b5, 0xb15f, 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5,
+ 0xae74, 0xdd57, 0xa476, 0xa477, 0xa478, 0xa4da, 0xabd1, 0xceaf,
+ 0xb453, 0xa479, 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xcacb,
+ 0xa7c6, 0xcacc, 0xa9ae, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d, 0xa9a9,
+ 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0, 0xceb1,
+ 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75, 0xb162,
+ 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545, 0xb456, 0xd8f3,
+ 0xb457, 0xd8f2, 0xb454, 0xdd5a, 0xdd5c, 0xb745, 0xdd5b, 0xdd59,
+ 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5, 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3,
+ 0xe571, 0xe56f, 0xbc6d, 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d,
+ 0xe96b, 0xe96c, 0xe56e, 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6,
+ 0xe96e, 0xf1fe, 0xa47a, 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af,
+ 0xb746, 0xa4db, 0xa5ae, 0xabd5, 0xb458, 0xc979, 0xc97a, 0xc9dc,
+ 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1, 0xa7c7,
+ 0xa9b3, 0xa9b4, 0xa9b1, 0xa9b0, 0xceb8, 0xa9b2, 0xabd6, 0xceb7,
+ 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79, 0xd175, 0xd177, 0xae77,
+ 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547, 0xd54a, 0xd54b, 0xd548,
+ 0xb167, 0xb166, 0xb164, 0xb165, 0xd549, 0xb168, 0xb45a, 0xb45b,
+ 0xb45c, 0xdd5d, 0xdd5f, 0xdd61, 0xb748, 0xb747, 0xb459, 0xdd60,
+ 0xdd5e, 0xe1b8, 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9,
+ 0xe1b7, 0xe1b5, 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574,
+ 0xbc71, 0xbc74, 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970,
+ 0xe972, 0xe96f, 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655,
+ 0xa9b5, 0xa7ca, 0xabd8, 0xa47b, 0xa4dc, 0xa5af, 0xc9dd, 0xa7cb,
+ 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c, 0xa6a1, 0xb749, 0xa47d,
+ 0xa4dd, 0xa4de, 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc,
+ 0xcc71, 0xcc72, 0xcc73, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda,
+ 0xcebc, 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d,
+ 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca,
+ 0xe974, 0xc0b1, 0xc573, 0xf7d8, 0xcc74, 0xcebd, 0xb16b, 0xd8f4,
+ 0xb74a, 0xc255, 0xa7ce, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343,
+ 0xb16e, 0xb16c, 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xc94c, 0xc9df,
+ 0xcad5, 0xa7cf, 0xcad4, 0xa7d0, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
+ 0xa9b9, 0xa9ba, 0xcc75, 0xabdd, 0xcebe, 0xabe0, 0xabdc, 0xabe2,
+ 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f, 0xb16f,
+ 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174, 0xb173,
+ 0xd8f6, 0xd8f5, 0xb461, 0xb45f, 0xb460, 0xd8f7, 0xb74b, 0xdd64,
+ 0xb74c, 0xdd63, 0xe577, 0xbc78, 0xe1c1, 0xbc77, 0xb9fd, 0xecde,
+ 0xe975, 0xc0b2, 0xecdd, 0xf240, 0xf448, 0xf449, 0xa4df, 0xa5b2,
+ 0xc97b, 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1,
+ 0xc9e0, 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0xa9bd, 0xcc78, 0xa9be,
+ 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6, 0xcad9,
+ 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2, 0xa7d7,
+ 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2, 0xcc7e,
+ 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3, 0xccac,
+ 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd, 0xccb0,
+ 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xcecd, 0xabe6, 0xcc7b,
+ 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7, 0xcc7a, 0xccab,
+ 0xa9c4, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5, 0xcebf, 0xcec0, 0xceca,
+ 0xd1a1, 0xcecb, 0xabee, 0xcece, 0xcec4, 0xabed, 0xcec6, 0xcec7,
+ 0xcec9, 0xabe9, 0xaea3, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e,
+ 0xd17d, 0xcec8, 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2,
+ 0xaea2, 0xced0, 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef,
+ 0xaea5, 0xced1, 0xaea7, 0xabea, 0xcec2, 0xb176, 0xd1a4, 0xd1a6,
+ 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178, 0xd551,
+ 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9, 0xaeaf,
+ 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xaea9, 0xb179, 0xd1a2,
+ 0xb177, 0xb17a, 0xd555, 0xd55e, 0xb464, 0xb17c, 0xb1a3, 0xb465,
+ 0xd560, 0xb1aa, 0xd8f9, 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554,
+ 0xd562, 0xd565, 0xd949, 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac,
+ 0xd55d, 0xd8f8, 0xd561, 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559,
+ 0xb462, 0xd557, 0xd558, 0xb1a7, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f,
+ 0xb1a4, 0xd55c, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0xd55a, 0xb17d,
+ 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d, 0xd944, 0xb471, 0xdd65,
+ 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947, 0xd948, 0xd94e, 0xb473,
+ 0xb754, 0xd94a, 0xd94f, 0xd943, 0xb75e, 0xb755, 0xb472, 0xd941,
+ 0xd950, 0xb75d, 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe,
+ 0xb46a, 0xd942, 0xd94b, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750,
+ 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e,
+ 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0xb75a, 0xba40, 0xdd71,
+ 0xe1c4, 0xb758, 0xdd69, 0xdd6d, 0xb9fe, 0xb74f, 0xdd66, 0xdd67,
+ 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f, 0xe1c8, 0xe1c9, 0xe1ce,
+ 0xbc7d, 0xe1d5, 0xba47, 0xba46, 0xe1d0, 0xbc7c, 0xe1c5, 0xba45,
+ 0xe1d4, 0xba43, 0xba44, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3,
+ 0xbca3, 0xe1cb, 0xbc7b, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7, 0xe1cd,
+ 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xbca4, 0xe1cc,
+ 0xbc7e, 0xe579, 0xe57e, 0xbece, 0xe578, 0xe9a3, 0xe5a9, 0xbca8,
+ 0xbca6, 0xbecc, 0xe5a6, 0xe5a2, 0xbcac, 0xe978, 0xbcaa, 0xe5a1,
+ 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd,
+ 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b,
+ 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0xe9a2, 0xe97e, 0xece1,
+ 0xbed1, 0xe9a1, 0xe97c, 0xc0b4, 0xecdf, 0xe979, 0xe97b, 0xc0b5,
+ 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d, 0xbecf, 0xefcf, 0xefc7,
+ 0xece7, 0xefc8, 0xece3, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
+ 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb,
+ 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241,
+ 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db,
+ 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8,
+ 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae,
+ 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7,
+ 0xe1d6, 0xba49, 0xe1d8, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8, 0xc257,
+ 0xc0b9, 0xa4e1, 0xcae6, 0xccb2, 0xa9d1, 0xa9d0, 0xa9d2, 0xabf3,
+ 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af, 0xb476, 0xd951, 0xa4e2,
+ 0xa47e, 0xa4e3, 0xc97d, 0xa5b7, 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab,
+ 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3, 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8,
+ 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0,
+ 0xcaed, 0xcaf5, 0xa7e6, 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef,
+ 0xcaee, 0xa7e3, 0xcaf4, 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0xcae7,
+ 0xa7db, 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9,
+ 0xcaea, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
+ 0xa7e9, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc, 0xa9ef, 0xccb3, 0xccba,
+ 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4, 0xa9e8, 0xccb8, 0xccc0,
+ 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6, 0xa9d7, 0xa9d8, 0xa9d6,
+ 0xa9ee, 0xa9e6, 0xa9e0, 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7,
+ 0xa9f0, 0xced4, 0xa9e4, 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xa9ec,
+ 0xa9ed, 0xa9eb, 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xceda, 0xac41,
+ 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43,
+ 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7,
+ 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc,
+ 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2,
+ 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0xaec1, 0xd1be, 0xaebf,
+ 0xaec0, 0xd1b4, 0xd1c4, 0xaeb6, 0xd566, 0xd1c6, 0xd1c0, 0xd1b7,
+ 0xd1c9, 0xd1ba, 0xaebc, 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb,
+ 0xd1bf, 0xaeb8, 0xd1b8, 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc,
+ 0xaebb, 0xd1bc, 0xd1bb, 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd,
+ 0xd1c8, 0xd1c2, 0xaeb7, 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7,
+ 0xd567, 0xb1b7, 0xb1cb, 0xb1ca, 0xb1bf, 0xd579, 0xd575, 0xd572,
+ 0xd5a6, 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0xb1cc,
+ 0xb1c9, 0xd57b, 0xd56a, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd, 0xb1c1,
+ 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xb478, 0xd5a5, 0xd571,
+ 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3, 0xd56f, 0xb1b8,
+ 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e, 0xb1b0, 0xb1c4,
+ 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0, 0xb1bb, 0xb1b9,
+ 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954, 0xd953, 0xd56b,
+ 0xd964, 0xb47a, 0xd96a, 0xd959, 0xd967, 0xdd77, 0xb47d, 0xd96b,
+ 0xd96e, 0xb47c, 0xd95c, 0xd96d, 0xd96c, 0xb47e, 0xd955, 0xb479,
+ 0xb4a3, 0xb4a1, 0xd969, 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971,
+ 0xb4ad, 0xb4ab, 0xd966, 0xd965, 0xd963, 0xd95d, 0xb4a4, 0xb4a2,
+ 0xd1b9, 0xd956, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6,
+ 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961,
+ 0xd95e, 0xb4ae, 0xb770, 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c,
+ 0xddbb, 0xb769, 0xdd7a, 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e,
+ 0xb76f, 0xdda5, 0xddb2, 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d,
+ 0xddba, 0xdda8, 0xdda9, 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad,
+ 0xb765, 0xe1d9, 0xb768, 0xb766, 0xddb9, 0xddb0, 0xddac, 0xdda1,
+ 0xba53, 0xddaf, 0xb76d, 0xdda7, 0xdda6, 0xb767, 0xb763, 0xe1ee,
+ 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec, 0xba51,
+ 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0xe1db, 0xe1e8, 0xe1dc,
+ 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3, 0xba52, 0xe5ba,
+ 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0, 0xe5ae, 0xe1df,
+ 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3, 0xba4e, 0xbcb1, 0xba50,
+ 0xba55, 0xe1e1, 0xe1ed, 0xe1e6, 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa,
+ 0xe5b6, 0xe5b5, 0xe5b7, 0xe5b4, 0xbcb5, 0xbcbb, 0xbcb8, 0xbcb9,
+ 0xe5af, 0xe5b2, 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2,
+ 0xe5b9, 0xe5b0, 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba,
+ 0xbcbe, 0xbcc0, 0xbcbd, 0xbcbc, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3,
+ 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0xbed6, 0xbedd, 0xe9ab,
+ 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7, 0xbede, 0xc0ba,
+ 0xe9a7, 0xe9a6, 0xbee0, 0xbee1, 0xe9a5, 0xe9a4, 0xc0bc, 0xe9ae,
+ 0xbeda, 0xe9ac, 0xc0bd, 0xc0c2, 0xecea, 0xecec, 0xc0bf, 0xeced,
+ 0xece9, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259,
+ 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3,
+ 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242,
+ 0xf245, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0xf44e, 0xc464,
+ 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd, 0xc4e2, 0xc4e1,
+ 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb, 0xc575, 0xf7dd, 0xf6e2, 0xf7dc,
+ 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9, 0xf8ef, 0xa4e4, 0xd972, 0xe9af,
+ 0xa6ac, 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46,
+ 0xcee7, 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xb1d3,
+ 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0,
+ 0xd976, 0xb1cd, 0xb4af, 0xb4b1, 0xb4b2, 0xd975, 0xd978, 0xb4b0,
+ 0xd973, 0xd977, 0xd974, 0xb771, 0xddbc, 0xba56, 0xe1f4, 0xbee3,
+ 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf, 0xe5be, 0xe5c0, 0xe9b1,
+ 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5, 0xf248, 0xa4e5, 0xd979,
+ 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6,
+ 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2,
+ 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c,
+ 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xecf0, 0xc25f, 0xf8f0, 0xa4e8,
+ 0xccc3, 0xa9f3, 0xac49, 0xceea, 0xaec7, 0xd1d2, 0xd1d0, 0xd1d1,
+ 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd, 0xb1da, 0xd97d,
+ 0xd97e, 0xddbe, 0xba59, 0xba58, 0xecf1, 0xefd9, 0xf24a, 0xf249,
+ 0xf44f, 0xc95e, 0xac4a, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af,
+ 0xa6b0, 0xc9ee, 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9,
+ 0xcafc, 0xa9f4, 0xccc9, 0xccc5, 0xccce, 0xa9fb, 0xa9f9, 0xccca,
+ 0xccc6, 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb,
+ 0xa9f7, 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6,
+ 0xa9f5, 0xa9fd, 0xceef, 0xcef5, 0xac50, 0xac4d, 0xceec, 0xcef1,
+ 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3, 0xac4c, 0xcef8,
+ 0xac4f, 0xac52, 0xceed, 0xcef2, 0xcef6, 0xceee, 0xceeb, 0xcef7,
+ 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xaecf, 0xd1d5, 0xaeca, 0xd1d3,
+ 0xaece, 0xaecb, 0xd1d6, 0xaecd, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad,
+ 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0xb1e0, 0xd5a9, 0xb1e2,
+ 0xb1e1, 0xd9a7, 0xd9a2, 0xb4b6, 0xb4ba, 0xb4b7, 0xd9a5, 0xd9a8,
+ 0xb4b8, 0xb4b9, 0xb4be, 0xddc7, 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1,
+ 0xb4bd, 0xd9a4, 0xb779, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4,
+ 0xddc3, 0xddc0, 0xb77b, 0xddc2, 0xb4bb, 0xddc6, 0xddc1, 0xb778,
+ 0xb774, 0xb77a, 0xddc5, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6, 0xba5a,
+ 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xbcc7, 0xe5c9, 0xe5c4, 0xbcca,
+ 0xe5c6, 0xbcc9, 0xe5c3, 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba,
+ 0xe9b9, 0xe9b4, 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5,
+ 0xe9b6, 0xe9b7, 0xe9bc, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6,
+ 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452,
+ 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea,
+ 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4, 0xb0d2,
+ 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xb77c, 0xe1fa, 0xe1f9, 0xa4eb,
+ 0xa6b3, 0xccd2, 0xaa42, 0xaa41, 0xcef9, 0xcefa, 0xd1d7, 0xd1d8,
+ 0xaed2, 0xaed3, 0xaed4, 0xd5af, 0xb1e6, 0xb4c2, 0xb4c1, 0xddc8,
+ 0xdf7a, 0xe1fb, 0xe9bd, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd,
+ 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0xc9f1,
+ 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4, 0xcafd,
+ 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42, 0xcb45, 0xa7f5,
+ 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa, 0xa841, 0xcb40,
+ 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe, 0xaa57, 0xccd4,
+ 0xaa43, 0xaa4d, 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53,
+ 0xccd7, 0xaa49, 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4,
+ 0xaa51, 0xaa4f, 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a,
+ 0xaa50, 0xaa44, 0xccde, 0xccdd, 0xccd5, 0xaa52, 0xcce1, 0xccd6,
+ 0xaa55, 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47,
+ 0xaa4b, 0xcce0, 0xcf5b, 0xac5c, 0xac69, 0xcf56, 0xcf4c, 0xac62,
+ 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52, 0xcefe, 0xcf41, 0xcf44,
+ 0xcefb, 0xcf51, 0xcf61, 0xac60, 0xcf46, 0xcf58, 0xcefd, 0xcf5f,
+ 0xcf60, 0xcf63, 0xcf5a, 0xcf4b, 0xcf53, 0xac66, 0xac59, 0xac61,
+ 0xac6d, 0xac56, 0xac58, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40,
+ 0xac6c, 0xac67, 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c,
+ 0xcf54, 0xac5e, 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f,
+ 0xcf55, 0xac57, 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d,
+ 0xcf42, 0xcf5e, 0xcf57, 0xac55, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1,
+ 0xaedf, 0xaeeb, 0xd1da, 0xd1e3, 0xd1eb, 0xd1d9, 0xd1f4, 0xaed5,
+ 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5, 0xd1e6, 0xd1f0,
+ 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4, 0xaed6, 0xaeda,
+ 0xd1f2, 0xd1de, 0xaee6, 0xaee2, 0xaee5, 0xaeec, 0xaedb, 0xaee7,
+ 0xd1e9, 0xaee9, 0xaed8, 0xaed7, 0xd1db, 0xd1df, 0xaee0, 0xd1f1,
+ 0xd1e8, 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0xd5c4, 0xd5b4,
+ 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be, 0xd5bd, 0xb1ed, 0xd5c1,
+ 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5, 0xd5c9, 0xb1ec, 0xd5c7,
+ 0xb1e7, 0xb1fc, 0xb1f2, 0xb1f6, 0xb1f5, 0xd5b1, 0xd5ce, 0xd5d4,
+ 0xd5cc, 0xd5d3, 0xd5c0, 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7,
+ 0xd5cb, 0xb1f0, 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb,
+ 0xb1e9, 0xd5ba, 0xd5cf, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7,
+ 0xd5bb, 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede,
+ 0xd9c0, 0xb1eb, 0xb1f3, 0xd9c3, 0xd9d9, 0xd9ce, 0xb4d6, 0xb4d1,
+ 0xd9bd, 0xb4d2, 0xd9cd, 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5,
+ 0xb4c4, 0xd9b3, 0xb4c7, 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0,
+ 0xb4c9, 0xb4c5, 0xd9bb, 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9,
+ 0xd9d6, 0xd9b0, 0xd9b5, 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1,
+ 0xb4cf, 0xd9ba, 0xd9d2, 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd,
+ 0xb4c3, 0xb4d9, 0xd9c8, 0xd9c7, 0xd9ac, 0xb4c8, 0xd9d4, 0xd9bc,
+ 0xd9be, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5, 0xd9b2, 0xd9b9,
+ 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc, 0xd9d8, 0xd9ae,
+ 0xddf2, 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xddec, 0xddcb,
+ 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xddcf, 0xdde2, 0xdde7, 0xddd3,
+ 0xdde4, 0xddd0, 0xddd7, 0xddd8, 0xb7a8, 0xddeb, 0xdde9, 0xddcc,
+ 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4, 0xd5b8, 0xddd4, 0xdde6,
+ 0xddd5, 0xb7a1, 0xb7b1, 0xdded, 0xb7af, 0xb7ab, 0xddca, 0xb7a3,
+ 0xddcd, 0xb7b0, 0xdddd, 0xddc9, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa,
+ 0xddda, 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0xdde8, 0xb7a5,
+ 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0xb7a7, 0xdec6,
+ 0xb7ae, 0xe24a, 0xe248, 0xe25e, 0xe246, 0xe258, 0xb77d, 0xba5f,
+ 0xe242, 0xe25d, 0xe247, 0xe255, 0xba64, 0xba5d, 0xe25b, 0xe240,
+ 0xe25a, 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b,
+ 0xe259, 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc,
+ 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245,
+ 0xe250, 0xe24c, 0xe24e, 0xba60, 0xe25f, 0xba6e, 0xe24f, 0xe262,
+ 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256, 0xba69,
+ 0xba62, 0xe252, 0xe25c, 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de,
+ 0xbccd, 0xe5e5, 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5,
+ 0xe5ee, 0xe5eb, 0xe5dd, 0xe5ce, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8,
+ 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0xe5e7, 0xbcd7, 0xe5cb, 0xe5ed,
+ 0xe5e0, 0xe5e6, 0xbcd4, 0xe5e3, 0xe5ea, 0xbcd9, 0xbcd3, 0xe5dc,
+ 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0, 0xe5d6, 0xe5d7, 0xbccf,
+ 0xbccc, 0xe5d2, 0xbcd2, 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca,
+ 0xe9c2, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc, 0xe9d7,
+ 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0xbef1, 0xe9dd, 0xbef5,
+ 0xbef8, 0xe9c0, 0xbef4, 0xe9db, 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9,
+ 0xe9d3, 0xe9da, 0xe9d9, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5,
+ 0xe9d8, 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0xe9d0, 0xe9bf, 0xe9c1,
+ 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0xe9c7, 0xc0cf,
+ 0xed45, 0xc0c8, 0xecf5, 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7,
+ 0xed49, 0xecf3, 0xecfe, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9,
+ 0xed40, 0xecf4, 0xc0d0, 0xed47, 0xecf9, 0xc0cc, 0xecfb, 0xecf8,
+ 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46, 0xed42,
+ 0xc263, 0xefe7, 0xc268, 0xc269, 0xc262, 0xefe6, 0xefe3, 0xefe4,
+ 0xc266, 0xefde, 0xefe2, 0xc265, 0xefdf, 0xc267, 0xc264, 0xefdd,
+ 0xefe1, 0xefe5, 0xf251, 0xf24e, 0xf257, 0xf256, 0xf254, 0xf24f,
+ 0xc372, 0xf250, 0xc371, 0xc0cd, 0xf253, 0xc370, 0xf258, 0xf252,
+ 0xf24d, 0xefe0, 0xc36f, 0xf24c, 0xf456, 0xf455, 0xf255, 0xc468,
+ 0xf459, 0xf45a, 0xf454, 0xf458, 0xf453, 0xf5d1, 0xf457, 0xc4e7,
+ 0xc4e5, 0xf5cf, 0xf5d2, 0xf5ce, 0xf5d0, 0xc4e6, 0xf6e5, 0xf6e6,
+ 0xc576, 0xf6e4, 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656,
+ 0xf8f3, 0xf8f1, 0xf8f2, 0xf8f4, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59,
+ 0xcce9, 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7,
+ 0xd1f9, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd,
+ 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5,
+ 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb,
+ 0xbcda, 0xe5f0, 0xe9df, 0xe9de, 0xe9e0, 0xbef9, 0xed4b, 0xc0d3,
+ 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf, 0xa6b9, 0xa842,
+ 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0xb7b3, 0xe6d1, 0xbefa, 0xc26b,
+ 0xa4ef, 0xa6ba, 0xcceb, 0xaa5c, 0xccea, 0xcf65, 0xac6f, 0xcf66,
+ 0xac70, 0xd1fc, 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db,
+ 0xd5da, 0xd9de, 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb,
+ 0xe266, 0xe267, 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4,
+ 0xe9e1, 0xe9e2, 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8,
+ 0xc95f, 0xac71, 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5,
+ 0xb7b4, 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9,
+ 0xf7e3, 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6,
+ 0xa4f1, 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xccec, 0xcf6a,
+ 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0xb240, 0xb241,
+ 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42, 0xde40, 0xddfd,
+ 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6, 0xe5f5, 0xe5f8, 0xe9e7,
+ 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d, 0xefea, 0xf25b, 0xf6e7,
+ 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961, 0xc97e, 0xa6bb, 0xc9f7,
+ 0xcb49, 0xcb4a, 0xaa5e, 0xcced, 0xac74, 0xcf6b, 0xcf6c, 0xaef0,
+ 0xaef4, 0xd244, 0xaef3, 0xaef1, 0xaef2, 0xd5df, 0xb242, 0xb4e3,
+ 0xb4e1, 0xb4e2, 0xd9e6, 0xba72, 0xa4f4, 0xc9a1, 0xa5c3, 0xc9a4,
+ 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2, 0xc9f8, 0xc9fc,
+ 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb, 0xa6c1, 0xc9f9, 0xc9fd,
+ 0xa6c2, 0xa6bd, 0xa6be, 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf,
+ 0xa6c0, 0xa6c3, 0xcb5b, 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c,
+ 0xcb4d, 0xcb55, 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858,
+ 0xa85a, 0xcb4b, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0xcd45, 0xa847,
+ 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848, 0xa849,
+ 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e, 0xa853,
+ 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54, 0xa84b,
+ 0xcb58, 0xcd44, 0xaa6a, 0xaa7a, 0xccf5, 0xaa71, 0xcd4b, 0xaa62,
+ 0xaa65, 0xcd42, 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76,
+ 0xaa68, 0xaa66, 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb,
+ 0xaa6e, 0xaa73, 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xaa63, 0xcd49,
+ 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d,
+ 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0xaa7e,
+ 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e, 0xccf0,
+ 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74, 0xccfe, 0xaa61,
+ 0xaca6, 0xcd4c, 0xcf7c, 0xcfa1, 0xcfa4, 0xcf77, 0xcfa7, 0xcfaa,
+ 0xcfac, 0xcf74, 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad,
+ 0xcf7b, 0xcf73, 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5,
+ 0xcf7d, 0xac7d, 0xcf70, 0xcfa8, 0xcfab, 0xac7a, 0xaca8, 0xcf6d,
+ 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48,
+ 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9,
+ 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6,
+ 0xac79, 0xcf7e, 0xd24c, 0xaefd, 0xaf43, 0xd255, 0xd25b, 0xd257,
+ 0xd24a, 0xd24d, 0xd246, 0xd247, 0xaf4a, 0xaefa, 0xd256, 0xd25f,
+ 0xaf45, 0xaef6, 0xaf40, 0xd24e, 0xaf42, 0xd24f, 0xd259, 0xaf44,
+ 0xd268, 0xd248, 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a,
+ 0xd267, 0xd261, 0xd253, 0xd262, 0xd25c, 0xd265, 0xd263, 0xaf49,
+ 0xd254, 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251,
+ 0xb243, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xd258,
+ 0xd25d, 0xb265, 0xd5e1, 0xd5e5, 0xb252, 0xb250, 0xb247, 0xd5e3,
+ 0xd5e2, 0xb25b, 0xd5e8, 0xb255, 0xd5fa, 0xd647, 0xb244, 0xd5f7,
+ 0xd5f0, 0xb267, 0xd5e0, 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e,
+ 0xd5ec, 0xd5fe, 0xd5f6, 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640,
+ 0xb251, 0xb259, 0xd642, 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e,
+ 0xb246, 0xb25c, 0xd5f4, 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed,
+ 0xb248, 0xd5e7, 0xd646, 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6,
+ 0xb25f, 0xb25d, 0xb266, 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260,
+ 0xd641, 0xb245, 0xd5f5, 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c,
+ 0xb24b, 0xd9e7, 0xd643, 0xd5eb, 0xd9fc, 0xb24d, 0xb541, 0xb25a,
+ 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea, 0xb4eb, 0xb4e7, 0xda49, 0xb4ed,
+ 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d, 0xda44, 0xd9f1, 0xb4fa, 0xb4f4,
+ 0xd9fd, 0xb4e4, 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55,
+ 0xda56, 0xb4e5, 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd,
+ 0xd9f2, 0xd9f9, 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9,
+ 0xd9eb, 0xb4ea, 0xd9f8, 0xb4f8, 0xb542, 0xd9fa, 0xda53, 0xda4b,
+ 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xda57, 0xb4ef, 0xda41, 0xd9f4,
+ 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f, 0xda4c,
+ 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6, 0xda46,
+ 0xb545, 0xd9f5, 0xd5e4, 0xda50, 0xda4e, 0xda52, 0xd9ec, 0xb540,
+ 0xde61, 0xde60, 0xde46, 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7,
+ 0xde68, 0xb7c2, 0xde5e, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48,
+ 0xde4b, 0xde63, 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc,
+ 0xb7cb, 0xb7c5, 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65,
+ 0xb7cd, 0xb7bb, 0xde54, 0xde4d, 0xb7c4, 0xb7c3, 0xde50, 0xde5a,
+ 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0, 0xde4e,
+ 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56, 0xe26c,
+ 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0, 0xde44,
+ 0xde5d, 0xde5c, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e,
+ 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xe273,
+ 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d, 0xe26f,
+ 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e, 0xe2b6, 0xe2ac,
+ 0xba7c, 0xe27c, 0xba76, 0xba74, 0xbaa8, 0xe27a, 0xe277, 0xe278,
+ 0xe2b2, 0xe2b7, 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0xe270,
+ 0xe5fa, 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274,
+ 0xbaaa, 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0xe2a9, 0xe2a1, 0xe272,
+ 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xba79, 0xbcdf, 0xe2a6,
+ 0xe5f9, 0xe2ad, 0xe276, 0xe644, 0xe64e, 0xbce2, 0xe64d, 0xe659,
+ 0xbce4, 0xe64b, 0xe64f, 0xbcef, 0xe646, 0xbce7, 0xe652, 0xe9f0,
+ 0xbcf3, 0xbcf2, 0xe654, 0xe643, 0xe65e, 0xbced, 0xbce3, 0xe657,
+ 0xe65b, 0xe660, 0xe655, 0xe649, 0xbce6, 0xbce9, 0xbcf1, 0xbcec,
+ 0xe64c, 0xe2a2, 0xe648, 0xe65f, 0xbce8, 0xbceb, 0xe661, 0xbce0,
+ 0xe656, 0xe5fb, 0xe65c, 0xc0df, 0xe64a, 0xbce1, 0xe645, 0xbce5,
+ 0xe5fc, 0xbaab, 0xe641, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658,
+ 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xe9f3, 0xbf49,
+ 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48, 0xbf43, 0xe9f5,
+ 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8, 0xea44, 0xea46,
+ 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0xbf47, 0xe9fe, 0xbf46, 0xe9f9,
+ 0xe9ed, 0xe9f2, 0xe9fd, 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1,
+ 0xe5fd, 0xe9ec, 0xe9ef, 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43,
+ 0xe9ee, 0xe9fc, 0xed51, 0xc0e3, 0xc0d7, 0xc0db, 0xed53, 0xed59,
+ 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56,
+ 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
+ 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0xeff7, 0xc271, 0xeff4, 0xeff6,
+ 0xc26f, 0xeff2, 0xeff3, 0xefee, 0xe9f6, 0xefef, 0xc270, 0xefeb,
+ 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed, 0xeff1, 0xc273, 0xc272,
+ 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379, 0xf25c, 0xc376, 0xc373,
+ 0xf267, 0xc377, 0xc374, 0xf25e, 0xf261, 0xf262, 0xf263, 0xf266,
+ 0xeff5, 0xf25d, 0xc375, 0xf264, 0xf268, 0xf260, 0xf45d, 0xc46a,
+ 0xf460, 0xc46b, 0xf468, 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465,
+ 0xf464, 0xf467, 0xf45b, 0xc469, 0xf463, 0xf466, 0xf469, 0xf461,
+ 0xf5d3, 0xf5d4, 0xf5d8, 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xc4e9,
+ 0xc578, 0xf6eb, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5, 0xf7e4,
+ 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5, 0xc657, 0xc665,
+ 0xf9a3, 0xf96c, 0xf9a2, 0xf9d0, 0xf9d1, 0xa4f5, 0xa6c7, 0xca41,
+ 0xcb5e, 0xa85f, 0xa862, 0xcb5f, 0xa860, 0xa861, 0xcd58, 0xcd5a,
+ 0xcd55, 0xcd52, 0xcd54, 0xaaa4, 0xaaa2, 0xcd56, 0xaaa3, 0xcd53,
+ 0xcd50, 0xaaa1, 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0xcfb3,
+ 0xacb7, 0xcfb6, 0xacaf, 0xacb2, 0xacb4, 0xacb6, 0xacb3, 0xcfb2,
+ 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae, 0xacb5, 0xacb0, 0xcfb0,
+ 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xd276, 0xd27b,
+ 0xaf51, 0xd26c, 0xd272, 0xd26b, 0xd275, 0xd271, 0xaf4d, 0xaf4f,
+ 0xd27a, 0xd26a, 0xd26d, 0xd273, 0xd274, 0xd27c, 0xd270, 0xaf4e,
+ 0xb26d, 0xd64e, 0xd650, 0xd64c, 0xd658, 0xd64a, 0xd657, 0xb269,
+ 0xd648, 0xda5b, 0xd652, 0xb26c, 0xd653, 0xd656, 0xd65a, 0xd64f,
+ 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649, 0xd65b, 0xd651,
+ 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f, 0xda59, 0xda62,
+ 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f, 0xb54a, 0xda63, 0xda5c,
+ 0xda5a, 0xb54b, 0xda5d, 0xda61, 0xb54d, 0xda64, 0xde70, 0xde77,
+ 0xde79, 0xdea1, 0xb7da, 0xde6b, 0xb7d2, 0xde7a, 0xb7d7, 0xdea2,
+ 0xb7ce, 0xde7d, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf,
+ 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72,
+ 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75,
+ 0xb7d5, 0xb54e, 0xde7b, 0xde73, 0xde74, 0xe2c1, 0xbab4, 0xe2bd,
+ 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0xe2bc, 0xbab5,
+ 0xe2c0, 0xe2bb, 0xbab7, 0xbab2, 0xe2c4, 0xbab3, 0xe667, 0xe664,
+ 0xe670, 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0xe66d, 0xe66b,
+ 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0xe663, 0xe665, 0xbcf6,
+ 0xe662, 0xe672, 0xe669, 0xea4a, 0xbf51, 0xea55, 0xea53, 0xbf4b,
+ 0xea49, 0xea4c, 0xea4d, 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56,
+ 0xea51, 0xbf4f, 0xbf4c, 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d,
+ 0xbf4e, 0xea4f, 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58,
+ 0xbf54, 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9,
+ 0xc0e6, 0xed5e, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f,
+ 0xc0ed, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd, 0xc276, 0xeffa,
+ 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a, 0xf26b, 0xf26a, 0xf269,
+ 0xc37b, 0xc46c, 0xf46a, 0xf46b, 0xf5dc, 0xf5db, 0xc4ea, 0xf5da,
+ 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xf8f6, 0xf9bc, 0xc679, 0xf9c6,
+ 0xa4f6, 0xaaa6, 0xaaa7, 0xacb8, 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52,
+ 0xb7dd, 0xa4f8, 0xb26e, 0xbab8, 0xc962, 0xcfb7, 0xd27d, 0xe2c5,
+ 0xc0f0, 0xa4f9, 0xaaa9, 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4,
+ 0xb7de, 0xe2c6, 0xbcf8, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0xa6c9,
+ 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0xaaaa, 0xaaab,
+ 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9, 0xcfbc, 0xacbb,
+ 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e, 0xb26f, 0xd65c,
+ 0xd65f, 0xb552, 0xb270, 0xb551, 0xda6b, 0xda6a, 0xda68, 0xda69,
+ 0xda6c, 0xdea6, 0xdea5, 0xdea9, 0xdea8, 0xdea7, 0xbab9, 0xe2c9,
+ 0xe2c8, 0xbaba, 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a,
+ 0xf272, 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c,
+ 0xf6ee, 0xf8f7, 0xa4fc, 0xc9a5, 0xa5c7, 0xc9a6, 0xca43, 0xca44,
+ 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63, 0xa866,
+ 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0xaaad, 0xaab0,
+ 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e, 0xaaae, 0xcd63,
+ 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xcfc5, 0xcfbf, 0xcfc4, 0xcfc0,
+ 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5, 0xd2a7, 0xaf58, 0xaf57,
+ 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56, 0xd2a6, 0xd667, 0xd2a3,
+ 0xd2aa, 0xd662, 0xd666, 0xd665, 0xda6e, 0xda79, 0xd668, 0xd663,
+ 0xda6d, 0xb274, 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271,
+ 0xd660, 0xd669, 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xb556,
+ 0xda75, 0xda6f, 0xda71, 0xda74, 0xda72, 0xb555, 0xda78, 0xb553,
+ 0xb7df, 0xdead, 0xdeac, 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0xdeab,
+ 0xe2ca, 0xbabb, 0xb7e0, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa,
+ 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b,
+ 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c,
+ 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65,
+ 0xc0f1, 0xc0f2, 0xed63, 0xc279, 0xeffe, 0xc278, 0xc37e, 0xc3a1,
+ 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a, 0xf7e8, 0xf7e7,
+ 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a, 0xa5c9, 0xc9a7,
+ 0xa4fd, 0xca45, 0xcb6c, 0xcb6a, 0xcb6b, 0xcb68, 0xa868, 0xcb69,
+ 0xcd6d, 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69,
+ 0xaab2, 0xaab1, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5, 0xcfce,
+ 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0xacc1, 0xd2af, 0xcfd2,
+ 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4, 0xcfd1, 0xcfc9,
+ 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xd2b4, 0xd2ab, 0xd2b6, 0xd2ae,
+ 0xd2b9, 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f,
+ 0xaf5d, 0xd2b1, 0xd2ad, 0xd2b0, 0xd2bb, 0xd2b2, 0xaf5e, 0xcfcf,
+ 0xaf5a, 0xaf5c, 0xd678, 0xd66d, 0xd66b, 0xd66c, 0xd673, 0xd674,
+ 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0xb279, 0xd66e, 0xb277,
+ 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676, 0xb27c,
+ 0xda7e, 0xdaa1, 0xb560, 0xdaa7, 0xdaa9, 0xdaa2, 0xb55a, 0xdaa6,
+ 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558, 0xda7d, 0xda7b,
+ 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa, 0xb559, 0xb55e,
+ 0xb55c, 0xb55d, 0xb557, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0xdeb1,
+ 0xdebc, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba, 0xdeb8, 0xdeb9, 0xdeb5,
+ 0xdeb4, 0xdebe, 0xb7e5, 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec,
+ 0xb7e7, 0xb7e6, 0xe2ce, 0xbabe, 0xbabd, 0xe2d3, 0xbcfc, 0xbabf,
+ 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0, 0xe2d2, 0xe2cf, 0xe2d1,
+ 0xe6ab, 0xe6aa, 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xbcfe,
+ 0xe6a8, 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0xed69,
+ 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0xea63, 0xbf58, 0xbf5c,
+ 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xed6d, 0xc0f5, 0xc27a, 0xc0f6,
+ 0xc0f3, 0xed6a, 0xed68, 0xed6b, 0xed6e, 0xc0f4, 0xed6c, 0xed67,
+ 0xf042, 0xf045, 0xf275, 0xf040, 0xf46f, 0xf046, 0xc3a2, 0xf044,
+ 0xc27b, 0xf041, 0xf043, 0xf047, 0xf276, 0xf274, 0xc3a3, 0xf273,
+ 0xc46e, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0, 0xf6f2, 0xc5d0,
+ 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d, 0xdebf, 0xbf5d,
+ 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xcd6f, 0xa260, 0xcfd7, 0xcfd8,
+ 0xd2be, 0xd2bf, 0xb27e, 0xb2a1, 0xdaab, 0xdec2, 0xdec1, 0xdec0,
+ 0xe2d5, 0xe2d6, 0xe2d7, 0xbac2, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e,
+ 0xbf5f, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048, 0xc27c,
+ 0xf277, 0xf5de, 0xa5cc, 0xacc6, 0xb2a2, 0xdec3, 0xa5cd, 0xd2c0,
+ 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf, 0xca46, 0xa86a, 0xa869,
+ 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa86b,
+ 0xa86c, 0xcb6e, 0xcb6d, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0xcfda,
+ 0xcfdb, 0xaccb, 0xacc9, 0xacca, 0xacc8, 0xaf60, 0xaf64, 0xaf63,
+ 0xd2c1, 0xaf62, 0xaf61, 0xd2c2, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4,
+ 0xb2a5, 0xb566, 0xb565, 0xdaae, 0xdaad, 0xb2a7, 0xb7ed, 0xdec5,
+ 0xb7ee, 0xdec4, 0xe2d8, 0xe6ae, 0xbd42, 0xea6a, 0xed73, 0xc3a6,
+ 0xc3a5, 0xc57c, 0xa5d4, 0xcd73, 0xb2a8, 0xe2d9, 0xbac3, 0xcb6f,
+ 0xcb70, 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xaccf, 0xacd0, 0xaccd,
+ 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0xaf68, 0xaf69, 0xb2ab,
+ 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b, 0xaf6a, 0xaf65,
+ 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xd2c6, 0xaf66, 0xaf67, 0xb2ac,
+ 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c, 0xd67e, 0xd6a4, 0xd6a3, 0xd67d,
+ 0xb2a9, 0xb2aa, 0xdab6, 0xb56b, 0xb56a, 0xdab0, 0xb568, 0xdab3,
+ 0xb56c, 0xdab4, 0xb56d, 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2,
+ 0xdaaf, 0xded2, 0xdec7, 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6,
+ 0xded3, 0xded1, 0xdeca, 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc,
+ 0xded4, 0xdecb, 0xb7f5, 0xb7ef, 0xb7f1, 0xdec9, 0xe2db, 0xbac7,
+ 0xe2df, 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8,
+ 0xe2e0, 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2,
+ 0xe6b0, 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af,
+ 0xbd47, 0xbac4, 0xe6b6, 0xbd44, 0xea6c, 0xea6b, 0xea73, 0xea6d,
+ 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0xea70, 0xea6e,
+ 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76, 0xc0f9, 0xf04d,
+ 0xc2a1, 0xf04e, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a,
+ 0xc3a7, 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0xc4ee, 0xf5df,
+ 0xc57e, 0xf6f4, 0xc57d, 0xf7ea, 0xc5f5, 0xc5f6, 0xf9cc, 0xacd1,
+ 0xcfde, 0xb56e, 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d,
+ 0xaaba, 0xacd2, 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae,
+ 0xd6a5, 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb,
+ 0xe6b8, 0xe6b9, 0xe6ba, 0xed78, 0xf051, 0xf471, 0xf470, 0xf6f5,
+ 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xe2e1, 0xbd4b, 0xea74,
+ 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf, 0xacd8, 0xacd6,
+ 0xacd5, 0xd2cc, 0xaf71, 0xaf72, 0xaf73, 0xb2b0, 0xd6a7, 0xb2af,
+ 0xdab9, 0xb2b1, 0xb573, 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca,
+ 0xbd4c, 0xbf64, 0xea75, 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473,
+ 0xa5d8, 0xa86e, 0xcd78, 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79,
+ 0xcfe5, 0xacdb, 0xacda, 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9,
+ 0xcfe1, 0xcfe2, 0xcfe3, 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd,
+ 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce,
+ 0xd2cd, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xd6b0, 0xd2d8, 0xaf77,
+ 0xaf74, 0xd6aa, 0xd6a9, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2,
+ 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8, 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af,
+ 0xb2b3, 0xdabc, 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2,
+ 0xdabd, 0xdac0, 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xdee1,
+ 0xdedd, 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846,
+ 0xb7fe, 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb,
+ 0xb842, 0xdee2, 0xe2e6, 0xe2e8, 0xb840, 0xe2e3, 0xbacc, 0xe2e9,
+ 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5, 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e,
+ 0xe6bf, 0xe6be, 0xbd51, 0xbd4f, 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50,
+ 0xea7d, 0xeaa1, 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66,
+ 0xbf67, 0xbf65, 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3,
+ 0xc0fc, 0xed7b, 0xc0fe, 0xc141, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb,
+ 0xeda1, 0xed7a, 0xed7e, 0xed7d, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2,
+ 0xc2a3, 0xf054, 0xf27b, 0xc3a9, 0xf279, 0xf27a, 0xf474, 0xf477,
+ 0xf475, 0xf476, 0xf5e0, 0xc4ef, 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8,
+ 0xf8f9, 0xc666, 0xa5d9, 0xace1, 0xdac3, 0xdee3, 0xa5da, 0xa86f,
+ 0xaabe, 0xcfe8, 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142,
+ 0xeda4, 0xf27c, 0xf478, 0xa5db, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e,
+ 0xcd7d, 0xcd7b, 0xaabf, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0xcff1,
+ 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec, 0xcff3,
+ 0xace3, 0xaf7c, 0xafa4, 0xafa3, 0xd2e1, 0xd2db, 0xd2d9, 0xafa1,
+ 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2, 0xd2e4, 0xd2e0, 0xd2da, 0xafa2,
+ 0xd2df, 0xd2dd, 0xaf79, 0xd2e5, 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc,
+ 0xaf7e, 0xaf7b, 0xb2b9, 0xd6ba, 0xd6b3, 0xd6b5, 0xd6b7, 0xd6b8,
+ 0xd6b6, 0xb2ba, 0xd6bb, 0xd6b4, 0xdac8, 0xb576, 0xdad0, 0xdac5,
+ 0xdad1, 0xdac6, 0xdac7, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577,
+ 0xdac9, 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0xdef2, 0xb84e,
+ 0xe2f0, 0xb851, 0xdef0, 0xdeed, 0xdee8, 0xdeea, 0xdeeb, 0xdee4,
+ 0xb84d, 0xb84c, 0xb848, 0xdee7, 0xb84f, 0xb850, 0xdee6, 0xdee9,
+ 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5, 0xe2f2, 0xbad0, 0xe2f4,
+ 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3, 0xbad1, 0xe2ef, 0xbad3,
+ 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xb849, 0xe2eb, 0xbad2, 0xe2ed,
+ 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53,
+ 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5, 0xe6c2,
+ 0xbd59, 0xe6c4, 0xe6c6, 0xbd57, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6,
+ 0xeaac, 0xeaad, 0xeaa9, 0xeaaa, 0xeaa7, 0xeaa4, 0xbf6c, 0xbf69,
+ 0xeaa3, 0xeaa5, 0xbf6b, 0xeaab, 0xc146, 0xedaa, 0xeda5, 0xc145,
+ 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6, 0xedad, 0xf056,
+ 0xc147, 0xeda7, 0xedae, 0xedab, 0xf05a, 0xf057, 0xc2a6, 0xf05b,
+ 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3, 0xc3aa, 0xf27e, 0xf2a2,
+ 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d, 0xf479, 0xc471, 0xf47b,
+ 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473, 0xf5e1, 0xf5e3, 0xf5e2,
+ 0xf6f6, 0xf8b5, 0xf8fa, 0xa5dc, 0xcb72, 0xaac0, 0xcda3, 0xaac1,
+ 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9, 0xace8, 0xace7,
+ 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec, 0xd2eb, 0xd2ea,
+ 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0xafae, 0xd2e7, 0xd2e9, 0xafac,
+ 0xafab, 0xafa9, 0xafa8, 0xd6c2, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd,
+ 0xb2bc, 0xd6be, 0xd6bf, 0xd6c1, 0xb2bd, 0xdad5, 0xdad4, 0xdad3,
+ 0xdad2, 0xdef6, 0xb852, 0xdef3, 0xdef5, 0xb853, 0xb854, 0xdef4,
+ 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5, 0xbad6, 0xe343, 0xe342,
+ 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb, 0xe340, 0xe2f8, 0xe6cb, 0xe6d0,
+ 0xe6ce, 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0xbf6d, 0xc148, 0xedb0,
+ 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab, 0xf4a1,
+ 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb, 0xd6c3,
+ 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0xcda4, 0xaac4, 0xaac3,
+ 0xacee, 0xcffa, 0xcffd, 0xcffb, 0xacec, 0xaced, 0xcff9, 0xcffc,
+ 0xafb5, 0xd2f3, 0xd2f5, 0xd2f4, 0xafb2, 0xd2ef, 0xafb0, 0xafaf,
+ 0xafb3, 0xafb1, 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0,
+ 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8,
+ 0xdada, 0xb57c, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579, 0xdf41,
+ 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8, 0xdef9,
+ 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd, 0xe349,
+ 0xe348, 0xe344, 0xbad8, 0xe347, 0xe346, 0xbad9, 0xbd5e, 0xe6d2,
+ 0xbd5f, 0xbd5b, 0xbd5d, 0xbd5a, 0xbd5c, 0xeaaf, 0xbf70, 0xeab1,
+ 0xeab0, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3,
+ 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8,
+ 0xc2a9, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4, 0xf4a2,
+ 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6, 0xaac5,
+ 0xcda6, 0xd040, 0xacef, 0xcffe, 0xacf0, 0xafb6, 0xd2f8, 0xd2f6,
+ 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9, 0xd2fa, 0xd6c8, 0xd6ca,
+ 0xb2bf, 0xd6c9, 0xb2c0, 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44,
+ 0xb85d, 0xb85e, 0xdf43, 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b,
+ 0xe34c, 0xbd61, 0xbd60, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4,
+ 0xeab2, 0xeab6, 0xeab3, 0xbf73, 0xedb7, 0xc14b, 0xedb8, 0xedb9,
+ 0xc2ab, 0xc2ac, 0xc475, 0xc5d1, 0xa5df, 0xd041, 0xd2fd, 0xafb8,
+ 0xb3ba, 0xb3b9, 0xb5a4, 0xdadd, 0xb5a3, 0xdadc, 0xdf45, 0xbadc,
+ 0xe34d, 0xbadd, 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2,
+ 0xacf1, 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347,
+ 0xd345, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341, 0xd6d3,
+ 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0xb2c1, 0xd6d0, 0xd6dd,
+ 0xd6d1, 0xd6ce, 0xb2c5, 0xb2c2, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8,
+ 0xb2c8, 0xd6d9, 0xd6cf, 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb,
+ 0xd6db, 0xdadf, 0xdae4, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1,
+ 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8,
+ 0xb5ae, 0xb5a9, 0xb5aa, 0xb5a6, 0xdae5, 0xb861, 0xdf50, 0xdf53,
+ 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0xdf48, 0xb862, 0xdf4f,
+ 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49, 0xbae1, 0xdf52, 0xb85f, 0xdf51,
+ 0xe35d, 0xbae8, 0xe358, 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355,
+ 0xe354, 0xe357, 0xbae5, 0xe352, 0xe351, 0xbae4, 0xbadf, 0xe353,
+ 0xbae2, 0xe359, 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade,
+ 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0xbd65, 0xe6de, 0xe6d6,
+ 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66, 0xbd67,
+ 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0xeac0, 0xeabb, 0xeac5,
+ 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba, 0xeab7, 0xeac6, 0xc151,
+ 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc, 0xbf7b, 0xeab9, 0xeabe,
+ 0xbf7a, 0xeac1, 0xeac4, 0xedcb, 0xedcc, 0xedbc, 0xedc3, 0xedc1,
+ 0xc14f, 0xedc8, 0xeabf, 0xedbf, 0xedc9, 0xc14e, 0xedbe, 0xedbd,
+ 0xedc7, 0xedc4, 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce,
+ 0xedc2, 0xc150, 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0xf063,
+ 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a, 0xc2b1,
+ 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad, 0xf2ab,
+ 0xf066, 0xf06c, 0xf2a8, 0xc3b2, 0xc3b0, 0xf2aa, 0xf2ac, 0xf2a9,
+ 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0xc478, 0xf4aa, 0xf4a9, 0xf4a7,
+ 0xf4a6, 0xf4a8, 0xc477, 0xc479, 0xc4f0, 0xf5e5, 0xf5e4, 0xf6fa,
+ 0xf6fc, 0xf6fe, 0xf6fd, 0xf6fb, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2,
+ 0xc5d4, 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0xc659,
+ 0xf96d, 0xc67e, 0xa6cc, 0xcda8, 0xd045, 0xd046, 0xd044, 0xacf3,
+ 0xd047, 0xd048, 0xd049, 0xd349, 0xd34f, 0xd34d, 0xafbb, 0xd34b,
+ 0xd34c, 0xd34e, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
+ 0xd6df, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0, 0xdae9,
+ 0xdf56, 0xb864, 0xdf54, 0xb865, 0xdf55, 0xb866, 0xbae9, 0xe361,
+ 0xe35e, 0xe360, 0xbaea, 0xbaeb, 0xe35f, 0xe6df, 0xe6e0, 0xbd6b,
+ 0xe6e2, 0xe6e1, 0xa261, 0xeaca, 0xeacb, 0xeac7, 0xeac8, 0xbf7c,
+ 0xbf7d, 0xeac9, 0xc157, 0xc153, 0xc158, 0xc154, 0xc156, 0xc152,
+ 0xc155, 0xc2b3, 0xedcf, 0xf2ae, 0xf2ad, 0xf4ab, 0xc47a, 0xc47b,
+ 0xf741, 0xf5e6, 0xf740, 0xf8fd, 0xf9a4, 0xa6cd, 0xa874, 0xcda9,
+ 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a, 0xacf9, 0xacf5, 0xacfa,
+ 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe, 0xd35a, 0xafc7, 0xd353,
+ 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356, 0xafc2, 0xafc4, 0xd355,
+ 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9, 0xafc6, 0xd351, 0xd350,
+ 0xd357, 0xafc0, 0xafbc, 0xafc1, 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8,
+ 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9, 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5,
+ 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef, 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed,
+ 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd, 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb,
+ 0xd6ee, 0xdafb, 0xdaf2, 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7,
+ 0xb5b4, 0xdaef, 0xdaeb, 0xb86c, 0xdaf4, 0xb5b1, 0xdafa, 0xb5b8,
+ 0xb5ba, 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5,
+ 0xdaf3, 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868,
+ 0xdf5d, 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60,
+ 0xdf64, 0xdf5c, 0xdf58, 0xdf57, 0xdf62, 0xdf5a, 0xdf5e, 0xb86b,
+ 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0xbaee, 0xe36a, 0xbd78,
+ 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0xe375, 0xe362, 0xe377,
+ 0xe366, 0xbafe, 0xbafb, 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4,
+ 0xbaf3, 0xbaf9, 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373,
+ 0xbaef, 0xbaf0, 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369,
+ 0xe36d, 0xbafd, 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0xe36b, 0xbafc,
+ 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4, 0xbd72, 0xbd76, 0xe6f0,
+ 0xbd6c, 0xe6e8, 0xbd74, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5,
+ 0xbd71, 0xe6ef, 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d,
+ 0xe6ec, 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0xe6e9, 0xbfa2, 0xbfa7,
+ 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9, 0xbfa8, 0xbfa1,
+ 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace, 0xead6, 0xbfa3,
+ 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd, 0xead7, 0xbfa4,
+ 0xeade, 0xeadd, 0xedda, 0xedd6, 0xc15f, 0xedd0, 0xc159, 0xc169,
+ 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164, 0xc167, 0xedde, 0xc15c,
+ 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1, 0xc160, 0xc15a, 0xc168,
+ 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf, 0xc162, 0xc15b, 0xedd9,
+ 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074, 0xc2b9, 0xf077, 0xc2b4,
+ 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba, 0xc2b7, 0xf06d, 0xc2b6,
+ 0xf073, 0xf075, 0xc2b8, 0xf072, 0xf070, 0xf2b8, 0xc3b7, 0xc3b8,
+ 0xc3b4, 0xc3b5, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0,
+ 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d,
+ 0xf4ad, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9, 0xf5e7,
+ 0xf5ea, 0xc4f2, 0xf5ec, 0xc4f1, 0xf742, 0xc5d5, 0xc5d7, 0xf7ee,
+ 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe, 0xf941, 0xc66c, 0xa6ce,
+ 0xacfb, 0xd26f, 0xafca, 0xb2da, 0xdafc, 0xdafd, 0xeadf, 0xc16a,
+ 0xede1, 0xc2bb, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0xf743, 0xc5f8,
+ 0xca49, 0xaac9, 0xa875, 0xd04d, 0xd360, 0xd35b, 0xd35f, 0xd35d,
+ 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe, 0xdb40, 0xdf69, 0xdf6a,
+ 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67, 0xb86d, 0xbb40, 0xb870,
+ 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d, 0xbfa9, 0xeae2, 0xeae0, 0xeae1,
+ 0xede4, 0xede3, 0xede2, 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9,
+ 0xf8ba, 0xa6cf, 0xaacb, 0xaaca, 0xd04f, 0xacfc, 0xd04e, 0xd362,
+ 0xafcc, 0xd6f2, 0xd361, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db,
+ 0xdb42, 0xdb43, 0xdb41, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e, 0xb872,
+ 0xb871, 0xe6f2, 0xe6f4, 0xbd7e, 0xe6f3, 0xeae3, 0xbfaa, 0xf079,
+ 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc, 0xf4b0, 0xf5ee, 0xc4f3,
+ 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce, 0xd364, 0xd363, 0xafcd,
+ 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd, 0xd6f8, 0xb2de, 0xd6fc,
+ 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf, 0xdb44, 0xdf6f, 0xdf70,
+ 0xe37e, 0xbb43, 0xbb41, 0xbb42, 0xe37b, 0xe37c, 0xe37d, 0xe6f9,
+ 0xe6fa, 0xbda1, 0xe6f7, 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4,
+ 0xbfab, 0xbfac, 0xede6, 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b,
+ 0xc2bc, 0xc2bd, 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1,
+ 0xa6d2, 0xacfe, 0xaacc, 0xafcf, 0xd051, 0xb5c0, 0xa6d3, 0xad41,
+ 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366,
+ 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0xd740, 0xd6fe, 0xdf71,
+ 0xe3a1, 0xbda2, 0xbfae, 0xeae6, 0xeae5, 0xede7, 0xf5ef, 0xa6d5,
+ 0xcb73, 0xcdaa, 0xad43, 0xd055, 0xd368, 0xafd4, 0xd367, 0xafd5,
+ 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45,
+ 0xb5c1, 0xb874, 0xb875, 0xbb45, 0xe3a3, 0xe3a2, 0xbb44, 0xe6fb,
+ 0xe6fc, 0xeae7, 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c,
+ 0xc2bf, 0xc2be, 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0xd1fb,
+ 0xb877, 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9,
+ 0xcdab, 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75,
+ 0xa87b, 0xa87a, 0xcb78, 0xa878, 0xaad1, 0xaacf, 0xcdad, 0xaace,
+ 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0, 0xa87c,
+ 0xaad4, 0xcdaf, 0xcdae, 0xaacd, 0xd05b, 0xad47, 0xad48, 0xd05d,
+ 0xd057, 0xd05a, 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064,
+ 0xd05c, 0xd059, 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f,
+ 0xad46, 0xad4b, 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e,
+ 0xad4e, 0xad45, 0xd066, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a,
+ 0xafde, 0xafdb, 0xd36c, 0xafdd, 0xd36b, 0xd369, 0xd36e, 0xafe2,
+ 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xafd9, 0xafdc, 0xafdf,
+ 0xafe1, 0xd74e, 0xb2e4, 0xd745, 0xd747, 0xd748, 0xd750, 0xd74c,
+ 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746, 0xd74f, 0xb2e7,
+ 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8, 0xb5c8, 0xdb51, 0xdb4f,
+ 0xb5ca, 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0xdb4b, 0xb5c5, 0xb5cb,
+ 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4,
+ 0xb5c3, 0xdf77, 0xdf75, 0xdf7b, 0xdf73, 0xdfa2, 0xdf78, 0xdf72,
+ 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e, 0xb87c, 0xdf7e, 0xb879,
+ 0xb878, 0xdf79, 0xb87d, 0xb5cd, 0xdf7c, 0xdf74, 0xb87a, 0xb8a1,
+ 0xb8a2, 0xbb4c, 0xbb48, 0xbb4d, 0xe3a6, 0xe3a5, 0xe3a7, 0xbb4a,
+ 0xe3a4, 0xbb4b, 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0xe741, 0xe744,
+ 0xbda8, 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe,
+ 0xbda6, 0xe742, 0xe6fd, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0xeaed,
+ 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0, 0xeaec,
+ 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178, 0xc17a, 0xc177,
+ 0xc176, 0xc175, 0xc173, 0xede9, 0xedec, 0xc172, 0xeded, 0xc179,
+ 0xedeb, 0xedea, 0xc2c0, 0xc2c1, 0xf0a1, 0xf07d, 0xf07e, 0xf2c2,
+ 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4, 0xf4b3, 0xf5f0, 0xf745, 0xc5a6,
+ 0xf943, 0xf944, 0xc5d8, 0xa6da, 0xaad7, 0xdb52, 0xbb4e, 0xc17b,
+ 0xedef, 0xa6db, 0xafe5, 0xafe4, 0xdb53, 0xeaf4, 0xa6dc, 0xad50,
+ 0xdb54, 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068,
+ 0xafe6, 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c,
+ 0xc2c2, 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51,
+ 0xe3ab, 0xe745, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0, 0xcdb1,
+ 0xd069, 0xad51, 0xd372, 0xafea, 0xafe8, 0xafe9, 0xafeb, 0xd371,
+ 0xd757, 0xd754, 0xd756, 0xb2eb, 0xb2ed, 0xb2ec, 0xd753, 0xb2ee,
+ 0xd755, 0xdb58, 0xdb59, 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8,
+ 0xb8a5, 0xdfa4, 0xbb53, 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748,
+ 0xe747, 0xeaf5, 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0,
+ 0xedf2, 0xf0a3, 0xf0a2, 0xf2c4, 0xf2c5, 0xf2c3, 0xc4a5, 0xf4b6,
+ 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2,
+ 0xd758, 0xdb5b, 0xc641, 0xca4a, 0xca4b, 0xca4d, 0xa6e3, 0xca4e,
+ 0xca4c, 0xcba2, 0xcba3, 0xcb7b, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c,
+ 0xcb7a, 0xcb79, 0xcb7d, 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc,
+ 0xcdb5, 0xcdb7, 0xaadb, 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6,
+ 0xaae6, 0xcdc3, 0xaae3, 0xcdb9, 0xcdbf, 0xcdc1, 0xcdb4, 0xaae2,
+ 0xaadd, 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8,
+ 0xcdc5, 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade,
+ 0xaae8, 0xcdb3, 0xcdc2, 0xcdc4, 0xad62, 0xad5c, 0xad64, 0xad61,
+ 0xd071, 0xd074, 0xad5d, 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65,
+ 0xd0a2, 0xd077, 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f,
+ 0xd07e, 0xd073, 0xd076, 0xd0a5, 0xad66, 0xd07d, 0xad5e, 0xd078,
+ 0xd0a4, 0xd075, 0xd079, 0xd07c, 0xd06d, 0xd0a3, 0xd07b, 0xd06c,
+ 0xd070, 0xad5f, 0xad5a, 0xad53, 0xad58, 0xad54, 0xad67, 0xd06e,
+ 0xd3a5, 0xad5b, 0xd07a, 0xce41, 0xd3a8, 0xaffa, 0xd376, 0xd3a3,
+ 0xd37d, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
+ 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc,
+ 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8,
+ 0xd072, 0xdb5c, 0xd3a6, 0xd37a, 0xaffb, 0xd37b, 0xd3a1, 0xaffe,
+ 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4, 0xd3b0,
+ 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1, 0xafef,
+ 0xd379, 0xd75e, 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d,
+ 0xb2fd, 0xb2fe, 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0xb340,
+ 0xd777, 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef,
+ 0xd761, 0xd759, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
+ 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0xd76b, 0xb2f0, 0xb2fb, 0xb2f3,
+ 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767, 0xd76d,
+ 0xb2f6, 0xd778, 0xd771, 0xd774, 0xb2f5, 0xdb6c, 0xdb60, 0xb5d7,
+ 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5, 0xdb68, 0xdba3, 0xdb69, 0xdb77,
+ 0xb5e2, 0xdb73, 0xb5df, 0xdb74, 0xdb5d, 0xdba4, 0xb5e8, 0xdba1,
+ 0xdb75, 0xdbac, 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a,
+ 0xb5e9, 0xb5d4, 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63,
+ 0xdb61, 0xb5d0, 0xdba5, 0xdb6a, 0xdba8, 0xdba9, 0xb5d8, 0xb5dd,
+ 0xb5d9, 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e,
+ 0xdba2, 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1,
+ 0xb5e5, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3,
+ 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0xdbae, 0xdb5f,
+ 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xdfca, 0xdfb5, 0xb8a9, 0xdfc5,
+ 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf, 0xdfc0,
+ 0xdfd6, 0xb8b0, 0xb8a8, 0xdfaa, 0xdfb2, 0xdfcb, 0xdfc3, 0xdfdc,
+ 0xdfc6, 0xb8b6, 0xdfd7, 0xb8ad, 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0,
+ 0xdfe1, 0xdfb1, 0xdfd2, 0xdfdf, 0xdfab, 0xb5db, 0xdfb9, 0xdfb8,
+ 0xb8af, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xb8b3, 0xdfb0,
+ 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae, 0xb8b5, 0xdfe0,
+ 0xdfd3, 0xdfce, 0xdfbb, 0xdfba, 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4,
+ 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb, 0xb8a6, 0xdfb3, 0xdfaf, 0xdfd5,
+ 0xdfae, 0xbb60, 0xe3d3, 0xe3c2, 0xe3ac, 0xe3ca, 0xbb58, 0xe3bb,
+ 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd, 0xe3ae, 0xe3c1,
+ 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba, 0xe3b5, 0xe3b3, 0xe3b4,
+ 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a, 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6,
+ 0xe3b0, 0xe3c0, 0xbb61, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57,
+ 0xdfd4, 0xbb56, 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9,
+ 0xe3b1, 0xe3cc, 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9,
+ 0xe3ce, 0xe3d1, 0xe773, 0xe774, 0xe767, 0xe766, 0xe762, 0xbdb4,
+ 0xbdac, 0xe776, 0xe775, 0xdfa9, 0xe75f, 0xe763, 0xe75d, 0xe770,
+ 0xe761, 0xe777, 0xe75a, 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6,
+ 0xe74f, 0xe76d, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b,
+ 0xe75c, 0xe753, 0xe751, 0xe74e, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3,
+ 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b,
+ 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772,
+ 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c,
+ 0xe77d, 0xe77a, 0xe771, 0xe74d, 0xbdaa, 0xeb49, 0xeb40, 0xeb43,
+ 0xbfbb, 0xeb45, 0xeaf9, 0xeb41, 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6,
+ 0xeafb, 0xeb4c, 0xeb46, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46,
+ 0xeafe, 0xbfb7, 0xeb4a, 0xeb54, 0xbfbf, 0xeb51, 0xeafd, 0xeb44,
+ 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba, 0xbfbe,
+ 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0xeb4b, 0xeb4e, 0xee53, 0xee40,
+ 0xee45, 0xee52, 0xee44, 0xedfb, 0xee41, 0xc1a2, 0xedf4, 0xee4d,
+ 0xee4f, 0xedf3, 0xc1a1, 0xee51, 0xee49, 0xc1a8, 0xee50, 0xee42,
+ 0xc1aa, 0xedf9, 0xeb52, 0xee4a, 0xee47, 0xedf5, 0xee55, 0xc1a4,
+ 0xc1a5, 0xedf7, 0xee48, 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3,
+ 0xee4c, 0xedfe, 0xee56, 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc,
+ 0xc2cb, 0xedf6, 0xc1a9, 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3,
+ 0xf0a9, 0xf0a4, 0xf0aa, 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9,
+ 0xf0ab, 0xf0b9, 0xf0ae, 0xf0a6, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2,
+ 0xf0a5, 0xf0ac, 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3,
+ 0xc2c6, 0xf2d5, 0xf0b5, 0xc3c2, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc,
+ 0xf2d4, 0xc3c0, 0xf2d9, 0xf2d2, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3,
+ 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8,
+ 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0, 0xc4a7,
+ 0xc4a9, 0xc4a6, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd, 0xf4ba, 0xf4bf,
+ 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad, 0xc4ab, 0xf4c2, 0xc4a8,
+ 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4,
+ 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
+ 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xf7f4, 0xf74b, 0xf749,
+ 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0, 0xf7f5, 0xf7f3,
+ 0xf7f6, 0xc5da, 0xf7f1, 0xf8bc, 0xf945, 0xf946, 0xf947, 0xf9c7,
+ 0xf9bd, 0xca4f, 0xaaea, 0xad68, 0xd3b8, 0xd3b7, 0xb040, 0xb342,
+ 0xd77c, 0xd77b, 0xb5ea, 0xb8b8, 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e,
+ 0xeb58, 0xeb5a, 0xeb59, 0xc1ab, 0xee57, 0xf0ba, 0xf9a5, 0xa6e4,
+ 0xcdc9, 0xcdca, 0xcdc8, 0xcdc7, 0xaaeb, 0xd0a9, 0xd0a7, 0xd0a6,
+ 0xad69, 0xad6b, 0xad6a, 0xd0a8, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041,
+ 0xd3c2, 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0xb043, 0xd3ce,
+ 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc,
+ 0xd3be, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8, 0xd3ba,
+ 0xb045, 0xb042, 0xb34c, 0xd7a5, 0xb34b, 0xd7a8, 0xd7ab, 0xb348,
+ 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4, 0xd7ac, 0xd7ad, 0xd7af,
+ 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1, 0xd7ae, 0xb347, 0xd7a3,
+ 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a, 0xd7aa, 0xb5f1, 0xdbbf,
+ 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1, 0xb5ec, 0xdbb6, 0xb5ef,
+ 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2, 0xdbb5, 0xb5f0, 0xdbb3,
+ 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb, 0xb5ed, 0xdfe8, 0xdfee,
+ 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6, 0xb8c0, 0xb8bf, 0xb8be, 0xdfed,
+ 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0, 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec,
+ 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef, 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb,
+ 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de, 0xbb65, 0xe3db, 0xe3e4, 0xe3dc,
+ 0xbb67, 0xe3d6, 0xe3f1, 0xbb68, 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d,
+ 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da, 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5,
+ 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0, 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2,
+ 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed, 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9,
+ 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad, 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b,
+ 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf, 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4,
+ 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab, 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba,
+ 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0, 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af,
+ 0xe7b8, 0xe7b5, 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd,
+ 0xeb64, 0xe7b7, 0xe7bc, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67,
+ 0xeb65, 0xeb60, 0xeb6f, 0xbfc4, 0xeb5c, 0xeb68, 0xeb69, 0xeb5f,
+ 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e, 0xeb5b, 0xeb6d,
+ 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb, 0xee59, 0xc1b1,
+ 0xee5d, 0xee5a, 0xee61, 0xee67, 0xee5c, 0xee70, 0xc1ae, 0xee6a,
+ 0xee5f, 0xee6b, 0xee66, 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60,
+ 0xee6e, 0xee58, 0xee6c, 0xc1ac, 0xee64, 0xee63, 0xee68, 0xee5b,
+ 0xc1b0, 0xc1b4, 0xee62, 0xee69, 0xc1b5, 0xee65, 0xc1ad, 0xc1af,
+ 0xf0c7, 0xf0c5, 0xf0cc, 0xf0c9, 0xf0cd, 0xf0be, 0xf0c6, 0xf0d1,
+ 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4, 0xf0c1,
+ 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8, 0xc2cc,
+ 0xc2ce, 0xf0c3, 0xf0cf, 0xf2de, 0xf2df, 0xc3c9, 0xf2dc, 0xc3c6,
+ 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce, 0xf2e8, 0xf2dd, 0xc3c7,
+ 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7, 0xf2e2, 0xf2e1, 0xc3c8, 0xf4c5,
+ 0xf4c6, 0xf4c8, 0xc4ae, 0xc4af, 0xf4c9, 0xf4c7, 0xf4c4, 0xf642,
+ 0xf645, 0xf641, 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644,
+ 0xf751, 0xf74f, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0xf7f9,
+ 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be,
+ 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5,
+ 0xd0aa, 0xd3cf, 0xd3d0, 0xdbc0, 0xf647, 0xf8c0, 0xa6e6, 0xad6c,
+ 0xd0ab, 0xd7b1, 0xb34e, 0xdbc2, 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1,
+ 0xbdc3, 0xbdc4, 0xbfc5, 0xc5fc, 0xa6e7, 0xd0ac, 0xaaed, 0xd0ae,
+ 0xd0ad, 0xad6d, 0xd3d1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4, 0xd3db,
+ 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da, 0xd3d7,
+ 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xb350, 0xd7b2, 0xb355, 0xd7c2,
+ 0xb354, 0xd7c4, 0xd7b8, 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf,
+ 0xd7bb, 0xd7bd, 0xd7b7, 0xd7be, 0xb34f, 0xd7ba, 0xd7b9, 0xd7b5,
+ 0xd7c0, 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0xb5f6, 0xdbcd,
+ 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca, 0xdbcc, 0xdbc8,
+ 0xdbc7, 0xb5f4, 0xb5f5, 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3,
+ 0xdff4, 0xdff9, 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca,
+ 0xb8c8, 0xdff7, 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc,
+ 0xe3f6, 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7,
+ 0xe3f8, 0xbb6e, 0xbb70, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9,
+ 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0xdbce, 0xbb6f, 0xe7c2, 0xe7c9,
+ 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc, 0xbdc5, 0xe7cb,
+ 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6, 0xe7c7, 0xe7c8,
+ 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79, 0xbfc8, 0xeb71,
+ 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b, 0xeb73, 0xeb74, 0xeb7a,
+ 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71, 0xc1b7, 0xee77, 0xc1b9,
+ 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75, 0xee78, 0xc1b8, 0xf0d6,
+ 0xf0d9, 0xf0d3, 0xf0d5, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2,
+ 0xc3cd, 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0,
+ 0xc3ce, 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0xf4cb,
+ 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752,
+ 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0xf948, 0xf949, 0xf94b, 0xf94a,
+ 0xca50, 0xa6e8, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa, 0xc2d0, 0xf2f2,
+ 0xa8a3, 0xb357, 0xb356, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb,
+ 0xb8d0, 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf,
+ 0xbfcc, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a, 0xc2d1, 0xf2f4,
+ 0xf2f3, 0xf4cc, 0xc4b1, 0xc4fd, 0xf754, 0xf753, 0xc65b, 0xa8a4,
+ 0xd0af, 0xad6f, 0xd7c8, 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043,
+ 0xdbd3, 0xdffc, 0xe041, 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd,
+ 0xe044, 0xe449, 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d,
+ 0xee7c, 0xee7d, 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755,
+ 0xc5a9, 0xf7fe, 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1,
+ 0xad70, 0xb054, 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd,
+ 0xb056, 0xb053, 0xb057, 0xb055, 0xb04f, 0xb35f, 0xb359, 0xd7cc,
+ 0xb35e, 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0xb358, 0xd7cb, 0xb35d,
+ 0xd7c9, 0xb35c, 0xb644, 0xb646, 0xdbd8, 0xb645, 0xb5f9, 0xb5fd,
+ 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd, 0xdbde, 0xb643, 0xdbe0,
+ 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6, 0xdbe4, 0xb642, 0xdbe1, 0xdbdf,
+ 0xb640, 0xb5fb, 0xb647, 0xdbdb, 0xdbdc, 0xdbd9, 0xb641, 0xb5fc,
+ 0xb5fa, 0xe048, 0xb8df, 0xb8da, 0xb8d5, 0xb8e5, 0xb8d6, 0xb8d2,
+ 0xb8e1, 0xb8de, 0xb8e0, 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050,
+ 0xe04d, 0xe045, 0xe04a, 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xe047,
+ 0xe04f, 0xe04b, 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c,
+ 0xbb78, 0xbb7b, 0xe44e, 0xbba5, 0xe44d, 0xbb7d, 0xbdcf, 0xe44f,
+ 0xbba4, 0xe44b, 0xbba6, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a, 0xbb7e,
+ 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0xbba1, 0xe44a, 0xbdd6, 0xbdd2,
+ 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2, 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd,
+ 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1, 0xbdce, 0xe7df, 0xe7d5, 0xbdcd,
+ 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8, 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7,
+ 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc, 0xe7e0, 0xe7e4, 0xbddb, 0xbfd2,
+ 0xeba5, 0xebab, 0xeba8, 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd,
+ 0xbfd3, 0xebad, 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0,
+ 0xeba2, 0xbfda, 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce,
+ 0xebb0, 0xbfdc, 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3,
+ 0xeea4, 0xeead, 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0xeeab, 0xc1bc,
+ 0xeea7, 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2,
+ 0xc1bd, 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e,
+ 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3,
+ 0xf0da, 0xc2d6, 0xc2d5, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4, 0xf0dd,
+ 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2, 0xf0ec,
+ 0xf0e3, 0xf2f9, 0xc3cf, 0xf341, 0xf64f, 0xc3d6, 0xf0e0, 0xf2f7,
+ 0xc3d2, 0xf2f8, 0xf2fd, 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342,
+ 0xf2fa, 0xf2fc, 0xf2fe, 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3,
+ 0xc3d0, 0xf4d0, 0xc4b7, 0xf4ce, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4,
+ 0xf4d1, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe,
+ 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b,
+ 0xc5aa, 0xf758, 0xf757, 0xf75a, 0xf759, 0xf843, 0xc5dc, 0xf842,
+ 0xf840, 0xf841, 0xc5fe, 0xc5fd, 0xf8c1, 0xf8c2, 0xc640, 0xf94d,
+ 0xf94e, 0xc667, 0xc66d, 0xf9a9, 0xf9c8, 0xa8a6, 0xd7cd, 0xd7ce,
+ 0xe052, 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844,
+ 0xa8a7, 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6,
+ 0xbddd, 0xeeb1, 0xc2d7, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362,
+ 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057,
+ 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2,
+ 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c,
+ 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a,
+ 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1,
+ 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347,
+ 0xf9aa, 0xa8a9, 0xad73, 0xad74, 0xb05d, 0xb05e, 0xd3e2, 0xd3e1,
+ 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365, 0xb364, 0xb64a,
+ 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec, 0xb653, 0xb652, 0xb655,
+ 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d, 0xdbe9, 0xb654, 0xb650,
+ 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0, 0xb8ea, 0xb8eb, 0xb8e9,
+ 0xe05b, 0xe454, 0xbbac, 0xbbad, 0xbbab, 0xe453, 0xe455, 0xe7ea,
+ 0xe7ec, 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5,
+ 0xbde6, 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0xbde8, 0xbde3,
+ 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0xebb8, 0xbfe0, 0xebb4, 0xc1cb,
+ 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9, 0xf0f3, 0xf0f6, 0xf0f5,
+ 0xf0f4, 0xc2d8, 0xf348, 0xf349, 0xc3d8, 0xf34a, 0xc3d9, 0xc4ba,
+ 0xc4b9, 0xf652, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0xf845,
+ 0xc642, 0xa8aa, 0xb36a, 0xb369, 0xe05c, 0xe05d, 0xbbae, 0xebb9,
+ 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2, 0xad76, 0xad75, 0xd3e3,
+ 0xb05f, 0xd3e4, 0xd7d5, 0xd7d4, 0xd7d3, 0xdbee, 0xb658, 0xdbed,
+ 0xb657, 0xdbef, 0xb656, 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065,
+ 0xe05e, 0xe066, 0xe063, 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2,
+ 0xe7f0, 0xbdeb, 0xe7ef, 0xe7f1, 0xbdec, 0xebbb, 0xebbc, 0xc1cd,
+ 0xf34c, 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac,
+ 0xad77, 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b,
+ 0xd7d9, 0xd7da, 0xd7d7, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9, 0xb65b,
+ 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1, 0xdbf7,
+ 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f, 0xdbf5, 0xb65a,
+ 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8, 0xb8f9, 0xe070,
+ 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b, 0xb8f4, 0xe067,
+ 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1, 0xe45b, 0xe461,
+ 0xe459, 0xe462, 0xe458, 0xe45d, 0xe463, 0xe460, 0xe45f, 0xe45e,
+ 0xe457, 0xe45c, 0xe45a, 0xbdf1, 0xbdee, 0xe7fb, 0xe841, 0xe843,
+ 0xe840, 0xe7f8, 0xe7fa, 0xe845, 0xe842, 0xe7fc, 0xe846, 0xe7f9,
+ 0xe844, 0xbdef, 0xbdf5, 0xbdf3, 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4,
+ 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe, 0xbdf2, 0xbded, 0xe7f7, 0xebc6,
+ 0xbfe2, 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0xebc3,
+ 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1,
+ 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb, 0xeeba,
+ 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa, 0xc2d9, 0xf141,
+ 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9, 0xf142, 0xf0f8,
+ 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0xf144, 0xf352, 0xc3de,
+ 0xf34f, 0xf353, 0xc3db, 0xf351, 0xc3e0, 0xc3dd, 0xf350, 0xc3df,
+ 0xf354, 0xc3da, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
+ 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761,
+ 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846,
+ 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950,
+ 0xf94f, 0xf970, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060, 0xb8fa,
+ 0xbdf6, 0xebc8, 0xc2df, 0xf355, 0xf9ac, 0xa8ae, 0xaaee, 0xad79,
+ 0xad78, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db,
+ 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1, 0xdc43,
+ 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48, 0xdc4a, 0xdc42, 0xdbfc,
+ 0xdc49, 0xdc4b, 0xdc44, 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe,
+ 0xb661, 0xb663, 0xb8fd, 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb,
+ 0xe078, 0xe074, 0xe079, 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467,
+ 0xe466, 0xe464, 0xe465, 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d,
+ 0xe84e, 0xe849, 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9,
+ 0xe84b, 0xe84c, 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847,
+ 0xebca, 0xbfe8, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
+ 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0xc1d4, 0xeec0,
+ 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0xf149, 0xc2e1,
+ 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a, 0xc3e1, 0xf4dd,
+ 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658, 0xf659, 0xf657,
+ 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848, 0xf847, 0xa8af, 0xb664,
+ 0xb940, 0xbbb6, 0xbfec, 0xbfeb, 0xc3e3, 0xc47c, 0xc547, 0xa8b0,
+ 0xb064, 0xb941, 0xf35b, 0xcba6, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2,
+ 0xcba5, 0xcdcd, 0xcdcf, 0xaaef, 0xaaf1, 0xcdcc, 0xcdce, 0xaaf0,
+ 0xcdd1, 0xcdd0, 0xcdd2, 0xd0b6, 0xd0b4, 0xad7c, 0xd0b3, 0xada3,
+ 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1, 0xd0b5, 0xad7a,
+ 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0xb069, 0xd3ee, 0xd3f0,
+ 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065, 0xd3ec, 0xb06b, 0xd3ef,
+ 0xb06d, 0xb066, 0xd7e3, 0xd7e6, 0xb370, 0xb37a, 0xb376, 0xd7e4,
+ 0xb37e, 0xb377, 0xb37c, 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5,
+ 0xb375, 0xb378, 0xb374, 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2,
+ 0xdc4d, 0xb665, 0xdc4f, 0xb667, 0xb669, 0xdc4e, 0xb666, 0xb66a,
+ 0xb668, 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1,
+ 0xb94a, 0xe0a2, 0xb943, 0xb942, 0xb94d, 0xb94c, 0xb94b, 0xb949,
+ 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0xbbb8, 0xbbbb, 0xbbbf,
+ 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0xbbbd, 0xbbba, 0xe852, 0xbe43,
+ 0xbe41, 0xe853, 0xbe44, 0xbe42, 0xe851, 0xe850, 0xbff0, 0xe84f,
+ 0xbfee, 0xbfed, 0xebd0, 0xbe45, 0xbfef, 0xebd1, 0xbff2, 0xebd2,
+ 0xbff1, 0xc1d8, 0xeec3, 0xc1d7, 0xc1dc, 0xc1da, 0xc1db, 0xc2e3,
+ 0xc1d9, 0xeec2, 0xebd3, 0xc2e2, 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0,
+ 0xc5de, 0xc5dd, 0xa8b6, 0xca55, 0xb06f, 0xca52, 0xca53, 0xca51,
+ 0xca54, 0xcbaa, 0xcba7, 0xcbac, 0xcba8, 0xa8b7, 0xa8ba, 0xcba9,
+ 0xa8b9, 0xcbab, 0xa8b8, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6,
+ 0xcdd4, 0xaaf2, 0xaaf5, 0xaaf3, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7,
+ 0xada8, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee,
+ 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc,
+ 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8,
+ 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea,
+ 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57,
+ 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c,
+ 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5,
+ 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952,
+ 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
+ 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a,
+ 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46,
+ 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd,
+ 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b,
+ 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075,
+ 0xb074, 0xd440, 0xd441, 0xd3fe, 0xb073, 0xd7f5, 0xd7f6, 0xd7f2,
+ 0xb3a4, 0xd7f3, 0xd7f4, 0xdc5f, 0xdc61, 0xdc5d, 0xdc60, 0xb66f,
+ 0xdc5e, 0xb670, 0xdd73, 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad,
+ 0xe473, 0xe475, 0xbbc6, 0xbbc3, 0xbbc5, 0xbbc4, 0xe474, 0xe472,
+ 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
+ 0xbe4b, 0xe85d, 0xbe4c, 0xebdb, 0xebdc, 0xebd9, 0xebda, 0xbff4,
+ 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb, 0xc1df, 0xeec9,
+ 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150, 0xf14e, 0xf152,
+ 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151, 0xf35e, 0xc3e6, 0xf4e5,
+ 0xf4e6, 0xc4bf, 0xf4e4, 0xf4e3, 0xf65d, 0xc548, 0xf849, 0xf8c8,
+ 0xf8c7, 0xc643, 0xc65d, 0xf8c9, 0xf971, 0xc66f, 0xa8bc, 0xaaf6,
+ 0xb956, 0xc4c0, 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7,
+ 0xd0c1, 0xd0c0, 0xd442, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079,
+ 0xb077, 0xd443, 0xb3a8, 0xd7fc, 0xb3a7, 0xb3a9, 0xd842, 0xb3ab,
+ 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa, 0xd7f8,
+ 0xb3a6, 0xd841, 0xd7fb, 0xd7fd, 0xdc6d, 0xdc6c, 0xdc6a, 0xdc62,
+ 0xdc71, 0xdc65, 0xdc6f, 0xdc76, 0xdc6e, 0xb679, 0xb675, 0xdc63,
+ 0xdc69, 0xb677, 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0xb672, 0xb673,
+ 0xdc77, 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0xb674, 0xdc73,
+ 0xdc64, 0xdc67, 0xdc70, 0xe4ba, 0xe0b7, 0xe0b0, 0xe0c3, 0xe0cc,
+ 0xe0b3, 0xb961, 0xe0c0, 0xb957, 0xb959, 0xb965, 0xe0b1, 0xb95a,
+ 0xb95c, 0xb966, 0xb95b, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8,
+ 0xb95e, 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af,
+ 0xe0c9, 0xe0c4, 0xe0cb, 0xb958, 0xb967, 0xb95d, 0xe0b5, 0xe0bd,
+ 0xe0c1, 0xe0c5, 0xb95f, 0xe0b4, 0xe0b2, 0xe0be, 0xe0bb, 0xe0ba,
+ 0xe0bf, 0xe0c2, 0xe0c7, 0xe478, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc,
+ 0xbbd0, 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0xe4aa, 0xe0b6, 0xbbc9,
+ 0xe4b1, 0xe4b6, 0xe4ae, 0xe4b0, 0xe4b9, 0xe4b2, 0xe47e, 0xe4a9,
+ 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb, 0xe4a5, 0xbbca, 0xe4b3,
+ 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b, 0xe4af, 0xe4ac, 0xe4a7,
+ 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf, 0xe4b7, 0xe47d, 0xe4a3,
+ 0xbe52, 0xbe5a, 0xbe55, 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xbe4f,
+ 0xbe56, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e, 0xe8a3,
+ 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877, 0xe875,
+ 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0xe878, 0xe86d, 0xe86b,
+ 0xe866, 0xe86e, 0xe87b, 0xe86a, 0xe87a, 0xe8a2, 0xbe53, 0xe876,
+ 0xe87c, 0xe872, 0xe86c, 0xbe51, 0xe4a8, 0xe870, 0xbe59, 0xe869,
+ 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44, 0xbffb, 0xec41, 0xebf8,
+ 0xec43, 0xebe9, 0xebf6, 0xbffd, 0xebe1, 0xebdf, 0xec42, 0xec40,
+ 0xebfe, 0xebed, 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd,
+ 0xc043, 0xec45, 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde,
+ 0xebe0, 0xbff5, 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041,
+ 0xebdd, 0xc1e3, 0xebf9, 0xebfc, 0xbffc, 0xebeb, 0xc044, 0xbff9,
+ 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5, 0xebea,
+ 0xeed2, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
+ 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4,
+ 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0xeeda, 0xeee7, 0xeee9,
+ 0xeed0, 0xc1e6, 0xeeea, 0xeede, 0xc1ea, 0xeedb, 0xc1ec, 0xeee4,
+ 0xc1e4, 0xeed6, 0xeee5, 0xeedf, 0xebe3, 0xeee6, 0xeed3, 0xc1e9,
+ 0xeeeb, 0xc1e2, 0xeece, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163,
+ 0xf15b, 0xeedc, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea, 0xc2f2,
+ 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0xf158, 0xf15d, 0xf162, 0xeecd,
+ 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e, 0xf15a, 0xf168, 0xf36a,
+ 0xf15c, 0xc2ee, 0xc2ed, 0xeecf, 0xc2ef, 0xf164, 0xf166, 0xc2ec,
+ 0xf169, 0xf153, 0xf156, 0xf373, 0xf363, 0xc3eb, 0xf371, 0xf361,
+ 0xc3ec, 0xf36c, 0xf368, 0xc3f1, 0xf372, 0xf362, 0xf365, 0xc3e9,
+ 0xf374, 0xf36d, 0xf370, 0xc3ef, 0xc3f4, 0xc3f2, 0xf369, 0xf364,
+ 0xc3ed, 0xc3ee, 0xf360, 0xc3ea, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3,
+ 0xf36b, 0xf375, 0xc3f5, 0xf367, 0xf36e, 0xf4f3, 0xf542, 0xf4f5,
+ 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed, 0xf4fe,
+ 0xf4f4, 0xc4c2, 0xf544, 0xf4f6, 0xf4fb, 0xf4fd, 0xf4e7, 0xf541,
+ 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef, 0xf543, 0xf4f9, 0xf4e8, 0xf4ec,
+ 0xf4ee, 0xf4f8, 0xc4c1, 0xf4f1, 0xf4ea, 0xf4f0, 0xf661, 0xf666,
+ 0xc54f, 0xf668, 0xc549, 0xf664, 0xf66a, 0xc54e, 0xc54a, 0xc54b,
+ 0xf660, 0xf667, 0xc54d, 0xf665, 0xc54c, 0xf65f, 0xf663, 0xf662,
+ 0xf65e, 0xf669, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f,
+ 0xf769, 0xf76a, 0xf767, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0xf84b,
+ 0xf84d, 0xf84c, 0xf84e, 0xc5e0, 0xf84a, 0xc5df, 0xc5e1, 0xf8cb,
+ 0xf8cc, 0xc644, 0xf8ca, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955,
+ 0xc65e, 0xf956, 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0xc672,
+ 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0xaaf8,
+ 0xd844, 0xdc78, 0xe8a5, 0xf376, 0xaaf9, 0xadac, 0xb07b, 0xd845,
+ 0xd846, 0xb3ac, 0xb67d, 0xdc7a, 0xdc79, 0xb6a3, 0xb67c, 0xdc7b,
+ 0xb67e, 0xb6a2, 0xb6a1, 0xb67b, 0xb968, 0xe0d0, 0xe0ce, 0xe0cf,
+ 0xe0cd, 0xbbd2, 0xbbd5, 0xbbd7, 0xbbd6, 0xbbd3, 0xbbd4, 0xe8a7,
+ 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9, 0xbe5c, 0xec4d, 0xec4b, 0xeef3,
+ 0xec49, 0xec4a, 0xc046, 0xec46, 0xec4e, 0xec48, 0xec4c, 0xeeef,
+ 0xeef1, 0xeef2, 0xc1f3, 0xeeee, 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0,
+ 0xc1f1, 0xec47, 0xc2f5, 0xf16e, 0xf16c, 0xf16d, 0xc2f3, 0xc2f6,
+ 0xc2f4, 0xf377, 0xf378, 0xc3f6, 0xf545, 0xf547, 0xf546, 0xc4c4,
+ 0xc550, 0xf66d, 0xf66c, 0xf66b, 0xaafa, 0xc9aa, 0xca58, 0xa6e9,
+ 0xca56, 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf,
+ 0xcbaf, 0xcbad, 0xa8c0, 0xa8be, 0xcdd8, 0xcddb, 0xaafd, 0xcdda,
+ 0xcdd9, 0xaafc, 0xaafb, 0xab40, 0xcddc, 0xaafe, 0xd0c6, 0xadae,
+ 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad, 0xd0c4, 0xd0c5, 0xd0c2,
+ 0xb0a4, 0xb0a1, 0xd445, 0xb0a2, 0xb0a5, 0xd446, 0xb07e, 0xb07c,
+ 0xb07d, 0xb0a3, 0xb3ad, 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1,
+ 0xd84a, 0xb6ab, 0xb3af, 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0,
+ 0xd847, 0xb6a7, 0xdc7d, 0xdca3, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9,
+ 0xdc7c, 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0xe0d3,
+ 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0xe0d4, 0xb969, 0xbbd8, 0xbbda,
+ 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0xe8aa, 0xc047, 0xc048, 0xec4f,
+ 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4, 0xf16f, 0xc3f7, 0xc1f5,
+ 0xab41, 0xb0a6, 0xd447, 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6,
+ 0xb6af, 0xb6ae, 0xb6b0, 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d,
+ 0xbbdb, 0xb96c, 0xe0d5, 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6,
+ 0xf170, 0xf174, 0xc2f9, 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb,
+ 0xf173, 0xf379, 0xc2f7, 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7,
+ 0xb6b2, 0xdca8, 0xdca7, 0xb6b3, 0xe0d9, 0xb973, 0xb970, 0xe0d8,
+ 0xb972, 0xe0d6, 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0xbe5d,
+ 0xe8ad, 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b,
+ 0xc050, 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb,
+ 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xf177, 0xf176, 0xc2fc,
+ 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b, 0xf37c,
+ 0xf548, 0xf549, 0xc4c5, 0xc553, 0xf66e, 0xc551, 0xc552, 0xf66f,
+ 0xc5b4, 0xc5b5, 0xf771, 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0,
+ 0xc646, 0xf957, 0xf9ad, 0xab43, 0xb974, 0xe4be, 0xe8b0, 0xc051,
+ 0xc052, 0xab44, 0xbe61, 0xc3fb, 0xadb1, 0xc053, 0xc5e2, 0xadb2,
+ 0xd84d, 0xdca9, 0xdcab, 0xdcaa, 0xe0dd, 0xe0da, 0xb975, 0xb976,
+ 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5, 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8,
+ 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2, 0xe4c6, 0xbbdf, 0xe8b3, 0xe8b1,
+ 0xbe63, 0xbe62, 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54,
+ 0xeefc, 0xeefe, 0xef41, 0xef40, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd,
+ 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340,
+ 0xf17a, 0xf3a1, 0xf3a3, 0xf3a2, 0xf54a, 0xf54b, 0xf670, 0xc5b7,
+ 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0xc669, 0xadb3, 0xb6b4,
+ 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0xc1fa, 0xef43, 0xef42, 0xf1a5,
+ 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4, 0xf3a5, 0xf3a6, 0xf671,
+ 0xf772, 0xf8d2, 0xadb4, 0xec57, 0xef44, 0xadb5, 0xbbe0, 0xec58,
+ 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6,
+ 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a,
+ 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979,
+ 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7, 0xe8b6, 0xe8bb,
+ 0xbe65, 0xc05b, 0xe8b8, 0xe8bd, 0xe8ba, 0xe8b9, 0xbe66, 0xc059,
+ 0xec5a, 0xc055, 0xec5b, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057,
+ 0xef45, 0xef4a, 0xef46, 0xef49, 0xc1fb, 0xedd4, 0xef48, 0xef47,
+ 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa, 0xc346,
+ 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe, 0xf551,
+ 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0xc555, 0xf774, 0xf773,
+ 0xc5b8, 0xc5e3, 0xc649, 0xc660, 0xf958, 0xf9ae, 0xf9af, 0xadb7,
+ 0xdcad, 0xe0e1, 0xe4cc, 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68,
+ 0xc1fc, 0xf1ab, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
+ 0xf675, 0xf552, 0xf553, 0xc4c6, 0xf674, 0xf673, 0xf775, 0xf9b0,
+ 0xadb8, 0xadb9, 0xb0a7, 0xd448, 0xd84f, 0xb6b8, 0xb6bb, 0xb6b9,
+ 0xdcae, 0xb6bd, 0xb6ba, 0xb6bc, 0xb97e, 0xe0e2, 0xe0e3, 0xe8c0,
+ 0xb97d, 0xb9a1, 0xb9a2, 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0,
+ 0xe8bf, 0xbbe8, 0xbe69, 0xbbe7, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a,
+ 0xe8c2, 0xe8c5, 0xe8c3, 0xe8c4, 0xbe6c, 0xc061, 0xc05f, 0xc05e,
+ 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e,
+ 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50,
+ 0xef4f, 0xc1fd, 0xf1ae, 0xf1ad, 0xc34a, 0xc348, 0xc349, 0xf1ac,
+ 0xf3b1, 0xc443, 0xf3b0, 0xf3af, 0xc444, 0xf558, 0xf557, 0xf555,
+ 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
+ 0xf676, 0xf556, 0xf777, 0xc5e4, 0xc661, 0xf959, 0xf9b1, 0xadba,
+ 0xd850, 0xef55, 0xadbb, 0xe4d2, 0xe4d1, 0xec60, 0xef57, 0xef56,
+ 0xc34c, 0xf3b2, 0xf3b3, 0xc4c9, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be,
+ 0xe0e4, 0xe0e6, 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0xe4d4,
+ 0xe4d6, 0xe4d5, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0xe4d9, 0xe8cc,
+ 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e, 0xbe71, 0xbe73,
+ 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce, 0xbe74, 0xbe70,
+ 0xe8c6, 0xbe6d, 0xbe6f, 0xc063, 0xec66, 0xec64, 0xec63, 0xec69,
+ 0xec68, 0xec67, 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a,
+ 0xef5e, 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60,
+ 0xef61, 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8,
+ 0xf1b7, 0xf1b1, 0xf1b5, 0xf1b0, 0xf1b2, 0xc34d, 0xf1af, 0xf1b4,
+ 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf, 0xf3b7,
+ 0xf3be, 0xf3bb, 0xf3ba, 0xf3bd, 0xf3b8, 0xf3b6, 0xf3bc, 0xf560,
+ 0xf55e, 0xc4ca, 0xf55d, 0xf563, 0xf561, 0xc4cb, 0xf55c, 0xf55a,
+ 0xf55b, 0xc4cd, 0xf55f, 0xc4cc, 0xf562, 0xf678, 0xf67e, 0xf679,
+ 0xc55b, 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558,
+ 0xf67a, 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c,
+ 0xf7a3, 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0xf853,
+ 0xc5e5, 0xc5e6, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0xf9b3, 0xc66b,
+ 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd, 0xb0a9, 0xe0e9,
+ 0xe0e8, 0xbbea, 0xbbeb, 0xe4da, 0xe8d2, 0xec6c, 0xbe75, 0xc065,
+ 0xec6a, 0xec6d, 0xc066, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1,
+ 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc,
+ 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xb0aa, 0xf1ba, 0xd449, 0xb9a6,
+ 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3, 0xc068, 0xbe76, 0xbe77,
+ 0xe8d7, 0xe8d6, 0xe8d5, 0xec6e, 0xec71, 0xec70, 0xec6f, 0xc067,
+ 0xef68, 0xef66, 0xef65, 0xef67, 0xc34f, 0xf1bc, 0xf1bd, 0xc350,
+ 0xf1bb, 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0xf567, 0xf569,
+ 0xf568, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd, 0xf854,
+ 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78, 0xc069,
+ 0xf1be, 0xf7a6, 0xf9c4, 0xd44a, 0xc67b, 0xb0ac, 0xec72, 0xf1bf,
+ 0xf3c6, 0xf6a7, 0xf7a7, 0xb0ad, 0xe4dd, 0xe4de, 0xbbed, 0xbbee,
+ 0xe8d9, 0xbe7a, 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1,
+ 0xc353, 0xc352, 0xc351, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8,
+ 0xc64c, 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2,
+ 0xe8dd, 0xe8da, 0xe8e1, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db,
+ 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77,
+ 0xec73, 0xec79, 0xec74, 0xef72, 0xec75, 0xeca2, 0xec7c, 0xc06a,
+ 0xec7b, 0xec7a, 0xec7e, 0xef6a, 0xef6d, 0xef6c, 0xef74, 0xef6f,
+ 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243, 0xc242, 0xc244,
+ 0xc241, 0xef75, 0xf1c8, 0xf1cb, 0xf1c9, 0xf1cd, 0xf1ce, 0xf1c6,
+ 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4, 0xf1c3, 0xc357, 0xc355,
+ 0xc354, 0xf1ca, 0xf3cf, 0xf3d5, 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7,
+ 0xc44b, 0xf3d2, 0xf3ca, 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4,
+ 0xf3cc, 0xc449, 0xc448, 0xf3c7, 0xf3c8, 0xf3d1, 0xf3ce, 0xf56c,
+ 0xf56f, 0xc356, 0xf56d, 0xf573, 0xf571, 0xf56b, 0xf576, 0xf56a,
+ 0xc4cf, 0xf572, 0xf56e, 0xc4ce, 0xf575, 0xf574, 0xf6ab, 0xf6aa,
+ 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0xf6ae, 0xf6af, 0xf6a9, 0xf6ac,
+ 0xc55f, 0xc5bf, 0xf7b4, 0xf7af, 0xf7b3, 0xf7b6, 0xf7b2, 0xf7ae,
+ 0xc5c1, 0xf7b1, 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad,
+ 0xf7aa, 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860,
+ 0xf859, 0xf857, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858, 0xf85e,
+ 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8, 0xf8d7, 0xf95a,
+ 0xf95c, 0xf95b, 0xf979, 0xf978, 0xf977, 0xf97a, 0xc673, 0xc674,
+ 0xf9ca, 0xf9ce, 0xb3be, 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec,
+ 0xe4e2, 0xe4e3, 0xbbf1, 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb,
+ 0xe8e5, 0xe8ec, 0xe8e4, 0xe8e6, 0xe8e7, 0xe8ea, 0xbea1, 0xe8ef,
+ 0xe8ee, 0xbe7d, 0xe8e9, 0xe8ed, 0xbe7e, 0xecac, 0xc06f, 0xeca7,
+ 0xc06b, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae,
+ 0xeca5, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8, 0xefa9,
+ 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xef79, 0xefa5, 0xef7d,
+ 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6, 0xef77, 0xefa2, 0xefa3,
+ 0xefa1, 0xf1d2, 0xf1d4, 0xf1d7, 0xf1d1, 0xc359, 0xf1d9, 0xf1d0,
+ 0xf1da, 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf,
+ 0xc35a, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f,
+ 0xf3e4, 0xc450, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e, 0xf3ea, 0xf3e5,
+ 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0xf3e3, 0xf3ef, 0xf3de,
+ 0xf3d9, 0xf3ec, 0xf3db, 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c,
+ 0xf3da, 0xf3e1, 0xf3e2, 0xf57d, 0xf57b, 0xf5a2, 0xf5ae, 0xf5a5,
+ 0xf57c, 0xf578, 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577,
+ 0xf5a1, 0xf5a6, 0xf5a8, 0xf5ab, 0xf579, 0xf5af, 0xf5b0, 0xf5a9,
+ 0xf5ad, 0xf5a4, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6,
+ 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc,
+ 0xf6b4, 0xf6b9, 0xf5ac, 0xf6b5, 0xc563, 0xf6bb, 0xf6ba, 0xf6b6,
+ 0xf6c2, 0xf6b7, 0xf7bb, 0xf6c5, 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc,
+ 0xf7be, 0xf7b8, 0xc5c2, 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1,
+ 0xf7ba, 0xf7b7, 0xf7bd, 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e,
+ 0xf864, 0xf867, 0xc5ee, 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f,
+ 0xf873, 0xf86a, 0xf863, 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4,
+ 0xf868, 0xf862, 0xf866, 0xc64e, 0xc64f, 0xf861, 0xf8e6, 0xf8dd,
+ 0xf8e5, 0xf8e2, 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0,
+ 0xf8de, 0xf8e4, 0xf95d, 0xf95e, 0xf960, 0xf95f, 0xf962, 0xf961,
+ 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0xf9c5, 0xc678, 0xc67c, 0xf9cf,
+ 0xc67d, 0xb3bf, 0xc4d0, 0xf6c9, 0xc650, 0xc651, 0xb3c0, 0xe0ee,
+ 0xb9a8, 0xe8f0, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247,
+ 0xf1df, 0xefac, 0xf1de, 0xf3f3, 0xc451, 0xc453, 0xf3f2, 0xc452,
+ 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca, 0xc565, 0xc5ef, 0xf8e8, 0xf963,
+ 0xf9d2, 0xb3c1, 0xe4e5, 0xbea2, 0xecb3, 0xecb2, 0xefad, 0xc454,
+ 0xc4d1, 0xf7c7, 0xf9cb, 0xb3c2, 0xbbf2, 0xbea3, 0xf3f4, 0xf874,
+ 0xb6c0, 0xefae, 0xc664, 0xb6c1, 0xbea4, 0xc248, 0xf875, 0xb6c2,
+ 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071, 0xefaf, 0xc24c, 0xc24a,
+ 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6,
+ 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc, 0xc566, 0xf7c8, 0xf876, 0xf877,
+ 0xc5f0, 0xf964, 0xf97d, 0xc675, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5,
+ 0xe0ef, 0xefb1, 0xf1e2, 0xf1e1, 0xf878, 0xc652, 0xf965, 0xf97e,
+ 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3, 0xf6cf,
+ 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab, 0xefb4, 0xefb3,
+ 0xefb2, 0xf1e4, 0xf1e8, 0xf1e7, 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6,
+ 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1, 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9,
+ 0xf87c, 0xf87b, 0xf87a, 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8,
+ 0xf7cc, 0xf87d, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e,
+ 0xf1e9, 0xf3f9, 0xf6d2, 0xf87e, 0xbea6, 0xefb5, 0xf1ea, 0xf3fa,
+ 0xf3fb, 0xf3fc, 0xf5be, 0xf5ba, 0xc568, 0xf5bd, 0xf5bc, 0xc4d4,
+ 0xf5bb, 0xc4d6, 0xc4d5, 0xf6d4, 0xf6d3, 0xc569, 0xc56a, 0xc5c6,
+ 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4, 0xf8a2, 0xf8a1, 0xc654, 0xf8eb,
+ 0xf8ec, 0xf8ed, 0xc653, 0xf967, 0xf96a, 0xf969, 0xf968, 0xf9d3,
+ 0xc073, 0xc365, 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0xc074,
+ 0xefb6, 0xf7cf, 0xf9a1, 0xc94a, 0xddfc, 0xa14a, 0xa157, 0xa159,
+ 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164, 0xa167, 0xa168, 0xa16b,
+ 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174, 0xa177, 0xa178, 0xa17b,
+ 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb, 0xa1c8, 0xa1c9, 0xa15c,
+ 0xa14d, 0xa14f, 0xa151, 0xa152, 0xa153, 0xa154, 0xa17d, 0xa17e,
+ 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de,
+ 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2, 0xa24c, 0xa24d, 0xa24e, 0xa149,
+ 0xa1ad, 0xa243, 0xa248, 0xa1ae, 0xa15d, 0xa15e, 0xa1af, 0xa1cf,
+ 0xa141, 0xa1d0, 0xa144, 0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2,
+ 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146,
+ 0xa1d5, 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1,
+ 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9,
+ 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1,
+ 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa242,
+ 0xa1c4, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef,
+ 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7,
+ 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa340,
+ 0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0xa14e,
+};
+
+static const Summary16 big5_uni2indx_page00[16] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x00ac }, { 4, 0x0083 },
+ { 7, 0x0000 }, { 7, 0x0080 }, { 8, 0x0000 }, { 8, 0x0080 },
+};
+static const Summary16 big5_uni2indx_page02[38] = {
+ /* 0x0200 */
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0e80 }, { 13, 0x0200 }, { 14, 0x0000 }, { 14, 0x0000 },
+ /* 0x0300 */
+ { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
+ { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
+ { 14, 0x0000 }, { 14, 0xfffe }, { 29, 0x03fb }, { 38, 0xfffe },
+ { 53, 0x03fb }, { 62, 0x0000 }, { 62, 0x0000 }, { 62, 0x0000 },
+ /* 0x0400 */
+ { 62, 0x0002 }, { 63, 0x1ff0 }, { 72, 0xfff8 }, { 85, 0xffff },
+ { 101, 0xffff }, { 117, 0x0002 },
+};
+static const Summary16 big5_uni2indx_page20[44] = {
+ /* 0x2000 */
+ { 118, 0x0000 }, { 118, 0x3318 }, { 124, 0x0064 }, { 127, 0x4824 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ /* 0x2100 */
+ { 131, 0x0228 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 },
+ { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x03ff }, { 144, 0x0000 },
+ { 144, 0x0000 }, { 144, 0x03cf }, { 152, 0x0000 }, { 152, 0x0000 },
+ { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 },
+ /* 0x2200 */
+ { 152, 0x0000 }, { 152, 0xc400 }, { 155, 0x4e29 }, { 162, 0x1030 },
+ { 165, 0x0000 }, { 165, 0x0004 }, { 166, 0x00c3 }, { 170, 0x0000 },
+ { 170, 0x0000 }, { 170, 0x0000 }, { 170, 0x0020 }, { 171, 0x8000 },
+};
+static const Summary16 big5_uni2indx_page24[37] = {
+ /* 0x2400 */
+ { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 },
+ { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x03ff }, { 182, 0x3ff0 },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ /* 0x2500 */
+ { 192, 0x1005 }, { 195, 0x1111 }, { 199, 0x1010 }, { 201, 0x1010 },
+ { 203, 0x0000 }, { 203, 0x4001 }, { 205, 0xe402 }, { 210, 0x000f },
+ { 214, 0xfffe }, { 229, 0x0030 }, { 231, 0x0003 }, { 233, 0x300c },
+ { 237, 0xc8c0 }, { 242, 0x0000 }, { 242, 0x003c }, { 246, 0x0000 },
+ /* 0x2600 */
+ { 246, 0x0260 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 },
+ { 249, 0x0007 },
+};
+static const Summary16 big5_uni2indx_page30[62] = {
+ /* 0x3000 */
+ { 252, 0xff2f }, { 265, 0x6037 }, { 272, 0x03fe }, { 281, 0x0000 },
+ { 281, 0xfffe }, { 296, 0xffff }, { 312, 0xffff }, { 328, 0xffff },
+ { 344, 0xffff }, { 360, 0x600f }, { 366, 0xfffe }, { 381, 0xffff },
+ { 397, 0xffff }, { 413, 0xffff }, { 429, 0xffff }, { 445, 0x407f },
+ /* 0x3100 */
+ { 453, 0xffe0 }, { 464, 0xffff }, { 480, 0x03ff }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ /* 0x3200 */
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0008 }, { 491, 0x0000 },
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ /* 0x3300 */
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ { 491, 0xc000 }, { 493, 0x7000 }, { 496, 0x0002 }, { 497, 0x0000 },
+ { 497, 0x4010 }, { 499, 0x0026 },
+};
+static const Summary16 big5_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 502, 0xff8b }, { 514, 0xc373 }, { 523, 0x6840 }, { 527, 0x1b0f },
+ { 535, 0xe9ac }, { 544, 0xf34c }, { 553, 0x0200 }, { 554, 0xc008 },
+ { 557, 0x795c }, { 566, 0xca3e }, { 575, 0x7976 }, { 585, 0x0648 },
+ { 589, 0x2fdf }, { 601, 0xf7f0 }, { 612, 0x033a }, { 618, 0xa8ff },
+ /* 0x4f00 */
+ { 629, 0xef37 }, { 641, 0x233f }, { 650, 0xb004 }, { 654, 0xfd59 },
+ { 665, 0xf3ca }, { 675, 0xffff }, { 691, 0xde9f }, { 703, 0xfff9 },
+ { 717, 0xabff }, { 730, 0x7df7 }, { 743, 0xc000 }, { 745, 0x8eec },
+ { 754, 0xeebf }, { 767, 0xffdb }, { 781, 0xd003 }, { 786, 0x45fa },
+ /* 0x5000 */
+ { 795, 0xfae1 }, { 805, 0xdffe }, { 819, 0xbfef }, { 833, 0x10ab },
+ { 839, 0xffeb }, { 853, 0xfcaa }, { 863, 0xef3f }, { 876, 0x24fd },
+ { 885, 0x78ad }, { 894, 0x7f76 }, { 906, 0xf00c }, { 912, 0xedff },
+ { 926, 0xcff6 }, { 938, 0x2cfa }, { 947, 0xf7f9 }, { 960, 0xeb6b },
+ /* 0x5100 */
+ { 971, 0x1ffd }, { 983, 0x95bf }, { 994, 0x6677 }, { 1004, 0xbfbf },
+ { 1018, 0x3bfb }, { 1030, 0xfeb4 }, { 1041, 0x7bae }, { 1052, 0x11e2 },
+ { 1058, 0xa681 }, { 1064, 0x41be }, { 1072, 0x1435 }, { 1078, 0x72c3 },
+ { 1086, 0x7d70 }, { 1095, 0x7191 }, { 1102, 0x0003 }, { 1104, 0x276b },
+ /* 0x5200 */
+ { 1113, 0x57cb }, { 1123, 0x70cf }, { 1132, 0x4732 }, { 1139, 0x0def },
+ { 1149, 0x7eda }, { 1160, 0xfc74 }, { 1170, 0xfe06 }, { 1179, 0xbdb4 },
+ { 1189, 0x3f9f }, { 1201, 0x8bca }, { 1209, 0x7e49 }, { 1218, 0x5800 },
+ { 1221, 0x228f }, { 1228, 0xebec }, { 1239, 0x8a5c }, { 1246, 0xddbb },
+ /* 0x5300 */
+ { 1258, 0xef60 }, { 1267, 0xb6e7 }, { 1278, 0xa40f }, { 1285, 0xf293 },
+ { 1294, 0x37bb }, { 1305, 0x549e }, { 1313, 0xd04b }, { 1320, 0x9baf },
+ { 1331, 0xc414 }, { 1336, 0xf7d4 }, { 1347, 0x30b0 }, { 1352, 0x0a14 },
+ { 1356, 0x2f08 }, { 1362, 0x88d0 }, { 1367, 0xff7e }, { 1381, 0x192f },
+ /* 0x5400 */
+ { 1389, 0xffda }, { 1402, 0xfb07 }, { 1412, 0x7ff1 }, { 1424, 0x7beb },
+ { 1436, 0xc5ef }, { 1447, 0x0010 }, { 1448, 0x99ff }, { 1460, 0xfdff },
+ { 1475, 0x79d7 }, { 1486, 0x0567 }, { 1493, 0xffe7 }, { 1507, 0xfdcb },
+ { 1519, 0xc3ff }, { 1531, 0x4040 }, { 1533, 0x6ff7 }, { 1546, 0xbd8e },
+ /* 0x5500 */
+ { 1556, 0xdffa }, { 1569, 0x0497 }, { 1575, 0xf4c0 }, { 1582, 0x5bff },
+ { 1595, 0xed7b }, { 1607, 0xd0e7 }, { 1616, 0x047e }, { 1623, 0xf8e0 },
+ { 1631, 0xff9f }, { 1645, 0xb73e }, { 1656, 0x7dfe }, { 1669, 0x882e },
+ { 1675, 0xfffd }, { 1690, 0xbe7f }, { 1703, 0x83fe }, { 1713, 0xf6c4 },
+ /* 0x5600 */
+ { 1722, 0xf357 }, { 1733, 0xb8fd }, { 1744, 0xd680 }, { 1750, 0xef7d },
+ { 1763, 0x5767 }, { 1773, 0x4788 }, { 1779, 0xff7d }, { 1793, 0xc3df },
+ { 1804, 0xf0ff }, { 1816, 0x37a9 }, { 1825, 0x7de0 }, { 1834, 0x70fc },
+ { 1843, 0x3f6f }, { 1855, 0xec9a }, { 1864, 0x4cb3 }, { 1872, 0x8681 },
+ /* 0x5700 */
+ { 1877, 0x3f9e }, { 1888, 0xdd5c }, { 1898, 0xf70d }, { 1908, 0x4819 },
+ { 1913, 0xfea3 }, { 1924, 0x0007 }, { 1927, 0xaf56 }, { 1937, 0x38ff },
+ { 1948, 0x980d }, { 1954, 0xefb8 }, { 1965, 0x403d }, { 1971, 0xb760 },
+ { 1979, 0xd8ce }, { 1988, 0x9035 }, { 1994, 0x72bf }, { 2005, 0x3fff },
+ /* 0x5800 */
+ { 2019, 0x7ff7 }, { 2033, 0x7a11 }, { 2040, 0xf7bb }, { 2053, 0xabff },
+ { 2066, 0xff00 }, { 2074, 0x6fbe }, { 2086, 0xa93c }, { 2094, 0xfe72 },
+ { 2105, 0xcfef }, { 2118, 0xf11b }, { 2127, 0xdb6b }, { 2138, 0xf40a },
+ { 2145, 0xc3e6 }, { 2154, 0xef7e }, { 2167, 0x9b9c }, { 2176, 0xf610 },
+ /* 0x5900 */
+ { 2183, 0xf048 }, { 2189, 0x16f4 }, { 2197, 0xfeb5 }, { 2209, 0x5182 },
+ { 2214, 0xc7b1 }, { 2223, 0x15bb }, { 2232, 0x6e87 }, { 2241, 0xfbdf },
+ { 2255, 0xe43f }, { 2265, 0x63cd }, { 2274, 0xc1ff }, { 2285, 0x7e7e },
+ { 2297, 0xfdeb }, { 2310, 0x7d5f }, { 2322, 0x777b }, { 2334, 0xfcfe },
+ /* 0x5a00 */
+ { 2347, 0x960b }, { 2354, 0xdbea }, { 2365, 0x6229 }, { 2371, 0x53e8 },
+ { 2379, 0x37df }, { 2391, 0xfdef }, { 2405, 0x36f5 }, { 2415, 0xbd81 },
+ { 2423, 0xdc18 }, { 2430, 0xfcbd }, { 2442, 0xd2e4 }, { 2450, 0xffff },
+ { 2466, 0x3fd7 }, { 2478, 0xffe0 }, { 2489, 0x7f6f }, { 2502, 0xabf8 },
+ /* 0x5b00 */
+ { 2512, 0x9bae }, { 2522, 0x6ed9 }, { 2532, 0xf5fb }, { 2545, 0xf115 },
+ { 2553, 0x79a9 }, { 2562, 0xbdfb }, { 2575, 0x5a3c }, { 2583, 0xadaf },
+ { 2594, 0xdbba }, { 2605, 0x1fac }, { 2614, 0x71fc }, { 2624, 0x8379 },
+ { 2632, 0x7cf7 }, { 2644, 0xc35f }, { 2654, 0xdfff }, { 2669, 0x0567 },
+ /* 0x5c00 */
+ { 2676, 0xff9a }, { 2688, 0x8467 }, { 2695, 0x1534 }, { 2701, 0xdf8b },
+ { 2712, 0xf9f3 }, { 2724, 0x3373 }, { 2733, 0xf7bd }, { 2746, 0x5e1a },
+ { 2754, 0xbf40 }, { 2762, 0xa03f }, { 2770, 0xffff }, { 2786, 0x01eb },
+ { 2793, 0xdfc0 }, { 2802, 0xcfdd }, { 2814, 0x7500 }, { 2819, 0xabd3 },
+ /* 0x5d00 */
+ { 2829, 0xf8c3 }, { 2838, 0xeed6 }, { 2849, 0x43fd }, { 2859, 0xb7ff },
+ { 2873, 0x5eaf }, { 2884, 0x4227 }, { 2890, 0x9bac }, { 2899, 0xf686 },
+ { 2908, 0x27d7 }, { 2918, 0xf6bc }, { 2929, 0xf787 }, { 2940, 0x35b7 },
+ { 2950, 0xaacd }, { 2959, 0xe176 }, { 2968, 0x49e7 }, { 2977, 0xe29f },
+ /* 0x5e00 */
+ { 2987, 0x545c }, { 2994, 0xaff2 }, { 3005, 0x2b3f }, { 3015, 0x61d8 },
+ { 3022, 0xfc3b }, { 3033, 0xbbb8 }, { 3043, 0xffcf }, { 3057, 0x7b7d },
+ { 3069, 0xbf95 }, { 3080, 0x1ce0 }, { 3086, 0x7dfd }, { 3099, 0x43ff },
+ { 3110, 0x5ff6 }, { 3122, 0xfffe }, { 3137, 0xd3ef }, { 3149, 0xc4ce },
+ /* 0x5f00 */
+ { 3157, 0x8db6 }, { 3166, 0xadbc }, { 3176, 0x63dc }, { 3185, 0x11eb },
+ { 3193, 0xdf59 }, { 3204, 0x23d0 }, { 3210, 0xbeb4 }, { 3220, 0xf3db },
+ { 3232, 0x1fe7 }, { 3243, 0xdbc7 }, { 3254, 0xff63 }, { 3266, 0xfae4 },
+ { 3276, 0xb22b }, { 3284, 0x63f7 }, { 3295, 0xed3b }, { 3306, 0xadba },
+ /* 0x6000 */
+ { 3316, 0xfe01 }, { 3324, 0x7eff }, { 3338, 0xfff7 }, { 3353, 0x02bc },
+ { 3359, 0x32ff }, { 3370, 0xef39 }, { 3381, 0xfffc }, { 3395, 0x8005 },
+ { 3398, 0x77fb }, { 3411, 0xbcf5 }, { 3422, 0x010d }, { 3426, 0xfff7 },
+ { 3441, 0xfffb }, { 3456, 0xbf3a }, { 3467, 0x0057 }, { 3472, 0xdfff },
+ /* 0x6100 */
+ { 3487, 0xef7b }, { 3500, 0xbd7d }, { 3512, 0xdb88 }, { 3520, 0xc8d4 },
+ { 3527, 0xfff3 }, { 3541, 0xed7c }, { 3552, 0x5dee }, { 3563, 0x56ff },
+ { 3575, 0x7e0d }, { 3584, 0xac5f }, { 3594, 0xff96 }, { 3606, 0xd57f },
+ { 3618, 0x3fee }, { 3630, 0xc140 }, { 3634, 0x6ff9 }, { 3646, 0xffe7 },
+ /* 0x6200 */
+ { 3660, 0x779b }, { 3671, 0x8e77 }, { 3681, 0x6ebf }, { 3693, 0xe45d },
+ { 3702, 0x6fcf }, { 3714, 0x5f1f }, { 3725, 0xe07f }, { 3735, 0xfedf },
+ { 3749, 0xd7db }, { 3761, 0x01fe }, { 3769, 0xff00 }, { 3777, 0xfb7b },
+ { 3790, 0xffd4 }, { 3802, 0x1fdf }, { 3814, 0xf800 }, { 3819, 0xffff },
+ /* 0x6300 */
+ { 3835, 0xfb8f }, { 3847, 0x007b }, { 3853, 0xbf00 }, { 3860, 0x7f5c },
+ { 3871, 0xffff }, { 3887, 0x07f3 }, { 3896, 0xeba0 }, { 3904, 0x3de7 },
+ { 3915, 0xf7bf }, { 3929, 0xfbd7 }, { 3942, 0xffbf }, { 3957, 0x6003 },
+ { 3961, 0xfffd }, { 3976, 0xbfed }, { 3989, 0xefbb }, { 4002, 0x027f },
+ /* 0x6400 */
+ { 4010, 0xfe40 }, { 4018, 0xddfd }, { 4031, 0xfdff }, { 4046, 0xe2f9 },
+ { 4056, 0x680b }, { 4062, 0xfb1f }, { 4074, 0xfbe3 }, { 4086, 0xaffd },
+ { 4099, 0x9fa4 }, { 4108, 0xf7ed }, { 4121, 0x7a7d }, { 4132, 0xf80f },
+ { 4141, 0xeebe }, { 4153, 0x0fd5 }, { 4162, 0xbb5d }, { 4173, 0xfd9f },
+ /* 0x6500 */
+ { 4186, 0xf2db }, { 4197, 0x3bf9 }, { 4208, 0xfe7f }, { 4222, 0xebcc },
+ { 4232, 0x876a }, { 4240, 0x73fa }, { 4251, 0x95fc }, { 4261, 0x9ffc },
+ { 4273, 0x109f }, { 4280, 0xfaf7 }, { 4293, 0xddb7 }, { 4305, 0xbbcd },
+ { 4316, 0xf87e }, { 4327, 0xeccd }, { 4337, 0xf366 }, { 4347, 0x3c3f },
+ /* 0x6600 */
+ { 4357, 0xfffd }, { 4372, 0xb03f }, { 4381, 0xe9f7 }, { 4393, 0x067e },
+ { 4401, 0x96ae }, { 4410, 0xfe06 }, { 4419, 0xd576 }, { 4429, 0x5fd7 },
+ { 4441, 0x3fd1 }, { 4451, 0xa3f3 }, { 4461, 0xcf07 }, { 4470, 0x6fb7 },
+ { 4482, 0x9fd1 }, { 4492, 0x7f44 }, { 4501, 0x7b59 }, { 4511, 0xd3dd },
+ /* 0x6700 */
+ { 4522, 0xaf3b }, { 4533, 0xa9bd }, { 4543, 0x7dcf }, { 4555, 0xff3a },
+ { 4567, 0xfbe0 }, { 4577, 0xf6eb }, { 4589, 0xb401 }, { 4594, 0xffff },
+ { 4610, 0x7afa }, { 4621, 0xb7bf }, { 4634, 0xc000 }, { 4636, 0x0ffd },
+ { 4647, 0xff7f }, { 4662, 0xff1f }, { 4675, 0xfefc }, { 4688, 0x95ff },
+ /* 0x6800 */
+ { 4700, 0x0000 }, { 4700, 0xb5dc }, { 4710, 0xef63 }, { 4721, 0x3f3e },
+ { 4732, 0xfb7f }, { 4746, 0x001b }, { 4750, 0xe800 }, { 4754, 0xfbf6 },
+ { 4767, 0x9eef }, { 4779, 0xb8df }, { 4790, 0xff9f }, { 4804, 0x003f },
+ { 4810, 0x7bd0 }, { 4819, 0xf5ff }, { 4833, 0xdfdb }, { 4846, 0x3fff },
+ /* 0x6900 */
+ { 4860, 0xfdf0 }, { 4871, 0x00bf }, { 4878, 0x8420 }, { 4881, 0xbbbd },
+ { 4893, 0xdf37 }, { 4905, 0xffde }, { 4919, 0xff6d }, { 4932, 0x0ff3 },
+ { 4942, 0x604c }, { 4947, 0x5efb }, { 4959, 0xfffb }, { 4974, 0xfafb },
+ { 4987, 0xfe5e }, { 4999, 0x0219 }, { 5003, 0x79f4 }, { 5013, 0xf9de },
+ /* 0x6a00 */
+ { 5025, 0xa7f7 }, { 5037, 0xebfa }, { 5049, 0x01eb }, { 5056, 0xff34 },
+ { 5067, 0xebd3 }, { 5078, 0xef73 }, { 5090, 0xafd7 }, { 5102, 0xc040 },
+ { 5105, 0x72bb }, { 5115, 0xdcff }, { 5128, 0xf17f }, { 5140, 0x2fd8 },
+ { 5149, 0xb8ec }, { 5158, 0xfe0b }, { 5168, 0xdda3 }, { 5178, 0x1f0b },
+ /* 0x6b00 */
+ { 5186, 0x8f1d }, { 5195, 0x47cf }, { 5205, 0xb12b }, { 5213, 0xffde },
+ { 5227, 0x7fee }, { 5240, 0xda73 }, { 5250, 0x24ff }, { 5260, 0xcbc4 },
+ { 5268, 0xf75d }, { 5280, 0xcbf2 }, { 5290, 0xecfd }, { 5302, 0xb4ed },
+ { 5312, 0xbff9 }, { 5325, 0x4ddd }, { 5335, 0x99dd }, { 5345, 0xfb8d },
+ /* 0x6c00 */
+ { 5356, 0xbb7f }, { 5369, 0xaf7b }, { 5381, 0xddfb }, { 5394, 0xc959 },
+ { 5402, 0xfc4f }, { 5413, 0xfab5 }, { 5424, 0xafe3 }, { 5435, 0x6d5f },
+ { 5446, 0xffff }, { 5462, 0x3f7d }, { 5474, 0x7800 }, { 5478, 0xffdb },
+ { 5492, 0xb6ff }, { 5505, 0x7eff }, { 5519, 0xfbaf }, { 5532, 0x022f },
+ /* 0x6d00 */
+ { 5538, 0xff9b }, { 5551, 0xefc7 }, { 5563, 0xffa5 }, { 5575, 0xffff },
+ { 5591, 0x0007 }, { 5594, 0xc700 }, { 5599, 0xf7ff }, { 5614, 0xfff1 },
+ { 5627, 0x7ffd }, { 5641, 0x01bf }, { 5649, 0xdc00 }, { 5654, 0xfdbc },
+ { 5666, 0xbff5 }, { 5679, 0xffff }, { 5695, 0xff7f }, { 5710, 0x3eff },
+ /* 0x6e00 */
+ { 5723, 0x0029 }, { 5726, 0xbe00 }, { 5732, 0xf9ff }, { 5746, 0xff7f },
+ { 5761, 0x6efb }, { 5773, 0xfd7e }, { 5786, 0xcbff }, { 5799, 0x039e },
+ { 5806, 0xe300 }, { 5811, 0xfbdd }, { 5824, 0xccff }, { 5836, 0xf6df },
+ { 5849, 0xffff }, { 5865, 0x117f }, { 5874, 0xf800 }, { 5879, 0xfbf6 },
+ /* 0x6f00 */
+ { 5892, 0xe7ef }, { 5905, 0xd73c }, { 5915, 0xfeef }, { 5929, 0xdfef },
+ { 5943, 0xc00b }, { 5948, 0xedbf }, { 5961, 0xfedf }, { 5975, 0xfdcd },
+ { 5987, 0x7bf5 }, { 5999, 0x40fd }, { 6007, 0xffff }, { 6023, 0xb75f },
+ { 6035, 0xffdf }, { 6050, 0xf930 }, { 6058, 0xfbdf }, { 6072, 0xdc97 },
+ /* 0x7000 */
+ { 6082, 0xfef3 }, { 6095, 0xbff2 }, { 6107, 0x8fdf }, { 6119, 0xdfbf },
+ { 6133, 0x177f }, { 6144, 0xede6 }, { 6155, 0x0f7f }, { 6166, 0x3553 },
+ { 6174, 0x447c }, { 6181, 0x877e }, { 6191, 0xfa12 }, { 6199, 0x45bb },
+ { 6208, 0xede0 }, { 6217, 0x779e }, { 6228, 0x8017 }, { 6233, 0xbfd9 },
+ /* 0x7100 */
+ { 6245, 0x7e55 }, { 6255, 0xde89 }, { 6264, 0xc16f }, { 6273, 0x0447 },
+ { 6278, 0x7ade }, { 6289, 0xf75d }, { 6301, 0x57ff }, { 6314, 0x2905 },
+ { 6319, 0x86f7 }, { 6329, 0xfe95 }, { 6340, 0x97b3 }, { 6350, 0xf32f },
+ { 6361, 0xcfff }, { 6375, 0x9f75 }, { 6386, 0x71f7 }, { 6397, 0xfb17 },
+ /* 0x7200 */
+ { 6408, 0x34ee }, { 6417, 0xee19 }, { 6426, 0x37cc }, { 6435, 0xef61 },
+ { 6445, 0x9fd6 }, { 6456, 0xef4c }, { 6466, 0xd68f }, { 6476, 0xfbdd },
+ { 6489, 0x7b73 }, { 6500, 0x6def }, { 6512, 0xd7fe }, { 6525, 0xa431 },
+ { 6531, 0x5e7f }, { 6543, 0x97d7 }, { 6554, 0x0f5b }, { 6563, 0xffd8 },
+ /* 0x7300 */
+ { 6575, 0x9d83 }, { 6583, 0x7bce }, { 6594, 0x22ec }, { 6601, 0xdcff },
+ { 6614, 0x763d }, { 6624, 0xef87 }, { 6635, 0xdfe7 }, { 6648, 0xfded },
+ { 6661, 0x4fff }, { 6674, 0xa0fc }, { 6682, 0x3b77 }, { 6693, 0xdbfc },
+ { 6705, 0x3ded }, { 6716, 0x7fdc }, { 6728, 0x6fa9 }, { 6738, 0xf570 },
+ /* 0x7400 */
+ { 6747, 0x3ffb }, { 6760, 0x2c40 }, { 6764, 0xff7f }, { 6779, 0x847f },
+ { 6788, 0xec57 }, { 6798, 0xdeb7 }, { 6810, 0xe69c }, { 6819, 0xf22f },
+ { 6829, 0x0feb }, { 6839, 0xd5b5 }, { 6849, 0xafeb }, { 6861, 0xede7 },
+ { 6873, 0x8c2f }, { 6881, 0xfff0 }, { 6893, 0x537f }, { 6904, 0xe8f0 },
+ /* 0x7500 */
+ { 6912, 0xb99d }, { 6922, 0xb5ff }, { 6935, 0xff66 }, { 6947, 0xe78f },
+ { 6958, 0xd981 }, { 6965, 0xbe10 }, { 6972, 0x9c7c }, { 6981, 0xe3c1 },
+ { 6989, 0x9cd1 }, { 6997, 0x2733 }, { 7005, 0x0cbc }, { 7012, 0xff6d },
+ { 7025, 0xfcb7 }, { 7037, 0xefb7 }, { 7050, 0xa0df }, { 7059, 0xffff },
+ /* 0x7600 */
+ { 7075, 0xbf0b }, { 7085, 0xfe7b }, { 7098, 0xa3ff }, { 7110, 0x353f },
+ { 7120, 0x13cc }, { 7127, 0x97cd }, { 7137, 0x7637 }, { 7147, 0xfb27 },
+ { 7158, 0xcfd6 }, { 7169, 0x7e6c }, { 7179, 0xec50 }, { 7186, 0xed31 },
+ { 7195, 0x677c }, { 7205, 0xfc1c }, { 7214, 0xf6fa }, { 7226, 0x5fbf },
+ /* 0x7700 */
+ { 7239, 0x0fba }, { 7248, 0xae2f }, { 7258, 0xa3ad }, { 7267, 0x7ffe },
+ { 7281, 0xfcf0 }, { 7291, 0xde74 }, { 7301, 0xffef }, { 7316, 0xf200 },
+ { 7321, 0xfbbf }, { 7335, 0xfea2 }, { 7345, 0x3daf }, { 7356, 0xbcff },
+ { 7369, 0xf694 }, { 7378, 0x5fb9 }, { 7389, 0xf3ad }, { 7400, 0x3f8f },
+ /* 0x7800 */
+ { 7411, 0xf26c }, { 7420, 0xa01f }, { 7427, 0xffef }, { 7442, 0x01bf },
+ { 7450, 0x7728 }, { 7458, 0x7005 }, { 7463, 0xff35 }, { 7475, 0xda03 },
+ { 7482, 0xd2f9 }, { 7492, 0xc7fa }, { 7503, 0x3fbf }, { 7516, 0x5c1d },
+ { 7524, 0xff3a }, { 7536, 0xec33 }, { 7545, 0xb7af }, { 7557, 0xfe9c },
+ /* 0x7900 */
+ { 7568, 0x5236 }, { 7575, 0x7a9f }, { 7586, 0xbffa }, { 7599, 0xe722 },
+ { 7607, 0x9ff7 }, { 7620, 0xfcff }, { 7634, 0x2fbb }, { 7645, 0xb61d },
+ { 7654, 0xed06 }, { 7662, 0x1dfd }, { 7673, 0x7dd7 }, { 7685, 0xefdf },
+ { 7699, 0xeb23 }, { 7708, 0xf166 }, { 7717, 0x7ed9 }, { 7728, 0x0dc0 },
+ /* 0x7a00 */
+ { 7733, 0x3d3d }, { 7743, 0xdfbf }, { 7757, 0xc945 }, { 7764, 0xba83 },
+ { 7772, 0x7dd1 }, { 7782, 0x9dd0 }, { 7790, 0x7b87 }, { 7800, 0xcf73 },
+ { 7811, 0x9ff3 }, { 7823, 0xc3f5 }, { 7833, 0xdf0d }, { 7843, 0xc5fe },
+ { 7854, 0x0cb3 }, { 7861, 0x8302 }, { 7865, 0xe879 }, { 7874, 0xaec0 },
+ /* 0x7b00 */
+ { 7881, 0xc773 }, { 7891, 0x6f0f }, { 7901, 0xfd7d }, { 7914, 0x093f },
+ { 7922, 0xfff1 }, { 7935, 0x0157 }, { 7941, 0x62fb }, { 7951, 0x01ff },
+ { 7960, 0xfdb4 }, { 7971, 0x3bf3 }, { 7982, 0xb013 }, { 7988, 0x43b2 },
+ { 7995, 0x5ed3 }, { 8005, 0xff30 }, { 8015, 0x0fff }, { 8027, 0xeb9f },
+ /* 0x7c00 */
+ { 8039, 0xfeef }, { 8053, 0xf203 }, { 8060, 0x3fef }, { 8073, 0xfb89 },
+ { 8083, 0x37a9 }, { 8092, 0x9e99 }, { 8101, 0xdef9 }, { 8113, 0xa72c },
+ { 8121, 0x3733 }, { 8130, 0xc1f6 }, { 8139, 0x812e }, { 8145, 0xfe3e },
+ { 8157, 0x5d20 }, { 8163, 0xf2f7 }, { 8175, 0xd585 }, { 8183, 0x69d7 },
+ /* 0x7d00 */
+ { 8193, 0xffff }, { 8209, 0xffff }, { 8225, 0xdb07 }, { 8234, 0xff6f },
+ { 8248, 0xc4ff }, { 8259, 0xd97f }, { 8271, 0xefce }, { 8283, 0xbe0f },
+ { 8293, 0xf17b }, { 8304, 0xf05e }, { 8313, 0xf6cf }, { 8325, 0xffb7 },
+ { 8339, 0x5ef7 }, { 8351, 0xef84 }, { 8360, 0xd7cb }, { 8371, 0x0edf },
+ /* 0x7e00 */
+ { 8381, 0xff08 }, { 8390, 0xfcff }, { 8404, 0xee3f }, { 8416, 0xffff },
+ { 8432, 0x13ff }, { 8443, 0xd7ff }, { 8457, 0xaf0f }, { 8467, 0x7ffd },
+ { 8481, 0xbdc7 }, { 8492, 0x1ffa }, { 8503, 0x0000 }, { 8503, 0x0000 },
+ { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 },
+ /* 0x7f00 */
+ { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0xe740 },
+ { 8510, 0xbd38 }, { 8519, 0xf933 }, { 8529, 0x7feb }, { 8542, 0xfeed },
+ { 8555, 0x7fe8 }, { 8566, 0x7c76 }, { 8576, 0xb3f7 }, { 8588, 0xffef },
+ { 8603, 0xfeaf }, { 8616, 0xd8b7 }, { 8626, 0xff6f }, { 8640, 0xfbbf },
+ /* 0x8000 */
+ { 8654, 0xf8fb }, { 8666, 0xdbf7 }, { 8679, 0x1752 }, { 8686, 0xe2f9 },
+ { 8696, 0x85c8 }, { 8702, 0x7547 }, { 8711, 0x9090 }, { 8715, 0xe3ef },
+ { 8727, 0x9ef4 }, { 8737, 0x3f6d }, { 8748, 0xee2e }, { 8758, 0x0536 },
+ { 8764, 0xf7bc }, { 8776, 0x7ff3 }, { 8789, 0xa07b }, { 8797, 0x7f3f },
+ /* 0x8100 */
+ { 8810, 0x0567 }, { 8817, 0xeb60 }, { 8825, 0xbabe }, { 8836, 0x6601 },
+ { 8841, 0xfcd8 }, { 8851, 0x583f }, { 8860, 0xcaf7 }, { 8871, 0x87df },
+ { 8882, 0xbfcd }, { 8894, 0xffa0 }, { 8904, 0x5bcd }, { 8914, 0xfebf },
+ { 8928, 0xb6fd }, { 8940, 0xefa7 }, { 8952, 0x77ef }, { 8965, 0xdf9c },
+ /* 0x8200 */
+ { 8976, 0x3fb7 }, { 8988, 0xf877 }, { 8999, 0x9d27 }, { 9008, 0xb7fc },
+ { 9020, 0xcab5 }, { 9029, 0xdfef }, { 9043, 0xfb5a }, { 9054, 0xf1b6 },
+ { 9064, 0xec39 }, { 9073, 0xef1f }, { 9085, 0xfbbf }, { 9099, 0x7ffb },
+ { 9113, 0x000d }, { 9116, 0xdafe }, { 9128, 0xbdfb }, { 9141, 0x4e7f },
+ /* 0x8300 */
+ { 9152, 0x33ff }, { 9164, 0x5ac0 }, { 9170, 0xbff5 }, { 9183, 0x9ffe },
+ { 9196, 0xffbf }, { 9211, 0x005f }, { 9217, 0x0000 }, { 9217, 0xfdf8 },
+ { 9229, 0xffca }, { 9241, 0x6ffd }, { 9254, 0xcffd }, { 9267, 0xa001 },
+ { 9270, 0xdfff }, { 9285, 0xfbf2 }, { 9297, 0xdfbf }, { 9311, 0xff7f },
+ /* 0x8400 */
+ { 9326, 0xfeda }, { 9338, 0x080f }, { 9343, 0xba08 }, { 9349, 0xbfff },
+ { 9364, 0x7afd }, { 9376, 0xeed7 }, { 9388, 0xfbeb }, { 9401, 0x67f9 },
+ { 9412, 0xe044 }, { 9417, 0xff93 }, { 9429, 0xdf97 }, { 9441, 0x9f57 },
+ { 9452, 0xfef7 }, { 9466, 0x08df }, { 9474, 0xdf80 }, { 9482, 0xfedf },
+ /* 0x8500 */
+ { 9496, 0xffc5 }, { 9508, 0xf7fe }, { 9522, 0xfffb }, { 9537, 0x6803 },
+ { 9542, 0x67fb }, { 9554, 0x6bfa }, { 9565, 0x7fff }, { 9580, 0x5fe2 },
+ { 9590, 0xffff }, { 9606, 0xff73 }, { 9619, 0x87df }, { 9630, 0xe7fb },
+ { 9643, 0xebfd }, { 9656, 0xf7a7 }, { 9668, 0xbf7e }, { 9681, 0xefc7 },
+ /* 0x8600 */
+ { 9693, 0x1ef3 }, { 9703, 0xdf82 }, { 9712, 0x76ff }, { 9725, 0xdf7e },
+ { 9738, 0x79c9 }, { 9747, 0xda7d }, { 9758, 0xefbe }, { 9771, 0x1e9b },
+ { 9780, 0x7ce0 }, { 9788, 0x77fb }, { 9801, 0x87be }, { 9811, 0xfffb },
+ { 9826, 0x1bff }, { 9838, 0xffdb }, { 9852, 0x3f5c }, { 9862, 0x4fe0 },
+ /* 0x8700 */
+ { 9870, 0x7fff }, { 9885, 0x5f0e }, { 9894, 0x77ff }, { 9908, 0xddbf },
+ { 9921, 0xf04f }, { 9930, 0xffff }, { 9946, 0xffff }, { 9962, 0x0ff8 },
+ { 9971, 0xa3be }, { 9981, 0xfddf }, { 9995, 0xfc1c }, { 10004, 0xfffd },
+ { 10019, 0x1f7d }, { 10030, 0xfb9e }, { 10042, 0xbdff }, { 10056, 0xdedc },
+ /* 0x8800 */
+ { 10067, 0x3f6f }, { 10079, 0xbafb }, { 10091, 0xdf7f }, { 10105, 0xfbef },
+ { 10119, 0x7d1b }, { 10129, 0x2eec }, { 10138, 0xaf8e }, { 10148, 0xf2f7 },
+ { 10160, 0x7b0f }, { 10170, 0xcfee }, { 10182, 0x1d96 }, { 10190, 0x77c6 },
+ { 10200, 0x7e07 }, { 10209, 0xfff5 }, { 10223, 0xd982 }, { 10230, 0x7fdf },
+ /* 0x8900 */
+ { 10244, 0x5ee6 }, { 10254, 0xc7ff }, { 10267, 0xfeee }, { 10280, 0x79ef },
+ { 10292, 0x9a56 }, { 10300, 0xffcf }, { 10314, 0xfe5f }, { 10327, 0xde5e },
+ { 10338, 0x896e }, { 10346, 0xf9e8 }, { 10356, 0xf45e }, { 10366, 0xe6c4 },
+ { 10374, 0x0001 }, { 10375, 0xbe7c }, { 10386, 0x3b7f }, { 10398, 0xdddf },
+ /* 0x8a00 */
+ { 10411, 0xd59d }, { 10421, 0xe9ef }, { 10433, 0x34ac }, { 10440, 0xde53 },
+ { 10450, 0xf573 }, { 10461, 0x4bf7 }, { 10472, 0x7b4f }, { 10483, 0x9eff },
+ { 10496, 0xb8fe }, { 10507, 0x476e }, { 10516, 0x0dfb }, { 10526, 0xff45 },
+ { 10537, 0xabfd }, { 10549, 0xfbfe }, { 10563, 0xe9d7 }, { 10574, 0xddff },
+ /* 0x8b00 */
+ { 10588, 0xedf7 }, { 10601, 0x7fff }, { 10616, 0xddfd }, { 10629, 0x7eeb },
+ { 10641, 0xcfe7 }, { 10653, 0xb7ff }, { 10667, 0xbde9 }, { 10678, 0xef91 },
+ { 10688, 0x5d75 }, { 10698, 0xd77c }, { 10709, 0x0000 }, { 10709, 0x0000 },
+ { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 },
+ /* 0x8c00 */
+ { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0xfa80 },
+ { 10716, 0xffee }, { 10730, 0xb4f1 }, { 10739, 0xbf76 }, { 10751, 0x2fef },
+ { 10763, 0xb677 }, { 10774, 0x77bf }, { 10787, 0x9fbf }, { 10800, 0xfffd },
+ { 10815, 0x95bf }, { 10826, 0xf6ae }, { 10837, 0x75ff }, { 10850, 0x7f3b },
+ /* 0x8d00 */
+ { 10862, 0xa7f5 }, { 10873, 0x0af9 }, { 10881, 0x0000 }, { 10881, 0x0000 },
+ { 10881, 0x0000 }, { 10881, 0x0000 }, { 10881, 0xfbd0 }, { 10891, 0x2bdd },
+ { 10901, 0xf633 }, { 10911, 0x9a7f }, { 10922, 0xfdab }, { 10934, 0xd6fc },
+ { 10945, 0xf9e6 }, { 10956, 0xbfeb }, { 10969, 0xdfdf }, { 10983, 0xf41f },
+ /* 0x8e00 */
+ { 10993, 0xa6fd }, { 11004, 0xffff }, { 11020, 0x4aff }, { 11031, 0xf37b },
+ { 11043, 0x7fb7 }, { 11056, 0xfef9 }, { 11069, 0xb6ff }, { 11082, 0x1d5c },
+ { 11090, 0x7ff6 }, { 11103, 0xe5ff }, { 11116, 0x1f7b }, { 11127, 0x2404 },
+ { 11130, 0xbe05 }, { 11138, 0xf99e }, { 11149, 0xdbe3 }, { 11160, 0xdff2 },
+ /* 0x8f00 */
+ { 11172, 0x6fef }, { 11185, 0xfdff }, { 11200, 0xd679 }, { 11210, 0xcbfc },
+ { 11221, 0xebfd }, { 11234, 0xefff }, { 11249, 0x001f }, { 11254, 0x0000 },
+ { 11254, 0x0000 }, { 11254, 0x9800 }, { 11257, 0xe148 }, { 11263, 0x8017 },
+ { 11268, 0x6a74 }, { 11276, 0x00fe }, { 11283, 0x6d7f }, { 11295, 0xfdf1 },
+ /* 0x9000 */
+ { 11307, 0xb87f }, { 11318, 0xfef3 }, { 11331, 0xe01f }, { 11339, 0xf176 },
+ { 11349, 0xee96 }, { 11359, 0x7b3f }, { 11371, 0xeb8d }, { 11381, 0xfffd },
+ { 11396, 0xadff }, { 11409, 0xcbb3 }, { 11419, 0x84ef }, { 11428, 0xe17f },
+ { 11439, 0x4daa }, { 11447, 0xbff0 }, { 11458, 0xbf3f }, { 11471, 0xfe3f },
+ /* 0x9100 */
+ { 11484, 0xebff }, { 11498, 0xffd7 }, { 11512, 0xffdf }, { 11527, 0xcf7f },
+ { 11540, 0xfffb }, { 11555, 0x85ed }, { 11564, 0xd73f }, { 11576, 0x07bc },
+ { 11584, 0xaeff }, { 11597, 0xfe0f }, { 11608, 0xfdaf }, { 11621, 0x76bf },
+ { 11633, 0xfaef }, { 11646, 0x37bb }, { 11657, 0x7fdc }, { 11669, 0xa3ba },
+ /* 0x9200 */
+ { 11678, 0xb6ff }, { 11691, 0x56f7 }, { 11702, 0x60f8 }, { 11709, 0xe7df },
+ { 11722, 0xff61 }, { 11733, 0x4cdf }, { 11743, 0xb0fb }, { 11753, 0xff45 },
+ { 11764, 0x7ded }, { 11776, 0x3ffa }, { 11788, 0x1fff }, { 11801, 0x18fc },
+ { 11809, 0xffff }, { 11825, 0xe3af }, { 11836, 0xc7d3 }, { 11846, 0xdf83 },
+ /* 0x9300 */
+ { 11856, 0xfb57 }, { 11868, 0xef7d }, { 11881, 0xefff }, { 11896, 0x1378 },
+ { 11903, 0xfec0 }, { 11912, 0x5ff7 }, { 11925, 0x34bb }, { 11934, 0x5ee3 },
+ { 11944, 0xf70d }, { 11954, 0xeff6 }, { 11967, 0xd7fe }, { 11980, 0x00bf },
+ { 11987, 0xf59d }, { 11998, 0xf7f7 }, { 12012, 0x51de }, { 12021, 0xffe0 },
+ /* 0x9400 */
+ { 12032, 0xfec9 }, { 12043, 0x037f }, { 12052, 0x5f01 }, { 12059, 0xbfef },
+ { 12073, 0x9ff1 }, { 12084, 0x60a7 }, { 12091, 0xef1d }, { 12102, 0xf1ff },
+ { 12115, 0x000f }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ /* 0x9500 */
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x3c80 },
+ { 12124, 0xfb4d }, { 12135, 0xd91f }, { 12145, 0x7b3a }, { 12155, 0xfee3 },
+ { 12167, 0x3fe9 }, { 12178, 0xdc7f }, { 12190, 0x003f }, { 12196, 0x0000 },
+ /* 0x9600 */
+ { 12196, 0x0000 }, { 12196, 0x5000 }, { 12198, 0xf51f }, { 12209, 0xbe07 },
+ { 12218, 0xfc1d }, { 12228, 0xf91b }, { 12238, 0xbc1e }, { 12247, 0x71ff },
+ { 12259, 0x6ff9 }, { 12271, 0x5bbe }, { 12282, 0x5796 }, { 12291, 0x9b1b },
+ { 12300, 0x7fff }, { 12315, 0xfffc }, { 12329, 0x872e }, { 12337, 0xafe7 },
+ /* 0x9700 */
+ { 12349, 0xebf5 }, { 12361, 0xf34f }, { 12372, 0xdffd }, { 12386, 0xe725 },
+ { 12395, 0x0bdc }, { 12403, 0x5d44 }, { 12410, 0x5747 }, { 12419, 0xfddd },
+ { 12432, 0xed3f }, { 12444, 0x7790 }, { 12452, 0x7d7f }, { 12465, 0x8ac8 },
+ { 12471, 0xfafa }, { 12483, 0xf3f9 }, { 12495, 0x202a }, { 12499, 0xef4b },
+ /* 0x9800 */
+ { 12510, 0xf5ff }, { 12524, 0x79cf }, { 12535, 0xabd3 }, { 12545, 0x0ba5 },
+ { 12552, 0xf77a }, { 12564, 0xfb8f }, { 12576, 0x8ebd }, { 12586, 0x001f },
+ { 12591, 0x0000 }, { 12591, 0x0000 }, { 12591, 0xf300 }, { 12597, 0xfd4e },
+ { 12608, 0x1a57 }, { 12616, 0x8800 }, { 12618, 0xaeac }, { 12627, 0x7654 },
+ /* 0x9900 */
+ { 12635, 0x17ad }, { 12644, 0xcdff }, { 12657, 0xffb2 }, { 12669, 0xf42f },
+ { 12679, 0x5baa }, { 12688, 0xdbff }, { 12702, 0x0002 }, { 12703, 0x0000 },
+ { 12703, 0x0000 }, { 12703, 0x73c0 }, { 12710, 0xf9ea }, { 12721, 0x2e3f },
+ { 12731, 0xfa8e }, { 12741, 0xbbff }, { 12755, 0x76bc }, { 12765, 0xffd3 },
+ /* 0x9a00 */
+ { 12778, 0xeefe }, { 12791, 0x7e72 }, { 12801, 0x7ebd }, { 12813, 0xe7f7 },
+ { 12826, 0xf77f }, { 12840, 0xcefd }, { 12852, 0x0ff5 }, { 12862, 0x0000 },
+ { 12862, 0x0000 }, { 12862, 0x0000 }, { 12862, 0xa900 }, { 12866, 0xdb9b },
+ { 12877, 0xa4c7 }, { 12885, 0x917f }, { 12895, 0xf8ca }, { 12904, 0x7ece },
+ /* 0x9b00 */
+ { 12915, 0x7d7a }, { 12926, 0xc7e7 }, { 12937, 0xcbbd }, { 12948, 0xdcae },
+ { 12958, 0xfd7e }, { 12971, 0x8f76 }, { 12981, 0x91d3 }, { 12989, 0x7cf3 },
+ { 13000, 0x01e5 }, { 13006, 0x4c2f }, { 13014, 0xed77 }, { 13026, 0xa360 },
+ { 13032, 0x07db }, { 13041, 0x5ef8 }, { 13051, 0x1df7 }, { 13062, 0x2181 },
+ /* 0x9c00 */
+ { 13066, 0x6be0 }, { 13074, 0x309c }, { 13080, 0x3b3a }, { 13089, 0xfade },
+ { 13101, 0x7f53 }, { 13112, 0xc3f5 }, { 13122, 0x61cd }, { 13130, 0x07ba },
+ { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 },
+ { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x26e0 }, { 13144, 0xbefe },
+ /* 0x9d00 */
+ { 13157, 0x03f9 }, { 13165, 0xebb5 }, { 13176, 0xe36d }, { 13186, 0xe9cb },
+ { 13196, 0x9c2f }, { 13205, 0xbfde }, { 13218, 0x9f83 }, { 13227, 0xabbf },
+ { 13239, 0x1ff7 }, { 13251, 0xffd5 }, { 13264, 0xb7df }, { 13277, 0xdffe },
+ { 13291, 0xfdae }, { 13303, 0xffef }, { 13318, 0xfb7e }, { 13331, 0xeffd },
+ /* 0x9e00 */
+ { 13345, 0xaaff }, { 13357, 0x6ebf }, { 13369, 0x0000 }, { 13369, 0x0000 },
+ { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0xb620 },
+ { 13375, 0x7fcd }, { 13387, 0xbe9e }, { 13398, 0x62b3 }, { 13406, 0x58f1 },
+ { 13414, 0xf10d }, { 13422, 0xfd7b }, { 13435, 0xe9f1 }, { 13445, 0xbefd },
+ /* 0x9f00 */
+ { 13458, 0xc6c3 }, { 13466, 0x5f6d }, { 13477, 0xff3d }, { 13490, 0x69ff },
+ { 13502, 0xffcf }, { 13516, 0xfbf4 }, { 13528, 0xdcfb }, { 13540, 0x4ff7 },
+ { 13552, 0x2000 }, { 13553, 0x1137 }, { 13560, 0x0015 },
+};
+static const Summary16 big5_uni2indx_pagefa[1] = {
+ /* 0xfa00 */
+ { 13563, 0x3000 },
+};
+static const Summary16 big5_uni2indx_pagefe[23] = {
+ /* 0xfe00 */
+ { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0xfffb },
+ { 13580, 0xfe1f }, { 13592, 0xfef5 }, { 13605, 0x0e7f }, { 13615, 0x0000 },
+ { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
+ { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
+ /* 0xff00 */
+ { 13615, 0xff7a }, { 13628, 0xffff }, { 13644, 0xffff }, { 13660, 0x97ff },
+ { 13673, 0xfffe }, { 13688, 0x3fff }, { 13702, 0x0010 },
+};
+
+static int
+big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc >= 0x0000 && wc < 0x0100)
+ summary = &big5_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x0200 && wc < 0x0460)
+ summary = &big5_uni2indx_page02[(wc>>4)-0x020];
+ else if (wc >= 0x2000 && wc < 0x22c0)
+ summary = &big5_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x2400 && wc < 0x2650)
+ summary = &big5_uni2indx_page24[(wc>>4)-0x240];
+ else if (wc >= 0x3000 && wc < 0x33e0)
+ summary = &big5_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &big5_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xfa00 && wc < 0xfa10)
+ summary = &big5_uni2indx_pagefa[(wc>>4)-0xfa0];
+ else if (wc >= 0xfe00 && wc < 0xff70)
+ summary = &big5_uni2indx_pagefe[(wc>>4)-0xfe0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = big5_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/xc/lib/X11/lcUniConv/big5_emacs.h b/xc/lib/X11/lcUniConv/big5_emacs.h
new file mode 100644
index 000000000..914755399
--- /dev/null
+++ b/xc/lib/X11/lcUniConv/big5_emacs.h
@@ -0,0 +1,164 @@
+/* $XFree86: xc/lib/X11/lcUniConv/big5_emacs.h,v 1.1 2000/11/28 18:50:06 dawes Exp $ */
+
+/*
+ * 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 (conv_t conv, 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(conv,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 (conv_t conv, 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(conv,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 (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ unsigned char buf[2];
+ int ret = big5_wctomb(conv,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 (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ unsigned char buf[2];
+ int ret = big5_wctomb(conv,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;
+}
diff --git a/xc/lib/X11/lcUniConv/cp1133.h b/xc/lib/X11/lcUniConv/cp1133.h
index 4dc408ff4..da7f58966 100644
--- a/xc/lib/X11/lcUniConv/cp1133.h
+++ b/xc/lib/X11/lcUniConv/cp1133.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/cp1133.h,v 1.3 2000/11/29 17:40:28 dawes Exp $ */
/*
* IBM-CP1133
@@ -24,17 +25,17 @@ static const unsigned short cp1133_2uni_2[16] = {
};
static int
-cp1133_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+cp1133_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0) {
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
else if (c < 0xe0) {
unsigned short wc = cp1133_2uni_1[c-0xa0];
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 1;
}
}
@@ -43,7 +44,7 @@ cp1133_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
else {
unsigned short wc = cp1133_2uni_2[c-0xf0];
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 1;
}
}
@@ -70,7 +71,7 @@ static const unsigned char cp1133_page0e[96] = {
};
static int
-cp1133_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+cp1133_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/gb2312.h b/xc/lib/X11/lcUniConv/gb2312.h
index 251c664b4..c6de4f680 100644
--- a/xc/lib/X11/lcUniConv/gb2312.h
+++ b/xc/lib/X11/lcUniConv/gb2312.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/gb2312.h,v 1.3 2000/11/29 17:40:28 dawes Exp $ */
/*
* GB2312.1980-0
@@ -1060,7 +1061,7 @@ static const unsigned short gb2312_2uni_page30[6768] = {
};
static int
-gb2312_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+gb2312_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c1 = s[0];
if ((c1 >= 0x21 && c1 <= 0x29) || (c1 >= 0x30 && c1 <= 0x77)) {
@@ -1077,7 +1078,7 @@ gb2312_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
wc = gb2312_2uni_page30[i-1410];
}
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 2;
}
}
@@ -2513,7 +2514,7 @@ static const Summary16 gb2312_uni2indx_pageff[15] = {
};
static int
-gb2312_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+gb2312_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
if (n >= 2) {
const Summary16 *summary = NULL;
diff --git a/xc/lib/X11/lcUniConv/georgian_academy.h b/xc/lib/X11/lcUniConv/georgian_academy.h
index 14aebda96..a847c52e8 100644
--- a/xc/lib/X11/lcUniConv/georgian_academy.h
+++ b/xc/lib/X11/lcUniConv/georgian_academy.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/georgian_academy.h,v 1.3 2000/11/29 17:40:29 dawes Exp $ */
/*
* GEORGIAN-ACADEMY
@@ -13,15 +14,15 @@ static const unsigned short georgian_academy_2uni[32] = {
};
static int
-georgian_academy_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+georgian_academy_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c >= 0x80 && c < 0xa0)
- *pwc = (wchar_t) georgian_academy_2uni[c-0x80];
+ *pwc = (ucs4_t) georgian_academy_2uni[c-0x80];
else if (c >= 0xc0 && c < 0xe7)
- *pwc = (wchar_t) c + 0x1010;
+ *pwc = (ucs4_t) c + 0x1010;
else
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
@@ -58,7 +59,7 @@ static const unsigned char georgian_academy_page20[48] = {
};
static int
-georgian_academy_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+georgian_academy_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0080) {
diff --git a/xc/lib/X11/lcUniConv/georgian_ps.h b/xc/lib/X11/lcUniConv/georgian_ps.h
index f82c5e962..e7220d0a2 100644
--- a/xc/lib/X11/lcUniConv/georgian_ps.h
+++ b/xc/lib/X11/lcUniConv/georgian_ps.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/georgian_ps.h,v 1.3 2000/11/29 17:40:29 dawes Exp $ */
/*
* GEORGIAN-PS
@@ -23,15 +24,15 @@ static const unsigned short georgian_ps_2uni_2[39] = {
};
static int
-georgian_ps_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+georgian_ps_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c >= 0x80 && c < 0xa0)
- *pwc = (wchar_t) georgian_ps_2uni_1[c-0x80];
+ *pwc = (ucs4_t) georgian_ps_2uni_1[c-0x80];
else if (c >= 0xc0 && c < 0xe6)
- *pwc = (wchar_t) georgian_ps_2uni_2[c-0xc0];
+ *pwc = (ucs4_t) georgian_ps_2uni_2[c-0xc0];
else
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
@@ -75,7 +76,7 @@ static const unsigned char georgian_ps_page20[48] = {
};
static int
-georgian_ps_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+georgian_ps_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0080) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_1.h b/xc/lib/X11/lcUniConv/iso8859_1.h
index fb64e2e2d..a600899fd 100644
--- a/xc/lib/X11/lcUniConv/iso8859_1.h
+++ b/xc/lib/X11/lcUniConv/iso8859_1.h
@@ -1,18 +1,19 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_1.h,v 1.3 2000/11/29 17:40:30 dawes Exp $ */
/*
* ISO-8859-1
*/
static int
-iso8859_1_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
static int
-iso8859_1_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
if (wc < 0x0100) {
*r = wc;
diff --git a/xc/lib/X11/lcUniConv/iso8859_10.h b/xc/lib/X11/lcUniConv/iso8859_10.h
index a727a2f99..b63de3eb0 100644
--- a/xc/lib/X11/lcUniConv/iso8859_10.h
+++ b/xc/lib/X11/lcUniConv/iso8859_10.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_10.h,v 1.3 2000/11/29 17:40:30 dawes Exp $ */
/*
* ISO-8859-10
@@ -25,13 +26,13 @@ static const unsigned short iso8859_10_2uni[96] = {
};
static int
-iso8859_10_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_10_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) iso8859_10_2uni[c-0xa0];
+ *pwc = (ucs4_t) iso8859_10_2uni[c-0xa0];
return 1;
}
@@ -68,7 +69,7 @@ static const unsigned char iso8859_10_page00[224] = {
};
static int
-iso8859_10_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_10_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_13.h b/xc/lib/X11/lcUniConv/iso8859_13.h
index 87edbffd0..fe1d767bc 100644
--- a/xc/lib/X11/lcUniConv/iso8859_13.h
+++ b/xc/lib/X11/lcUniConv/iso8859_13.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/X11/lcUniConv/iso8859_13.h,v 1.1 2000/06/23 19:50:59 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_13.h,v 1.2 2000/11/28 16:10:26 dawes Exp $ */
/*
* ISO-8859-13
@@ -26,13 +26,13 @@ static const unsigned short iso8859_13_2uni[96] = {
};
static int
-iso8859_13_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_13_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) iso8859_13_2uni[c-0xa0];
+ *pwc = (ucs4_t) iso8859_13_2uni[c-0xa0];
return 1;
}
@@ -72,7 +72,7 @@ static const unsigned char iso8859_13_page20[8] = {
};
static int
-iso8859_13_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_13_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_14.h b/xc/lib/X11/lcUniConv/iso8859_14.h
index 2fea4431f..c76c2c2ae 100644
--- a/xc/lib/X11/lcUniConv/iso8859_14.h
+++ b/xc/lib/X11/lcUniConv/iso8859_14.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_14.h,v 1.3 2000/11/29 17:40:30 dawes Exp $ */
/*
* ISO-8859-14
@@ -25,13 +26,13 @@ static const unsigned short iso8859_14_2uni[96] = {
};
static int
-iso8859_14_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_14_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c >= 0xa0)
- *pwc = (wchar_t) iso8859_14_2uni[c-0xa0];
+ *pwc = (ucs4_t) iso8859_14_2uni[c-0xa0];
else
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
@@ -83,7 +84,7 @@ static const unsigned char iso8859_14_page1e_1[8] = {
};
static int
-iso8859_14_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_14_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_15.h b/xc/lib/X11/lcUniConv/iso8859_15.h
index 3801fc12f..8c613d7f7 100644
--- a/xc/lib/X11/lcUniConv/iso8859_15.h
+++ b/xc/lib/X11/lcUniConv/iso8859_15.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_15.h,v 1.3 2000/11/29 17:40:31 dawes Exp $ */
/*
* ISO-8859-15
@@ -13,13 +14,13 @@ static const unsigned short iso8859_15_2uni[32] = {
};
static int
-iso8859_15_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_15_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c >= 0xa0 && c < 0xc0)
- *pwc = (wchar_t) iso8859_15_2uni[c-0xa0];
+ *pwc = (ucs4_t) iso8859_15_2uni[c-0xa0];
else
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
@@ -39,7 +40,7 @@ static const unsigned char iso8859_15_page01[48] = {
};
static int
-iso8859_15_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_15_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_16.h b/xc/lib/X11/lcUniConv/iso8859_16.h
index 3dbf3648b..3efe2ffeb 100644
--- a/xc/lib/X11/lcUniConv/iso8859_16.h
+++ b/xc/lib/X11/lcUniConv/iso8859_16.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_16.h,v 1.3 2000/11/29 17:40:31 dawes Exp $ */
/*
* ISO-8859-16
@@ -25,13 +26,13 @@ static const unsigned short iso8859_16_2uni[96] = {
};
static int
-iso8859_16_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) iso8859_16_2uni[c-0xa0];
+ *pwc = (ucs4_t) iso8859_16_2uni[c-0xa0];
return 1;
}
@@ -74,7 +75,7 @@ static const unsigned char iso8859_16_page20[8] = {
};
static int
-iso8859_16_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_16_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_2.h b/xc/lib/X11/lcUniConv/iso8859_2.h
index 2309854be..9598d54bd 100644
--- a/xc/lib/X11/lcUniConv/iso8859_2.h
+++ b/xc/lib/X11/lcUniConv/iso8859_2.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_2.h,v 1.3 2000/11/29 17:40:31 dawes Exp $ */
/*
* ISO-8859-2
@@ -25,13 +26,13 @@ static const unsigned short iso8859_2_2uni[96] = {
};
static int
-iso8859_2_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) iso8859_2_2uni[c-0xa0];
+ *pwc = (ucs4_t) iso8859_2_2uni[c-0xa0];
return 1;
}
@@ -74,7 +75,7 @@ static const unsigned char iso8859_2_page02[32] = {
};
static int
-iso8859_2_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_3.h b/xc/lib/X11/lcUniConv/iso8859_3.h
index dd49928e7..1604c2545 100644
--- a/xc/lib/X11/lcUniConv/iso8859_3.h
+++ b/xc/lib/X11/lcUniConv/iso8859_3.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_3.h,v 1.3 2000/11/29 17:40:31 dawes Exp $ */
/*
* ISO-8859-3
@@ -25,17 +26,17 @@ static const unsigned short iso8859_3_2uni[96] = {
};
static int
-iso8859_3_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_3_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0) {
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
else {
unsigned short wc = iso8859_3_2uni[c-0xa0];
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 1;
}
}
@@ -78,7 +79,7 @@ static const unsigned char iso8859_3_page02[8] = {
};
static int
-iso8859_3_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_3_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_4.h b/xc/lib/X11/lcUniConv/iso8859_4.h
index 8afd809c0..6ea62d1cf 100644
--- a/xc/lib/X11/lcUniConv/iso8859_4.h
+++ b/xc/lib/X11/lcUniConv/iso8859_4.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_4.h,v 1.3 2000/11/29 17:40:31 dawes Exp $ */
/*
* ISO-8859-4
@@ -25,13 +26,13 @@ static const unsigned short iso8859_4_2uni[96] = {
};
static int
-iso8859_4_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) iso8859_4_2uni[c-0xa0];
+ *pwc = (ucs4_t) iso8859_4_2uni[c-0xa0];
return 1;
}
@@ -74,7 +75,7 @@ static const unsigned char iso8859_4_page02[32] = {
};
static int
-iso8859_4_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_4_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_5.h b/xc/lib/X11/lcUniConv/iso8859_5.h
index de105458d..d47856772 100644
--- a/xc/lib/X11/lcUniConv/iso8859_5.h
+++ b/xc/lib/X11/lcUniConv/iso8859_5.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_5.h,v 1.3 2000/11/29 17:40:32 dawes Exp $ */
/*
* ISO-8859-5
@@ -25,13 +26,13 @@ static const unsigned short iso8859_5_2uni[96] = {
};
static int
-iso8859_5_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) iso8859_5_2uni[c-0xa0];
+ *pwc = (ucs4_t) iso8859_5_2uni[c-0xa0];
return 1;
}
@@ -55,7 +56,7 @@ static const unsigned char iso8859_5_page04[96] = {
};
static int
-iso8859_5_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_6.h b/xc/lib/X11/lcUniConv/iso8859_6.h
index 28761f971..4d57893ac 100644
--- a/xc/lib/X11/lcUniConv/iso8859_6.h
+++ b/xc/lib/X11/lcUniConv/iso8859_6.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_6.h,v 1.3 2000/11/29 17:40:32 dawes Exp $ */
/*
* ISO-8859-6
@@ -25,17 +26,17 @@ static const unsigned short iso8859_6_2uni[96] = {
};
static int
-iso8859_6_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_6_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0) {
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
else {
unsigned short wc = iso8859_6_2uni[c-0xa0];
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 1;
}
}
@@ -60,7 +61,7 @@ static const unsigned char iso8859_6_page06[80] = {
};
static int
-iso8859_6_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_6_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_7.h b/xc/lib/X11/lcUniConv/iso8859_7.h
index ae3233e7f..790cec759 100644
--- a/xc/lib/X11/lcUniConv/iso8859_7.h
+++ b/xc/lib/X11/lcUniConv/iso8859_7.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_7.h,v 1.3 2000/11/29 17:40:32 dawes Exp $ */
/*
* ISO-8859-7
@@ -25,17 +26,17 @@ static const unsigned short iso8859_7_2uni[96] = {
};
static int
-iso8859_7_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0) {
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
else {
unsigned short wc = iso8859_7_2uni[c-0xa0];
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 1;
}
}
@@ -66,7 +67,7 @@ static const unsigned char iso8859_7_page20[16] = {
};
static int
-iso8859_7_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_7_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_8.h b/xc/lib/X11/lcUniConv/iso8859_8.h
index 79569be1a..7b780f029 100644
--- a/xc/lib/X11/lcUniConv/iso8859_8.h
+++ b/xc/lib/X11/lcUniConv/iso8859_8.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_8.h,v 1.3 2000/11/29 17:40:32 dawes Exp $ */
/*
* ISO-8859-8
@@ -25,18 +26,18 @@ static const unsigned short iso8859_8_2uni[96] = {
};
static int
-iso8859_8_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_8_mbtowc (conv_t conv, 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 = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 1;
}
}
else {
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
return RET_ILSEQ;
@@ -67,7 +68,7 @@ static const unsigned char iso8859_8_page20[16] = {
};
static int
-iso8859_8_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_9.h b/xc/lib/X11/lcUniConv/iso8859_9.h
index 8ca997918..55ec1cb11 100644
--- a/xc/lib/X11/lcUniConv/iso8859_9.h
+++ b/xc/lib/X11/lcUniConv/iso8859_9.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_9.h,v 1.3 2000/11/29 17:40:32 dawes Exp $ */
/*
* ISO-8859-9
@@ -16,13 +17,13 @@ static const unsigned short iso8859_9_2uni[48] = {
};
static int
-iso8859_9_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_9_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c >= 0xd0)
- *pwc = (wchar_t) iso8859_9_2uni[c-0xd0];
+ *pwc = (ucs4_t) iso8859_9_2uni[c-0xd0];
else
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
@@ -47,7 +48,7 @@ static const unsigned char iso8859_9_page01[72] = {
};
static int
-iso8859_9_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_9_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00d0) {
diff --git a/xc/lib/X11/lcUniConv/iso8859_9e.h b/xc/lib/X11/lcUniConv/iso8859_9e.h
index b2ff2eb6e..a5a0b609c 100644
--- a/xc/lib/X11/lcUniConv/iso8859_9e.h
+++ b/xc/lib/X11/lcUniConv/iso8859_9e.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/X11/lcUniConv/iso8859_9e.h,v 1.1 2000/10/27 20:26:07 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_9e.h,v 1.3 2000/11/28 16:10:28 dawes Exp $ */
/*
* ISO-8859-9E
@@ -7,48 +7,48 @@
static const unsigned short iso8859_9e_2uni[96] = {
/* 0xa0 */
0x00a0, 0x017d, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x012c, 0x00a7,
- 0x016c, 0x00a9, 0x01e6, 0x00ab, 0x014a, 0x00ad, 0x00ae, 0x019f,
+ 0x016c, 0x00a9, 0x01e6, 0x00ab, 0x014a, 0x00ad, 0x00ae, 0x01d1,
/* 0xb0 */
- 0x00b0, 0x017e, 0x00b2, 0x00b3, 0x01d1, 0x00b5, 0x012d, 0x00b7,
- 0x016d, 0x00b9, 0x01e7, 0x00bb, 0x014b, 0x01d2, 0x0178, 0x0275,
+ 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,
- 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+ 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,
- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
+ 0x0275, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
};
static int
-iso8859_9e_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+iso8859_9e_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
- if (c >= 0xd0)
- *pwc = (wchar_t) iso8859_9e_2uni[c-0xa0];
+ if (c >= 0xa0)
+ *pwc = (ucs4_t) iso8859_9e_2uni[c-0xa0];
else
- *pwc = (wchar_t) c;
+ *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, 0x00, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0xb9, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 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 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xd7, 0x00, 0xdf, /* 0xd8-0xdf */
+ 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 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xf7, 0x00, 0xff, /* 0xf8-0xff */
+ 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 */
@@ -67,16 +67,16 @@ static const unsigned char iso8859_9e_page01[136] = {
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, 0xaf, /* 0x98-0x9f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, /* 0x98-0x9f */
};
static const unsigned char iso8859_9e_page01_d[24] = {
- 0x00, 0xb4, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 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 (conv_t conv, unsigned char *r, wchar_t wc, int n)
+iso8859_9e_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
@@ -89,8 +89,10 @@ iso8859_9e_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
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 = 0xbf;
+ c = 0xf8;
else if (wc == 0x20ac)
c = 0xa4;
if (c != 0) {
diff --git a/xc/lib/X11/lcUniConv/jisx0201.h b/xc/lib/X11/lcUniConv/jisx0201.h
index 5bde56fa5..4a30f2847 100644
--- a/xc/lib/X11/lcUniConv/jisx0201.h
+++ b/xc/lib/X11/lcUniConv/jisx0201.h
@@ -1,23 +1,24 @@
+/* $XFree86: xc/lib/X11/lcUniConv/jisx0201.h,v 1.3 2000/11/29 17:40:33 dawes Exp $ */
/*
* JISX0201.1976-0
*/
static int
-jisx0201_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+jisx0201_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0x80) {
if (c == 0x5c)
- *pwc = (wchar_t) 0x00a5;
+ *pwc = (ucs4_t) 0x00a5;
else if (c == 0x7e)
- *pwc = (wchar_t) 0x203e;
+ *pwc = (ucs4_t) 0x203e;
else
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
} else {
if (c >= 0xa1 && c < 0xe0) {
- *pwc = (wchar_t) c + 0xfec0;
+ *pwc = (ucs4_t) c + 0xfec0;
return 1;
}
}
@@ -25,7 +26,7 @@ jisx0201_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
}
static int
-jisx0201_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+jisx0201_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) {
*r = wc;
diff --git a/xc/lib/X11/lcUniConv/jisx0208.h b/xc/lib/X11/lcUniConv/jisx0208.h
index ff833d6ee..a242f9afb 100644
--- a/xc/lib/X11/lcUniConv/jisx0208.h
+++ b/xc/lib/X11/lcUniConv/jisx0208.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/jisx0208.h,v 1.3 2000/11/29 17:40:33 dawes Exp $ */
/*
* JISX0208.1990-0
@@ -991,7 +992,7 @@ static const unsigned short jisx0208_2uni_page30[6398] = {
};
static int
-jisx0208_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+jisx0208_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c1 = s[0];
if ((c1 >= 0x21 && c1 <= 0x28) || (c1 >= 0x30 && c1 <= 0x74)) {
@@ -1008,7 +1009,7 @@ jisx0208_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
wc = jisx0208_2uni_page30[i-1410];
}
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 2;
}
}
@@ -2355,7 +2356,7 @@ static const Summary16 jisx0208_uni2indx_pageff[15] = {
};
static int
-jisx0208_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+jisx0208_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
if (n >= 2) {
const Summary16 *summary = NULL;
diff --git a/xc/lib/X11/lcUniConv/jisx0212.h b/xc/lib/X11/lcUniConv/jisx0212.h
index 6ba69459e..2bfef7c8d 100644
--- a/xc/lib/X11/lcUniConv/jisx0212.h
+++ b/xc/lib/X11/lcUniConv/jisx0212.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/jisx0212.h,v 1.3 2000/11/29 17:40:33 dawes Exp $ */
/*
* JISX0212.1990-0
@@ -892,7 +893,7 @@ static const unsigned short jisx0212_2uni_page30[5801] = {
};
static int
-jisx0212_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+jisx0212_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c1 = s[0];
if ((c1 == 0x22) || (c1 >= 0x26 && c1 <= 0x27) || (c1 >= 0x29 && c1 <= 0x2b) || (c1 >= 0x30 && c1 <= 0x6d)) {
@@ -915,7 +916,7 @@ jisx0212_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
wc = jisx0212_2uni_page30[i-1410];
}
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 2;
}
}
@@ -2130,7 +2131,7 @@ static const Summary16 jisx0212_uni2indx_page4e[1307] = {
};
static int
-jisx0212_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+jisx0212_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
if (n >= 2) {
const Summary16 *summary = NULL;
diff --git a/xc/lib/X11/lcUniConv/koi8_c.h b/xc/lib/X11/lcUniConv/koi8_c.h
index 7eb5cb9d3..e31c36840 100644
--- a/xc/lib/X11/lcUniConv/koi8_c.h
+++ b/xc/lib/X11/lcUniConv/koi8_c.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/X11/lcUniConv/koi8_c.h,v 1.1 2000/10/27 20:26:08 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcUniConv/koi8_c.h,v 1.2 2000/11/28 16:10:29 dawes Exp $ */
/*
* KOI8-C
@@ -32,13 +32,13 @@ static const unsigned short koi8_c_2uni[128] = {
};
static int
-koi8_c_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+koi8_c_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0x80)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) koi8_c_2uni[c-0x80];
+ *pwc = (ucs4_t) koi8_c_2uni[c-0x80];
return 1;
}
@@ -82,7 +82,7 @@ static const unsigned char koi8_c_page22[1] = {
};
static int
-koi8_c_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+koi8_c_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0080) {
diff --git a/xc/lib/X11/lcUniConv/koi8_r.h b/xc/lib/X11/lcUniConv/koi8_r.h
index b0c802ee5..a0d3d9b26 100644
--- a/xc/lib/X11/lcUniConv/koi8_r.h
+++ b/xc/lib/X11/lcUniConv/koi8_r.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/koi8_r.h,v 1.3 2000/11/29 17:40:34 dawes Exp $ */
/*
* KOI8-R
@@ -33,13 +34,13 @@ static const unsigned short koi8_r_2uni[128] = {
};
static int
-koi8_r_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+koi8_r_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0x80)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) koi8_r_2uni[c-0x80];
+ *pwc = (ucs4_t) koi8_r_2uni[c-0x80];
return 1;
}
@@ -109,7 +110,7 @@ static const unsigned char koi8_r_page25[168] = {
};
static int
-koi8_r_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+koi8_r_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0080) {
diff --git a/xc/lib/X11/lcUniConv/koi8_u.h b/xc/lib/X11/lcUniConv/koi8_u.h
index bc0bfd044..43457afd9 100644
--- a/xc/lib/X11/lcUniConv/koi8_u.h
+++ b/xc/lib/X11/lcUniConv/koi8_u.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/koi8_u.h,v 1.3 2000/11/29 17:40:34 dawes Exp $ */
/*
* KOI8-U
@@ -33,13 +34,13 @@ static const unsigned short koi8_u_2uni[128] = {
};
static int
-koi8_u_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+koi8_u_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0x80)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) koi8_u_2uni[c-0x80];
+ *pwc = (ucs4_t) koi8_u_2uni[c-0x80];
return 1;
}
@@ -117,7 +118,7 @@ static const unsigned char koi8_u_page25[168] = {
};
static int
-koi8_u_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+koi8_u_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0080) {
diff --git a/xc/lib/X11/lcUniConv/ksc5601.h b/xc/lib/X11/lcUniConv/ksc5601.h
index 0e387feea..18e79b975 100644
--- a/xc/lib/X11/lcUniConv/ksc5601.h
+++ b/xc/lib/X11/lcUniConv/ksc5601.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/ksc5601.h,v 1.3 2000/11/29 17:40:34 dawes Exp $ */
/*
* KSC5601.1987-0
@@ -1167,7 +1168,7 @@ static const unsigned short ksc5601_2uni_page4a[4888] = {
};
static int
-ksc5601_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+ksc5601_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c1 = s[0];
if ((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x30 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) {
@@ -1187,7 +1188,7 @@ ksc5601_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
wc = ksc5601_2uni_page4a[i-3854];
}
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 2;
}
}
@@ -2961,7 +2962,7 @@ static const Summary16 ksc5601_uni2indx_pageff[15] = {
};
static int
-ksc5601_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+ksc5601_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
if (n >= 2) {
const Summary16 *summary = NULL;
diff --git a/xc/lib/X11/lcUniConv/microsoft_cp1251.h b/xc/lib/X11/lcUniConv/microsoft_cp1251.h
index 89c1031ee..b0e381f99 100644
--- a/xc/lib/X11/lcUniConv/microsoft_cp1251.h
+++ b/xc/lib/X11/lcUniConv/microsoft_cp1251.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/X11/lcUniConv/microsoft_cp1251.h,v 1.1 2000/10/27 20:26:08 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcUniConv/microsoft_cp1251.h,v 1.3 2000/11/28 16:10:30 dawes Exp $ */
/*
* MICROSOFT-CP1251
@@ -32,13 +32,13 @@ static const unsigned short microsoft_cp1251_2uni[128] = {
};
static int
-microsoft_cp1251_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+microsoft_cp1251_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (wchar_t) c;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) microsoft_cp1251_2uni[c-0xa0];
+ *pwc = (ucs4_t) microsoft_cp1251_2uni[c-0x80];
return 1;
}
@@ -87,7 +87,7 @@ static const unsigned char microsoft_cp1251_page22[1] = {
};
static int
-microsoft_cp1251_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+microsoft_cp1251_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0080) {
diff --git a/xc/lib/X11/lcUniConv/microsoft_cp1255.h b/xc/lib/X11/lcUniConv/microsoft_cp1255.h
index 4bc403563..200b7ef69 100644
--- a/xc/lib/X11/lcUniConv/microsoft_cp1255.h
+++ b/xc/lib/X11/lcUniConv/microsoft_cp1255.h
@@ -1,75 +1,80 @@
-/* $XFree86: xc/lib/X11/lcUniConv/microsoft_cp1255.h,v 1.1 2000/10/27 20:26:09 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcUniConv/microsoft_cp1255.h,v 1.3 2000/11/28 16:10:30 dawes Exp $ */
/*
- * MICROSOFT-CP1251
+ * MICROSOFT-CP1255
*/
static const unsigned short microsoft_cp1255_2uni[128] = {
/* 0x80 */
- 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
+ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
/* 0x90 */
- 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x98, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
/* 0xa0 */
- 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
- 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
/* 0xb0 */
- 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
- 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
/* 0xc0 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
- 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
+ 0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
/* 0xd0 */
- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3,
+ 0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
/* 0xe0 */
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
- 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
/* 0xf0 */
- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
};
static int
-microsoft_cp1255_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+microsoft_cp1255_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (wchar_t) c;
- else
- *pwc = (wchar_t) microsoft_cp1255_2uni[c-0xa0];
- return 1;
+ if (c >= 0x80) {
+ unsigned short wc = microsoft_cp1255_2uni[c-0x80];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ else {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ return RET_ILSEQ;
}
-static const unsigned char microsoft_cp1255_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 microsoft_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 microsoft_cp1255_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 microsoft_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 microsoft_cp1255_page20[48] = {
+static const unsigned char microsoft_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 */
@@ -77,36 +82,37 @@ static const unsigned char microsoft_cp1255_page20[48] = {
0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
};
-static const unsigned char microsoft_cp1255_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 microsoft_cp1255_page22[1] = {
- 0xb0, /* 0x16-0x16 */
-};
static int
-microsoft_cp1255_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+microsoft_cp1255_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
- if (wc < 0x0080) {
+ if (wc < 0x00a0) {
*r = wc;
return 1;
}
- else if (wc >= 0x00a0 && wc < 0x00bc)
+ else if (wc >= 0x00a0 && wc < 0x00f8)
c = microsoft_cp1255_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x0492)
- c = microsoft_cp1255_page04[wc-0x0400];
- else if (wc >= 0x2010 && wc < 0x203b)
- c = microsoft_cp1255_page20[wc-0x2010];
- else if (wc == 0x20ac)
+ else if (wc == 0x0192)
+ c = 0x83;
+ else if (wc == 0x02c6)
c = 0x88;
- else if (wc >= 0x2110 && wc < 0x2123)
- c = microsoft_cp1255_page21[wc-0x2110];
+ else if (wc == 0x02dc)
+ c = 0x98;
+ else if (wc >= 0x05b0 && wc < 0x05f5)
+ c = microsoft_cp1255_page05[wc-0x05b0];
+ else if (wc >= 0x2008 && wc < 0x203b)
+ c = microsoft_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;
}
+
diff --git a/xc/lib/X11/lcUniConv/microsoft_cp1256.h b/xc/lib/X11/lcUniConv/microsoft_cp1256.h
index 847f292b8..baad88352 100644
--- a/xc/lib/X11/lcUniConv/microsoft_cp1256.h
+++ b/xc/lib/X11/lcUniConv/microsoft_cp1256.h
@@ -1,75 +1,98 @@
-/* $XFree86: xc/lib/X11/lcUniConv/microsoft_cp1256.h,v 1.1 2000/10/27 20:26:09 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcUniConv/microsoft_cp1256.h,v 1.3 2000/11/28 16:10:31 dawes Exp $ */
/*
- * MICROSOFT-CP1251
+ * MICROSOFT-CP1256
*/
static const unsigned short microsoft_cp1256_2uni[128] = {
/* 0x80 */
- 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
+ 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
/* 0x90 */
- 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x98, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
+ 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba,
/* 0xa0 */
- 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
- 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
+ 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
/* 0xb0 */
- 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
- 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f,
/* 0xc0 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
- 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
/* 0xd0 */
- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7,
+ 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643,
/* 0xe0 */
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
- 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef,
/* 0xf0 */
- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+ 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7,
+ 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2,
};
static int
-microsoft_cp1256_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+microsoft_cp1256_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (wchar_t) c;
- else
- *pwc = (wchar_t) microsoft_cp1256_2uni[c-0xa0];
- return 1;
+ if (c >= 0x80) {
+ unsigned short wc = microsoft_cp1256_2uni[c-0x80];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ else {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ return RET_ILSEQ;
}
-static const unsigned char microsoft_cp1256_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 microsoft_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 microsoft_cp1256_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 */
+static const unsigned char microsoft_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, 0x00, 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, 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 */
+ 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 microsoft_cp1256_page20[48] = {
+static const unsigned char microsoft_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 */
@@ -77,36 +100,37 @@ static const unsigned char microsoft_cp1256_page20[48] = {
0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
};
-static const unsigned char microsoft_cp1256_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 microsoft_cp1256_page22[1] = {
- 0xb0, /* 0x16-0x16 */
-};
static int
-microsoft_cp1256_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+microsoft_cp1256_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
- if (wc < 0x0080) {
+ if (wc < 0x00a0) {
*r = wc;
return 1;
}
- else if (wc >= 0x00a0 && wc < 0x00bc)
+ else if (wc >= 0x00a0 && wc < 0x00ff)
c = microsoft_cp1256_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x0492)
- c = microsoft_cp1256_page04[wc-0x0400];
- else if (wc >= 0x2010 && wc < 0x203b)
- c = microsoft_cp1256_page20[wc-0x2010];
- else if (wc == 0x20ac)
+ else if (wc == 0x0152)
+ c = 0x8c;
+ else if (wc == 0x0153)
+ c = 0x9c;
+ else if (wc == 0x0192)
+ c = 0x83;
+ else if (wc == 0x02c6)
c = 0x88;
- else if (wc >= 0x2110 && wc < 0x2123)
- c = microsoft_cp1256_page21[wc-0x2110];
+ else if (wc >= 0x0608 && wc < 0x06d3)
+ c = microsoft_cp1256_page06[wc-0x0608];
+ else if (wc >= 0x2008 && wc < 0x203b)
+ c = microsoft_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;
}
+
diff --git a/xc/lib/X11/lcUniConv/mulelao.h b/xc/lib/X11/lcUniConv/mulelao.h
index 03e138b6a..2afd7b51f 100644
--- a/xc/lib/X11/lcUniConv/mulelao.h
+++ b/xc/lib/X11/lcUniConv/mulelao.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/mulelao.h,v 1.3 2000/11/29 17:40:35 dawes Exp $ */
/*
* MULELAO-1
@@ -25,17 +26,17 @@ static const unsigned short mulelao_2uni[96] = {
};
static int
-mulelao_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+mulelao_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0) {
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
else {
unsigned short wc = mulelao_2uni[c-0xa0];
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 1;
}
}
@@ -58,7 +59,7 @@ static const unsigned char mulelao_page0e[96] = {
};
static int
-mulelao_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+mulelao_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x00a0) {
diff --git a/xc/lib/X11/lcUniConv/tatar_cyr.h b/xc/lib/X11/lcUniConv/tatar_cyr.h
index 7ef91d29d..478e30bf2 100644
--- a/xc/lib/X11/lcUniConv/tatar_cyr.h
+++ b/xc/lib/X11/lcUniConv/tatar_cyr.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/X11/lcUniConv/tatar_cyr.h,v 1.1 2000/10/27 20:26:10 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcUniConv/tatar_cyr.h,v 1.2 2000/11/28 16:10:31 dawes Exp $ */
/*
* TATAR-CYR
@@ -32,13 +32,13 @@ static const unsigned short tatar_cyr_2uni[128] = {
};
static int
-tatar_cyr_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+tatar_cyr_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0xa0)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) tatar_cyr_2uni[c-0xa0];
+ *pwc = (ucs4_t) tatar_cyr_2uni[c-0xa0];
return 1;
}
@@ -98,7 +98,7 @@ static const unsigned char tatar_cyr_page22[1] = {
};
static int
-tatar_cyr_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+tatar_cyr_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0080) {
diff --git a/xc/lib/X11/lcUniConv/tcvn.h b/xc/lib/X11/lcUniConv/tcvn.h
index 32330bf3f..f3d49755d 100644
--- a/xc/lib/X11/lcUniConv/tcvn.h
+++ b/xc/lib/X11/lcUniConv/tcvn.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/tcvn.h,v 1.3 2000/11/29 17:40:35 dawes Exp $ */
/*
* TCVN-5712
@@ -39,15 +40,15 @@ static const unsigned short tcvn_2uni_2[128] = {
};
static int
-tcvn_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+tcvn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0x20)
- *pwc = (wchar_t) tcvn_2uni_1[c];
+ *pwc = (ucs4_t) tcvn_2uni_1[c];
else if (c < 0x80)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) tcvn_2uni_2[c-0x80];
+ *pwc = (ucs4_t) tcvn_2uni_2[c-0x80];
return 1;
}
@@ -112,7 +113,7 @@ static const unsigned char tcvn_page1e[96] = {
};
static int
-tcvn_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+tcvn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0080 && (wc >= 0x0020 || (0x00fe0076 & (1 << wc)) == 0)) {
diff --git a/xc/lib/X11/lcUniConv/tis620.h b/xc/lib/X11/lcUniConv/tis620.h
index 830834b2e..e883d9113 100644
--- a/xc/lib/X11/lcUniConv/tis620.h
+++ b/xc/lib/X11/lcUniConv/tis620.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/tis620.h,v 1.3 2000/11/29 17:40:35 dawes Exp $ */
/*
* TIS620.2533-1
@@ -25,11 +26,11 @@ static const unsigned short tis620_2uni[96] = {
};
static int
-tis620_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+tis620_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0x80) {
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
return 1;
}
else if (c < 0xa0) {
@@ -37,7 +38,7 @@ tis620_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
else {
unsigned short wc = tis620_2uni[c-0xa0];
if (wc != 0xfffd) {
- *pwc = (wchar_t) wc;
+ *pwc = (ucs4_t) wc;
return 1;
}
}
@@ -60,7 +61,7 @@ static const unsigned char tis620_page0e[96] = {
};
static int
-tis620_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+tis620_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0080) {
diff --git a/xc/lib/X11/lcUniConv/ucs2be.h b/xc/lib/X11/lcUniConv/ucs2be.h
new file mode 100644
index 000000000..af2a586b7
--- /dev/null
+++ b/xc/lib/X11/lcUniConv/ucs2be.h
@@ -0,0 +1,32 @@
+/*
+ * UCS-2BE = UCS-2 big endian
+ */
+/* $XFree86: xc/lib/X11/lcUniConv/ucs2be.h,v 1.1 2000/11/28 17:25:09 dawes Exp $ */
+
+static int
+ucs2be_mbtowc (conv_t conv, 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 (conv_t conv, 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;
+}
diff --git a/xc/lib/X11/lcUniConv/utf8.h b/xc/lib/X11/lcUniConv/utf8.h
index 0e6ad612f..fe189cc2b 100644
--- a/xc/lib/X11/lcUniConv/utf8.h
+++ b/xc/lib/X11/lcUniConv/utf8.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/X11/lcUniConv/utf8.h,v 1.1 2000/06/23 23:13:19 dawes Exp $ */
+/* $XFree86: xc/lib/X11/lcUniConv/utf8.h,v 1.3 2000/11/28 18:50:07 dawes Exp $ */
/*
* UTF-8
@@ -7,7 +7,7 @@
/* Specification: RFC 2279 */
static int
-utf8_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+utf8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = s[0];
@@ -21,8 +21,8 @@ utf8_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
return RET_TOOFEW(0);
if (!((s[1] ^ 0x80) < 0x40))
return RET_ILSEQ;
- *pwc = ((wchar_t) (c & 0x1f) << 6)
- | (wchar_t) (s[1] ^ 0x80);
+ *pwc = ((ucs4_t) (c & 0x1f) << 6)
+ | (ucs4_t) (s[1] ^ 0x80);
return 2;
} else if (c < 0xf0) {
if (n < 3)
@@ -30,36 +30,36 @@ utf8_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
&& (c >= 0xe1 || s[1] >= 0xa0)))
return RET_ILSEQ;
- *pwc = ((wchar_t) (c & 0x0f) << 12)
- | ((wchar_t) (s[1] ^ 0x80) << 6)
- | (wchar_t) (s[2] ^ 0x80);
+ *pwc = ((ucs4_t) (c & 0x0f) << 12)
+ | ((ucs4_t) (s[1] ^ 0x80) << 6)
+ | (ucs4_t) (s[2] ^ 0x80);
return 3;
- } else if (c < 0xf8 && sizeof(wchar_t)*8 >= 32) {
+ } 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 = ((wchar_t) (c & 0x07) << 18)
- | ((wchar_t) (s[1] ^ 0x80) << 12)
- | ((wchar_t) (s[2] ^ 0x80) << 6)
- | (wchar_t) (s[3] ^ 0x80);
+ *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 && sizeof(wchar_t)*8 >= 32) {
+ } 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 = ((wchar_t) (c & 0x03) << 24)
- | ((wchar_t) (s[1] ^ 0x80) << 18)
- | ((wchar_t) (s[2] ^ 0x80) << 12)
- | ((wchar_t) (s[3] ^ 0x80) << 6)
- | (wchar_t) (s[4] ^ 0x80);
+ *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 && sizeof(wchar_t)*8 >= 32) {
+ } else if (c < 0xfe) {
if (n < 6)
return RET_TOOFEW(0);
if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
@@ -67,19 +67,19 @@ utf8_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
&& (s[5] ^ 0x80) < 0x40
&& (c >= 0xfd || s[1] >= 0x84)))
return RET_ILSEQ;
- *pwc = ((wchar_t) (c & 0x01) << 30)
- | ((wchar_t) (s[1] ^ 0x80) << 24)
- | ((wchar_t) (s[2] ^ 0x80) << 18)
- | ((wchar_t) (s[3] ^ 0x80) << 12)
- | ((wchar_t) (s[4] ^ 0x80) << 6)
- | (wchar_t) (s[5] ^ 0x80);
+ *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 (conv_t conv, unsigned char *r, wchar_t wc, int n) /* n == 0 is acceptable */
+utf8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) /* n == 0 is acceptable */
{
int count;
if (wc < 0x80)
diff --git a/xc/lib/X11/lcUniConv/viscii.h b/xc/lib/X11/lcUniConv/viscii.h
index b43bc620a..9dffbf052 100644
--- a/xc/lib/X11/lcUniConv/viscii.h
+++ b/xc/lib/X11/lcUniConv/viscii.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/X11/lcUniConv/viscii.h,v 1.3 2000/11/29 17:40:35 dawes Exp $ */
/*
* VISCII1.1-1
@@ -41,15 +42,15 @@ static const unsigned short viscii_2uni_2[128] = {
};
static int
-viscii_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+viscii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
{
unsigned char c = *s;
if (c < 0x20)
- *pwc = (wchar_t) viscii_2uni_1[c];
+ *pwc = (ucs4_t) viscii_2uni_1[c];
else if (c < 0x80)
- *pwc = (wchar_t) c;
+ *pwc = (ucs4_t) c;
else
- *pwc = (wchar_t) viscii_2uni_2[c-0x80];
+ *pwc = (ucs4_t) viscii_2uni_2[c-0x80];
return 1;
}
@@ -103,7 +104,7 @@ static const unsigned char viscii_page1e[96] = {
};
static int
-viscii_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+viscii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
{
unsigned char c = 0;
if (wc < 0x0080 && (wc >= 0x0020 || (0x42100064 & (1 << wc)) == 0)) {
diff --git a/xc/lib/X11/lcUtil.c b/xc/lib/X11/lcUtil.c
index 26bea5a1d..dd8be2183 100644
--- a/xc/lib/X11/lcUtil.c
+++ b/xc/lib/X11/lcUtil.c
@@ -22,57 +22,64 @@
*
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
+ * Bug fixes: Bruno Haible XFree86 Inc.
*/
+/* $XFree86: xc/lib/X11/lcUtil.c,v 1.3 2000/11/29 17:40:24 dawes Exp $ */
-#include <stdio.h>
-#include <ctype.h>
-#include <X11/Xos.h>
-#include "Xlibint.h"
+#include <X11/Xlib.h>
+#include "XlcPublic.h"
-#ifdef X_NOT_STDC_ENV
-#ifndef toupper
-#define toupper(c) ((int)(c) - 'a' + 'A')
-#endif
-#endif
+/* Don't use <ctype.h> here because it is locale dependent. */
+#define set_toupper(ch) \
+ if (ch >= 'a' && ch <= 'z') \
+ ch = ch - 'a' + 'A';
+
+/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
+ Like strcasecmp in an ASCII locale. */
int
-_XlcCompareISOLatin1(str1, str2)
- char *str1, *str2;
+_XlcCompareISOLatin1(
+ const char *str1,
+ const char *str2)
{
- register char ch1, ch2;
-
- for ( ; (ch1 = *str1) && (ch2 = *str2); str1++, str2++) {
- if (islower(ch1))
- ch1 = toupper(ch1);
- if (islower(ch2))
- ch2 = toupper(ch2);
+ unsigned char ch1, ch2;
- if (ch1 != ch2)
- break;
+ for ( ; ; str1++, str2++) {
+ ch1 = *str1;
+ ch2 = *str2;
+ if (ch1 == '\0' || ch2 == '\0')
+ break;
+ set_toupper(ch1);
+ set_toupper(ch2);
+ if (ch1 != ch2)
+ break;
}
- return *str1 - *str2;
+ return ch1 - ch2;
}
+/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
+ case of ASCII letters. Like strncasecmp in an ASCII locale. */
int
-_XlcNCompareISOLatin1(str1, str2, len)
- char *str1, *str2;
- int len;
+_XlcNCompareISOLatin1(
+ const char *str1,
+ const char *str2,
+ int len)
{
- register char ch1, ch2;
+ unsigned char ch1, ch2;
- for ( ; (ch1 = *str1) && (ch2 = *str2) && len; str1++, str2++, len--) {
- if (islower(ch1))
- ch1 = toupper(ch1);
- if (islower(ch2))
- ch2 = toupper(ch2);
-
- if (ch1 != ch2)
- break;
+ for ( ; ; str1++, str2++, len--) {
+ if (len == 0)
+ return 0;
+ ch1 = *str1;
+ ch2 = *str2;
+ if (ch1 == '\0' || ch2 == '\0')
+ break;
+ set_toupper(ch1);
+ set_toupper(ch2);
+ if (ch1 != ch2)
+ break;
}
- if (len == 0)
- return 0;
-
- return *str1 - *str2;
+ return ch1 - ch2;
}
diff --git a/xc/lib/X11/lcWrap.c b/xc/lib/X11/lcWrap.c
index 1cc87a060..efce702d7 100644
--- a/xc/lib/X11/lcWrap.c
+++ b/xc/lib/X11/lcWrap.c
@@ -49,8 +49,9 @@ from The Open Group.
*
* Katsuhisa Yano TOSHIBA Corp.
*/
-/* $XFree86: xc/lib/X11/lcWrap.c,v 3.8 2000/09/26 15:56:52 tsi Exp $ */
+/* $XFree86: xc/lib/X11/lcWrap.c,v 3.9 2000/11/28 18:49:51 dawes Exp $ */
+#include <stdlib.h>
#include "Xlibint.h"
#include "Xlcint.h"
#include <X11/Xlocale.h>
@@ -60,30 +61,13 @@ from The Open Group.
#endif
#include <X11/Xutil.h>
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
-
#ifdef XTHREADS
LockInfoPtr _Xi18n_lock;
#endif
-#if NeedFunctionPrototypes
char *
XSetLocaleModifiers(
- _Xconst char *modifiers
-)
-#else
-char *
-XSetLocaleModifiers(modifiers)
- char *modifiers;
-#endif
+ const char *modifiers)
{
XLCd lcd = _XlcCurrentLC();
char *user_mods;
@@ -109,12 +93,12 @@ XSupportsLocale()
return _XlcCurrentLC() != (XLCd)NULL;
}
-Bool _XlcValidModSyntax(mods, valid_mods)
- char *mods;
- char **valid_mods;
+Bool _XlcValidModSyntax(
+ const char * mods,
+ const char * const *valid_mods)
{
int i;
- char **ptr;
+ const char * const *ptr;
while (mods && (*mods == '@')) {
mods++;
@@ -135,21 +119,21 @@ Bool _XlcValidModSyntax(mods, valid_mods)
return !mods || !*mods;
}
-static Const char *im_valid[] = {"im", (char *)NULL};
+static const char *im_valid[] = {"im", (const char *)NULL};
/*ARGSUSED*/
char *
-_XlcDefaultMapModifiers (lcd, user_mods, prog_mods)
- XLCd lcd;
- char *user_mods;
- char *prog_mods;
+_XlcDefaultMapModifiers(
+ XLCd lcd,
+ const char *user_mods,
+ const char *prog_mods)
{
int i;
char *mods;
- if (!_XlcValidModSyntax(prog_mods, (char **)im_valid))
+ if (!_XlcValidModSyntax(prog_mods, im_valid))
return (char *)NULL;
- if (!_XlcValidModSyntax(user_mods, (char **)im_valid))
+ if (!_XlcValidModSyntax(user_mods, im_valid))
return (char *)NULL;
i = strlen(prog_mods) + 1;
if (user_mods)
@@ -192,8 +176,8 @@ typedef struct _XlcLoaderListRec {
static XlcLoaderList loader_list = NULL;
void
-_XlcRemoveLoader(proc)
- XLCdLoadProc proc;
+_XlcRemoveLoader(
+ XLCdLoadProc proc)
{
XlcLoaderList loader, prev;
@@ -220,9 +204,9 @@ _XlcRemoveLoader(proc)
}
Bool
-_XlcAddLoader(proc, position)
- XLCdLoadProc proc;
- XlcPosition position;
+_XlcAddLoader(
+ XLCdLoadProc proc,
+ XlcPosition position)
{
XlcLoaderList loader, last;
@@ -253,8 +237,8 @@ _XlcAddLoader(proc, position)
}
XLCd
-_XOpenLC(name)
- _Xconst char *name;
+_XOpenLC(
+ const char *name)
{
XLCd lcd;
XlcLoaderList loader;
@@ -314,10 +298,12 @@ _XOpenLC(name)
(*lcd->methods->close)(lcd);
lcd = (XLCd) NULL;
}
- break;
+ goto found;
}
}
+ lcd = NULL;
+
found:
_XUnlockMutex(_Xi18n_lock);
@@ -329,8 +315,8 @@ found:
}
void
-_XCloseLC(lcd)
- XLCd lcd;
+_XCloseLC(
+ XLCd lcd)
{
XLCdList cur, *prev;
@@ -367,8 +353,8 @@ _XlcCurrentLC()
}
XrmMethods
-_XrmInitParseInfo(state)
- XPointer *state;
+_XrmInitParseInfo(
+ XPointer *state)
{
XLCd lcd = _XOpenLC((char *) NULL);
@@ -379,11 +365,11 @@ _XrmInitParseInfo(state)
}
int
-XmbTextPropertyToTextList(dpy, text_prop, list_ret, count_ret)
- Display *dpy;
- XTextProperty *text_prop;
- char ***list_ret;
- int *count_ret;
+XmbTextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
{
XLCd lcd = _XlcCurrentLC();
@@ -395,11 +381,11 @@ XmbTextPropertyToTextList(dpy, text_prop, list_ret, count_ret)
}
int
-XwcTextPropertyToTextList(dpy, text_prop, list_ret, count_ret)
- Display *dpy;
- XTextProperty *text_prop;
- wchar_t ***list_ret;
- int *count_ret;
+XwcTextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ wchar_t ***list_ret,
+ int *count_ret)
{
XLCd lcd = _XlcCurrentLC();
@@ -411,12 +397,28 @@ XwcTextPropertyToTextList(dpy, text_prop, list_ret, count_ret)
}
int
-XmbTextListToTextProperty(dpy, list, count, style, text_prop)
- Display *dpy;
- char **list;
- int count;
- XICCEncodingStyle style;
- XTextProperty *text_prop;
+Xutf8TextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->utf8_text_prop_to_list)(lcd, dpy, text_prop,
+ list_ret, count_ret);
+}
+
+int
+XmbTextListToTextProperty(
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
{
XLCd lcd = _XlcCurrentLC();
@@ -428,12 +430,12 @@ XmbTextListToTextProperty(dpy, list, count, style, text_prop)
}
int
-XwcTextListToTextProperty(dpy, list, count, style, text_prop)
- Display *dpy;
- wchar_t **list;
- int count;
- XICCEncodingStyle style;
- XTextProperty *text_prop;
+XwcTextListToTextProperty(
+ Display *dpy,
+ wchar_t **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
{
XLCd lcd = _XlcCurrentLC();
@@ -444,9 +446,26 @@ XwcTextListToTextProperty(dpy, list, count, style, text_prop)
text_prop);
}
+int
+Xutf8TextListToTextProperty(
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->utf8_text_list_to_prop)(lcd, dpy, list, count,
+ style, text_prop);
+}
+
void
-XwcFreeStringList(list)
- wchar_t **list;
+XwcFreeStringList(
+ wchar_t **list)
{
XLCd lcd = _XlcCurrentLC();
@@ -456,7 +475,7 @@ XwcFreeStringList(list)
(*lcd->methods->wc_free_string_list)(lcd, list);
}
-char *
+const char *
XDefaultString()
{
XLCd lcd = _XlcCurrentLC();
@@ -468,10 +487,10 @@ XDefaultString()
}
void
-_XlcCopyFromArg(src, dst, size)
- char *src;
- register char *dst;
- register int size;
+_XlcCopyFromArg(
+ char *src,
+ char *dst,
+ int size)
{
if (size == sizeof(long))
*((long *) dst) = (long) src;
@@ -492,13 +511,19 @@ _XlcCopyFromArg(src, dst, size)
}
void
-_XlcCopyToArg(src, dst, size)
- register char *src;
- register char **dst;
- register int size;
+_XlcCopyToArg(
+ char *src,
+ char **dst,
+ int size)
{
+ /* FIXME:
+ On Big Endian machines, this behaves differently than _XCopyToArg. */
if (size == sizeof(long))
*((long *) *dst) = *((long *) src);
+#ifdef LONG64
+ else if (size == sizeof(int))
+ *((int *) *dst) = *((int *) src);
+#endif
else if (size == sizeof(short))
*((short *) *dst) = *((short *) src);
else if (size == sizeof(char))
@@ -510,11 +535,11 @@ _XlcCopyToArg(src, dst, size)
}
void
-_XlcCountVaList(var, count_ret)
- va_list var;
- int *count_ret;
+_XlcCountVaList(
+ va_list var,
+ int *count_ret)
{
- register int count;
+ int count;
for (count = 0; va_arg(var, char *); count++)
va_arg(var, XPointer);
@@ -523,12 +548,12 @@ _XlcCountVaList(var, count_ret)
}
void
-_XlcVaToArgList(var, count, args_ret)
- va_list var;
- register int count;
- XlcArgList *args_ret;
+_XlcVaToArgList(
+ va_list var,
+ int count,
+ XlcArgList *args_ret)
{
- register XlcArgList args;
+ XlcArgList args;
*args_ret = args = (XlcArgList) Xmalloc(sizeof(XlcArg) * count);
if (args == (XlcArgList) NULL)
@@ -541,22 +566,22 @@ _XlcVaToArgList(var, count, args_ret)
}
void
-_XlcCompileResourceList(resources, num_resources)
- register XlcResourceList resources;
- register int num_resources;
+_XlcCompileResourceList(
+ XlcResourceList resources,
+ int num_resources)
{
for ( ; num_resources-- > 0; resources++)
resources->xrm_name = XrmPermStringToQuark(resources->name);
}
char *
-_XlcGetValues(base, resources, num_resources, args, num_args, mask)
- XPointer base;
- XlcResourceList resources;
- int num_resources;
- XlcArgList args;
- int num_args;
- unsigned long mask;
+_XlcGetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask)
{
XlcResourceList res;
XrmQuark xrm_name;
@@ -582,13 +607,13 @@ _XlcGetValues(base, resources, num_resources, args, num_args, mask)
}
char *
-_XlcSetValues(base, resources, num_resources, args, num_args, mask)
- XPointer base;
- XlcResourceList resources;
- int num_resources;
- XlcArgList args;
- int num_args;
- unsigned long mask;
+_XlcSetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask)
{
XlcResourceList res;
XrmQuark xrm_name;
diff --git a/xc/lib/X11/mbWMProps.c b/xc/lib/X11/mbWMProps.c
index 220ef2fe9..01cabefb9 100644
--- a/xc/lib/X11/mbWMProps.c
+++ b/xc/lib/X11/mbWMProps.c
@@ -22,6 +22,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/mbWMProps.c,v 1.3 2000/11/29 17:40:24 dawes Exp $ */
#include <X11/Xlibint.h>
#include <X11/Xutil.h>
@@ -44,8 +45,8 @@ void XmbSetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
wmHints, classHints)
Display *dpy;
Window w; /* window to decorate */
- char *windowName; /* name of application */
- char *iconName; /* name string for icon */
+ _Xconst char *windowName; /* name of application */
+ _Xconst char *iconName; /* name string for icon */
char **argv; /* command line */
int argc; /* size of command line */
XSizeHints *sizeHints; /* size hints for window in its normal state */
@@ -56,15 +57,14 @@ void XmbSetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
XTextProperty wname, iname;
XTextProperty *wprop = NULL;
XTextProperty *iprop = NULL;
- char *locale;
if (windowName &&
XmbTextListToTextProperty(dpy, (char**)&windowName, 1,
- XStdICCTextStyle, &wname) >= Success)
+ XStdICCTextStyle, &wname) >= Success)
wprop = &wname;
if (iconName &&
XmbTextListToTextProperty(dpy, (char**)&iconName, 1,
- XStdICCTextStyle, &iname) >= Success)
+ XStdICCTextStyle, &iname) >= Success)
iprop = &iname;
XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
sizeHints, wmHints, classHints);
@@ -72,9 +72,6 @@ void XmbSetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
Xfree((char *)wname.value);
if (iprop)
Xfree((char *)iname.value);
- locale = setlocale(LC_CTYPE, (char *)NULL);
- if (locale)
- XChangeProperty (dpy, w, XInternAtom(dpy, "WM_LOCALE_NAME", False),
- XA_STRING, 8, PropModeReplace,
- (unsigned char *)locale, strlen(locale));
+
+ /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
}
diff --git a/xc/lib/X11/mbWrap.c b/xc/lib/X11/mbWrap.c
index 852093dca..bc994a443 100644
--- a/xc/lib/X11/mbWrap.c
+++ b/xc/lib/X11/mbWrap.c
@@ -46,10 +46,22 @@ from The Open Group.
*
* M. Collins OSF
*/
+/* $XFree86: xc/lib/X11/mbWrap.c,v 1.3 2000/11/29 17:40:25 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
+#if NeedFunctionPrototypes
+void
+XmbDrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XmbTextItem *text_items,
+ int nitems)
+#else
void
XmbDrawText(dpy, d, gc, x, y, text_items, nitems)
Display *dpy;
@@ -58,6 +70,7 @@ XmbDrawText(dpy, d, gc, x, y, text_items, nitems)
int x, y;
XmbTextItem *text_items;
int nitems;
+#endif
{
register XFontSet fs;
register XmbTextItem *p = text_items;
@@ -101,7 +114,7 @@ XmbDrawString(dpy, d, font_set, gc, x, y, text, text_len)
XFontSet font_set;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int text_len;
#endif
{
@@ -129,7 +142,7 @@ XmbDrawImageString(dpy, d, font_set, gc, x, y, text, text_len)
XFontSet font_set;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int text_len;
#endif
{
@@ -147,7 +160,7 @@ XmbTextEscapement(
int
XmbTextEscapement(font_set, text, text_len)
XFontSet font_set;
- char *text;
+ _Xconst char *text;
int text_len;
#endif
{
@@ -168,7 +181,7 @@ int
XmbTextExtents(font_set, text, text_len,
overall_ink_extents, overall_logical_extents)
XFontSet font_set;
- char *text;
+ _Xconst char *text;
int text_len;
XRectangle *overall_ink_extents;
XRectangle *overall_logical_extents;
@@ -199,7 +212,7 @@ XmbTextPerCharExtents(font_set, text, text_len,
buffer_size, num_chars,
max_ink_extents, max_logical_extents)
XFontSet font_set;
- char *text;
+ _Xconst char *text;
int text_len;
XRectangle *ink_extents_buffer;
XRectangle *logical_extents_buffer;
diff --git a/xc/lib/X11/omDefault.c b/xc/lib/X11/omDefault.c
index 5d7658d00..2d09bfe54 100644
--- a/xc/lib/X11/omDefault.c
+++ b/xc/lib/X11/omDefault.c
@@ -28,6 +28,7 @@
* This is source code modified by FUJITSU LIMITED under the Joint
* Development Agreement for the CDE/Motif PST.
*/
+/* $XFree86: xc/lib/X11/omDefault.c,v 1.4 2000/11/29 17:40:25 dawes Exp $ */
#include "Xlibint.h"
#include "XomGeneric.h"
@@ -43,27 +44,45 @@ static Bool
wcs_to_mbs(oc, to, from, length)
XOC oc;
char *to;
- wchar_t *from;
+ _Xconst wchar_t *from;
int length;
{
- XlcConv conv = XOC_GENERIC(oc)->wcs_to_cs;
- XLCd lcd;
- int ret, to_left = length;
-
- if (conv == NULL) {
- lcd = oc->core.om->core.lcd;
- conv = _XlcOpenConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte);
- if (conv == NULL)
- return False;
- XOC_GENERIC(oc)->wcs_to_cs = conv;
- } else
- _XlcResetConverter(conv);
+ XlcConv conv;
+ int to_left, ret;
+ conv = _XomInitConverter(oc, XOMWideChar);
+ if (conv == NULL)
+ return False;
+
+ to_left = length;
ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
&to_left, NULL, 0);
if (ret != 0 || length > 0)
return False;
-
+
+ return True;
+}
+
+static Bool
+utf8_to_mbs(oc, to, from, length)
+ XOC oc;
+ char *to;
+ _Xconst char *from;
+ int length;
+{
+ XlcConv conv;
+ int to_left, ret;
+
+ conv = _XomInitConverter(oc, XOMUtf8String);
+ if (conv == NULL)
+ return False;
+
+ to_left = length;
+ ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
+ &to_left, NULL, 0);
+ if (ret != 0 || length > 0)
+ return False;
+
return True;
}
@@ -73,7 +92,7 @@ _XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length)
#else
_XmbDefaultTextEscapement(oc, text, length)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -86,7 +105,7 @@ _XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
#else
_XwcDefaultTextEscapement(oc, text, length)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
@@ -97,8 +116,40 @@ _XwcDefaultTextEscapement(oc, text, length)
if (buf == NULL)
return 0;
- if (wcs_to_mbs(oc, buf, text, length) == False)
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
goto err;
+ }
+
+ ret = _XmbDefaultTextEscapement(oc, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length)
+#else
+_Xutf8DefaultTextEscapement(oc, text, length)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
ret = _XmbDefaultTextEscapement(oc, buf, length);
@@ -115,7 +166,7 @@ _XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
#else
_XmbDefaultTextExtents(oc, text, length, overall_ink, overall_logical)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
XRectangle *overall_ink;
XRectangle *overall_logical;
@@ -151,7 +202,7 @@ _XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
#else
_XwcDefaultTextExtents(oc, text, length, overall_ink, overall_logical)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
XRectangle *overall_ink;
XRectangle *overall_logical;
@@ -164,8 +215,43 @@ _XwcDefaultTextExtents(oc, text, length, overall_ink, overall_logical)
if (buf == NULL)
return 0;
- if (wcs_to_mbs(oc, buf, text, length) == False)
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
goto err;
+ }
+
+ ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+#else
+_Xutf8DefaultTextExtents(oc, text, length, overall_ink, overall_logical)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+ XRectangle *overall_ink;
+ XRectangle *overall_logical;
+#endif
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
@@ -186,7 +272,7 @@ _XmbDefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
_XmbDefaultTextPerCharExtents(oc, text, length, ink_buf, logical_buf, buf_size,
num_chars, overall_ink, overall_logical)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
XRectangle *ink_buf;
XRectangle *logical_buf;
@@ -270,7 +356,7 @@ _XwcDefaultTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
_XwcDefaultTextPerCharExtents(oc, text, length, ink_buf, logical_buf, buf_size,
num_chars, overall_ink, overall_logical)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
XRectangle *ink_buf;
XRectangle *logical_buf;
@@ -287,8 +373,54 @@ _XwcDefaultTextPerCharExtents(oc, text, length, ink_buf, logical_buf, buf_size,
if (buf == NULL)
return 0;
- if (wcs_to_mbs(oc, buf, text, length) == False)
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
+ buf_size, num_chars, overall_ink,
+ overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+Status
+#if NeedFunctionPrototypes
+_Xutf8DefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+#else
+_Xutf8DefaultTextPerCharExtents(oc, text, length, ink_buf, logical_buf,
+ buf_size, num_chars, overall_ink,
+ overall_logical)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+ XRectangle *ink_buf;
+ XRectangle *logical_buf;
+ int buf_size;
+ int *num_chars;
+ XRectangle *overall_ink;
+ XRectangle *overall_logical;
+#endif
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ Status ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
goto err;
+ }
ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
buf_size, num_chars, overall_ink,
@@ -311,7 +443,7 @@ _XmbDefaultDrawString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -334,7 +466,7 @@ _XwcDefaultDrawString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
@@ -345,8 +477,45 @@ _XwcDefaultDrawString(dpy, d, oc, gc, x, y, text, length)
if (buf == NULL)
return 0;
- if (wcs_to_mbs(oc, buf, text, length) == False)
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
goto err;
+ }
+
+ ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+#else
+_Xutf8DefaultDrawString(dpy, d, oc, gc, x, y, text, length)
+ Display *dpy;
+ Drawable d;
+ XOC oc;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
@@ -367,7 +536,7 @@ _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -386,7 +555,7 @@ _XwcDefaultDrawImageString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
@@ -404,3 +573,33 @@ _XwcDefaultDrawImageString(dpy, d, oc, gc, x, y, text, length)
err:
FreeLocalBuf(buf);
}
+
+void
+#if NeedFunctionPrototypes
+_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+#else
+_Xutf8DefaultDrawImageString(dpy, d, oc, gc, x, y, text, length)
+ Display *dpy;
+ Drawable d;
+ XOC oc;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+
+ if (buf == NULL)
+ return;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False)
+ goto err;
+
+ _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+}
diff --git a/xc/lib/X11/omGeneric.c b/xc/lib/X11/omGeneric.c
index 7351b8f99..0c1d78131 100644
--- a/xc/lib/X11/omGeneric.c
+++ b/xc/lib/X11/omGeneric.c
@@ -31,7 +31,7 @@
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
-/* $XFree86: xc/lib/X11/omGeneric.c,v 3.16 2000/10/06 12:31:02 eich Exp $ */
+/* $XFree86: xc/lib/X11/omGeneric.c,v 3.17 2000/11/28 18:49:52 dawes Exp $ */
/*
* Fixed the algorithms in parse_fontname() and parse_fontdata()
@@ -57,19 +57,29 @@
#define POINT_SIZE_FIELD 8
#define CHARSET_ENCODING_FIELD 14
-extern int _XmbDefaultTextEscapement(), _XwcDefaultTextEscapement();
-extern int _XmbDefaultTextExtents(), _XwcDefaultTextExtents();
-extern Status _XmbDefaultTextPerCharExtents(), _XwcDefaultTextPerCharExtents();
-extern int _XmbDefaultDrawString(), _XwcDefaultDrawString();
-extern void _XmbDefaultDrawImageString(), _XwcDefaultDrawImageString();
-
-extern int _XmbGenericTextEscapement(), _XwcGenericTextEscapement();
-extern int _XmbGenericTextExtents(), _XwcGenericTextExtents();
-extern Status _XmbGenericTextPerCharExtents(), _XwcGenericTextPerCharExtents();
-extern int _XmbGenericDrawString(), _XwcGenericDrawString();
-extern void _XmbGenericDrawImageString(), _XwcGenericDrawImageString();
-
-extern void _XlcDbg_printValue();
+extern int _XmbDefaultTextEscapement(), _XwcDefaultTextEscapement(),
+ _Xutf8DefaultTextEscapement();
+extern int _XmbDefaultTextExtents(), _XwcDefaultTextExtents(),
+ _Xutf8DefaultTextExtents();
+extern Status _XmbDefaultTextPerCharExtents(), _XwcDefaultTextPerCharExtents(),
+ _Xutf8DefaultTextPerCharExtents();
+extern int _XmbDefaultDrawString(), _XwcDefaultDrawString(),
+ _Xutf8DefaultDrawString();
+extern void _XmbDefaultDrawImageString(), _XwcDefaultDrawImageString(),
+ _Xutf8DefaultDrawImageString();
+
+extern int _XmbGenericTextEscapement(), _XwcGenericTextEscapement(),
+ _Xutf8GenericTextEscapement();
+extern int _XmbGenericTextExtents(), _XwcGenericTextExtents(),
+ _Xutf8GenericTextExtents();
+extern Status _XmbGenericTextPerCharExtents(), _XwcGenericTextPerCharExtents(),
+ _Xutf8GenericTextPerCharExtents();
+extern int _XmbGenericDrawString(), _XwcGenericDrawString(),
+ _Xutf8GenericDrawString();
+extern void _XmbGenericDrawImageString(), _XwcGenericDrawImageString(),
+ _Xutf8GenericDrawImageString();
+
+extern void _XlcDbg_printValue (const char *str, char **value, int num);
/* For VW/UDC start */
@@ -543,8 +553,8 @@ get_font_name(oc, pattern)
/* For VW/UDC start*/
-static char
-*get_rotate_fontname(font_name)
+static char *
+get_rotate_fontname(font_name)
char *font_name;
{
char *pattern = NULL, *ptr = NULL;
@@ -1506,6 +1516,9 @@ destroy_oc(oc)
if (gen->wcs_to_cs)
_XlcCloseConverter(gen->wcs_to_cs);
+ if (gen->utf8_to_cs)
+ _XlcCloseConverter(gen->utf8_to_cs);
+
/* For VW/UDC start */ /* Change 1996.01.8 */
destroy_fontdata(gen,dpy);
/*
@@ -1597,7 +1610,12 @@ static XOCMethodsRec oc_default_methods = {
_XwcDefaultTextExtents,
_XwcDefaultTextPerCharExtents,
_XwcDefaultDrawString,
- _XwcDefaultDrawImageString
+ _XwcDefaultDrawImageString,
+ _Xutf8DefaultTextEscapement,
+ _Xutf8DefaultTextExtents,
+ _Xutf8DefaultTextPerCharExtents,
+ _Xutf8DefaultDrawString,
+ _Xutf8DefaultDrawImageString
};
static XOCMethodsRec oc_generic_methods = {
@@ -1613,7 +1631,12 @@ static XOCMethodsRec oc_generic_methods = {
_XwcGenericTextExtents,
_XwcGenericTextPerCharExtents,
_XwcGenericDrawString,
- _XwcGenericDrawImageString
+ _XwcGenericDrawImageString,
+ _Xutf8GenericTextEscapement,
+ _Xutf8GenericTextExtents,
+ _Xutf8GenericTextPerCharExtents,
+ _Xutf8GenericDrawString,
+ _Xutf8GenericDrawImageString
};
typedef struct _XOCMethodsListRec {
@@ -1910,9 +1933,9 @@ add_data(om)
extern FontScope _XlcParse_scopemaps();
FontData
-read_EncodingInfo(count,value)
-int count;
-char **value;
+read_EncodingInfo(count, value)
+ int count;
+ char **value;
{
FontData font_data,ret;
char *buf, *bufptr,*scp;
@@ -1952,11 +1975,11 @@ char **value;
return(ret);
}
-static CodeRange read_vrotate(count,value,type,vrotate_num)
-int count;
-char **value;
-int *type;
-int *vrotate_num;
+static CodeRange read_vrotate(count, value, type, vrotate_num)
+ int count;
+ char **value;
+ int *type;
+ int *vrotate_num;
{
CodeRange range;
if(!strcmp(value[0],"all")){
@@ -1974,10 +1997,10 @@ int *vrotate_num;
}
}
-static void read_vw(lcd,font_set,num)
-XLCd lcd;
-OMData font_set;
-int num;
+static void read_vw(lcd, font_set,num)
+ XLCd lcd;
+ OMData font_set;
+ int num;
{
char **value, buf[BUFSIZ];
int count;
diff --git a/xc/lib/X11/omImText.c b/xc/lib/X11/omImText.c
index f8a5291fb..5b6f6bb1a 100644
--- a/xc/lib/X11/omImText.c
+++ b/xc/lib/X11/omImText.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/omImText.c,v 1.3 2000/11/29 17:40:26 dawes Exp $ */
#include "Xlibint.h"
#include "XomGeneric.h"
@@ -72,7 +73,7 @@ _XmbGenericDrawImageString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -91,10 +92,29 @@ _XwcGenericDrawImageString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
_XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMWideChar,
(XPointer) text, length);
}
+
+void
+#if NeedFunctionPrototypes
+_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+#else
+_Xutf8GenericDrawImageString(dpy, d, oc, gc, x, y, text, length)
+ Display *dpy;
+ Drawable d;
+ XOC oc;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMUtf8String,
+ (XPointer) text, length);
+}
diff --git a/xc/lib/X11/omText.c b/xc/lib/X11/omText.c
index cf75fa768..9bf92d0d4 100644
--- a/xc/lib/X11/omText.c
+++ b/xc/lib/X11/omText.c
@@ -23,7 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
-/* $XFree86: xc/lib/X11/omText.c,v 1.2 1999/05/09 10:50:42 dawes Exp $ */
+/* $XFree86: xc/lib/X11/omText.c,v 1.3 2000/11/28 18:49:53 dawes Exp $ */
/*
* Copyright 1995 by FUJITSU LIMITED
* This is source code modified by FUJITSU LIMITED under the Joint
@@ -357,7 +357,7 @@ _XmbGenericDrawString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -376,10 +376,29 @@ _XwcGenericDrawString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMWideChar,
(XPointer) text, length);
}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+#else
+_Xutf8GenericDrawString(dpy, d, oc, gc, x, y, text, length)
+ Display *dpy;
+ Drawable d;
+ XOC oc;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMUtf8String,
+ (XPointer) text, length);
+}
diff --git a/xc/lib/X11/omTextEsc.c b/xc/lib/X11/omTextEsc.c
index add10628b..d62c2df19 100644
--- a/xc/lib/X11/omTextEsc.c
+++ b/xc/lib/X11/omTextEsc.c
@@ -23,7 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
-/* $XFree86: xc/lib/X11/omTextEsc.c,v 1.3 2000/08/25 21:51:00 dawes Exp $ */
+/* $XFree86: xc/lib/X11/omTextEsc.c,v 1.4 2000/11/28 18:49:54 dawes Exp $ */
/*
* Copyright 1995 by FUJITSU LIMITED
* This is source code modified by FUJITSU LIMITED under the Joint
@@ -287,7 +287,7 @@ _XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length)
#else
_XmbGenericTextEscapement(oc, text, length)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -300,9 +300,23 @@ _XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
#else
_XwcGenericTextEscapement(oc, text, length)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
return _XomGenericTextEscapement(oc, XOMWideChar, (XPointer) text, length);
}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length)
+#else
+_Xutf8GenericTextEscapement(oc, text, length)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ return _XomGenericTextEscapement(oc, XOMUtf8String, (XPointer) text,
+ length);
+}
diff --git a/xc/lib/X11/omTextExt.c b/xc/lib/X11/omTextExt.c
index 9a93a77bd..7239c4ff7 100644
--- a/xc/lib/X11/omTextExt.c
+++ b/xc/lib/X11/omTextExt.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/omTextExt.c,v 1.3 2000/11/29 17:40:26 dawes Exp $ */
#include "Xlibint.h"
#include "XomGeneric.h"
@@ -116,7 +117,7 @@ _XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
#else
_XmbGenericTextExtents(oc, text, length, overall_ink, overall_logical)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
XRectangle *overall_ink;
XRectangle *overall_logical;
@@ -133,7 +134,7 @@ _XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
#else
_XwcGenericTextExtents(oc, text, length, overall_ink, overall_logical)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
XRectangle *overall_ink;
XRectangle *overall_logical;
@@ -142,3 +143,20 @@ _XwcGenericTextExtents(oc, text, length, overall_ink, overall_logical)
return _XomGenericTextExtents(oc, XOMWideChar, (XPointer) text, length,
overall_ink, overall_logical);
}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+#else
+_Xutf8GenericTextExtents(oc, text, length, overall_ink, overall_logical)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+ XRectangle *overall_ink;
+ XRectangle *overall_logical;
+#endif
+{
+ return _XomGenericTextExtents(oc, XOMUtf8String, (XPointer) text, length,
+ overall_ink, overall_logical);
+}
diff --git a/xc/lib/X11/omTextPer.c b/xc/lib/X11/omTextPer.c
index 8cdea532c..14a295595 100644
--- a/xc/lib/X11/omTextPer.c
+++ b/xc/lib/X11/omTextPer.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/omTextPer.c,v 1.3 2000/11/29 17:40:26 dawes Exp $ */
#include "Xlibint.h"
#include "XomGeneric.h"
@@ -172,7 +173,7 @@ _XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
_XmbGenericTextPerCharExtents(oc, text, length, ink_buf, logical_buf,
buf_size, num_chars, overall_ink, overall_logical)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
XRectangle *ink_buf;
XRectangle *logical_buf;
@@ -199,7 +200,7 @@ _XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
_XwcGenericTextPerCharExtents(oc, text, length, ink_buf, logical_buf,
buf_size, num_chars, overall_ink, overall_logical)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
XRectangle *ink_buf;
XRectangle *logical_buf;
@@ -214,3 +215,31 @@ _XwcGenericTextPerCharExtents(oc, text, length, ink_buf, logical_buf,
num_chars, overall_ink,
overall_logical);
}
+
+Status
+#if NeedFunctionPrototypes
+_Xutf8GenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+#else
+_Xutf8GenericTextPerCharExtents(oc, text, length, ink_buf, logical_buf,
+ buf_size, num_chars, overall_ink,
+ overall_logical)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+ XRectangle *ink_buf;
+ XRectangle *logical_buf;
+ int buf_size;
+ int *num_chars;
+ XRectangle *overall_ink;
+ XRectangle *overall_logical;
+#endif
+{
+ return _XomGenericTextPerCharExtents(oc, XOMUtf8String, (XPointer) text,
+ length, ink_buf, logical_buf, buf_size,
+ num_chars, overall_ink,
+ overall_logical);
+}
diff --git a/xc/lib/X11/omXChar.c b/xc/lib/X11/omXChar.c
index 89c7f631f..07fbae07f 100644
--- a/xc/lib/X11/omXChar.c
+++ b/xc/lib/X11/omXChar.c
@@ -34,6 +34,7 @@
/*
* Modifiers: Jeff Walls, Paul Anderson (HEWLETT-PACKARD)
*/
+/* $XFree86: xc/lib/X11/omXChar.c,v 1.4 2000/11/29 17:40:26 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPublic.h"
@@ -113,13 +114,13 @@ check_vertical_fonttype(name)
#define FONTSCOPE 2
FontData
-_XomGetFontDataFromFontSet(fs,str,len,len_ret,is2b,type)
-FontSet fs;
-unsigned char *str;
-int len;
-int *len_ret;
-int is2b;
-int type; /* VMAP , VROTATE , else */
+_XomGetFontDataFromFontSet(fs, str,len, len_ret, is2b, type)
+ FontSet fs;
+ unsigned char *str;
+ int len;
+ int *len_ret;
+ int is2b;
+ int type; /* VMAP , VROTATE , else */
{
unsigned long value;
int num,i,hit,csize;
@@ -435,18 +436,29 @@ _XomInitConverter(oc, type)
XOMTextType type;
{
XOCGenericPart *gen = XOC_GENERIC(oc);
- XlcConv conv;
+ XlcConv *convp;
char *conv_type;
+ XlcConv conv;
XLCd lcd;
- if (type == XOMWideChar) {
- conv = gen->wcs_to_cs;
+ switch (type) {
+ case XOMWideChar:
+ convp = &gen->wcs_to_cs;
conv_type = XlcNWideChar;
- } else {
- conv = gen->mbs_to_cs;
+ break;
+ case XOMMultiByte:
+ convp = &gen->mbs_to_cs;
conv_type = XlcNMultiByte;
+ break;
+ case XOMUtf8String:
+ convp = &gen->utf8_to_cs;
+ conv_type = XlcNUtf8String;
+ break;
+ default:
+ return (XlcConv) NULL;
}
+ conv = *convp;
if (conv) {
_XlcResetConverter(conv);
return conv;
@@ -454,14 +466,13 @@ _XomInitConverter(oc, type)
lcd = oc->core.om->core.lcd;
- conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNCharSet);
- if (conv == (XlcConv) NULL)
- return (XlcConv) NULL;
-
- if (type == XOMWideChar)
- gen->wcs_to_cs = conv;
- else
- gen->mbs_to_cs = conv;
+ conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNFontCharSet);
+ if (conv == (XlcConv) NULL) {
+ conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNCharSet);
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+ }
+ *convp = conv;
return conv;
}
diff --git a/xc/lib/X11/utf8WMProps.c b/xc/lib/X11/utf8WMProps.c
new file mode 100644
index 000000000..0bccbdefd
--- /dev/null
+++ b/xc/lib/X11/utf8WMProps.c
@@ -0,0 +1,99 @@
+/* $TOG: mbWMProps.c /main/6 1998/02/06 17:44:24 kaleb $ */
+/*
+
+Copyright 1991, 1998 The Open Group
+
+All Rights Reserved.
+
+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 OPEN GROUP 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 Open Group 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 Open Group.
+
+*/
+/*
+ * Copyright 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 name of Bruno Haible not
+ * be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Bruno Haible
+ * makes no representations about the suitability of this software for
+ * any purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL 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.
+ */
+/* $XFree86: xc/lib/X11/utf8WMProps.c,v 1.1 2000/11/28 18:49:58 dawes Exp $ */
+
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/Xlocale.h>
+
+#if NeedFunctionPrototypes
+void Xutf8SetWMProperties (
+ Display *dpy,
+ Window w,
+ _Xconst char *windowName,
+ _Xconst char *iconName,
+ char **argv,
+ int argc,
+ XSizeHints *sizeHints,
+ XWMHints *wmHints,
+ XClassHint *classHints)
+#else
+void Xutf8SetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
+ wmHints, classHints)
+ Display *dpy;
+ Window w; /* window to decorate */
+ _Xconst char *windowName; /* name of application */
+ _Xconst char *iconName; /* name string for icon */
+ char **argv; /* command line */
+ int argc; /* size of command line */
+ XSizeHints *sizeHints; /* size hints for window in its normal state */
+ XWMHints *wmHints; /* miscelaneous window manager hints */
+ XClassHint *classHints; /* resource name and class */
+#endif
+{
+ XTextProperty wname, iname;
+ XTextProperty *wprop = NULL;
+ XTextProperty *iprop = NULL;
+
+ if (windowName &&
+ Xutf8TextListToTextProperty(dpy, (char**)&windowName, 1,
+ XStdICCTextStyle, &wname) >= Success)
+ wprop = &wname;
+ if (iconName &&
+ Xutf8TextListToTextProperty(dpy, (char**)&iconName, 1,
+ XStdICCTextStyle, &iname) >= Success)
+ iprop = &iname;
+ XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
+ sizeHints, wmHints, classHints);
+ if (wprop)
+ Xfree((char *)wname.value);
+ if (iprop)
+ Xfree((char *)iname.value);
+
+ /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
+}
diff --git a/xc/lib/X11/utf8Wrap.c b/xc/lib/X11/utf8Wrap.c
new file mode 100644
index 000000000..a36829ff2
--- /dev/null
+++ b/xc/lib/X11/utf8Wrap.c
@@ -0,0 +1,251 @@
+/* $TOG: mbWrap.c /main/7 1998/02/06 17:44:30 kaleb $ */
+/*
+
+Copyright 1991, 1998 The Open Group
+
+All Rights Reserved.
+
+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 OPEN GROUP 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 Open Group 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 Open Group.
+
+*/
+/*
+ * Copyright 1991 by the Open Software Foundation
+ *
+ * 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 name of Open Software Foundation
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Open Software
+ * Foundation makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN 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.
+ *
+ * M. Collins OSF
+ */
+/*
+ * Copyright 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 name of Bruno Haible not
+ * be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Bruno Haible
+ * makes no representations about the suitability of this software for
+ * any purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL 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.
+ */
+/* $XFree86: xc/lib/X11/utf8Wrap.c,v 1.1 2000/11/28 18:49:58 dawes Exp $ */
+
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+#if NeedFunctionPrototypes
+void
+Xutf8DrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XmbTextItem *text_items,
+ int nitems)
+#else
+void
+Xutf8DrawText(dpy, d, gc, x, y, text_items, nitems)
+ Display *dpy;
+ Drawable d;
+ GC gc;
+ int x, y;
+ XmbTextItem *text_items;
+ int nitems;
+#endif
+{
+ register XFontSet fs;
+ register XmbTextItem *p = text_items;
+ register int i = nitems;
+ register int esc;
+
+ /* ignore leading items with no fontset */
+ while (i && !p->font_set) {
+ i--;
+ p++;
+ }
+
+ for (; --i >= 0; p++) {
+ if (p->font_set)
+ fs = p->font_set;
+ x += p->delta;
+ esc = (*fs->methods->utf8_draw_string) (dpy, d, fs, gc, x, y,
+ p->chars, p->nchars);
+ if (!esc)
+ esc = fs->methods->utf8_escapement (fs, p->chars, p->nchars);
+ x += esc;
+ }
+}
+
+#if NeedFunctionPrototypes
+void
+Xutf8DrawString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+#else
+void
+Xutf8DrawString(dpy, d, font_set, gc, x, y, text, text_len)
+ Display *dpy;
+ Drawable d;
+ XFontSet font_set;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int text_len;
+#endif
+{
+ (void)(*font_set->methods->utf8_draw_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+
+#if NeedFunctionPrototypes
+void
+Xutf8DrawImageString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+#else
+void
+Xutf8DrawImageString(dpy, d, font_set, gc, x, y, text, text_len)
+ Display *dpy;
+ Drawable d;
+ XFontSet font_set;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int text_len;
+#endif
+{
+ (*font_set->methods->utf8_draw_image_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+#if NeedFunctionPrototypes
+int
+Xutf8TextEscapement(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len)
+#else
+int
+Xutf8TextEscapement(font_set, text, text_len)
+ XFontSet font_set;
+ _Xconst char *text;
+ int text_len;
+#endif
+{
+ return (*font_set->methods->utf8_escapement) (font_set,
+ (char *)text, text_len);
+}
+
+#if NeedFunctionPrototypes
+int
+Xutf8TextExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *overall_ink_extents,
+ XRectangle *overall_logical_extents)
+#else
+int
+Xutf8TextExtents(font_set, text, text_len,
+ overall_ink_extents, overall_logical_extents)
+ XFontSet font_set;
+ _Xconst char *text;
+ int text_len;
+ XRectangle *overall_ink_extents;
+ XRectangle *overall_logical_extents;
+#endif
+{
+ return (*font_set->methods->utf8_extents) (font_set,
+ (char *)text, text_len,
+ overall_ink_extents,
+ overall_logical_extents);
+}
+
+#if NeedFunctionPrototypes
+Status
+Xutf8TextPerCharExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *ink_extents_buffer,
+ XRectangle *logical_extents_buffer,
+ int buffer_size,
+ int *num_chars,
+ XRectangle *max_ink_extents,
+ XRectangle *max_logical_extents)
+#else
+Status
+Xutf8TextPerCharExtents(font_set, text, text_len,
+ ink_extents_buffer, logical_extents_buffer,
+ buffer_size, num_chars,
+ max_ink_extents, max_logical_extents)
+ XFontSet font_set;
+ _Xconst char *text;
+ int text_len;
+ XRectangle *ink_extents_buffer;
+ XRectangle *logical_extents_buffer;
+ int buffer_size;
+ int *num_chars;
+ XRectangle *max_ink_extents;
+ XRectangle *max_logical_extents;
+#endif
+{
+ return (*font_set->methods->utf8_extents_per_char)
+ (font_set, (char *)text, text_len,
+ ink_extents_buffer, logical_extents_buffer,
+ buffer_size, num_chars, max_ink_extents, max_logical_extents);
+}
diff --git a/xc/lib/X11/wcWrap.c b/xc/lib/X11/wcWrap.c
index fff517210..4a05e1d86 100644
--- a/xc/lib/X11/wcWrap.c
+++ b/xc/lib/X11/wcWrap.c
@@ -47,10 +47,22 @@ from The Open Group.
*
* M. Collins OSF
*/
+/* $XFree86: xc/lib/X11/wcWrap.c,v 1.3 2000/11/29 17:40:27 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
+#if NeedFunctionPrototypes
+void
+XwcDrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XwcTextItem *text_items,
+ int nitems)
+#else
void
XwcDrawText(dpy, d, gc, x, y, text_items, nitems)
Display *dpy;
@@ -59,6 +71,7 @@ XwcDrawText(dpy, d, gc, x, y, text_items, nitems)
int x, y;
XwcTextItem *text_items;
int nitems;
+#endif
{
register XFontSet fs;
register XwcTextItem *p = text_items;
@@ -102,7 +115,7 @@ XwcDrawString(dpy, d, font_set, gc, x, y, text, text_len)
XFontSet font_set;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int text_len;
#endif
{
@@ -129,7 +142,7 @@ XwcDrawImageString(dpy, d, font_set, gc, x, y, text, text_len)
XFontSet font_set;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int text_len;
#endif
{
@@ -147,7 +160,7 @@ XwcTextEscapement(
int
XwcTextEscapement(font_set, text, text_len)
XFontSet font_set;
- wchar_t *text;
+ _Xconst wchar_t *text;
int text_len;
#endif
{
@@ -167,7 +180,7 @@ int
XwcTextExtents(font_set, text, text_len,
overall_ink_extents, overall_logical_extents)
XFontSet font_set;
- wchar_t *text;
+ _Xconst wchar_t *text;
int text_len;
XRectangle *overall_ink_extents;
XRectangle *overall_logical_extents;
@@ -197,7 +210,7 @@ XwcTextPerCharExtents(font_set, text, text_len,
buffer_size, num_chars,
max_ink_extents, max_logical_extents)
XFontSet font_set;
- wchar_t *text;
+ _Xconst wchar_t *text;
int text_len;
XRectangle *ink_extents_buffer;
XRectangle *logical_extents_buffer;