xterm-106.patch.txt

# ------------------------------------------------------------------------------
#  INSTALL                      |    3 
#  Imakefile                    |   25 
#  configure                    |   29 -
#  configure.in                 |    7 
#  input.c                      |   73 ++
#  ptydata.c                    |    7 
#  resize.c                     |    5 
#  screen.c                     |   24 
#  version.h                    |    4 
#  xterm-106/keysym2ucs.c       |  844 ++++++++++++++++++++++++++++++++
#  xterm-106/keysym2ucs.h       |    8 
#  xterm-106/unicode/README     |   18 
#  xterm-106/unicode/convmap.pl |  163 ++++++
#  xterm-106/unicode/keysym.map | 1060 +++++++++++++++++++++++++++++++++++++++++
#  xterm.log.html               |   18 
#  15 files changed, 2246 insertions, 42 deletions
# ------------------------------------------------------------------------------
Index: INSTALL
--- xterm-105+/INSTALL  Sun Apr 11 16:38:14 1999
+++ xterm-106/INSTALL   Wed Jun  9 06:12:06 1999
@@ -208,7 +208,8 @@
 
   --enable-wide-chars     enable wide-character support
 
-       Compile-in code that supports 16-bit characters.
+       Compile-in code that supports 16-bit characters.  Includes support
+       for UTF-8.
 
   --enable-xmc-glitch     test: enable xmc magic-cookie emulation
 
Index: Imakefile
--- xterm-105+/Imakefile        Sun May 16 15:55:44 1999
+++ xterm-106/Imakefile Wed Jun  9 06:42:47 1999
@@ -13,8 +13,8 @@
 /* Uncomment SCROLLBAR_RIGHT if you want the scroll bar to be on the right */
 SCROLLBAR_RIGHT = -DSCROLLBAR_RIGHT
 
-/* Uncomment UTF8_OPTION to compile-in support for UTF-8 */
-UTF8_OPTION    = -DOPT_WIDE_CHARS
+/* Define UTF8support to compile-in support for UTF-8 */
+#define UTF8support
 
 /*
  * Fixes to allow compile with X11R5
@@ -72,9 +72,16 @@
 #endif
 
 #ifdef AmoebaArchitecture
-        EXTRASRC = ttysvr.c
-        EXTRAOBJ = ttysvr.o
+       EXTRASRC = ttysvr.c
+       EXTRAOBJ = ttysvr.o
 #endif
+
+#ifdef UTF8support
+    UTF8_OPTION = -DOPT_WIDE_CHARS
+        UTF8SRC = keysym2ucs.c
+        UTF8OBJ = keysym2ucs.o
+#endif
+
    MAIN_DEFINES = $(UTMPDEF) $(TTYGROUPDEF) $(PUCCPTYDDEF) $(NOPOSIXTERMIOS) \
                  -DOSMAJORVERSION=$(OSMAJORVERSION) \
                  -DOSMINORVERSION=$(OSMINORVERSION)
@@ -91,14 +98,16 @@
 #endif
           SRCS1 = button.c charproc.c charsets.c cursor.c \
                  data.c doublechr.c fontutils.c input.c \
-                 $(MAINSRC) menu.c misc.c print.c ptydata.c \
+                 menu.c misc.c print.c ptydata.c \
                  screen.c scrollbar.c tabs.c util.c \
-                 TekPrsTbl.c Tekproc.c VTPrsTbl.c $(EXTRASRC)
+                 TekPrsTbl.c Tekproc.c VTPrsTbl.c \
+                 $(MAINSRC) $(EXTRASRC) $(UTF8SRC)
           OBJS1 = button.o charproc.o charsets.o cursor.o \
                  data.o doublechr.o fontutils.o input.o \
-                 $(MAINOBJ) menu.o misc.o print.o ptydata.o \
+                 menu.o misc.o print.o ptydata.o \
                  screen.o scrollbar.o tabs.o util.o \
-                 TekPrsTbl.o Tekproc.o VTPrsTbl.o $(EXTRAOBJ)
+                 TekPrsTbl.o Tekproc.o VTPrsTbl.o \
+                 $(MAINOBJ) $(EXTRAOBJ) $(UTF8OBJ)
           SRCS2 = resize.c
           OBJS2 = resize.o
            SRCS = $(SRCS1) $(SRCS2)
Index: configure
--- xterm-105+/configure        Sun May 30 16:57:28 1999
+++ xterm-106/configure Wed Jun  9 07:02:29 1999
@@ -4753,13 +4753,18 @@
 fi
 
 echo "$ac_t""$enable_wchar" 1>&6
-test $enable_wchar = yes && cat >> confdefs.h <<\EOF
+if test $enable_wchar = yes ; then
+       cat >> confdefs.h <<\EOF
 #define OPT_WIDE_CHARS 1
 EOF
 
+       EXTRAHDRS="$EXTRAHDRS keysym2ucs.h"
+       EXTRASRCS="$EXTRASRCS keysym2ucs.c"
+       EXTRAOBJS="$EXTRAOBJS keysym2ucs.o"
+fi
 
 echo $ac_n "checking if you want -ziconbeep option""... $ac_c" 1>&6
-echo "configure:4763: checking if you want -ziconbeep option" >&5
+echo "configure:4768: checking if you want -ziconbeep option" >&5
 
 # Check whether --enable-ziconbeep or --disable-ziconbeep was given.
 if test "${enable_ziconbeep+set}" = set; then
@@ -4784,7 +4789,7 @@
 
 # development/testing aids
 echo $ac_n "checking if you want debugging traces""... $ac_c" 1>&6
-echo "configure:4788: checking if you want debugging traces" >&5
+echo "configure:4793: checking if you want debugging traces" >&5
 
 # Check whether --enable-trace or --disable-trace was given.
 if test "${enable_trace+set}" = set; then
@@ -4813,7 +4818,7 @@
 
 
 echo $ac_n "checking if you want to see long compiling messages""... $ac_c" 1>&6
-echo "configure:4817: checking if you want to see long compiling messages" >&5
+echo "configure:4822: checking if you want to see long compiling messages" >&5
 
 # Check whether --enable-echo or --disable-echo was given.
 if test "${enable_echo+set}" = set; then
@@ -4853,7 +4858,7 @@
 
 
 echo $ac_n "checking if you want magic cookie emulation""... $ac_c" 1>&6
-echo "configure:4857: checking if you want magic cookie emulation" >&5
+echo "configure:4862: checking if you want magic cookie emulation" >&5
 
 # Check whether --enable-xmc-glitch or --disable-xmc-glitch was given.
 if test "${enable_xmc_glitch+set}" = set; then
@@ -4882,7 +4887,7 @@
 
 if test -n "$GCC" ; then
 echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6
-echo "configure:4886: checking if you want to turn on gcc warnings" >&5
+echo "configure:4891: checking if you want to turn on gcc warnings" >&5
 
 # Check whether --enable-warnings or --disable-warnings was given.
 if test "${enable_warnings+set}" = set; then
@@ -4922,9 +4927,9 @@
 if test -n "$GCC"
 then
        echo "checking for gcc __attribute__ directives" 1>&6
-echo "configure:4926: checking for gcc __attribute__ directives" >&5
+echo "configure:4931: checking for gcc __attribute__ directives" >&5
        cat > conftest.$ac_ext <<EOF
-#line 4928 "configure"
+#line 4933 "configure"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -4962,7 +4967,7 @@
 EOF
                        ;;
                esac
-               if { (eval echo configure:4966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:4971: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
                        test -n "$verbose" && echo "$ac_t""... $cf_attribute" 1>&6
                        cat conftest.h >>confdefs.h
 #              else
@@ -4979,11 +4984,11 @@
 if test -n "$GCC"
 then
                cat > conftest.$ac_ext <<EOF
-#line 4983 "configure"
+#line 4988 "configure"
 int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
                echo "checking for gcc warning options" 1>&6
-echo "configure:4987: checking for gcc warning options" >&5
+echo "configure:4992: checking for gcc warning options" >&5
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="-W -Wall"
        cf_warn_CONST=""
@@ -5001,7 +5006,7 @@
                Wstrict-prototypes $cf_warn_CONST
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo configure:5005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:5010: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
                        test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6
                        EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
                        test "$cf_opt" = Wcast-qual && EXTRA_CFLAGS="$EXTRA_CFLAGS -DXTSTRINGDEFINES"
Index: configure.in
--- xterm-105+/configure.in     Sun May 30 16:57:28 1999
+++ xterm-106/configure.in      Wed Jun  9 06:10:34 1999
@@ -352,7 +352,12 @@
        [enable_wchar=yes],
        [enable_wchar=no])
 AC_MSG_RESULT($enable_wchar)
-test $enable_wchar = yes && AC_DEFINE(OPT_WIDE_CHARS,1)
+if test $enable_wchar = yes ; then
+       AC_DEFINE(OPT_WIDE_CHARS,1)
+       EXTRAHDRS="$EXTRAHDRS keysym2ucs.h"
+       EXTRASRCS="$EXTRASRCS keysym2ucs.c"
+       EXTRAOBJS="$EXTRAOBJS keysym2ucs.o"
+fi
 
 AC_MSG_CHECKING(if you want -ziconbeep option)
 CF_ARG_DISABLE(ziconbeep,
Index: input.c
--- xterm-105+/input.c  Sun Apr 11 16:38:14 1999
+++ xterm-106/input.c   Wed Jun  9 06:21:12 1999
@@ -68,6 +68,7 @@
 
 #include <data.h>
 #include <fontutils.h>
+#include <keysym2ucs.h>
 
 /*                       0123456789 abc def0123456789abdef0123456789abcdef0123456789abcd */
 static char *kypd_num = " XXXXXXXX\tXXX\rXXXxxxxXXXXXXXXXXXXXXXXXXXXX*+,-./0123456789XX=";
@@ -223,6 +224,47 @@
            reply.a_nparam += 1; \
        }
 
+#if OPT_WIDE_CHARS
+/* Convert a Unicode value c into a UTF-8 sequence srtbuf */
+static int
+to_utf8(unsigned long c, char *strbuf)
+{
+       int nbytes = 0;
+
+       if (c < 0x80) {
+               strbuf[nbytes++] = c;
+       } else if (c < 0x800) {
+               strbuf[nbytes++] = 0xc0 | (c >> 6);
+               strbuf[nbytes++] = 0x80 | (c & 0x3f);
+       } else if (c < 0x10000) {
+               strbuf[nbytes++] = 0xe0 |  (c >> 12);
+               strbuf[nbytes++] = 0x80 | ((c >>  6) & 0x3f);
+               strbuf[nbytes++] = 0x80 | ( c        & 0x3f);
+       } else if (c < 0x200000) {
+               strbuf[nbytes++] = 0xf0 |  (c >> 18);
+               strbuf[nbytes++] = 0x80 | ((c >> 12) & 0x3f);
+               strbuf[nbytes++] = 0x80 | ((c >>  6) & 0x3f);
+               strbuf[nbytes++] = 0x80 | ( c        & 0x3f);
+       } else if (c < 0x4000000) {
+               strbuf[nbytes++] = 0xf8 |  (c >> 24);
+               strbuf[nbytes++] = 0x80 | ((c >> 18) & 0x3f);
+               strbuf[nbytes++] = 0x80 | ((c >> 12) & 0x3f);
+               strbuf[nbytes++] = 0x80 | ((c >>  6) & 0x3f);
+               strbuf[nbytes++] = 0x80 | ( c        & 0x3f);
+       } else if (c < 0x80000000) {
+               strbuf[nbytes++] = 0xfe |  (c >> 30);
+               strbuf[nbytes++] = 0x80 | ((c >> 24) & 0x3f);
+               strbuf[nbytes++] = 0x80 | ((c >> 18) & 0x3f);
+               strbuf[nbytes++] = 0x80 | ((c >> 12) & 0x3f);
+               strbuf[nbytes++] = 0x80 | ((c >> 6)  & 0x3f);
+               strbuf[nbytes++] = 0x80 | ( c        & 0x3f);
+       } else
+               return to_utf8(0xfffd, strbuf);
+
+       return nbytes;
+}
+#endif /* OPT_WIDE_CHARS */
+
 void
 Input (
        register TKeyboard *keyboard,
@@ -243,13 +285,20 @@
        int     dec_code;
        short   modify_parm = 0;
        int     keypad_mode = ((keyboard->flags & MODE_DECKPAM) != 0);
+#if OPT_WIDE_CHARS
+       long    ucs;
+#endif
 
        /* Ignore characters typed at the keyboard */
        if (keyboard->flags & MODE_KAM)
                return;
 
 #if OPT_I18N_SUPPORT
-       if (screen->xic) {
+       if (screen->xic
+#if OPT_WIDE_CHARS
+        && !screen->utf8_mode
+#endif
+        ) {
            Status status_return;
            nbytes = XmbLookupString (screen->xic, event, strbuf, STRBUFSIZE,
                                      &keysym, &status_return);
@@ -261,6 +310,28 @@
            nbytes = XLookupString (event, strbuf, STRBUFSIZE,
                                    &keysym, &compose_status);
        }
+
+#if OPT_WIDE_CHARS
+       /*
+        * FIXME:  As long as Xlib does not provide proper UTF-8 conversion via
+        * XLookupString(), we have to generate them here.  Once Xlib is fully
+        * UTF-8 capable, this code here should be removed again.
+        */
+       if (screen->utf8_mode) {
+               ucs = -1;
+               if (nbytes == 1) {
+               /* Take ISO 8859-1 character delivered by XLookupString() */
+                       ucs = (unsigned char) strbuf[0];
+               } else if (!nbytes && keysym >= 0x100 && keysym <= 0xf000)
+                       ucs = keysym2ucs(keysym);
+               else
+                       ucs = -2;
+               if (ucs == -1)
+                       nbytes = 0;
+               if (ucs >= 0)
+                       nbytes = to_utf8(ucs, strbuf);
+       }
+#endif
 
        string = &strbuf[0];
        reply.a_pintro = 0;
Index: keysym2ucs.c
--- /dev/null   Sun Jul 17 19:46:18 1994
+++ xterm-106/keysym2ucs.c      Wed Jun  9 06:08:06 1999
@@ -0,0 +1,844 @@
+/*
+ * This module converts keysym values into the corresponding ISO 10646-1
+ * (UCS, Unicode) values.
+ *
+ * The array keysymtab[] contains pairs of X11 keysym values for graphical
+ * characters and the corresponding Unicode value. The function
+ * keysym2ucs() maps a keysym onto a Unicode value using a binary search,
+ * therefore keysymtab[] must remain SORTED by keysym value.
+ *
+ * The keysym -> UTF-8 conversion will hopefully one day be provided
+ * by Xlib via XmbLookupString() and should ideally not have to be
+ * done in X applications. But we are not there yet.
+ *
+ * NOTE: The comments in the table below contain the actual character
+ * encoded in UTF-8, so for viewing and editing best use an editor in
+ * UTF-8 mode.
+ *
+ * Author: Markus G. Kuhn <mkuhn@acm.org>, University of Cambridge, June 1999
+ *
+ * Special thanks to Richard Verhoeven <river@win.tue.nl> for preparing
+ * an initial draft of the mapping table.
+ *
+ * This software is in the public domain. Share and enjoy!
+ */
+
+#include "keysym2ucs.h"
+
+struct codepair {
+  unsigned short keysym;
+  unsigned short ucs;
+} keysymtab[] = {
+  { 0x01a1, 0x0104 }, /*                     Aogonek Ä„ LATIN CAPITAL LETTER A WITH OGONEK */
+  { 0x01a2, 0x02d8 }, /*                       breve Ë˜ BREVE */
+  { 0x01a3, 0x0141 }, /*                     Lstroke Å LATIN CAPITAL LETTER L WITH STROKE */
+  { 0x01a5, 0x013d }, /*                      Lcaron Ä½ LATIN CAPITAL LETTER L WITH CARON */
+  { 0x01a6, 0x015a }, /*                      Sacute Åš LATIN CAPITAL LETTER S WITH ACUTE */
+  { 0x01a9, 0x0160 }, /*                      Scaron Å  LATIN CAPITAL LETTER S WITH CARON */
+  { 0x01aa, 0x015e }, /*                    Scedilla Åž LATIN CAPITAL LETTER S WITH CEDILLA */
+  { 0x01ab, 0x0164 }, /*                      Tcaron Å¤ LATIN CAPITAL LETTER T WITH CARON */
+  { 0x01ac, 0x0179 }, /*                      Zacute Å¹ LATIN CAPITAL LETTER Z WITH ACUTE */
+  { 0x01ae, 0x017d }, /*                      Zcaron Å½ LATIN CAPITAL LETTER Z WITH CARON */
+  { 0x01af, 0x017b }, /*                   Zabovedot Å» LATIN CAPITAL LETTER Z WITH DOT ABOVE */
+  { 0x01b1, 0x0105 }, /*                     aogonek Ä… LATIN SMALL LETTER A WITH OGONEK */
+  { 0x01b2, 0x02db }, /*                      ogonek Ë› OGONEK */
+  { 0x01b3, 0x0142 }, /*                     lstroke Å‚ LATIN SMALL LETTER L WITH STROKE */
+  { 0x01b5, 0x013e }, /*                      lcaron Ä¾ LATIN SMALL LETTER L WITH CARON */
+  { 0x01b6, 0x015b }, /*                      sacute Å› LATIN SMALL LETTER S WITH ACUTE */
+  { 0x01b7, 0x02c7 }, /*                       caron Ë‡ CARON */
+  { 0x01b9, 0x0161 }, /*                      scaron Å¡ LATIN SMALL LETTER S WITH CARON */
+  { 0x01ba, 0x015f }, /*                    scedilla ÅŸ LATIN SMALL LETTER S WITH CEDILLA */
+  { 0x01bb, 0x0165 }, /*                      tcaron Å¥ LATIN SMALL LETTER T WITH CARON */
+  { 0x01bc, 0x017a }, /*                      zacute Åº LATIN SMALL LETTER Z WITH ACUTE */
+  { 0x01bd, 0x02dd }, /*                 doubleacute Ë DOUBLE ACUTE ACCENT */
+  { 0x01be, 0x017e }, /*                      zcaron Å¾ LATIN SMALL LETTER Z WITH CARON */
+  { 0x01bf, 0x017c }, /*                   zabovedot Å¼ LATIN SMALL LETTER Z WITH DOT ABOVE */
+  { 0x01c0, 0x0154 }, /*                      Racute Å” LATIN CAPITAL LETTER R WITH ACUTE */
+  { 0x01c3, 0x0102 }, /*                      Abreve Ä‚ LATIN CAPITAL LETTER A WITH BREVE */
+  { 0x01c5, 0x0139 }, /*                      Lacute Ä¹ LATIN CAPITAL LETTER L WITH ACUTE */
+  { 0x01c6, 0x0106 }, /*                      Cacute Ä† LATIN CAPITAL LETTER C WITH ACUTE */
+  { 0x01c8, 0x010c }, /*                      Ccaron ÄŒ LATIN CAPITAL LETTER C WITH CARON */
+  { 0x01ca, 0x0118 }, /*                     Eogonek Ä˜ LATIN CAPITAL LETTER E WITH OGONEK */
+  { 0x01cc, 0x011a }, /*                      Ecaron Äš LATIN CAPITAL LETTER E WITH CARON */
+  { 0x01cf, 0x010e }, /*                      Dcaron ÄŽ LATIN CAPITAL LETTER D WITH CARON */
+  { 0x01d0, 0x0110 }, /*                     Dstroke Ä LATIN CAPITAL LETTER D WITH STROKE */
+  { 0x01d1, 0x0143 }, /*                      Nacute Åƒ LATIN CAPITAL LETTER N WITH ACUTE */
+  { 0x01d2, 0x0147 }, /*                      Ncaron Å‡ LATIN CAPITAL LETTER N WITH CARON */
+  { 0x01d5, 0x0150 }, /*                Odoubleacute Å LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
+  { 0x01d8, 0x0158 }, /*                      Rcaron Å˜ LATIN CAPITAL LETTER R WITH CARON */
+  { 0x01d9, 0x016e }, /*                       Uring Å® LATIN CAPITAL LETTER U WITH RING ABOVE */
+  { 0x01db, 0x0170 }, /*                Udoubleacute Å° LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
+  { 0x01de, 0x0162 }, /*                    Tcedilla Å¢ LATIN CAPITAL LETTER T WITH CEDILLA */
+  { 0x01e0, 0x0155 }, /*                      racute Å• LATIN SMALL LETTER R WITH ACUTE */
+  { 0x01e3, 0x0103 }, /*                      abreve Äƒ LATIN SMALL LETTER A WITH BREVE */
+  { 0x01e5, 0x013a }, /*                      lacute Äº LATIN SMALL LETTER L WITH ACUTE */
+  { 0x01e6, 0x0107 }, /*                      cacute Ä‡ LATIN SMALL LETTER C WITH ACUTE */
+  { 0x01e8, 0x010d }, /*                      ccaron Ä LATIN SMALL LETTER C WITH CARON */
+  { 0x01ea, 0x0119 }, /*                     eogonek Ä™ LATIN SMALL LETTER E WITH OGONEK */
+  { 0x01ec, 0x011b }, /*                      ecaron Ä› LATIN SMALL LETTER E WITH CARON */
+  { 0x01ef, 0x010f }, /*                      dcaron Ä LATIN SMALL LETTER D WITH CARON */
+  { 0x01f0, 0x0111 }, /*                     dstroke Ä‘ LATIN SMALL LETTER D WITH STROKE */
+  { 0x01f1, 0x0144 }, /*                      nacute Å„ LATIN SMALL LETTER N WITH ACUTE */
+  { 0x01f2, 0x0148 }, /*                      ncaron Åˆ LATIN SMALL LETTER N WITH CARON */
+  { 0x01f5, 0x0151 }, /*                odoubleacute Å‘ LATIN SMALL LETTER O WITH DOUBLE ACUTE */
+  { 0x01f8, 0x0159 }, /*                      rcaron Å™ LATIN SMALL LETTER R WITH CARON */
+  { 0x01f9, 0x016f }, /*                       uring Å¯ LATIN SMALL LETTER U WITH RING ABOVE */
+  { 0x01fb, 0x0171 }, /*                udoubleacute Å± LATIN SMALL LETTER U WITH DOUBLE ACUTE */
+  { 0x01fe, 0x0163 }, /*                    tcedilla Å£ LATIN SMALL LETTER T WITH CEDILLA */
+  { 0x01ff, 0x02d9 }, /*                    abovedot Ë™ DOT ABOVE */
+  { 0x02a1, 0x0126 }, /*                     Hstroke Ä¦ LATIN CAPITAL LETTER H WITH STROKE */
+  { 0x02a6, 0x0124 }, /*                 Hcircumflex Ä¤ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
+  { 0x02a9, 0x0130 }, /*                   Iabovedot Ä° LATIN CAPITAL LETTER I WITH DOT ABOVE */
+  { 0x02ab, 0x011e }, /*                      Gbreve Äž LATIN CAPITAL LETTER G WITH BREVE */
+  { 0x02ac, 0x0134 }, /*                 Jcircumflex Ä´ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
+  { 0x02b1, 0x0127 }, /*                     hstroke Ä§ LATIN SMALL LETTER H WITH STROKE */
+  { 0x02b6, 0x0125 }, /*                 hcircumflex Ä¥ LATIN SMALL LETTER H WITH CIRCUMFLEX */
+  { 0x02b9, 0x0131 }, /*                    idotless Ä± LATIN SMALL LETTER DOTLESS I */
+  { 0x02bb, 0x011f }, /*                      gbreve ÄŸ LATIN SMALL LETTER G WITH BREVE */
+  { 0x02bc, 0x0135 }, /*                 jcircumflex Äµ LATIN SMALL LETTER J WITH CIRCUMFLEX */
+  { 0x02c5, 0x010a }, /*                   Cabovedot ÄŠ LATIN CAPITAL LETTER C WITH DOT ABOVE */
+  { 0x02c6, 0x0108 }, /*                 Ccircumflex Äˆ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
+  { 0x02d5, 0x0120 }, /*                   Gabovedot Ä  LATIN CAPITAL LETTER G WITH DOT ABOVE */
+  { 0x02d8, 0x011c }, /*                 Gcircumflex Äœ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
+  { 0x02dd, 0x016c }, /*                      Ubreve Å¬ LATIN CAPITAL LETTER U WITH BREVE */
+  { 0x02de, 0x015c }, /*                 Scircumflex Åœ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
+  { 0x02e5, 0x010b }, /*                   cabovedot Ä‹ LATIN SMALL LETTER C WITH DOT ABOVE */
+  { 0x02e6, 0x0109 }, /*                 ccircumflex Ä‰ LATIN SMALL LETTER C WITH CIRCUMFLEX */
+  { 0x02f5, 0x0121 }, /*                   gabovedot Ä¡ LATIN SMALL LETTER G WITH DOT ABOVE */
+  { 0x02f8, 0x011d }, /*                 gcircumflex Ä LATIN SMALL LETTER G WITH CIRCUMFLEX */
+  { 0x02fd, 0x016d }, /*                      ubreve Å­ LATIN SMALL LETTER U WITH BREVE */
+  { 0x02fe, 0x015d }, /*                 scircumflex Å LATIN SMALL LETTER S WITH CIRCUMFLEX */
+  { 0x03a2, 0x0138 }, /*                         kra Ä¸ LATIN SMALL LETTER KRA */
+  { 0x03a3, 0x0156 }, /*                    Rcedilla Å– LATIN CAPITAL LETTER R WITH CEDILLA */
+  { 0x03a5, 0x0128 }, /*                      Itilde Ä¨ LATIN CAPITAL LETTER I WITH TILDE */
+  { 0x03a6, 0x013b }, /*                    Lcedilla Ä» LATIN CAPITAL LETTER L WITH CEDILLA */
+  { 0x03aa, 0x0112 }, /*                     Emacron Ä’ LATIN CAPITAL LETTER E WITH MACRON */
+  { 0x03ab, 0x0122 }, /*                    Gcedilla Ä¢ LATIN CAPITAL LETTER G WITH CEDILLA */
+  { 0x03ac, 0x0166 }, /*                      Tslash Å¦ LATIN CAPITAL LETTER T WITH STROKE */
+  { 0x03b3, 0x0157 }, /*                    rcedilla Å— LATIN SMALL LETTER R WITH CEDILLA */
+  { 0x03b5, 0x0129 }, /*                      itilde Ä© LATIN SMALL LETTER I WITH TILDE */
+  { 0x03b6, 0x013c }, /*                    lcedilla Ä¼ LATIN SMALL LETTER L WITH CEDILLA */
+  { 0x03ba, 0x0113 }, /*                     emacron Ä“ LATIN SMALL LETTER E WITH MACRON */
+  { 0x03bb, 0x0123 }, /*                    gcedilla Ä£ LATIN SMALL LETTER G WITH CEDILLA */
+  { 0x03bc, 0x0167 }, /*                      tslash Å§ LATIN SMALL LETTER T WITH STROKE */
+  { 0x03bd, 0x014a }, /*                         ENG ÅŠ LATIN CAPITAL LETTER ENG */
+  { 0x03bf, 0x014b }, /*                         eng Å‹ LATIN SMALL LETTER ENG */
+  { 0x03c0, 0x0100 }, /*                     Amacron Ä€ LATIN CAPITAL LETTER A WITH MACRON */
+  { 0x03c7, 0x012e }, /*                     Iogonek Ä® LATIN CAPITAL LETTER I WITH OGONEK */
+  { 0x03cc, 0x0116 }, /*                   Eabovedot Ä– LATIN CAPITAL LETTER E WITH DOT ABOVE */
+  { 0x03cf, 0x012a }, /*                     Imacron Äª LATIN CAPITAL LETTER I WITH MACRON */
+  { 0x03d1, 0x0145 }, /*                    Ncedilla Å… LATIN CAPITAL LETTER N WITH CEDILLA */
+  { 0x03d2, 0x014c }, /*                     Omacron ÅŒ LATIN CAPITAL LETTER O WITH MACRON */
+  { 0x03d3, 0x0136 }, /*                    Kcedilla Ä¶ LATIN CAPITAL LETTER K WITH CEDILLA */
+  { 0x03d9, 0x0172 }, /*                     Uogonek Å² LATIN CAPITAL LETTER U WITH OGONEK */
+  { 0x03dd, 0x0168 }, /*                      Utilde Å¨ LATIN CAPITAL LETTER U WITH TILDE */
+  { 0x03de, 0x016a }, /*                     Umacron Åª LATIN CAPITAL LETTER U WITH MACRON */
+  { 0x03e0, 0x0101 }, /*                     amacron Ä LATIN SMALL LETTER A WITH MACRON */
+  { 0x03e7, 0x012f }, /*                     iogonek Ä¯ LATIN SMALL LETTER I WITH OGONEK */
+  { 0x03ec, 0x0117 }, /*                   eabovedot Ä— LATIN SMALL LETTER E WITH DOT ABOVE */
+  { 0x03ef, 0x012b }, /*                     imacron Ä« LATIN SMALL LETTER I WITH MACRON */
+  { 0x03f1, 0x0146 }, /*                    ncedilla Å† LATIN SMALL LETTER N WITH CEDILLA */
+  { 0x03f2, 0x014d }, /*                     omacron Å LATIN SMALL LETTER O WITH MACRON */
+  { 0x03f3, 0x0137 }, /*                    kcedilla Ä· LATIN SMALL LETTER K WITH CEDILLA */
+  { 0x03f9, 0x0173 }, /*                     uogonek Å³ LATIN SMALL LETTER U WITH OGONEK */
+  { 0x03fd, 0x0169 }, /*                      utilde Å© LATIN SMALL LETTER U WITH TILDE */
+  { 0x03fe, 0x016b }, /*                     umacron Å« LATIN SMALL LETTER U WITH MACRON */
+  { 0x047e, 0x203e }, /*                    overline â€¾ OVERLINE */
+  { 0x04a1, 0x3002 }, /*               kana_fullstop ã€‚ IDEOGRAPHIC FULL STOP */
+  { 0x04a2, 0x300c }, /*         kana_openingbracket ã€Œ LEFT CORNER BRACKET */
+  { 0x04a3, 0x300d }, /*         kana_closingbracket ã€ RIGHT CORNER BRACKET */
+  { 0x04a4, 0x3001 }, /*                  kana_comma ã€ IDEOGRAPHIC COMMA */
+  { 0x04a5, 0x30fb }, /*            kana_conjunctive ãƒ» KATAKANA MIDDLE DOT */
+  { 0x04a6, 0x30f2 }, /*                     kana_WO ãƒ² KATAKANA LETTER WO */
+  { 0x04a7, 0x30a1 }, /*                      kana_a ã‚¡ KATAKANA LETTER SMALL A */
+  { 0x04a8, 0x30a3 }, /*                      kana_i ã‚£ KATAKANA LETTER SMALL I */
+  { 0x04a9, 0x30a5 }, /*                      kana_u ã‚¥ KATAKANA LETTER SMALL U */
+  { 0x04aa, 0x30a7 }, /*                      kana_e ã‚§ KATAKANA LETTER SMALL E */
+  { 0x04ab, 0x30a9 }, /*                      kana_o ã‚© KATAKANA LETTER SMALL O */
+  { 0x04ac, 0x30e3 }, /*                     kana_ya ãƒ£ KATAKANA LETTER SMALL YA */
+  { 0x04ad, 0x30e5 }, /*                     kana_yu ãƒ¥ KATAKANA LETTER SMALL YU */
+  { 0x04ae, 0x30e7 }, /*                     kana_yo ãƒ§ KATAKANA LETTER SMALL YO */
+  { 0x04af, 0x30c3 }, /*                    kana_tsu ãƒƒ KATAKANA LETTER SMALL TU */
+  { 0x04b0, 0x30fc }, /*              prolongedsound ãƒ¼ KATAKANA-HIRAGANA PROLONGED SOUND MARK */
+  { 0x04b1, 0x30a2 }, /*                      kana_A ã‚¢ KATAKANA LETTER A */
+  { 0x04b2, 0x30a4 }, /*                      kana_I ã‚¤ KATAKANA LETTER I */
+  { 0x04b3, 0x30a6 }, /*                      kana_U ã‚¦ KATAKANA LETTER U */
+  { 0x04b4, 0x30a8 }, /*                      kana_E ã‚¨ KATAKANA LETTER E */
+  { 0x04b5, 0x30aa }, /*                      kana_O ã‚ª KATAKANA LETTER O */
+  { 0x04b6, 0x30ab }, /*                     kana_KA ã‚« KATAKANA LETTER KA */
+  { 0x04b7, 0x30ad }, /*                     kana_KI ã‚­ KATAKANA LETTER KI */
+  { 0x04b8, 0x30af }, /*                     kana_KU ã‚¯ KATAKANA LETTER KU */
+  { 0x04b9, 0x30b1 }, /*                     kana_KE ã‚± KATAKANA LETTER KE */
+  { 0x04ba, 0x30b3 }, /*                     kana_KO ã‚³ KATAKANA LETTER KO */
+  { 0x04bb, 0x30b5 }, /*                     kana_SA ã‚µ KATAKANA LETTER SA */
+  { 0x04bc, 0x30b7 }, /*                    kana_SHI ã‚· KATAKANA LETTER SI */
+  { 0x04bd, 0x30b9 }, /*                     kana_SU ã‚¹ KATAKANA LETTER SU */
+  { 0x04be, 0x30bb }, /*                     kana_SE ã‚» KATAKANA LETTER SE */
+  { 0x04bf, 0x30bd }, /*                     kana_SO ã‚½ KATAKANA LETTER SO */
+  { 0x04c0, 0x30bf }, /*                     kana_TA ã‚¿ KATAKANA LETTER TA */
+  { 0x04c1, 0x30c1 }, /*                    kana_CHI ãƒ KATAKANA LETTER TI */
+  { 0x04c2, 0x30c4 }, /*                    kana_TSU ãƒ„ KATAKANA LETTER TU */
+  { 0x04c3, 0x30c6 }, /*                     kana_TE ãƒ† KATAKANA LETTER TE */
+  { 0x04c4, 0x30c8 }, /*                     kana_TO ãƒˆ KATAKANA LETTER TO */
+  { 0x04c5, 0x30ca }, /*                     kana_NA ãƒŠ KATAKANA LETTER NA */
+  { 0x04c6, 0x30cb }, /*                     kana_NI ãƒ‹ KATAKANA LETTER NI */
+  { 0x04c7, 0x30cc }, /*                     kana_NU ãƒŒ KATAKANA LETTER NU */
+  { 0x04c8, 0x30cd }, /*                     kana_NE ãƒ KATAKANA LETTER NE */
+  { 0x04c9, 0x30ce }, /*                     kana_NO ãƒŽ KATAKANA LETTER NO */
+  { 0x04ca, 0x30cf }, /*                     kana_HA ãƒ KATAKANA LETTER HA */
+  { 0x04cb, 0x30d2 }, /*                     kana_HI ãƒ’ KATAKANA LETTER HI */
+  { 0x04cc, 0x30d5 }, /*                     kana_FU ãƒ• KATAKANA LETTER HU */
+  { 0x04cd, 0x30d8 }, /*                     kana_HE ãƒ˜ KATAKANA LETTER HE */
+  { 0x04ce, 0x30db }, /*                     kana_HO ãƒ› KATAKANA LETTER HO */
+  { 0x04cf, 0x30de }, /*                     kana_MA ãƒž KATAKANA LETTER MA */
+  { 0x04d0, 0x30df }, /*                     kana_MI ãƒŸ KATAKANA LETTER MI */
+  { 0x04d1, 0x30e0 }, /*                     kana_MU ãƒ  KATAKANA LETTER MU */
+  { 0x04d2, 0x30e1 }, /*                     kana_ME ãƒ¡ KATAKANA LETTER ME */
+  { 0x04d3, 0x30e2 }, /*                     kana_MO ãƒ¢ KATAKANA LETTER MO */
+  { 0x04d4, 0x30e4 }, /*                     kana_YA ãƒ¤ KATAKANA LETTER YA */
+  { 0x04d5, 0x30e6 }, /*                     kana_YU ãƒ¦ KATAKANA LETTER YU */
+  { 0x04d6, 0x30e8 }, /*                     kana_YO ãƒ¨ KATAKANA LETTER YO */
+  { 0x04d7, 0x30e9 }, /*                     kana_RA ãƒ© KATAKANA LETTER RA */
+  { 0x04d8, 0x30ea }, /*                     kana_RI ãƒª KATAKANA LETTER RI */
+  { 0x04d9, 0x30eb }, /*                     kana_RU ãƒ« KATAKANA LETTER RU */
+  { 0x04da, 0x30ec }, /*                     kana_RE ãƒ¬ KATAKANA LETTER RE */
+  { 0x04db, 0x30ed }, /*                     kana_RO ãƒ­ KATAKANA LETTER RO */
+  { 0x04dc, 0x30ef }, /*                     kana_WA ãƒ¯ KATAKANA LETTER WA */
+  { 0x04dd, 0x30f3 }, /*                      kana_N ãƒ³ KATAKANA LETTER N */
+  { 0x04de, 0x309b }, /*                 voicedsound ã‚› KATAKANA-HIRAGANA VOICED SOUND MARK */
+  { 0x04df, 0x309c }, /*             semivoicedsound ã‚œ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
+  { 0x05ac, 0x060c }, /*                Arabic_comma ØŒ ARABIC COMMA */
+  { 0x05bb, 0x061b }, /*            Arabic_semicolon Ø› ARABIC SEMICOLON */
+  { 0x05bf, 0x061f }, /*        Arabic_question_mark ØŸ ARABIC QUESTION MARK */
+  { 0x05c1, 0x0621 }, /*                Arabic_hamza Ø¡ ARABIC LETTER HAMZA */
+  { 0x05c2, 0x0622 }, /*          Arabic_maddaonalef Ø¢ ARABIC LETTER ALEF WITH MADDA ABOVE */
+  { 0x05c3, 0x0623 }, /*          Arabic_hamzaonalef Ø£ ARABIC LETTER ALEF WITH HAMZA ABOVE */
+  { 0x05c4, 0x0624 }, /*           Arabic_hamzaonwaw Ø¤ ARABIC LETTER WAW WITH HAMZA ABOVE */
+  { 0x05c5, 0x0625 }, /*       Arabic_hamzaunderalef Ø¥ ARABIC LETTER ALEF WITH HAMZA BELOW */
+  { 0x05c6, 0x0626 }, /*           Arabic_hamzaonyeh Ø¦ ARABIC LETTER YEH WITH HAMZA ABOVE */
+  { 0x05c7, 0x0627 }, /*                 Arabic_alef Ø§ ARABIC LETTER ALEF */
+  { 0x05c8, 0x0628 }, /*                  Arabic_beh Ø¨ ARABIC LETTER BEH */
+  { 0x05c9, 0x0629 }, /*           Arabic_tehmarbuta Ø© ARABIC LETTER TEH MARBUTA */
+  { 0x05ca, 0x062a }, /*                  Arabic_teh Øª ARABIC LETTER TEH */
+  { 0x05cb, 0x062b }, /*                 Arabic_theh Ø« ARABIC LETTER THEH */
+  { 0x05cc, 0x062c }, /*                 Arabic_jeem Ø¬ ARABIC LETTER JEEM */
+  { 0x05cd, 0x062d }, /*                  Arabic_hah Ø­ ARABIC LETTER HAH */
+  { 0x05ce, 0x062e }, /*                 Arabic_khah Ø® ARABIC LETTER KHAH */
+  { 0x05cf, 0x062f }, /*                  Arabic_dal Ø¯ ARABIC LETTER DAL */
+  { 0x05d0, 0x0630 }, /*                 Arabic_thal Ø° ARABIC LETTER THAL */
+  { 0x05d1, 0x0631 }, /*                   Arabic_ra Ø± ARABIC LETTER REH */
+  { 0x05d2, 0x0632 }, /*                 Arabic_zain Ø² ARABIC LETTER ZAIN */
+  { 0x05d3, 0x0633 }, /*                 Arabic_seen Ø³ ARABIC LETTER SEEN */
+  { 0x05d4, 0x0634 }, /*                Arabic_sheen Ø´ ARABIC LETTER SHEEN */
+  { 0x05d5, 0x0635 }, /*                  Arabic_sad Øµ ARABIC LETTER SAD */
+  { 0x05d6, 0x0636 }, /*                  Arabic_dad Ø¶ ARABIC LETTER DAD */
+  { 0x05d7, 0x0637 }, /*                  Arabic_tah Ø· ARABIC LETTER TAH */
+  { 0x05d8, 0x0638 }, /*                  Arabic_zah Ø¸ ARABIC LETTER ZAH */
+  { 0x05d9, 0x0639 }, /*                  Arabic_ain Ø¹ ARABIC LETTER AIN */
+  { 0x05da, 0x063a }, /*                Arabic_ghain Øº ARABIC LETTER GHAIN */
+  { 0x05e0, 0x0640 }, /*              Arabic_tatweel Ù€ ARABIC TATWEEL */
+  { 0x05e1, 0x0641 }, /*                  Arabic_feh Ù ARABIC LETTER FEH */
+  { 0x05e2, 0x0642 }, /*                  Arabic_qaf Ù‚ ARABIC LETTER QAF */
+  { 0x05e3, 0x0643 }, /*                  Arabic_kaf Ùƒ ARABIC LETTER KAF */
+  { 0x05e4, 0x0644 }, /*                  Arabic_lam Ù„ ARABIC LETTER LAM */
+  { 0x05e5, 0x0645 }, /*                 Arabic_meem Ù… ARABIC LETTER MEEM */
+  { 0x05e6, 0x0646 }, /*                 Arabic_noon Ù† ARABIC LETTER NOON */
+  { 0x05e7, 0x0647 }, /*                   Arabic_ha Ù‡ ARABIC LETTER HEH */
+  { 0x05e8, 0x0648 }, /*                  Arabic_waw Ùˆ ARABIC LETTER WAW */
+  { 0x05e9, 0x0649 }, /*          Arabic_alefmaksura Ù‰ ARABIC LETTER ALEF MAKSURA */
+  { 0x05ea, 0x064a }, /*                  Arabic_yeh ÙŠ ARABIC LETTER YEH */
+  { 0x05eb, 0x064b }, /*             Arabic_fathatan Ù‹ ARABIC FATHATAN */
+  { 0x05ec, 0x064c }, /*             Arabic_dammatan ÙŒ ARABIC DAMMATAN */
+  { 0x05ed, 0x064d }, /*             Arabic_kasratan Ù ARABIC KASRATAN */
+  { 0x05ee, 0x064e }, /*                Arabic_fatha ÙŽ ARABIC FATHA */
+  { 0x05ef, 0x064f }, /*                Arabic_damma Ù ARABIC DAMMA */
+  { 0x05f0, 0x0650 }, /*                Arabic_kasra Ù ARABIC KASRA */
+  { 0x05f1, 0x0651 }, /*               Arabic_shadda Ù‘ ARABIC SHADDA */
+  { 0x05f2, 0x0652 }, /*                Arabic_sukun Ù’ ARABIC SUKUN */
+  { 0x06a1, 0x0452 }, /*                 Serbian_dje Ñ’ CYRILLIC SMALL LETTER DJE */
+  { 0x06a2, 0x0453 }, /*               Macedonia_gje Ñ“ CYRILLIC SMALL LETTER GJE */
+  { 0x06a3, 0x0451 }, /*                 Cyrillic_io Ñ‘ CYRILLIC SMALL LETTER IO */
+  { 0x06a4, 0x0454 }, /*                Ukrainian_ie Ñ” CYRILLIC SMALL LETTER UKRAINIAN IE */
+  { 0x06a5, 0x0455 }, /*               Macedonia_dse Ñ• CYRILLIC SMALL LETTER DZE */
+  { 0x06a6, 0x0456 }, /*                 Ukrainian_i Ñ– CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
+  { 0x06a7, 0x0457 }, /*                Ukrainian_yi Ñ— CYRILLIC SMALL LETTER YI */
+  { 0x06a8, 0x0458 }, /*                 Cyrillic_je Ñ˜ CYRILLIC SMALL LETTER JE */
+  { 0x06a9, 0x0459 }, /*                Cyrillic_lje Ñ™ CYRILLIC SMALL LETTER LJE */
+  { 0x06aa, 0x045a }, /*                Cyrillic_nje Ñš CYRILLIC SMALL LETTER NJE */
+  { 0x06ab, 0x045b }, /*                Serbian_tshe Ñ› CYRILLIC SMALL LETTER TSHE */
+  { 0x06ac, 0x045c }, /*               Macedonia_kje Ñœ CYRILLIC SMALL LETTER KJE */
+  { 0x06ae, 0x045e }, /*         Byelorussian_shortu Ñž CYRILLIC SMALL LETTER SHORT U */
+  { 0x06af, 0x045f }, /*               Cyrillic_dzhe ÑŸ CYRILLIC SMALL LETTER DZHE */
+  { 0x06b0, 0x2116 }, /*                  numerosign â„– NUMERO SIGN */
+  { 0x06b1, 0x0402 }, /*                 Serbian_DJE Ð‚ CYRILLIC CAPITAL LETTER DJE */
+  { 0x06b2, 0x0403 }, /*               Macedonia_GJE Ðƒ CYRILLIC CAPITAL LETTER GJE */
+  { 0x06b3, 0x0401 }, /*                 Cyrillic_IO Ð CYRILLIC CAPITAL LETTER IO */
+  { 0x06b4, 0x0404 }, /*                Ukrainian_IE Ð„ CYRILLIC CAPITAL LETTER UKRAINIAN IE */
+  { 0x06b5, 0x0405 }, /*               Macedonia_DSE Ð… CYRILLIC CAPITAL LETTER DZE */
+  { 0x06b6, 0x0406 }, /*                 Ukrainian_I Ð† CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
+  { 0x06b7, 0x0407 }, /*                Ukrainian_YI Ð‡ CYRILLIC CAPITAL LETTER YI */
+  { 0x06b8, 0x0408 }, /*                 Cyrillic_JE Ðˆ CYRILLIC CAPITAL LETTER JE */
+  { 0x06b9, 0x0409 }, /*                Cyrillic_LJE Ð‰ CYRILLIC CAPITAL LETTER LJE */
+  { 0x06ba, 0x040a }, /*                Cyrillic_NJE ÐŠ CYRILLIC CAPITAL LETTER NJE */
+  { 0x06bb, 0x040b }, /*                Serbian_TSHE Ð‹ CYRILLIC CAPITAL LETTER TSHE */
+  { 0x06bc, 0x040c }, /*               Macedonia_KJE ÐŒ CYRILLIC CAPITAL LETTER KJE */
+  { 0x06be, 0x040e }, /*         Byelorussian_SHORTU ÐŽ CYRILLIC CAPITAL LETTER SHORT U */
+  { 0x06bf, 0x040f }, /*               Cyrillic_DZHE Ð CYRILLIC CAPITAL LETTER DZHE */
+  { 0x06c0, 0x044e }, /*                 Cyrillic_yu ÑŽ CYRILLIC SMALL LETTER YU */
+  { 0x06c1, 0x0430 }, /*                  Cyrillic_a Ð° CYRILLIC SMALL LETTER A */
+  { 0x06c2, 0x0431 }, /*                 Cyrillic_be Ð± CYRILLIC SMALL LETTER BE */
+  { 0x06c3, 0x0446 }, /*                Cyrillic_tse Ñ† CYRILLIC SMALL LETTER TSE */
+  { 0x06c4, 0x0434 }, /*                 Cyrillic_de Ð´ CYRILLIC SMALL LETTER DE */
+  { 0x06c5, 0x0435 }, /*                 Cyrillic_ie Ðµ CYRILLIC SMALL LETTER IE */
+  { 0x06c6, 0x0444 }, /*                 Cyrillic_ef Ñ„ CYRILLIC SMALL LETTER EF */
+  { 0x06c7, 0x0433 }, /*                Cyrillic_ghe Ð³ CYRILLIC SMALL LETTER GHE */
+  { 0x06c8, 0x0445 }, /*                 Cyrillic_ha Ñ… CYRILLIC SMALL LETTER HA */
+  { 0x06c9, 0x0438 }, /*                  Cyrillic_i Ð¸ CYRILLIC SMALL LETTER I */
+  { 0x06ca, 0x0439 }, /*             Cyrillic_shorti Ð¹ CYRILLIC SMALL LETTER SHORT I */
+  { 0x06cb, 0x043a }, /*                 Cyrillic_ka Ðº CYRILLIC SMALL LETTER KA */
+  { 0x06cc, 0x043b }, /*                 Cyrillic_el Ð» CYRILLIC SMALL LETTER EL */
+  { 0x06cd, 0x043c }, /*                 Cyrillic_em Ð¼ CYRILLIC SMALL LETTER EM */
+  { 0x06ce, 0x043d }, /*                 Cyrillic_en Ð½ CYRILLIC SMALL LETTER EN */
+  { 0x06cf, 0x043e }, /*                  Cyrillic_o Ð¾ CYRILLIC SMALL LETTER O */
+  { 0x06d0, 0x043f }, /*                 Cyrillic_pe Ð¿ CYRILLIC SMALL LETTER PE */
+  { 0x06d1, 0x044f }, /*                 Cyrillic_ya Ñ CYRILLIC SMALL LETTER YA */
+  { 0x06d2, 0x0440 }, /*                 Cyrillic_er Ñ€ CYRILLIC SMALL LETTER ER */
+  { 0x06d3, 0x0441 }, /*                 Cyrillic_es Ñ CYRILLIC SMALL LETTER ES */
+  { 0x06d4, 0x0442 }, /*                 Cyrillic_te Ñ‚ CYRILLIC SMALL LETTER TE */
+  { 0x06d5, 0x0443 }, /*                  Cyrillic_u Ñƒ CYRILLIC SMALL LETTER U */
+  { 0x06d6, 0x0436 }, /*                Cyrillic_zhe Ð¶ CYRILLIC SMALL LETTER ZHE */
+  { 0x06d7, 0x0432 }, /*                 Cyrillic_ve Ð² CYRILLIC SMALL LETTER VE */
+  { 0x06d8, 0x044c }, /*           Cyrillic_softsign ÑŒ CYRILLIC SMALL LETTER SOFT SIGN */
+  { 0x06d9, 0x044b }, /*               Cyrillic_yeru Ñ‹ CYRILLIC SMALL LETTER YERU */
+  { 0x06da, 0x0437 }, /*                 Cyrillic_ze Ð· CYRILLIC SMALL LETTER ZE */
+  { 0x06db, 0x0448 }, /*                Cyrillic_sha Ñˆ CYRILLIC SMALL LETTER SHA */
+  { 0x06dc, 0x044d }, /*                  Cyrillic_e Ñ CYRILLIC SMALL LETTER E */
+  { 0x06dd, 0x0449 }, /*              Cyrillic_shcha Ñ‰ CYRILLIC SMALL LETTER SHCHA */
+  { 0x06de, 0x0447 }, /*                Cyrillic_che Ñ‡ CYRILLIC SMALL LETTER CHE */
+  { 0x06df, 0x044a }, /*           Cyrillic_hardsign ÑŠ CYRILLIC SMALL LETTER HARD SIGN */
+  { 0x06e0, 0x042e }, /*                 Cyrillic_YU Ð® CYRILLIC CAPITAL LETTER YU */
+  { 0x06e1, 0x0410 }, /*                  Cyrillic_A Ð CYRILLIC CAPITAL LETTER A */
+  { 0x06e2, 0x0411 }, /*                 Cyrillic_BE Ð‘ CYRILLIC CAPITAL LETTER BE */
+  { 0x06e3, 0x0426 }, /*                Cyrillic_TSE Ð¦ CYRILLIC CAPITAL LETTER TSE */
+  { 0x06e4, 0x0414 }, /*                 Cyrillic_DE Ð” CYRILLIC CAPITAL LETTER DE */
+  { 0x06e5, 0x0415 }, /*                 Cyrillic_IE Ð• CYRILLIC CAPITAL LETTER IE */
+  { 0x06e6, 0x0424 }, /*                 Cyrillic_EF Ð¤ CYRILLIC CAPITAL LETTER EF */
+  { 0x06e7, 0x0413 }, /*                Cyrillic_GHE Ð“ CYRILLIC CAPITAL LETTER GHE */
+  { 0x06e8, 0x0425 }, /*                 Cyrillic_HA Ð¥ CYRILLIC CAPITAL LETTER HA */
+  { 0x06e9, 0x0418 }, /*                  Cyrillic_I Ð˜ CYRILLIC CAPITAL LETTER I */
+  { 0x06ea, 0x0419 }, /*             Cyrillic_SHORTI Ð™ CYRILLIC CAPITAL LETTER SHORT I */
+  { 0x06eb, 0x041a }, /*                 Cyrillic_KA Ðš CYRILLIC CAPITAL LETTER KA */
+  { 0x06ec, 0x041b }, /*                 Cyrillic_EL Ð› CYRILLIC CAPITAL LETTER EL */
+  { 0x06ed, 0x041c }, /*                 Cyrillic_EM Ðœ CYRILLIC CAPITAL LETTER EM */
+  { 0x06ee, 0x041d }, /*                 Cyrillic_EN Ð CYRILLIC CAPITAL LETTER EN */
+  { 0x06ef, 0x041e }, /*                  Cyrillic_O Ðž CYRILLIC CAPITAL LETTER O */
+  { 0x06f0, 0x041f }, /*                 Cyrillic_PE ÐŸ CYRILLIC CAPITAL LETTER PE */
+  { 0x06f1, 0x042f }, /*                 Cyrillic_YA Ð¯ CYRILLIC CAPITAL LETTER YA */
+  { 0x06f2, 0x0420 }, /*                 Cyrillic_ER Ð  CYRILLIC CAPITAL LETTER ER */
+  { 0x06f3, 0x0421 }, /*                 Cyrillic_ES Ð¡ CYRILLIC CAPITAL LETTER ES */
+  { 0x06f4, 0x0422 }, /*                 Cyrillic_TE Ð¢ CYRILLIC CAPITAL LETTER TE */
+  { 0x06f5, 0x0423 }, /*                  Cyrillic_U Ð£ CYRILLIC CAPITAL LETTER U */
+  { 0x06f6, 0x0416 }, /*                Cyrillic_ZHE Ð– CYRILLIC CAPITAL LETTER ZHE */
+  { 0x06f7, 0x0412 }, /*                 Cyrillic_VE Ð’ CYRILLIC CAPITAL LETTER VE */
+  { 0x06f8, 0x042c }, /*           Cyrillic_SOFTSIGN Ð¬ CYRILLIC CAPITAL LETTER SOFT SIGN */
+  { 0x06f9, 0x042b }, /*               Cyrillic_YERU Ð« CYRILLIC CAPITAL LETTER YERU */
+  { 0x06fa, 0x0417 }, /*                 Cyrillic_ZE Ð— CYRILLIC CAPITAL LETTER ZE */
+  { 0x06fb, 0x0428 }, /*                Cyrillic_SHA Ð¨ CYRILLIC CAPITAL LETTER SHA */
+  { 0x06fc, 0x042d }, /*                  Cyrillic_E Ð­ CYRILLIC CAPITAL LETTER E */
+  { 0x06fd, 0x0429 }, /*              Cyrillic_SHCHA Ð© CYRILLIC CAPITAL LETTER SHCHA */
+  { 0x06fe, 0x0427 }, /*                Cyrillic_CHE Ð§ CYRILLIC CAPITAL LETTER CHE */
+  { 0x06ff, 0x042a }, /*           Cyrillic_HARDSIGN Ðª CYRILLIC CAPITAL LETTER HARD SIGN */
+  { 0x07a1, 0x0386 }, /*           Greek_ALPHAaccent Î† GREEK CAPITAL LETTER ALPHA WITH TONOS */
+  { 0x07a2, 0x0388 }, /*         Greek_EPSILONaccent Îˆ GREEK CAPITAL LETTER EPSILON WITH TONOS */
+  { 0x07a3, 0x0389 }, /*             Greek_ETAaccent Î‰ GREEK CAPITAL LETTER ETA WITH TONOS */
+  { 0x07a4, 0x038a }, /*            Greek_IOTAaccent ÎŠ GREEK CAPITAL LETTER IOTA WITH TONOS */
+  { 0x07a5, 0x03aa }, /*         Greek_IOTAdiaeresis Îª GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
+  { 0x07a7, 0x038c }, /*         Greek_OMICRONaccent ÎŒ GREEK CAPITAL LETTER OMICRON WITH TONOS */
+  { 0x07a8, 0x038e }, /*         Greek_UPSILONaccent ÎŽ GREEK CAPITAL LETTER UPSILON WITH TONOS */
+  { 0x07a9, 0x03ab }, /*       Greek_UPSILONdieresis Î« GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
+  { 0x07ab, 0x038f }, /*           Greek_OMEGAaccent Î GREEK CAPITAL LETTER OMEGA WITH TONOS */
+  { 0x07ae, 0x0385 }, /*        Greek_accentdieresis Î… GREEK DIALYTIKA TONOS */
+  { 0x07af, 0x2015 }, /*              Greek_horizbar â€• HORIZONTAL BAR */
+  { 0x07b1, 0x03ac }, /*           Greek_alphaaccent Î¬ GREEK SMALL LETTER ALPHA WITH TONOS */
+  { 0x07b2, 0x03ad }, /*         Greek_epsilonaccent Î­ GREEK SMALL LETTER EPSILON WITH TONOS */
+  { 0x07b3, 0x03ae }, /*             Greek_etaaccent Î® GREEK SMALL LETTER ETA WITH TONOS */
+  { 0x07b4, 0x03af }, /*            Greek_iotaaccent Î¯ GREEK SMALL LETTER IOTA WITH TONOS */
+  { 0x07b5, 0x03ca }, /*          Greek_iotadieresis ÏŠ GREEK SMALL LETTER IOTA WITH DIALYTIKA */
+  { 0x07b6, 0x0390 }, /*    Greek_iotaaccentdieresis Î GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+  { 0x07b7, 0x03cc }, /*         Greek_omicronaccent ÏŒ GREEK SMALL LETTER OMICRON WITH TONOS */
+  { 0x07b8, 0x03cd }, /*         Greek_upsilonaccent Ï GREEK SMALL LETTER UPSILON WITH TONOS */
+  { 0x07b9, 0x03cb }, /*       Greek_upsilondieresis Ï‹ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
+  { 0x07ba, 0x03b0 }, /* Greek_upsilonaccentdieresis Î° GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
+  { 0x07bb, 0x03ce }, /*           Greek_omegaaccent ÏŽ GREEK SMALL LETTER OMEGA WITH TONOS */
+  { 0x07c1, 0x0391 }, /*                 Greek_ALPHA Î‘ GREEK CAPITAL LETTER ALPHA */
+  { 0x07c2, 0x0392 }, /*                  Greek_BETA Î’ GREEK CAPITAL LETTER BETA */
+  { 0x07c3, 0x0393 }, /*                 Greek_GAMMA Î“ GREEK CAPITAL LETTER GAMMA */
+  { 0x07c4, 0x0394 }, /*                 Greek_DELTA Î” GREEK CAPITAL LETTER DELTA */
+  { 0x07c5, 0x0395 }, /*               Greek_EPSILON Î• GREEK CAPITAL LETTER EPSILON */
+  { 0x07c6, 0x0396 }, /*                  Greek_ZETA Î– GREEK CAPITAL LETTER ZETA */
+  { 0x07c7, 0x0397 }, /*                   Greek_ETA Î— GREEK CAPITAL LETTER ETA */
+  { 0x07c8, 0x0398 }, /*                 Greek_THETA Î˜ GREEK CAPITAL LETTER THETA */
+  { 0x07c9, 0x0399 }, /*                  Greek_IOTA Î™ GREEK CAPITAL LETTER IOTA */
+  { 0x07ca, 0x039a }, /*                 Greek_KAPPA Îš GREEK CAPITAL LETTER KAPPA */
+  { 0x07cb, 0x039b }, /*                Greek_LAMBDA Î› GREEK CAPITAL LETTER LAMDA */
+  { 0x07cc, 0x039c }, /*                    Greek_MU Îœ GREEK CAPITAL LETTER MU */
+  { 0x07cd, 0x039d }, /*                    Greek_NU Î GREEK CAPITAL LETTER NU */
+  { 0x07ce, 0x039e }, /*                    Greek_XI Îž GREEK CAPITAL LETTER XI */
+  { 0x07cf, 0x039f }, /*               Greek_OMICRON ÎŸ GREEK CAPITAL LETTER OMICRON */
+  { 0x07d0, 0x03a0 }, /*                    Greek_PI Î  GREEK CAPITAL LETTER PI */
+  { 0x07d1, 0x03a1 }, /*                   Greek_RHO Î¡ GREEK CAPITAL LETTER RHO */
+  { 0x07d2, 0x03a3 }, /*                 Greek_SIGMA Î£ GREEK CAPITAL LETTER SIGMA */
+  { 0x07d4, 0x03a4 }, /*                   Greek_TAU Î¤ GREEK CAPITAL LETTER TAU */
+  { 0x07d5, 0x03a5 }, /*               Greek_UPSILON Î¥ GREEK CAPITAL LETTER UPSILON */
+  { 0x07d6, 0x03a6 }, /*                   Greek_PHI Î¦ GREEK CAPITAL LETTER PHI */
+  { 0x07d7, 0x03a7 }, /*                   Greek_CHI Î§ GREEK CAPITAL LETTER CHI */
+  { 0x07d8, 0x03a8 }, /*                   Greek_PSI Î¨ GREEK CAPITAL LETTER PSI */
+  { 0x07d9, 0x03a9 }, /*                 Greek_OMEGA Î© GREEK CAPITAL LETTER OMEGA */
+  { 0x07e1, 0x03b1 }, /*                 Greek_alpha Î± GREEK SMALL LETTER ALPHA */
+  { 0x07e2, 0x03b2 }, /*                  Greek_beta Î² GREEK SMALL LETTER BETA */
+  { 0x07e3, 0x03b3 }, /*                 Greek_gamma Î³ GREEK SMALL LETTER GAMMA */
+  { 0x07e4, 0x03b4 }, /*                 Greek_delta Î´ GREEK SMALL LETTER DELTA */
+  { 0x07e5, 0x03b5 }, /*               Greek_epsilon Îµ GREEK SMALL LETTER EPSILON */
+  { 0x07e6, 0x03b6 }, /*                  Greek_zeta Î¶ GREEK SMALL LETTER ZETA */
+  { 0x07e7, 0x03b7 }, /*                   Greek_eta Î· GREEK SMALL LETTER ETA */
+  { 0x07e8, 0x03b8 }, /*                 Greek_theta Î¸ GREEK SMALL LETTER THETA */
+  { 0x07e9, 0x03b9 }, /*                  Greek_iota Î¹ GREEK SMALL LETTER IOTA */
+  { 0x07ea, 0x03ba }, /*                 Greek_kappa Îº GREEK SMALL LETTER KAPPA */
+  { 0x07eb, 0x03bb }, /*                Greek_lambda Î» GREEK SMALL LETTER LAMDA */
+  { 0x07ec, 0x03bc }, /*                    Greek_mu Î¼ GREEK SMALL LETTER MU */
+  { 0x07ed, 0x03bd }, /*                    Greek_nu Î½ GREEK SMALL LETTER NU */
+  { 0x07ee, 0x03be }, /*                    Greek_xi Î¾ GREEK SMALL LETTER XI */
+  { 0x07ef, 0x03bf }, /*               Greek_omicron Î¿ GREEK SMALL LETTER OMICRON */
+  { 0x07f0, 0x03c0 }, /*                    Greek_pi Ï€ GREEK SMALL LETTER PI */
+  { 0x07f1, 0x03c1 }, /*                   Greek_rho Ï GREEK SMALL LETTER RHO */
+  { 0x07f2, 0x03c3 }, /*                 Greek_sigma Ïƒ GREEK SMALL LETTER SIGMA */
+  { 0x07f3, 0x03c2 }, /*       Greek_finalsmallsigma Ï‚ GREEK SMALL LETTER FINAL SIGMA */
+  { 0x07f4, 0x03c4 }, /*                   Greek_tau Ï„ GREEK SMALL LETTER TAU */
+  { 0x07f5, 0x03c5 }, /*               Greek_upsilon Ï… GREEK SMALL LETTER UPSILON */
+  { 0x07f6, 0x03c6 }, /*                   Greek_phi Ï† GREEK SMALL LETTER PHI */
+  { 0x07f7, 0x03c7 }, /*                   Greek_chi Ï‡ GREEK SMALL LETTER CHI */
+  { 0x07f8, 0x03c8 }, /*                   Greek_psi Ïˆ GREEK SMALL LETTER PSI */
+  { 0x07f9, 0x03c9 }, /*                 Greek_omega Ï‰ GREEK SMALL LETTER OMEGA */
+/*  0x08a1                               leftradical ? ??? */
+/*  0x08a2                            topleftradical ? ??? */
+/*  0x08a3                            horizconnector ? ??? */
+  { 0x08a4, 0x2320 }, /*                 topintegral âŒ  TOP HALF INTEGRAL */
+  { 0x08a5, 0x2321 }, /*                 botintegral âŒ¡ BOTTOM HALF INTEGRAL */
+  { 0x08a6, 0x2502 }, /*               vertconnector â”‚ BOX DRAWINGS LIGHT VERTICAL */
+/*  0x08a7                          topleftsqbracket ? ??? */
+/*  0x08a8                          botleftsqbracket ? ??? */
+/*  0x08a9                         toprightsqbracket ? ??? */
+/*  0x08aa                         botrightsqbracket ? ??? */
+/*  0x08ab                             topleftparens ? ??? */
+/*  0x08ac                             botleftparens ? ??? */
+/*  0x08ad                            toprightparens ? ??? */
+/*  0x08ae                            botrightparens ? ??? */
+/*  0x08af                      leftmiddlecurlybrace ? ??? */
+/*  0x08b0                     rightmiddlecurlybrace ? ??? */
+/*  0x08b1                          topleftsummation ? ??? */
+/*  0x08b2                          botleftsummation ? ??? */
+/*  0x08b3                 topvertsummationconnector ? ??? */
+/*  0x08b4                 botvertsummationconnector ? ??? */
+/*  0x08b5                         toprightsummation ? ??? */
+/*  0x08b6                         botrightsummation ? ??? */
+/*  0x08b7                      rightmiddlesummation ? ??? */
+  { 0x08bc, 0x2264 }, /*               lessthanequal â‰¤ LESS-THAN OR EQUAL TO */
+  { 0x08bd, 0x2260 }, /*                    notequal â‰  NOT EQUAL TO */
+  { 0x08be, 0x2265 }, /*            greaterthanequal â‰¥ GREATER-THAN OR EQUAL TO */
+  { 0x08bf, 0x222b }, /*                    integral âˆ« INTEGRAL */
+  { 0x08c0, 0x2234 }, /*                   therefore âˆ´ THEREFORE */
+  { 0x08c1, 0x221d }, /*                   variation âˆ PROPORTIONAL TO */
+  { 0x08c2, 0x221e }, /*                    infinity âˆž INFINITY */
+  { 0x08c5, 0x2207 }, /*                       nabla âˆ‡ NABLA */
+  { 0x08c8, 0x2245 }, /*                 approximate â‰… APPROXIMATELY EQUAL TO */
+/*  0x08c9                              similarequal ? ??? */
+  { 0x08cd, 0x21d4 }, /*                    ifonlyif â‡” LEFT RIGHT DOUBLE ARROW */
+  { 0x08ce, 0x21d2 }, /*                     implies â‡’ RIGHTWARDS DOUBLE ARROW */
+  { 0x08cf, 0x2261 }, /*                   identical â‰¡ IDENTICAL TO */
+  { 0x08d6, 0x221a }, /*                     radical âˆš SQUARE ROOT */
+  { 0x08da, 0x2282 }, /*                  includedin âŠ‚ SUBSET OF */
+  { 0x08db, 0x2283 }, /*                    includes âŠƒ SUPERSET OF */
+  { 0x08dc, 0x2229 }, /*                intersection âˆ© INTERSECTION */
+  { 0x08dd, 0x222a }, /*                       union âˆª UNION */
+  { 0x08de, 0x2227 }, /*                  logicaland âˆ§ LOGICAL AND */
+  { 0x08df, 0x2228 }, /*                   logicalor âˆ¨ LOGICAL OR */
+  { 0x08ef, 0x2202 }, /*           partialderivative âˆ‚ PARTIAL DIFFERENTIAL */
+  { 0x08f6, 0x0192 }, /*                    function Æ’ LATIN SMALL LETTER F WITH HOOK */
+  { 0x08fb, 0x2190 }, /*                   leftarrow â† LEFTWARDS ARROW */
+  { 0x08fc, 0x2191 }, /*                     uparrow â†‘ UPWARDS ARROW */
+  { 0x08fd, 0x2192 }, /*                  rightarrow â†’ RIGHTWARDS ARROW */
+  { 0x08fe, 0x2193 }, /*                   downarrow â†“ DOWNWARDS ARROW */
+  { 0x09df, 0x2422 }, /*                       blank â¢ BLANK SYMBOL */
+  { 0x09e0, 0x25c6 }, /*                soliddiamond â—† BLACK DIAMOND */
+  { 0x09e1, 0x2592 }, /*                checkerboard â–’ MEDIUM SHADE */
+  { 0x09e2, 0x2409 }, /*                          ht â‰ SYMBOL FOR HORIZONTAL TABULATION */
+  { 0x09e3, 0x240c }, /*                          ff âŒ SYMBOL FOR FORM FEED */
+  { 0x09e4, 0x240d }, /*                          cr â SYMBOL FOR CARRIAGE RETURN */
+  { 0x09e5, 0x240a }, /*                          lf âŠ SYMBOL FOR LINE FEED */
+  { 0x09e8, 0x2424 }, /*                          nl â¤ SYMBOL FOR NEWLINE */
+  { 0x09e9, 0x240b }, /*                          vt â‹ SYMBOL FOR VERTICAL TABULATION */
+  { 0x09ea, 0x2518 }, /*              lowrightcorner â”˜ BOX DRAWINGS LIGHT UP AND LEFT */
+  { 0x09eb, 0x2510 }, /*               uprightcorner â” BOX DRAWINGS LIGHT DOWN AND LEFT */
+  { 0x09ec, 0x250c }, /*                upleftcorner â”Œ BOX DRAWINGS LIGHT DOWN AND RIGHT */
+  { 0x09ed, 0x2514 }, /*               lowleftcorner â”” BOX DRAWINGS LIGHT UP AND RIGHT */
+  { 0x09ee, 0x253c }, /*               crossinglines â”¼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
+/*  0x09ef                            horizlinescan1 ? ??? */
+/*  0x09f0                            horizlinescan3 ? ??? */
+  { 0x09f1, 0x2500 }, /*              horizlinescan5 â”€ BOX DRAWINGS LIGHT HORIZONTAL */
+/*  0x09f2                            horizlinescan7 ? ??? */
+/*  0x09f3                            horizlinescan9 ? ??? */
+  { 0x09f4, 0x251c }, /*                       leftt â”œ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
+  { 0x09f5, 0x2524 }, /*                      rightt â”¤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */
+  { 0x09f6, 0x2534 }, /*                        bott â”´ BOX DRAWINGS LIGHT UP AND HORIZONTAL */
+  { 0x09f7, 0x252c }, /*                        topt â”¬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
+  { 0x09f8, 0x2502 }, /*                     vertbar â”‚ BOX DRAWINGS LIGHT VERTICAL */
+  { 0x0aa1, 0x2003 }, /*                     emspace â€ƒ EM SPACE */
+  { 0x0aa2, 0x2002 }, /*                     enspace â€‚ EN SPACE */
+  { 0x0aa3, 0x2004 }, /*                    em3space â€„ THREE-PER-EM SPACE */
+  { 0x0aa4, 0x2005 }, /*                    em4space â€… FOUR-PER-EM SPACE */
+  { 0x0aa5, 0x2007 }, /*                  digitspace â€‡ FIGURE SPACE */
+  { 0x0aa6, 0x2008 }, /*                  punctspace â€ˆ PUNCTUATION SPACE */
+  { 0x0aa7, 0x2009 }, /*                   thinspace â€‰ THIN SPACE */
+  { 0x0aa8, 0x200a }, /*                   hairspace â€Š HAIR SPACE */
+  { 0x0aa9, 0x2014 }, /*                      emdash â€” EM DASH */
+  { 0x0aaa, 0x2013 }, /*                      endash â€“ EN DASH */
+/*  0x0aac                               signifblank ? ??? */
+  { 0x0aae, 0x2026 }, /*                    ellipsis â€¦ HORIZONTAL ELLIPSIS */
+/*  0x0aaf                           doubbaselinedot ? ??? */
+  { 0x0ab0, 0x2153 }, /*                    onethird â…“ VULGAR FRACTION ONE THIRD */
+  { 0x0ab1, 0x2154 }, /*                   twothirds â…” VULGAR FRACTION TWO THIRDS */
+  { 0x0ab2, 0x2155 }, /*                    onefifth â…• VULGAR FRACTION ONE FIFTH */
+  { 0x0ab3, 0x2156 }, /*                   twofifths â…– VULGAR FRACTION TWO FIFTHS */
+  { 0x0ab4, 0x2157 }, /*                 threefifths â…— VULGAR FRACTION THREE FIFTHS */
+  { 0x0ab5, 0x2158 }, /*                  fourfifths â…˜ VULGAR FRACTION FOUR FIFTHS */
+  { 0x0ab6, 0x2159 }, /*                    onesixth â…™ VULGAR FRACTION ONE SIXTH */
+  { 0x0ab7, 0x215a }, /*                  fivesixths â…š VULGAR FRACTION FIVE SIXTHS */
+  { 0x0ab8, 0x2105 }, /*                      careof â„… CARE OF */
+  { 0x0abb, 0x2012 }, /*                     figdash â€’ FIGURE DASH */
+  { 0x0abc, 0x2329 }, /*            leftanglebracket âŒ© LEFT-POINTING ANGLE BRACKET */
+  { 0x0abd, 0x002e }, /*                decimalpoint . FULL STOP */
+  { 0x0abe, 0x232a }, /*           rightanglebracket âŒª RIGHT-POINTING ANGLE BRACKET */
+/*  0x0abf                                    marker ? ??? */
+  { 0x0ac3, 0x215b }, /*                   oneeighth â…› VULGAR FRACTION ONE EIGHTH */
+  { 0x0ac4, 0x215c }, /*                threeeighths â…œ VULGAR FRACTION THREE EIGHTHS */
+  { 0x0ac5, 0x215d }, /*                 fiveeighths â… VULGAR FRACTION FIVE EIGHTHS */
+  { 0x0ac6, 0x215e }, /*                seveneighths â…ž VULGAR FRACTION SEVEN EIGHTHS */
+  { 0x0ac9, 0x2122 }, /*                   trademark â„¢ TRADE MARK SIGN */
+  { 0x0aca, 0x2613 }, /*               signaturemark â˜“ SALTIRE */
+/*  0x0acb                         trademarkincircle ? ??? */
+  { 0x0acc, 0x25c1 }, /*            leftopentriangle â— WHITE LEFT-POINTING TRIANGLE */
+  { 0x0acd, 0x25b7 }, /*           rightopentriangle â–· WHITE RIGHT-POINTING TRIANGLE */
+  { 0x0ace, 0x25cb }, /*                emopencircle â—‹ WHITE CIRCLE */
+  { 0x0acf, 0x25a1 }, /*             emopenrectangle â–¡ WHITE SQUARE */
+  { 0x0ad0, 0x2018 }, /*         leftsinglequotemark â€˜ LEFT SINGLE QUOTATION MARK */
+  { 0x0ad1, 0x2019 }, /*        rightsinglequotemark â€™ RIGHT SINGLE QUOTATION MARK */
+  { 0x0ad2, 0x201c }, /*         leftdoublequotemark â€œ LEFT DOUBLE QUOTATION MARK */
+  { 0x0ad3, 0x201d }, /*        rightdoublequotemark â€ RIGHT DOUBLE QUOTATION MARK */
+  { 0x0ad4, 0x211e }, /*                prescription â„ž PRESCRIPTION TAKE */
+  { 0x0ad6, 0x2032 }, /*                     minutes â€² PRIME */
+  { 0x0ad7, 0x2033 }, /*                     seconds â€³ DOUBLE PRIME */
+  { 0x0ad9, 0x271d }, /*                  latincross âœ LATIN CROSS */
+/*  0x0ada                                  hexagram ? ??? */
+  { 0x0adb, 0x25ac }, /*            filledrectbullet â–¬ BLACK RECTANGLE */
+  { 0x0adc, 0x25c0 }, /*         filledlefttribullet â—€ BLACK LEFT-POINTING TRIANGLE */
+  { 0x0add, 0x25b6 }, /*        filledrighttribullet â–¶ BLACK RIGHT-POINTING TRIANGLE */
+  { 0x0ade, 0x25cf }, /*              emfilledcircle â— BLACK CIRCLE */
+  { 0x0adf, 0x25a0 }, /*                emfilledrect â–  BLACK SQUARE */
+  { 0x0ae0, 0x25e6 }, /*            enopencircbullet â—¦ WHITE BULLET */
+  { 0x0ae1, 0x25ab }, /*          enopensquarebullet â–« WHITE SMALL SQUARE */
+  { 0x0ae2, 0x25ad }, /*              openrectbullet â–­ WHITE RECTANGLE */
+  { 0x0ae3, 0x25b3 }, /*             opentribulletup â–³ WHITE UP-POINTING TRIANGLE */
+  { 0x0ae4, 0x25bd }, /*           opentribulletdown â–½ WHITE DOWN-POINTING TRIANGLE */
+  { 0x0ae5, 0x2606 }, /*                    openstar â˜† WHITE STAR */
+  { 0x0ae6, 0x2022 }, /*          enfilledcircbullet â€¢ BULLET */
+  { 0x0ae7, 0x25aa }, /*            enfilledsqbullet â–ª BLACK SMALL SQUARE */
+  { 0x0ae8, 0x25b2 }, /*           filledtribulletup â–² BLACK UP-POINTING TRIANGLE */
+  { 0x0ae9, 0x25bc }, /*         filledtribulletdown â–¼ BLACK DOWN-POINTING TRIANGLE */
+  { 0x0aea, 0x261c }, /*                 leftpointer â˜œ WHITE LEFT POINTING INDEX */
+  { 0x0aeb, 0x261e }, /*                rightpointer â˜ž WHITE RIGHT POINTING INDEX */
+  { 0x0aec, 0x2663 }, /*                        club â™£ BLACK CLUB SUIT */
+  { 0x0aed, 0x2666 }, /*                     diamond â™¦ BLACK DIAMOND SUIT */
+  { 0x0aee, 0x2665 }, /*                       heart â™¥ BLACK HEART SUIT */
+  { 0x0af0, 0x2720 }, /*                maltesecross âœ  MALTESE CROSS */
+  { 0x0af1, 0x2020 }, /*                      dagger â€  DAGGER */
+  { 0x0af2, 0x2021 }, /*                doubledagger â€¡ DOUBLE DAGGER */
+  { 0x0af3, 0x2713 }, /*                   checkmark âœ“ CHECK MARK */
+  { 0x0af4, 0x2717 }, /*                 ballotcross âœ— BALLOT X */
+  { 0x0af5, 0x266f }, /*                musicalsharp â™¯ MUSIC SHARP SIGN */
+  { 0x0af6, 0x266d }, /*                 musicalflat â™­ MUSIC FLAT SIGN */
+  { 0x0af7, 0x2642 }, /*                  malesymbol â™‚ MALE SIGN */
+  { 0x0af8, 0x2640 }, /*                femalesymbol â™€ FEMALE SIGN */
+  { 0x0af9, 0x260e }, /*                   telephone â˜Ž BLACK TELEPHONE */
+  { 0x0afa, 0x2315 }, /*           telephonerecorder âŒ• TELEPHONE RECORDER */
+  { 0x0afb, 0x2117 }, /*         phonographcopyright â„— SOUND RECORDING COPYRIGHT */
+  { 0x0afc, 0x2038 }, /*                       caret â€¸ CARET */
+  { 0x0afd, 0x201a }, /*          singlelowquotemark â€š SINGLE LOW-9 QUOTATION MARK */
+  { 0x0afe, 0x201e }, /*          doublelowquotemark â€ž DOUBLE LOW-9 QUOTATION MARK */
+/*  0x0aff                                    cursor ? ??? */
+  { 0x0ba3, 0x003c }, /*                   leftcaret < LESS-THAN SIGN */
+  { 0x0ba6, 0x003e }, /*                  rightcaret > GREATER-THAN SIGN */
+  { 0x0ba8, 0x2228 }, /*                   downcaret âˆ¨ LOGICAL OR */
+  { 0x0ba9, 0x2227 }, /*                     upcaret âˆ§ LOGICAL AND */
+  { 0x0bc0, 0x00af }, /*                     overbar Â¯ MACRON */
+  { 0x0bc2, 0x22a4 }, /*                    downtack âŠ¤ DOWN TACK */
+  { 0x0bc3, 0x2229 }, /*                      upshoe âˆ© INTERSECTION */
+  { 0x0bc4, 0x230a }, /*                   downstile âŒŠ LEFT FLOOR */
+  { 0x0bc6, 0x005f }, /*                    underbar _ LOW LINE */
+  { 0x0bca, 0x2218 }, /*                         jot âˆ˜ RING OPERATOR */
+  { 0x0bcc, 0x2395 }, /*                        quad âŽ• ??? */
+  { 0x0bce, 0x22a5 }, /*                      uptack âŠ¥ UP TACK */
+  { 0x0bcf, 0x25cb }, /*                      circle â—‹ WHITE CIRCLE */
+  { 0x0bd3, 0x2308 }, /*                     upstile âŒˆ LEFT CEILING */
+  { 0x0bd6, 0x222a }, /*                    downshoe âˆª UNION */
+  { 0x0bd8, 0x2283 }, /*                   rightshoe âŠƒ SUPERSET OF */
+  { 0x0bda, 0x2282 }, /*                    leftshoe âŠ‚ SUBSET OF */
+  { 0x0bdc, 0x22a3 }, /*                    lefttack âŠ£ LEFT TACK */
+  { 0x0bfc, 0x22a2 }, /*                   righttack âŠ¢ RIGHT TACK */
+  { 0x0cdf, 0x2017 }, /*        hebrew_doublelowline â€— DOUBLE LOW LINE */
+  { 0x0ce0, 0x05d0 }, /*                hebrew_aleph × HEBREW LETTER ALEF */
+  { 0x0ce1, 0x05d1 }, /*                  hebrew_bet ×‘ HEBREW LETTER BET */
+  { 0x0ce2, 0x05d2 }, /*                hebrew_gimel ×’ HEBREW LETTER GIMEL */
+  { 0x0ce3, 0x05d3 }, /*                hebrew_dalet ×“ HEBREW LETTER DALET */
+  { 0x0ce4, 0x05d4 }, /*                   hebrew_he ×” HEBREW LETTER HE */
+  { 0x0ce5, 0x05d5 }, /*                  hebrew_waw ×• HEBREW LETTER VAV */
+  { 0x0ce6, 0x05d6 }, /*                 hebrew_zain ×– HEBREW LETTER ZAYIN */
+  { 0x0ce7, 0x05d7 }, /*                 hebrew_chet ×— HEBREW LETTER HET */
+  { 0x0ce8, 0x05d8 }, /*                  hebrew_tet ×˜ HEBREW LETTER TET */
+  { 0x0ce9, 0x05d9 }, /*                  hebrew_yod ×™ HEBREW LETTER YOD */
+  { 0x0cea, 0x05da }, /*            hebrew_finalkaph ×š HEBREW LETTER FINAL KAF */
+  { 0x0ceb, 0x05db }, /*                 hebrew_kaph ×› HEBREW LETTER KAF */
+  { 0x0cec, 0x05dc }, /*                hebrew_lamed ×œ HEBREW LETTER LAMED */
+  { 0x0ced, 0x05dd }, /*             hebrew_finalmem × HEBREW LETTER FINAL MEM */
+  { 0x0cee, 0x05de }, /*                  hebrew_mem ×ž HEBREW LETTER MEM */
+  { 0x0cef, 0x05df }, /*             hebrew_finalnun ×Ÿ HEBREW LETTER FINAL NUN */
+  { 0x0cf0, 0x05e0 }, /*                  hebrew_nun ×  HEBREW LETTER NUN */
+  { 0x0cf1, 0x05e1 }, /*               hebrew_samech ×¡ HEBREW LETTER SAMEKH */
+  { 0x0cf2, 0x05e2 }, /*                 hebrew_ayin ×¢ HEBREW LETTER AYIN */
+  { 0x0cf3, 0x05e3 }, /*              hebrew_finalpe ×£ HEBREW LETTER FINAL PE */
+  { 0x0cf4, 0x05e4 }, /*                   hebrew_pe ×¤ HEBREW LETTER PE */
+  { 0x0cf5, 0x05e5 }, /*            hebrew_finalzade ×¥ HEBREW LETTER FINAL TSADI */
+  { 0x0cf6, 0x05e6 }, /*                 hebrew_zade ×¦ HEBREW LETTER TSADI */
+  { 0x0cf7, 0x05e7 }, /*                 hebrew_qoph ×§ HEBREW LETTER QOF */
+  { 0x0cf8, 0x05e8 }, /*                 hebrew_resh ×¨ HEBREW LETTER RESH */
+  { 0x0cf9, 0x05e9 }, /*                 hebrew_shin ×© HEBREW LETTER SHIN */
+  { 0x0cfa, 0x05ea }, /*                  hebrew_taw ×ª HEBREW LETTER TAV */
+  { 0x0da1, 0x0e01 }, /*                  Thai_kokai à¸ THAI CHARACTER KO KAI */
+  { 0x0da2, 0x0e02 }, /*                Thai_khokhai à¸‚ THAI CHARACTER KHO KHAI */
+  { 0x0da3, 0x0e03 }, /*               Thai_khokhuat à¸ƒ THAI CHARACTER KHO KHUAT */
+  { 0x0da4, 0x0e04 }, /*               Thai_khokhwai à¸„ THAI CHARACTER KHO KHWAI */
+  { 0x0da5, 0x0e05 }, /*                Thai_khokhon à¸… THAI CHARACTER KHO KHON */
+  { 0x0da6, 0x0e06 }, /*             Thai_khorakhang à¸† THAI CHARACTER KHO RAKHANG */
+  { 0x0da7, 0x0e07 }, /*                 Thai_ngongu à¸‡ THAI CHARACTER NGO NGU */
+  { 0x0da8, 0x0e08 }, /*                Thai_chochan à¸ˆ THAI CHARACTER CHO CHAN */
+  { 0x0da9, 0x0e09 }, /*               Thai_choching à¸‰ THAI CHARACTER CHO CHING */
+  { 0x0daa, 0x0e0a }, /*               Thai_chochang à¸Š THAI CHARACTER CHO CHANG */
+  { 0x0dab, 0x0e0b }, /*                   Thai_soso à¸‹ THAI CHARACTER SO SO */
+  { 0x0dac, 0x0e0c }, /*                Thai_chochoe à¸Œ THAI CHARACTER CHO CHOE */
+  { 0x0dad, 0x0e0d }, /*                 Thai_yoying à¸ THAI CHARACTER YO YING */
+  { 0x0dae, 0x0e0e }, /*                Thai_dochada à¸Ž THAI CHARACTER DO CHADA */
+  { 0x0daf, 0x0e0f }, /*                Thai_topatak à¸ THAI CHARACTER TO PATAK */
+  { 0x0db0, 0x0e10 }, /*                Thai_thothan à¸ THAI CHARACTER THO THAN */
+  { 0x0db1, 0x0e11 }, /*          Thai_thonangmontho à¸‘ THAI CHARACTER THO NANGMONTHO */
+  { 0x0db2, 0x0e12 }, /*             Thai_thophuthao à¸’ THAI CHARACTER THO PHUTHAO */
+  { 0x0db3, 0x0e13 }, /*                  Thai_nonen à¸“ THAI CHARACTER NO NEN */
+  { 0x0db4, 0x0e14 }, /*                  Thai_dodek à¸” THAI CHARACTER DO DEK */
+  { 0x0db5, 0x0e15 }, /*                  Thai_totao à¸• THAI CHARACTER TO TAO */
+  { 0x0db6, 0x0e16 }, /*               Thai_thothung à¸– THAI CHARACTER THO THUNG */
+  { 0x0db7, 0x0e17 }, /*              Thai_thothahan à¸— THAI CHARACTER THO THAHAN */
+  { 0x0db8, 0x0e18 }, /*               Thai_thothong à¸˜ THAI CHARACTER THO THONG */
+  { 0x0db9, 0x0e19 }, /*                   Thai_nonu à¸™ THAI CHARACTER NO NU */
+  { 0x0dba, 0x0e1a }, /*               Thai_bobaimai à¸š THAI CHARACTER BO BAIMAI */
+  { 0x0dbb, 0x0e1b }, /*                  Thai_popla à¸› THAI CHARACTER PO PLA */
+  { 0x0dbc, 0x0e1c }, /*               Thai_phophung à¸œ THAI CHARACTER PHO PHUNG */
+  { 0x0dbd, 0x0e1d }, /*                   Thai_fofa à¸ THAI CHARACTER FO FA */
+  { 0x0dbe, 0x0e1e }, /*                Thai_phophan à¸ž THAI CHARACTER PHO PHAN */
+  { 0x0dbf, 0x0e1f }, /*                  Thai_fofan à¸Ÿ THAI CHARACTER FO FAN */
+  { 0x0dc0, 0x0e20 }, /*             Thai_phosamphao à¸  THAI CHARACTER PHO SAMPHAO */
+  { 0x0dc1, 0x0e21 }, /*                   Thai_moma à¸¡ THAI CHARACTER MO MA */
+  { 0x0dc2, 0x0e22 }, /*                  Thai_yoyak à¸¢ THAI CHARACTER YO YAK */
+  { 0x0dc3, 0x0e23 }, /*                  Thai_rorua à¸£ THAI CHARACTER RO RUA */
+  { 0x0dc4, 0x0e24 }, /*                     Thai_ru à¸¤ THAI CHARACTER RU */
+  { 0x0dc5, 0x0e25 }, /*                 Thai_loling à¸¥ THAI CHARACTER LO LING */
+  { 0x0dc6, 0x0e26 }, /*                     Thai_lu à¸¦ THAI CHARACTER LU */
+  { 0x0dc7, 0x0e27 }, /*                 Thai_wowaen à¸§ THAI CHARACTER WO WAEN */
+  { 0x0dc8, 0x0e28 }, /*                 Thai_sosala à¸¨ THAI CHARACTER SO SALA */
+  { 0x0dc9, 0x0e29 }, /*                 Thai_sorusi à¸© THAI CHARACTER SO RUSI */
+  { 0x0dca, 0x0e2a }, /*                  Thai_sosua à¸ª THAI CHARACTER SO SUA */
+  { 0x0dcb, 0x0e2b }, /*                  Thai_hohip à¸« THAI CHARACTER HO HIP */
+  { 0x0dcc, 0x0e2c }, /*                Thai_lochula à¸¬ THAI CHARACTER LO CHULA */
+  { 0x0dcd, 0x0e2d }, /*                   Thai_oang à¸­ THAI CHARACTER O ANG */
+  { 0x0dce, 0x0e2e }, /*               Thai_honokhuk à¸® THAI CHARACTER HO NOKHUK */
+  { 0x0dcf, 0x0e2f }, /*              Thai_paiyannoi à¸¯ THAI CHARACTER PAIYANNOI */
+  { 0x0dd0, 0x0e30 }, /*                  Thai_saraa à¸° THAI CHARACTER SARA A */
+  { 0x0dd1, 0x0e31 }, /*             Thai_maihanakat à¸± THAI CHARACTER MAI HAN-AKAT */
+  { 0x0dd2, 0x0e32 }, /*                 Thai_saraaa à¸² THAI CHARACTER SARA AA */
+  { 0x0dd3, 0x0e33 }, /*                 Thai_saraam à¸³ THAI CHARACTER SARA AM */
+  { 0x0dd4, 0x0e34 }, /*                  Thai_sarai à¸´ THAI CHARACTER SARA I */
+  { 0x0dd5, 0x0e35 }, /*                 Thai_saraii à¸µ THAI CHARACTER SARA II */
+  { 0x0dd6, 0x0e36 }, /*                 Thai_saraue à¸¶ THAI CHARACTER SARA UE */
+  { 0x0dd7, 0x0e37 }, /*                Thai_sarauee à¸· THAI CHARACTER SARA UEE */
+  { 0x0dd8, 0x0e38 }, /*                  Thai_sarau à¸¸ THAI CHARACTER SARA U */
+  { 0x0dd9, 0x0e39 }, /*                 Thai_sarauu à¸¹ THAI CHARACTER SARA UU */
+  { 0x0dda, 0x0e3a }, /*                Thai_phinthu à¸º THAI CHARACTER PHINTHU */
+  { 0x0dde, 0x0e3e }, /*      Thai_maihanakat_maitho à¸¾ ??? */
+  { 0x0ddf, 0x0e3f }, /*                   Thai_baht à¸¿ THAI CURRENCY SYMBOL BAHT */
+  { 0x0de0, 0x0e40 }, /*                  Thai_sarae à¹€ THAI CHARACTER SARA E */
+  { 0x0de1, 0x0e41 }, /*                 Thai_saraae à¹ THAI CHARACTER SARA AE */
+  { 0x0de2, 0x0e42 }, /*                  Thai_sarao à¹‚ THAI CHARACTER SARA O */
+  { 0x0de3, 0x0e43 }, /*          Thai_saraaimaimuan à¹ƒ THAI CHARACTER SARA AI MAIMUAN */
+  { 0x0de4, 0x0e44 }, /*         Thai_saraaimaimalai à¹„ THAI CHARACTER SARA AI MAIMALAI */
+  { 0x0de5, 0x0e45 }, /*            Thai_lakkhangyao à¹… THAI CHARACTER LAKKHANGYAO */
+  { 0x0de6, 0x0e46 }, /*               Thai_maiyamok à¹† THAI CHARACTER MAIYAMOK */
+  { 0x0de7, 0x0e47 }, /*              Thai_maitaikhu à¹‡ THAI CHARACTER MAITAIKHU */
+  { 0x0de8, 0x0e48 }, /*                  Thai_maiek à¹ˆ THAI CHARACTER MAI EK */
+  { 0x0de9, 0x0e49 }, /*                 Thai_maitho à¹‰ THAI CHARACTER MAI THO */
+  { 0x0dea, 0x0e4a }, /*                 Thai_maitri à¹Š THAI CHARACTER MAI TRI */
+  { 0x0deb, 0x0e4b }, /*            Thai_maichattawa à¹‹ THAI CHARACTER MAI CHATTAWA */
+  { 0x0dec, 0x0e4c }, /*            Thai_thanthakhat à¹Œ THAI CHARACTER THANTHAKHAT */
+  { 0x0ded, 0x0e4d }, /*               Thai_nikhahit à¹ THAI CHARACTER NIKHAHIT */
+  { 0x0df0, 0x0e50 }, /*                 Thai_leksun à¹ THAI DIGIT ZERO */
+  { 0x0df1, 0x0e51 }, /*                Thai_leknung à¹‘ THAI DIGIT ONE */
+  { 0x0df2, 0x0e52 }, /*                Thai_leksong à¹’ THAI DIGIT TWO */
+  { 0x0df3, 0x0e53 }, /*                 Thai_leksam à¹“ THAI DIGIT THREE */
+  { 0x0df4, 0x0e54 }, /*                  Thai_leksi à¹” THAI DIGIT FOUR */
+  { 0x0df5, 0x0e55 }, /*                  Thai_lekha à¹• THAI DIGIT FIVE */
+  { 0x0df6, 0x0e56 }, /*                 Thai_lekhok à¹– THAI DIGIT SIX */
+  { 0x0df7, 0x0e57 }, /*                Thai_lekchet à¹— THAI DIGIT SEVEN */
+  { 0x0df8, 0x0e58 }, /*                Thai_lekpaet à¹˜ THAI DIGIT EIGHT */
+  { 0x0df9, 0x0e59 }, /*                 Thai_lekkao à¹™ THAI DIGIT NINE */
+  { 0x0ea1, 0x3131 }, /*               Hangul_Kiyeog ã„± HANGUL LETTER KIYEOK */
+  { 0x0ea2, 0x3132 }, /*          Hangul_SsangKiyeog ã„² HANGUL LETTER SSANGKIYEOK */
+  { 0x0ea3, 0x3133 }, /*           Hangul_KiyeogSios ã„³ HANGUL LETTER KIYEOK-SIOS */
+  { 0x0ea4, 0x3134 }, /*                Hangul_Nieun ã„´ HANGUL LETTER NIEUN */
+  { 0x0ea5, 0x3135 }, /*           Hangul_NieunJieuj ã„µ HANGUL LETTER NIEUN-CIEUC */
+  { 0x0ea6, 0x3136 }, /*           Hangul_NieunHieuh ã„¶ HANGUL LETTER NIEUN-HIEUH */
+  { 0x0ea7, 0x3137 }, /*               Hangul_Dikeud ã„· HANGUL LETTER TIKEUT */
+  { 0x0ea8, 0x3138 }, /*          Hangul_SsangDikeud ã„¸ HANGUL LETTER SSANGTIKEUT */
+  { 0x0ea9, 0x3139 }, /*                Hangul_Rieul ã„¹ HANGUL LETTER RIEUL */
+  { 0x0eaa, 0x313a }, /*          Hangul_RieulKiyeog ã„º HANGUL LETTER RIEUL-KIYEOK */
+  { 0x0eab, 0x313b }, /*           Hangul_RieulMieum ã„» HANGUL LETTER RIEUL-MIEUM */
+  { 0x0eac, 0x313c }, /*           Hangul_RieulPieub ã„¼ HANGUL LETTER RIEUL-PIEUP */
+  { 0x0ead, 0x313d }, /*            Hangul_RieulSios ã„½ HANGUL LETTER RIEUL-SIOS */
+  { 0x0eae, 0x313e }, /*           Hangul_RieulTieut ã„¾ HANGUL LETTER RIEUL-THIEUTH */
+  { 0x0eaf, 0x313f }, /*          Hangul_RieulPhieuf ã„¿ HANGUL LETTER RIEUL-PHIEUPH */
+  { 0x0eb0, 0x3140 }, /*           Hangul_RieulHieuh ã…€ HANGUL LETTER RIEUL-HIEUH */
+  { 0x0eb1, 0x3141 }, /*                Hangul_Mieum ã… HANGUL LETTER MIEUM */
+  { 0x0eb2, 0x3142 }, /*                Hangul_Pieub ã…‚ HANGUL LETTER PIEUP */
+  { 0x0eb3, 0x3143 }, /*           Hangul_SsangPieub ã…ƒ HANGUL LETTER SSANGPIEUP */
+  { 0x0eb4, 0x3144 }, /*            Hangul_PieubSios ã…„ HANGUL LETTER PIEUP-SIOS */
+  { 0x0eb5, 0x3145 }, /*                 Hangul_Sios ã…… HANGUL LETTER SIOS */
+  { 0x0eb6, 0x3146 }, /*            Hangul_SsangSios ã…† HANGUL LETTER SSANGSIOS */
+  { 0x0eb7, 0x3147 }, /*                Hangul_Ieung ã…‡ HANGUL LETTER IEUNG */
+  { 0x0eb8, 0x3148 }, /*                Hangul_Jieuj ã…ˆ HANGUL LETTER CIEUC */
+  { 0x0eb9, 0x3149 }, /*           Hangul_SsangJieuj ã…‰ HANGUL LETTER SSANGCIEUC */
+  { 0x0eba, 0x314a }, /*                Hangul_Cieuc ã…Š HANGUL LETTER CHIEUCH */
+  { 0x0ebb, 0x314b }, /*               Hangul_Khieuq ã…‹ HANGUL LETTER KHIEUKH */
+  { 0x0ebc, 0x314c }, /*                Hangul_Tieut ã…Œ HANGUL LETTER THIEUTH */
+  { 0x0ebd, 0x314d }, /*               Hangul_Phieuf ã… HANGUL LETTER PHIEUPH */
+  { 0x0ebe, 0x314e }, /*                Hangul_Hieuh ã…Ž HANGUL LETTER HIEUH */
+  { 0x0ebf, 0x314f }, /*                    Hangul_A ã… HANGUL LETTER A */
+  { 0x0ec0, 0x3150 }, /*                   Hangul_AE ã… HANGUL LETTER AE */
+  { 0x0ec1, 0x3151 }, /*                   Hangul_YA ã…‘ HANGUL LETTER YA */
+  { 0x0ec2, 0x3152 }, /*                  Hangul_YAE ã…’ HANGUL LETTER YAE */
+  { 0x0ec3, 0x3153 }, /*                   Hangul_EO ã…“ HANGUL LETTER EO */
+  { 0x0ec4, 0x3154 }, /*                    Hangul_E ã…” HANGUL LETTER E */
+  { 0x0ec5, 0x3155 }, /*                  Hangul_YEO ã…• HANGUL LETTER YEO */
+  { 0x0ec6, 0x3156 }, /*                   Hangul_YE ã…– HANGUL LETTER YE */
+  { 0x0ec7, 0x3157 }, /*                    Hangul_O ã…— HANGUL LETTER O */
+  { 0x0ec8, 0x3158 }, /*                   Hangul_WA ã…˜ HANGUL LETTER WA */
+  { 0x0ec9, 0x3159 }, /*                  Hangul_WAE ã…™ HANGUL LETTER WAE */
+  { 0x0eca, 0x315a }, /*                   Hangul_OE ã…š HANGUL LETTER OE */
+  { 0x0ecb, 0x315b }, /*                   Hangul_YO ã…› HANGUL LETTER YO */
+  { 0x0ecc, 0x315c }, /*                    Hangul_U ã…œ HANGUL LETTER U */
+  { 0x0ecd, 0x315d }, /*                  Hangul_WEO ã… HANGUL LETTER WEO */
+  { 0x0ece, 0x315e }, /*                   Hangul_WE ã…ž HANGUL LETTER WE */
+  { 0x0ecf, 0x315f }, /*                   Hangul_WI ã…Ÿ HANGUL LETTER WI */
+  { 0x0ed0, 0x3160 }, /*                   Hangul_YU ã…  HANGUL LETTER YU */
+  { 0x0ed1, 0x3161 }, /*                   Hangul_EU ã…¡ HANGUL LETTER EU */
+  { 0x0ed2, 0x3162 }, /*                   Hangul_YI ã…¢ HANGUL LETTER YI */
+  { 0x0ed3, 0x3163 }, /*                    Hangul_I ã…£ HANGUL LETTER I */
+  { 0x0ed4, 0x11a8 }, /*             Hangul_J_Kiyeog á†¨ HANGUL JONGSEONG KIYEOK */
+  { 0x0ed5, 0x11a9 }, /*        Hangul_J_SsangKiyeog á†© HANGUL JONGSEONG SSANGKIYEOK */
+  { 0x0ed6, 0x11aa }, /*         Hangul_J_KiyeogSios á†ª HANGUL JONGSEONG KIYEOK-SIOS */
+  { 0x0ed7, 0x11ab }, /*              Hangul_J_Nieun á†« HANGUL JONGSEONG NIEUN */
+  { 0x0ed8, 0x11ac }, /*         Hangul_J_NieunJieuj á†¬ HANGUL JONGSEONG NIEUN-CIEUC */
+  { 0x0ed9, 0x11ad }, /*         Hangul_J_NieunHieuh á†­ HANGUL JONGSEONG NIEUN-HIEUH */
+  { 0x0eda, 0x11ae }, /*             Hangul_J_Dikeud á†® HANGUL JONGSEONG TIKEUT */
+  { 0x0edb, 0x11af }, /*              Hangul_J_Rieul á†¯ HANGUL JONGSEONG RIEUL */
+  { 0x0edc, 0x11b0 }, /*        Hangul_J_RieulKiyeog á†° HANGUL JONGSEONG RIEUL-KIYEOK */
+  { 0x0edd, 0x11b1 }, /*         Hangul_J_RieulMieum á†± HANGUL JONGSEONG RIEUL-MIEUM */
+  { 0x0ede, 0x11b2 }, /*         Hangul_J_RieulPieub á†² HANGUL JONGSEONG RIEUL-PIEUP */
+  { 0x0edf, 0x11b3 }, /*          Hangul_J_RieulSios á†³ HANGUL JONGSEONG RIEUL-SIOS */
+  { 0x0ee0, 0x11b4 }, /*         Hangul_J_RieulTieut á†´ HANGUL JONGSEONG RIEUL-THIEUTH */
+  { 0x0ee1, 0x11b5 }, /*        Hangul_J_RieulPhieuf á†µ HANGUL JONGSEONG RIEUL-PHIEUPH */
+  { 0x0ee2, 0x11b6 }, /*         Hangul_J_RieulHieuh á†¶ HANGUL JONGSEONG RIEUL-HIEUH */
+  { 0x0ee3, 0x11b7 }, /*              Hangul_J_Mieum á†· HANGUL JONGSEONG MIEUM */
+  { 0x0ee4, 0x11b8 }, /*              Hangul_J_Pieub á†¸ HANGUL JONGSEONG PIEUP */
+  { 0x0ee5, 0x11b9 }, /*          Hangul_J_PieubSios á†¹ HANGUL JONGSEONG PIEUP-SIOS */
+  { 0x0ee6, 0x11ba }, /*               Hangul_J_Sios á†º HANGUL JONGSEONG SIOS */
+  { 0x0ee7, 0x11bb }, /*          Hangul_J_SsangSios á†» HANGUL JONGSEONG SSANGSIOS */
+  { 0x0ee8, 0x11bc }, /*              Hangul_J_Ieung á†¼ HANGUL JONGSEONG IEUNG */
+  { 0x0ee9, 0x11bd }, /*              Hangul_J_Jieuj á†½ HANGUL JONGSEONG CIEUC */
+  { 0x0eea, 0x11be }, /*              Hangul_J_Cieuc á†¾ HANGUL JONGSEONG CHIEUCH */
+  { 0x0eeb, 0x11bf }, /*             Hangul_J_Khieuq á†¿ HANGUL JONGSEONG KHIEUKH */
+  { 0x0eec, 0x11c0 }, /*              Hangul_J_Tieut á‡€ HANGUL JONGSEONG THIEUTH */
+  { 0x0eed, 0x11c1 }, /*             Hangul_J_Phieuf á‡ HANGUL JONGSEONG PHIEUPH */
+  { 0x0eee, 0x11c2 }, /*              Hangul_J_Hieuh á‡‚ HANGUL JONGSEONG HIEUH */
+  { 0x0eef, 0x316d }, /*     Hangul_RieulYeorinHieuh ã…­ HANGUL LETTER RIEUL-YEORINHIEUH */
+  { 0x0ef0, 0x3171 }, /*    Hangul_SunkyeongeumMieum ã…± HANGUL LETTER KAPYEOUNMIEUM */
+  { 0x0ef1, 0x3178 }, /*    Hangul_SunkyeongeumPieub ã…¸ HANGUL LETTER KAPYEOUNPIEUP */
+  { 0x0ef2, 0x317f }, /*              Hangul_PanSios ã…¿ HANGUL LETTER PANSIOS */
+/*  0x0ef3                  Hangul_KkogjiDalrinIeung ? ??? */
+  { 0x0ef4, 0x3184 }, /*   Hangul_SunkyeongeumPhieuf ã†„ HANGUL LETTER KAPYEOUNPHIEUPH */
+  { 0x0ef5, 0x3186 }, /*          Hangul_YeorinHieuh ã†† HANGUL LETTER YEORINHIEUH */
+  { 0x0ef6, 0x318d }, /*                Hangul_AraeA ã† HANGUL LETTER ARAEA */
+  { 0x0ef7, 0x318e }, /*               Hangul_AraeAE ã†Ž HANGUL LETTER ARAEAE */
+  { 0x0ef8, 0x11eb }, /*            Hangul_J_PanSios á‡« HANGUL JONGSEONG PANSIOS */
+/*  0x0ef9                Hangul_J_KkogjiDalrinIeung ? ??? */
+  { 0x0efa, 0x11f9 }, /*        Hangul_J_YeorinHieuh á‡¹ HANGUL JONGSEONG YEORINHIEUH */
+  { 0x0eff, 0x20a9 }, /*                  Korean_Won â‚© WON SIGN */
+  { 0x13bc, 0x0152 }, /*                          OE Å’ LATIN CAPITAL LIGATURE OE */
+  { 0x13bd, 0x0153 }, /*                          oe Å“ LATIN SMALL LIGATURE OE */
+  { 0x13be, 0x0178 }, /*                  Ydiaeresis Å¸ LATIN CAPITAL LETTER Y WITH DIAERESIS */
+  { 0x20a0, 0x20a0 }, /*                     EcuSign â‚  EURO-CURRENCY SIGN */
+  { 0x20a1, 0x20a1 }, /*                   ColonSign â‚¡ COLON SIGN */
+  { 0x20a2, 0x20a2 }, /*                CruzeiroSign â‚¢ CRUZEIRO SIGN */
+  { 0x20a3, 0x20a3 }, /*                  FFrancSign â‚£ FRENCH FRANC SIGN */
+  { 0x20a4, 0x20a4 }, /*                    LiraSign â‚¤ LIRA SIGN */
+  { 0x20a5, 0x20a5 }, /*                    MillSign â‚¥ MILL SIGN */
+  { 0x20a6, 0x20a6 }, /*                   NairaSign â‚¦ NAIRA SIGN */
+  { 0x20a7, 0x20a7 }, /*                  PesetaSign â‚§ PESETA SIGN */
+  { 0x20a8, 0x20a8 }, /*                   RupeeSign â‚¨ RUPEE SIGN */
+  { 0x20a9, 0x20a9 }, /*                     WonSign â‚© WON SIGN */
+  { 0x20aa, 0x20aa }, /*               NewSheqelSign â‚ª NEW SHEQEL SIGN */
+  { 0x20ab, 0x20ab }, /*                    DongSign â‚« DONG SIGN */
+  { 0x20ac, 0x20ac }, /*                    EuroSign â‚¬ EURO SIGN */
+};
+
+long keysym2ucs(KeySym keysym)
+{
+    int min = 0;
+    int max = sizeof(keysymtab) / sizeof(struct codepair);
+    int mid;
+
+    /* first check for Latin-1 characters (1:1 mapping) */
+    if ((keysym >= 0x0020 && keysym <= 0x007e) ||
+        (keysym >= 0x00a0 && keysym <= 0x00ff))
+        return keysym;
+
+    /* binary search in table */
+    while (max > min) {
+       mid = (min + max) / 2;
+       if (keysymtab[mid].keysym < keysym)
+           min = mid + 1;
+       else if (keysymtab[mid].keysym > keysym)
+           max = mid - 1;
+       else {
+           /* found it */
+           return keysymtab[mid].ucs;
+       }
+    }
+
+    /* no matching Unicode value found */
+    return -1;
+}
Index: keysym2ucs.h
--- /dev/null   Sun Jul 17 19:46:18 1994
+++ xterm-106/keysym2ucs.h      Tue Jun  8 20:47:19 1999
@@ -0,0 +1,8 @@
+/*
+ * This module converts keysym values into the corresponding ISO 10646-1
+ * (UCS, Unicode) values.
+ */
+
+#include <X11/X.h>
+
+long keysym2ucs(KeySym keysym);
Index: ptydata.c
--- xterm-105+/ptydata.c        Sun May 30 16:57:28 1999
+++ xterm-106/ptydata.c Tue Jun  8 18:38:10 1999
@@ -162,6 +162,13 @@
                    data->ptr[i] &= 0x7f;
                }
            }
+#if OPT_TRACE
+           for (i = 0; i < data->cnt; i++) {
+               if (!(i%8)) TRACE(("%s", i ? "\n    " : "READ"))
+               TRACE((" %04X", data->ptr[i]))
+           }
+           TRACE(("\n"))
+#endif
            return (data->cnt);
        }
     }
Index: resize.c
--- xterm-105+/resize.c Sun Jun  6 16:55:05 1999
+++ xterm-106/resize.c  Tue Jun  8 06:33:06 1999
@@ -90,11 +90,6 @@
 #endif
 #endif
 
-#ifdef __OpenBSD__
-#define USE_TERMINFO
-#include <term.h>
-#endif
-
 #if defined(SYSV) || defined(Lynx) || defined(__CYGWIN32__)
 #define USE_SYSV_TERMIO
 #ifndef Lynx
Index: screen.c
--- xterm-105+/screen.c Sun May 16 15:55:44 1999
+++ xterm-106/screen.c  Wed Jun  9 06:56:19 1999
@@ -322,9 +322,9 @@
        }
        if_OPT_WIDE_CHARS(screen,{
                Char *wc;
-               if (str2 != 0
-                && (wc = SCRN_BUF_WIDEC(screen, screen->cur_row) + screen->cur_col) != 0) {
-                       if (flags & INVISIBLE)
+               if ((wc = SCRN_BUF_WIDEC(screen, screen->cur_row)) != 0) {
+                       wc += screen->cur_col;
+                       if ((flags & INVISIBLE) || (str2 == 0))
                                memset(wc, 0, length);
                        else
                                memcpy(wc, str2, length);
@@ -1084,13 +1084,15 @@
                if (ptr[i])
                        return True;
        }
-#if OPT_WIDE_CHARS
-       if ((ptr = BUF_WIDEC(sb, row)) != 0) {
-           for (i = col; i < len; i++) {
-               if (ptr[i])
-                   return True;
-           }
-       }
-#endif
+
+       if_OPT_WIDE_CHARS((&(term->screen)),{
+               if ((ptr = BUF_WIDEC(sb, row)) != 0) {
+                       for (i = col; i < len; i++) {
+                               if (ptr[i])
+                                       return True;
+                       }
+               }
+       })
+
        return False;
 }
Index: unicode/README
--- /dev/null   Sun Jul 17 19:46:18 1994
+++ xterm-106/unicode/README    Wed Jun  9 06:01:17 1999
@@ -0,0 +1,18 @@
+-- $XFree86$
+-- Thomas Dickey <dickey@clark.net>
+
+These are some scripts and datafiles used for generating tables used in the
+experimental UTF-8 implementation in xterm.
+
+To run the convmap.pl script, you will need a copy of UnicodeData-Latest.txt
+which is currently available as
+
+         ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData-Latest.txt
+
+It is a large file (~460kb), so it is not included in this distribution.
+
+convmap.pl is used to generate ../keysym2ucs.c, e.g.,
+
+       ./convmap.plp >../keysym2ucs.c
+
+keysym.map is input data for convmap.pl
Index: unicode/convmap.pl
--- /dev/null   Sun Jul 17 19:46:18 1994
+++ xterm-106/unicode/convmap.pl        Wed Jun  9 05:58:10 1999
@@ -0,0 +1,163 @@
+#!/usr/bin/perl
+# Generate keysym2ucs.c file
+
+sub utf8 ($) {
+    my $c = shift(@_);
+
+    if ($c < 0x80) {
+        return sprintf("%c", $c);
+    } elsif ($c < 0x800) {
+        return sprintf("%c%c", 0xc0 | ($c >> 6), 0x80 | ($c & 0x3f));
+    } elsif ($c < 0x10000) {
+        return sprintf("%c%c%c",
+                       0xe0 |  ($c >> 12),
+                       0x80 | (($c >>  6) & 0x3f),
+                       0x80 | ( $c        & 0x3f));
+    } elsif ($c < 0x200000) {
+        return sprintf("%c%c%c%c",
+                       0xf0 |  ($c >> 18),
+                       0x80 | (($c >> 12) & 0x3f),
+                       0x80 | (($c >>  6) & 0x3f),
+                       0x80 | ( $c        & 0x3f));
+    } elsif ($c < 0x4000000) {
+        return sprintf("%c%c%c%c%c",
+                       0xf8 |  ($c >> 24),
+                       0x80 | (($c >> 18) & 0x3f),
+                       0x80 | (($c >> 12) & 0x3f),
+                       0x80 | (($c >>  6) & 0x3f),
+                       0x80 | ( $c        & 0x3f));
+
+    } elsif ($c < 0x80000000) {
+        return sprintf("%c%c%c%c%c%c",
+                       0xfe |  ($c >> 30),
+                       0x80 | (($c >> 24) & 0x3f),
+                       0x80 | (($c >> 18) & 0x3f),
+                       0x80 | (($c >> 12) & 0x3f),
+                       0x80 | (($c >> 6)  & 0x3f),
+                       0x80 | ( $c        & 0x3f));
+    } else {
+        return utf8(0xfffd);
+    }
+}
+
+$unicodedata = "UnicodeData-Latest.txt";
+
+# read list of all Unicode names
+if (!open(UDATA, $unicodedata) && !open(UDATA, "$unicodedata")) {
+    die ("Can't open Unicode database '$unicodedata':\n$!\n\n" .
+         "Please make sure that you have downloaded the file\n" .
+         "ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData-Latest.txt\n");
+}
+while (<UDATA>) {
+    if (/^([0-9,A-F]{4});([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*)$/) {
+        $name{hex($1)} = $2;
+    } else {
+        die("Syntax error in line '$_' in file '$unicodedata'");
+    }
+}
+close(UDATA);
+
+# read mapping (from http://wsinwp07.win.tue.nl:1234/unicode/keysym.map)
+open(LIST, "<keysym.map") || die ("Can't open map file:\n$!\n");
+while (<LIST>) {
+    if (/^0x([0-9a-f]{4})\s+U([0-9a-f]{4})\s*(\#.*)?$/){
+        $keysym = hex($1);
+        $ucs = hex($2);
+        $keysym_to_ucs{$keysym} = $ucs;
+    } elsif (/^\s*\#/ || /^\s*$/) {
+    } else {
+        die("Syntax error in 'list' in line\n$_\n");
+    }
+}
+close(LIST);
+
+# read entries in keysymdef.h
+open(LIST, "</usr/include/X11/keysymdef.h") || die ("Can't open keysymdef.h:\n$!\n");
+while (<LIST>) {
+    if (/^\#define\s+XK_([A-Za-z_0-9]+)\s+0x([0-9a-fA-F]+)\s*(\/.*)?$/) {
+       next if /\/\* deprecated \*\//;
+       $keysymname = $1;
+       $keysym = hex($2);
+       $keysym_to_keysymname{$keysym} = $keysymname;
+    }
+}
+close(LIST);
+
+print <<EOT;
+/*
+ * This module converts keysym values into the corresponding ISO 10646-1
+ * (UCS, Unicode) values.
+ *
+ * The array keysymtab[] contains pairs of X11 keysym values for graphical
+ * characters and the corresponding Unicode value. The function
+ * keysym2ucs() maps a keysym onto a Unicode value using a binary search,
+ * therefore keysymtab[] must remain SORTED by keysym value.
+ *
+ * The keysym -> UTF-8 conversion will hopefully one day be provided
+ * by Xlib via XmbLookupString() and should ideally not have to be
+ * done in X applications. But we are not there yet.
+ *
+ * NOTE: The comments in the table below contain the actual character
+ * encoded in UTF-8, so for viewing and editing best use an editor in
+ * UTF-8 mode.
+ *
+ * Author: Markus G. Kuhn <mkuhn\@acm.org>, University of Cambridge, June 1999
+ *
+ * Special thanks to Richard Verhoeven <river\@win.tue.nl> for preparing
+ * an initial draft of the mapping table.
+ *
+ * This software is in the public domain. Share and enjoy!
+ */
+
+#include "keysym2ucs.h"
+
+struct codepair {
+  unsigned short keysym;
+  unsigned short ucs;
+} keysymtab[] = {
+EOT
+
+for $keysym (sort {$a <=> $b} keys(%keysym_to_keysymname)) {
+    $ucs = $keysym_to_ucs{$keysym};
+    next if $keysym >= 0xf000 || $keysym < 0x100;
+    if ($ucs) {
+       printf("  { 0x%04x, 0x%04x }, /*%28s %s %s */\n",
+              $keysym, $ucs, $keysym_to_keysymname{$keysym}, utf8($ucs),
+              defined($name{$ucs}) ? $name{$ucs} : "???" );
+    } else {
+       printf("/*  0x%04x   %39s ? ??? */\n",
+              $keysym, $keysym_to_keysymname{$keysym});
+    }
+}
+
+print <<EOT;
+};
+
+long keysym2ucs(KeySym keysym)
+{
+    int min = 0;
+    int max = sizeof(keysymtab) / sizeof(struct codepair);
+    int mid;
+
+    /* first check for Latin-1 characters (1:1 mapping) */
+    if ((keysym >= 0x0020 && keysym <= 0x007e) ||
+        (keysym >= 0x00a0 && keysym <= 0x00ff))
+        return keysym;
+
+    /* binary search in table */
+    while (max > min) {
+       mid = (min + max) / 2;
+       if (keysymtab[mid].keysym < keysym)
+           min = mid + 1;
+       else if (keysymtab[mid].keysym > keysym)
+           max = mid - 1;
+       else {
+           /* found it */
+           return keysymtab[mid].ucs;
+       }
+    }
+
+    /* no matching Unicode value found */
+    return -1;
+}
+EOT
Index: unicode/keysym.map
--- /dev/null   Sun Jul 17 19:46:18 1994
+++ xterm-106/unicode/keysym.map        Tue Jun  8 21:03:46 1999
@@ -0,0 +1,1060 @@
+# This list can be used to convert X11 Keysyms to Unicode 2.1 character. 
+# The list is not checked for correctness by Unicode officials.  Use it 
+# at your own risk and the creator is not responsable for any damage that 
+# occured due to using this list. 
+
+# The list is created by looking at the Keysym names and the Unicode data 
+# file.  Other mapping tables were used as a reference where needed. 
+# Due to a lack of knowledge of the Hebrew, Thai and Hangul symbols, 
+# expect errors in these sections.  The mapping of the keypad keys 
+# might also require some adjustments. 
+
+# The following fields are used: 
+# 1    The X11 keysym numbers from the include file keysymdef.h 
+# 2    The Unicode (2.1) position (U0000 means unknown Unicode position) 
+# # 
+# 3    the name of the X11 keysym (without XK_) 
+
+# Authors:  Richard Verhoeven, TUE, <river@win.tue.nl> 
+#           Markus Kuhn, University of Cambridge, <mkuhn@acm.org> 
+#  
+# You are free to use and modify this table.  If you introduce errors 
+# in the table, please remove the copyright line. If you remove errors, 
+# please let me know, so I can update my version. 
+
+0x0020   U0020   # space 
+0x0021   U0021   # exclam 
+0x0022   U0022   # quotedbl 
+0x0023   U0023   # numbersign 
+0x0024   U0024   # dollar 
+0x0025   U0025   # percent 
+0x0026   U0026   # ampersand 
+0x0027   U0027   # apostrophe 
+0x0027   U0027   # quoteright  /* deprecated */ 
+0x0028   U0028   # parenleft 
+0x0029   U0029   # parenright 
+0x002a   U002a   # asterisk 
+0x002b   U002b   # plus 
+0x002c   U002c   # comma 
+0x002d   U002d   # minus 
+0x002e   U002e   # period 
+0x002f   U002f   # slash 
+0x0030   U0030   # 0 
+0x0031   U0031   # 1 
+0x0032   U0032   # 2 
+0x0033   U0033   # 3 
+0x0034   U0034   # 4 
+0x0035   U0035   # 5 
+0x0036   U0036   # 6 
+0x0037   U0037   # 7 
+0x0038   U0038   # 8 
+0x0039   U0039   # 9 
+0x003a   U003a   # colon 
+0x003b   U003b   # semicolon 
+0x003c   U003c   # less 
+0x003d   U003d   # equal 
+0x003e   U003e   # greater 
+0x003f   U003f   # question 
+0x0040   U0040   # at 
+0x0041   U0041   # A 
+0x0042   U0042   # B 
+0x0043   U0043   # C 
+0x0044   U0044   # D 
+0x0045   U0045   # E 
+0x0046   U0046   # F 
+0x0047   U0047   # G 
+0x0048   U0048   # H 
+0x0049   U0049   # I 
+0x004a   U004a   # J 
+0x004b   U004b   # K 
+0x004c   U004c   # L 
+0x004d   U004d   # M 
+0x004e   U004e   # N 
+0x004f   U004f   # O 
+0x0050   U0050   # P 
+0x0051   U0051   # Q 
+0x0052   U0052   # R 
+0x0053   U0053   # S 
+0x0054   U0054   # T 
+0x0055   U0055   # U 
+0x0056   U0056   # V 
+0x0057   U0057   # W 
+0x0058   U0058   # X 
+0x0059   U0059   # Y 
+0x005a   U005a   # Z 
+0x005b   U005b   # bracketleft 
+0x005c   U005c   # backslash 
+0x005d   U005d   # bracketright 
+0x005e   U005e   # asciicircum 
+0x005f   U005f   # underscore 
+0x0060   U0060   # grave 
+0x0060   U0060   # quoteleft   /* deprecated */ 
+0x0061   U0061   # a 
+0x0062   U0062   # b 
+0x0063   U0063   # c 
+0x0064   U0064   # d 
+0x0065   U0065   # e 
+0x0066   U0066   # f 
+0x0067   U0067   # g 
+0x0068   U0068   # h 
+0x0069   U0069   # i 
+0x006a   U006a   # j 
+0x006b   U006b   # k 
+0x006c   U006c   # l 
+0x006d   U006d   # m 
+0x006e   U006e   # n 
+0x006f   U006f   # o 
+0x0070   U0070   # p 
+0x0071   U0071   # q 
+0x0072   U0072   # r 
+0x0073   U0073   # s 
+0x0074   U0074   # t 
+0x0075   U0075   # u 
+0x0076   U0076   # v 
+0x0077   U0077   # w 
+0x0078   U0078   # x 
+0x0079   U0079   # y 
+0x007a   U007a   # z 
+0x007b   U007b   # braceleft 
+0x007c   U007c   # bar 
+0x007d   U007d   # braceright 
+0x007e   U007e   # asciitilde 
+0x00a0   U00a0   # nobreakspace 
+0x00a1   U00a1   # exclamdown 
+0x00a2   U00a2   # cent 
+0x00a3   U00a3   # sterling 
+0x00a4   U00a4   # currency 
+0x00a5   U00a5   # yen 
+0x00a6   U00a6   # brokenbar 
+0x00a7   U00a7   # section 
+0x00a8   U00a8   # diaeresis 
+0x00a9   U00a9   # copyright 
+0x00aa   U00aa   # ordfeminine 
+0x00ab   U00ab   # guillemotleft       /* left angle quotation mark */ 
+0x00ac   U00ac   # notsign 
+0x00ad   U00ad   # hyphen 
+0x00ae   U00ae   # registered 
+0x00af   U00af   # macron 
+0x00b0   U00b0   # degree 
+0x00b1   U00b1   # plusminus 
+0x00b2   U00b2   # twosuperior 
+0x00b3   U00b3   # threesuperior 
+0x00b4   U00b4   # acute 
+0x00b5   U00b5   # mu 
+0x00b6   U00b6   # paragraph 
+0x00b7   U00b7   # periodcentered 
+0x00b8   U00b8   # cedilla 
+0x00b9   U00b9   # onesuperior 
+0x00ba   U00ba   # masculine 
+0x00bb   U00bb   # guillemotright      /* right angle quotation mark */ 
+0x00bc   U00bc   # onequarter 
+0x00bd   U00bd   # onehalf 
+0x00be   U00be   # threequarters 
+0x00bf   U00bf   # questiondown 
+0x00c0   U00c0   # Agrave 
+0x00c1   U00c1   # Aacute 
+0x00c2   U00c2   # Acircumflex 
+0x00c3   U00c3   # Atilde 
+0x00c4   U00c4   # Adiaeresis 
+0x00c5   U00c5   # Aring 
+0x00c6   U00c6   # AE 
+0x00c7   U00c7   # Ccedilla 
+0x00c8   U00c8   # Egrave 
+0x00c9   U00c9   # Eacute 
+0x00ca   U00ca   # Ecircumflex 
+0x00cb   U00cb   # Ediaeresis 
+0x00cc   U00cc   # Igrave 
+0x00cd   U00cd   # Iacute 
+0x00ce   U00ce   # Icircumflex 
+0x00cf   U00cf   # Idiaeresis 
+0x00d0   U00d0   # ETH 
+0x00d0   U00d0   # Eth /* deprecated */ 
+0x00d1   U00d1   # Ntilde 
+0x00d2   U00d2   # Ograve 
+0x00d3   U00d3   # Oacute 
+0x00d4   U00d4   # Ocircumflex 
+0x00d5   U00d5   # Otilde 
+0x00d6   U00d6   # Odiaeresis 
+0x00d7   U00d7   # multiply 
+0x00d8   U00d8   # Ooblique 
+0x00d9   U00d9   # Ugrave 
+0x00da   U00da   # Uacute 
+0x00db   U00db   # Ucircumflex 
+0x00dc   U00dc   # Udiaeresis 
+0x00dd   U00dd   # Yacute 
+0x00de   U00de   # THORN 
+0x00de   U00de   # Thorn       /* deprecated */ 
+0x00df   U00df   # ssharp 
+0x00e0   U00e0   # agrave 
+0x00e1   U00e1   # aacute 
+0x00e2   U00e2   # acircumflex 
+0x00e3   U00e3   # atilde 
+0x00e4   U00e4   # adiaeresis 
+0x00e5   U00e5   # aring 
+0x00e6   U00e6   # ae 
+0x00e7   U00e7   # ccedilla 
+0x00e8   U00e8   # egrave 
+0x00e9   U00e9   # eacute 
+0x00ea   U00ea   # ecircumflex 
+0x00eb   U00eb   # ediaeresis 
+0x00ec   U00ec   # igrave 
+0x00ed   U00ed   # iacute 
+0x00ee   U00ee   # icircumflex 
+0x00ef   U00ef   # idiaeresis 
+0x00f0   U00f0   # eth 
+0x00f1   U00f1   # ntilde 
+0x00f2   U00f2   # ograve 
+0x00f3   U00f3   # oacute 
+0x00f4   U00f4   # ocircumflex 
+0x00f5   U00f5   # otilde 
+0x00f6   U00f6   # odiaeresis 
+0x00f7   U00f7   # division 
+0x00f8   U00f8   # oslash 
+0x00f9   U00f9   # ugrave 
+0x00fa   U00fa   # uacute 
+0x00fb   U00fb   # ucircumflex 
+0x00fc   U00fc   # udiaeresis 
+0x00fd   U00fd   # yacute 
+0x00fe   U00fe   # thorn 
+0x00ff   U00ff   # ydiaeresis 
+0x01a1   U0104   # Aogonek 
+0x01a2   U02d8   # breve 
+0x01a3   U0141   # Lstroke 
+0x01a5   U013d   # Lcaron 
+0x01a6   U015a   # Sacute 
+0x01a9   U0160   # Scaron 
+0x01aa   U015e   # Scedilla 
+0x01ab   U0164   # Tcaron 
+0x01ac   U0179   # Zacute 
+0x01ae   U017d   # Zcaron 
+0x01af   U017b   # Zabovedot 
+0x01b1   U0105   # aogonek 
+0x01b2   U02db   # ogonek 
+0x01b3   U0142   # lstroke 
+0x01b5   U013e   # lcaron 
+0x01b6   U015b   # sacute 
+0x01b7   U02c7   # caron 
+0x01b9   U0161   # scaron 
+0x01ba   U015f   # scedilla 
+0x01bb   U0165   # tcaron 
+0x01bc   U017a   # zacute 
+0x01bd   U02dd   # doubleacute 
+0x01be   U017e   # zcaron 
+0x01bf   U017c   # zabovedot 
+0x01c0   U0154   # Racute 
+0x01c3   U0102   # Abreve 
+0x01c5   U0139   # Lacute 
+0x01c6   U0106   # Cacute 
+0x01c8   U010c   # Ccaron 
+0x01ca   U0118   # Eogonek 
+0x01cc   U011a   # Ecaron 
+0x01cf   U010e   # Dcaron 
+0x01d0   U0110   # Dstroke 
+0x01d1   U0143   # Nacute 
+0x01d2   U0147   # Ncaron 
+0x01d5   U0150   # Odoubleacute 
+0x01d8   U0158   # Rcaron 
+0x01d9   U016e   # Uring 
+0x01db   U0170   # Udoubleacute 
+0x01de   U0162   # Tcedilla 
+0x01e0   U0155   # racute 
+0x01e3   U0103   # abreve 
+0x01e5   U013a   # lacute 
+0x01e6   U0107   # cacute 
+0x01e8   U010d   # ccaron 
+0x01ea   U0119   # eogonek 
+0x01ec   U011b   # ecaron 
+0x01ef   U010f   # dcaron 
+0x01f0   U0111   # dstroke 
+0x01f1   U0144   # nacute 
+0x01f2   U0148   # ncaron 
+0x01f5   U0151   # odoubleacute 
+0x01f8   U0159   # rcaron 
+0x01f9   U016f   # uring 
+0x01fb   U0171   # udoubleacute 
+0x01fe   U0163   # tcedilla 
+0x01ff   U02d9   # abovedot 
+0x02a1   U0126   # Hstroke 
+0x02a6   U0124   # Hcircumflex 
+0x02a9   U0130   # Iabovedot 
+0x02ab   U011e   # Gbreve 
+0x02ac   U0134   # Jcircumflex 
+0x02b1   U0127   # hstroke 
+0x02b6   U0125   # hcircumflex 
+0x02b9   U0131   # idotless 
+0x02bb   U011f   # gbreve 
+0x02bc   U0135   # jcircumflex 
+0x02c5   U010a   # Cabovedot 
+0x02c6   U0108   # Ccircumflex 
+0x02d5   U0120   # Gabovedot 
+0x02d8   U011c   # Gcircumflex 
+0x02dd   U016c   # Ubreve 
+0x02de   U015c   # Scircumflex 
+0x02e5   U010b   # cabovedot 
+0x02e6   U0109   # ccircumflex 
+0x02f5   U0121   # gabovedot 
+0x02f8   U011d   # gcircumflex 
+0x02fd   U016d   # ubreve 
+0x02fe   U015d   # scircumflex 
+0x03a2   U0138   # kra 
+0x03a3   U0156   # Rcedilla 
+0x03a5   U0128   # Itilde 
+0x03a6   U013b   # Lcedilla 
+0x03aa   U0112   # Emacron 
+0x03ab   U0122   # Gcedilla 
+0x03ac   U0166   # Tslash 
+0x03b3   U0157   # rcedilla 
+0x03b5   U0129   # itilde 
+0x03b6   U013c   # lcedilla 
+0x03ba   U0113   # emacron 
+0x03bb   U0123   # gcedilla 
+0x03bc   U0167   # tslash 
+0x03bd   U014a   # ENG 
+0x03bf   U014b   # eng 
+0x03c0   U0100   # Amacron 
+0x03c7   U012e   # Iogonek 
+0x03cc   U0116   # Eabovedot 
+0x03cf   U012a   # Imacron 
+0x03d1   U0145   # Ncedilla 
+0x03d2   U014c   # Omacron 
+0x03d3   U0136   # Kcedilla 
+0x03d9   U0172   # Uogonek 
+0x03dd   U0168   # Utilde 
+0x03de   U016a   # Umacron 
+0x03e0   U0101   # amacron 
+0x03e7   U012f   # iogonek 
+0x03ec   U0117   # eabovedot 
+0x03ef   U012b   # imacron 
+0x03f1   U0146   # ncedilla 
+0x03f2   U014d   # omacron 
+0x03f3   U0137   # kcedilla 
+0x03f9   U0173   # uogonek 
+0x03fd   U0169   # utilde 
+0x03fe   U016b   # umacron 
+0x13bc   U0152   # OE                   
+0x13bd   U0153   # oe                   
+0x13be   U0178   # Ydiaeresis           
+0x047e   U203e   # overline 
+0x04a1   U3002   # kana_fullstop 
+0x04a2   U300c   # kana_openingbracket 
+0x04a3   U300d   # kana_closingbracket 
+0x04a4   U3001   # kana_comma 
+0x04a5   U30fb   # kana_conjunctive 
+0x04a6   U30f2   # kana_WO 
+0x04a7   U30a1   # kana_a 
+0x04a8   U30a3   # kana_i 
+0x04a9   U30a5   # kana_u 
+0x04aa   U30a7   # kana_e 
+0x04ab   U30a9   # kana_o 
+0x04ac   U30e3   # kana_ya 
+0x04ad   U30e5   # kana_yu 
+0x04ae   U30e7   # kana_yo 
+0x04af   U30c3   # kana_tsu 
+0x04b0   U30fc   # prolongedsound 
+0x04b1   U30a2   # kana_A 
+0x04b2   U30a4   # kana_I 
+0x04b3   U30a6   # kana_U 
+0x04b4   U30a8   # kana_E 
+0x04b5   U30aa   # kana_O 
+0x04b6   U30ab   # kana_KA 
+0x04b7   U30ad   # kana_KI 
+0x04b8   U30af   # kana_KU 
+0x04b9   U30b1   # kana_KE 
+0x04ba   U30b3   # kana_KO 
+0x04bb   U30b5   # kana_SA 
+0x04bc   U30b7   # kana_SHI 
+0x04bd   U30b9   # kana_SU 
+0x04be   U30bb   # kana_SE 
+0x04bf   U30bd   # kana_SO 
+0x04c0   U30bf   # kana_TA 
+0x04c1   U30c1   # kana_CHI 
+0x04c2   U30c4   # kana_TSU 
+0x04c3   U30c6   # kana_TE 
+0x04c4   U30c8   # kana_TO 
+0x04c5   U30ca   # kana_NA 
+0x04c6   U30cb   # kana_NI 
+0x04c7   U30cc   # kana_NU 
+0x04c8   U30cd   # kana_NE 
+0x04c9   U30ce   # kana_NO 
+0x04ca   U30cf   # kana_HA 
+0x04cb   U30d2   # kana_HI 
+0x04cc   U30d5   # kana_FU 
+0x04cd   U30d8   # kana_HE 
+0x04ce   U30db   # kana_HO 
+0x04cf   U30de   # kana_MA 
+0x04d0   U30df   # kana_MI 
+0x04d1   U30e0   # kana_MU 
+0x04d2   U30e1   # kana_ME 
+0x04d3   U30e2   # kana_MO 
+0x04d4   U30e4   # kana_YA 
+0x04d5   U30e6   # kana_YU 
+0x04d6   U30e8   # kana_YO 
+0x04d7   U30e9   # kana_RA 
+0x04d8   U30ea   # kana_RI 
+0x04d9   U30eb   # kana_RU 
+0x04da   U30ec   # kana_RE 
+0x04db   U30ed   # kana_RO 
+0x04dc   U30ef   # kana_WA 
+0x04dd   U30f3   # kana_N 
+0x04de   U309b   # voicedsound 
+0x04df   U309c   # semivoicedsound 
+0x05ac   U060c   # Arabic_comma 
+0x05bb   U061b   # Arabic_semicolon 
+0x05bf   U061f   # Arabic_question_mark 
+0x05c1   U0621   # Arabic_hamza 
+0x05c2   U0622   # Arabic_maddaonalef 
+0x05c3   U0623   # Arabic_hamzaonalef 
+0x05c4   U0624   # Arabic_hamzaonwaw 
+0x05c5   U0625   # Arabic_hamzaunderalef 
+0x05c6   U0626   # Arabic_hamzaonyeh 
+0x05c7   U0627   # Arabic_alef 
+0x05c8   U0628   # Arabic_beh 
+0x05c9   U0629   # Arabic_tehmarbuta 
+0x05ca   U062a   # Arabic_teh 
+0x05cb   U062b   # Arabic_theh 
+0x05cc   U062c   # Arabic_jeem 
+0x05cd   U062d   # Arabic_hah 
+0x05ce   U062e   # Arabic_khah 
+0x05cf   U062f   # Arabic_dal 
+0x05d0   U0630   # Arabic_thal 
+0x05d1   U0631   # Arabic_ra 
+0x05d2   U0632   # Arabic_zain 
+0x05d3   U0633   # Arabic_seen 
+0x05d4   U0634   # Arabic_sheen 
+0x05d5   U0635   # Arabic_sad 
+0x05d6   U0636   # Arabic_dad 
+0x05d7   U0637   # Arabic_tah 
+0x05d8   U0638   # Arabic_zah 
+0x05d9   U0639   # Arabic_ain 
+0x05da   U063a   # Arabic_ghain 
+0x05e0   U0640   # Arabic_tatweel 
+0x05e1   U0641   # Arabic_feh 
+0x05e2   U0642   # Arabic_qaf 
+0x05e3   U0643   # Arabic_kaf 
+0x05e4   U0644   # Arabic_lam 
+0x05e5   U0645   # Arabic_meem 
+0x05e6   U0646   # Arabic_noon 
+0x05e7   U0647   # Arabic_ha 
+0x05e8   U0648   # Arabic_waw 
+0x05e9   U0649   # Arabic_alefmaksura 
+0x05ea   U064a   # Arabic_yeh 
+0x05eb   U064b   # Arabic_fathatan 
+0x05ec   U064c   # Arabic_dammatan 
+0x05ed   U064d   # Arabic_kasratan 
+0x05ee   U064e   # Arabic_fatha 
+0x05ef   U064f   # Arabic_damma 
+0x05f0   U0650   # Arabic_kasra 
+0x05f1   U0651   # Arabic_shadda 
+0x05f2   U0652   # Arabic_sukun 
+0x06a1   U0452   # Serbian_dje 
+0x06a2   U0453   # Macedonia_gje 
+0x06a3   U0451   # Cyrillic_io 
+0x06a4   U0454   # Ukrainian_ie 
+0x06a5   U0455   # Macedonia_dse 
+0x06a6   U0456   # Ukrainian_i 
+0x06a7   U0457   # Ukrainian_yi 
+0x06a8   U0458   # Cyrillic_je 
+0x06a9   U0459   # Cyrillic_lje 
+0x06aa   U045a   # Cyrillic_nje 
+0x06ab   U045b   # Serbian_tshe 
+0x06ac   U045c   # Macedonia_kje 
+0x06ae   U045e   # Byelorussian_shortu 
+0x06af   U045f   # Cyrillic_dzhe 
+0x06b0   U2116   # numerosign 
+0x06b1   U0402   # Serbian_DJE 
+0x06b2   U0403   # Macedonia_GJE 
+0x06b3   U0401   # Cyrillic_IO 
+0x06b4   U0404   # Ukrainian_IE 
+0x06b5   U0405   # Macedonia_DSE 
+0x06b6   U0406   # Ukrainian_I 
+0x06b7   U0407   # Ukrainian_YI 
+0x06b8   U0408   # Cyrillic_JE 
+0x06b9   U0409   # Cyrillic_LJE 
+0x06ba   U040a   # Cyrillic_NJE 
+0x06bb   U040b   # Serbian_TSHE 
+0x06bc   U040c   # Macedonia_KJE 
+0x06be   U040e   # Byelorussian_SHORTU 
+0x06bf   U040f   # Cyrillic_DZHE 
+0x06c0   U044e   # Cyrillic_yu 
+0x06c1   U0430   # Cyrillic_a 
+0x06c2   U0431   # Cyrillic_be 
+0x06c3   U0446   # Cyrillic_tse 
+0x06c4   U0434   # Cyrillic_de 
+0x06c5   U0435   # Cyrillic_ie 
+0x06c6   U0444   # Cyrillic_ef 
+0x06c7   U0433   # Cyrillic_ghe 
+0x06c8   U0445   # Cyrillic_ha 
+0x06c9   U0438   # Cyrillic_i 
+0x06ca   U0439   # Cyrillic_shorti 
+0x06cb   U043a   # Cyrillic_ka 
+0x06cc   U043b   # Cyrillic_el 
+0x06cd   U043c   # Cyrillic_em 
+0x06ce   U043d   # Cyrillic_en 
+0x06cf   U043e   # Cyrillic_o 
+0x06d0   U043f   # Cyrillic_pe 
+0x06d1   U044f   # Cyrillic_ya 
+0x06d2   U0440   # Cyrillic_er 
+0x06d3   U0441   # Cyrillic_es 
+0x06d4   U0442   # Cyrillic_te 
+0x06d5   U0443   # Cyrillic_u 
+0x06d6   U0436   # Cyrillic_zhe 
+0x06d7   U0432   # Cyrillic_ve 
+0x06d8   U044c   # Cyrillic_softsign 
+0x06d9   U044b   # Cyrillic_yeru 
+0x06da   U0437   # Cyrillic_ze 
+0x06db   U0448   # Cyrillic_sha 
+0x06dc   U044d   # Cyrillic_e 
+0x06dd   U0449   # Cyrillic_shcha 
+0x06de   U0447   # Cyrillic_che 
+0x06df   U044a   # Cyrillic_hardsign 
+0x06e0   U042e   # Cyrillic_YU 
+0x06e1   U0410   # Cyrillic_A 
+0x06e2   U0411   # Cyrillic_BE 
+0x06e3   U0426   # Cyrillic_TSE 
+0x06e4   U0414   # Cyrillic_DE 
+0x06e5   U0415   # Cyrillic_IE 
+0x06e6   U0424   # Cyrillic_EF 
+0x06e7   U0413   # Cyrillic_GHE 
+0x06e8   U0425   # Cyrillic_HA 
+0x06e9   U0418   # Cyrillic_I 
+0x06ea   U0419   # Cyrillic_SHORTI 
+0x06eb   U041a   # Cyrillic_KA 
+0x06ec   U041b   # Cyrillic_EL 
+0x06ed   U041c   # Cyrillic_EM 
+0x06ee   U041d   # Cyrillic_EN 
+0x06ef   U041e   # Cyrillic_O 
+0x06f0   U041f   # Cyrillic_PE 
+0x06f1   U042f   # Cyrillic_YA 
+0x06f2   U0420   # Cyrillic_ER 
+0x06f3   U0421   # Cyrillic_ES 
+0x06f4   U0422   # Cyrillic_TE 
+0x06f5   U0423   # Cyrillic_U 
+0x06f6   U0416   # Cyrillic_ZHE 
+0x06f7   U0412   # Cyrillic_VE 
+0x06f8   U042c   # Cyrillic_SOFTSIGN 
+0x06f9   U042b   # Cyrillic_YERU 
+0x06fa   U0417   # Cyrillic_ZE 
+0x06fb   U0428   # Cyrillic_SHA 
+0x06fc   U042d   # Cyrillic_E 
+0x06fd   U0429   # Cyrillic_SHCHA 
+0x06fe   U0427   # Cyrillic_CHE 
+0x06ff   U042a   # Cyrillic_HARDSIGN 
+0x07a1   U0386   # Greek_ALPHAaccent 
+0x07a2   U0388   # Greek_EPSILONaccent 
+0x07a3   U0389   # Greek_ETAaccent 
+0x07a4   U038a   # Greek_IOTAaccent 
+0x07a5   U03aa   # Greek_IOTAdiaeresis 
+0x07a7   U038c   # Greek_OMICRONaccent 
+0x07a8   U038e   # Greek_UPSILONaccent 
+0x07a9   U03ab   # Greek_UPSILONdieresis 
+0x07ab   U038f   # Greek_OMEGAaccent 
+0x07ae   U0385   # Greek_accentdieresis 
+0x07af   U2015   # Greek_horizbar 
+0x07b1   U03ac   # Greek_alphaaccent 
+0x07b2   U03ad   # Greek_epsilonaccent 
+0x07b3   U03ae   # Greek_etaaccent 
+0x07b4   U03af   # Greek_iotaaccent 
+0x07b5   U03ca   # Greek_iotadieresis 
+0x07b6   U0390   # Greek_iotaaccentdieresis 
+0x07b7   U03cc   # Greek_omicronaccent 
+0x07b8   U03cd   # Greek_upsilonaccent 
+0x07b9   U03cb   # Greek_upsilondieresis 
+0x07ba   U03b0   # Greek_upsilonaccentdieresis 
+0x07bb   U03ce   # Greek_omegaaccent 
+0x07c1   U0391   # Greek_ALPHA 
+0x07c2   U0392   # Greek_BETA 
+0x07c3   U0393   # Greek_GAMMA 
+0x07c4   U0394   # Greek_DELTA 
+0x07c5   U0395   # Greek_EPSILON 
+0x07c6   U0396   # Greek_ZETA 
+0x07c7   U0397   # Greek_ETA 
+0x07c8   U0398   # Greek_THETA 
+0x07c9   U0399   # Greek_IOTA 
+0x07ca   U039a   # Greek_KAPPA 
+0x07cb   U039b   # Greek_LAMBDA 
+0x07cb   U039b   # Greek_LAMDA 
+0x07cc   U039c   # Greek_MU 
+0x07cd   U039d   # Greek_NU 
+0x07ce   U039e   # Greek_XI 
+0x07cf   U039f   # Greek_OMICRON 
+0x07d0   U03a0   # Greek_PI 
+0x07d1   U03a1   # Greek_RHO 
+0x07d2   U03a3   # Greek_SIGMA 
+0x07d4   U03a4   # Greek_TAU 
+0x07d5   U03a5   # Greek_UPSILON 
+0x07d6   U03a6   # Greek_PHI 
+0x07d7   U03a7   # Greek_CHI 
+0x07d8   U03a8   # Greek_PSI 
+0x07d9   U03a9   # Greek_OMEGA 
+0x07e1   U03b1   # Greek_alpha 
+0x07e2   U03b2   # Greek_beta 
+0x07e3   U03b3   # Greek_gamma 
+0x07e4   U03b4   # Greek_delta 
+0x07e5   U03b5   # Greek_epsilon 
+0x07e6   U03b6   # Greek_zeta 
+0x07e7   U03b7   # Greek_eta 
+0x07e8   U03b8   # Greek_theta 
+0x07e9   U03b9   # Greek_iota 
+0x07ea   U03ba   # Greek_kappa 
+0x07eb   U03bb   # Greek_lambda 
+0x07ec   U03bc   # Greek_mu 
+0x07ed   U03bd   # Greek_nu 
+0x07ee   U03be   # Greek_xi 
+0x07ef   U03bf   # Greek_omicron 
+0x07f0   U03c0   # Greek_pi 
+0x07f1   U03c1   # Greek_rho 
+0x07f2   U03c3   # Greek_sigma 
+0x07f3   U03c2   # Greek_finalsmallsigma 
+0x07f4   U03c4   # Greek_tau 
+0x07f5   U03c5   # Greek_upsilon 
+0x07f6   U03c6   # Greek_phi 
+0x07f7   U03c7   # Greek_chi 
+0x07f8   U03c8   # Greek_psi 
+0x07f9   U03c9   # Greek_omega 
+0x08a1   U0000   # leftradical 
+0x08a2   U0000   # topleftradical 
+0x08a3   U0000   # horizconnector 
+0x08a4   U2320   # topintegral 
+0x08a5   U2321   # botintegral 
+0x08a6   U2502   # vertconnector 
+0x08a7   U0000   # topleftsqbracket 
+0x08a8   U0000   # botleftsqbracket 
+0x08a9   U0000   # toprightsqbracket 
+0x08aa   U0000   # botrightsqbracket 
+0x08ab   U0000   # topleftparens 
+0x08ac   U0000   # botleftparens 
+0x08ad   U0000   # toprightparens 
+0x08ae   U0000   # botrightparens 
+0x08af   U0000   # leftmiddlecurlybrace 
+0x08b0   U0000   # rightmiddlecurlybrace 
+0x08b1   U0000   # topleftsummation 
+0x08b2   U0000   # botleftsummation 
+0x08b3   U0000   # topvertsummationconnector 
+0x08b4   U0000   # botvertsummationconnector 
+0x08b5   U0000   # toprightsummation 
+0x08b6   U0000   # botrightsummation 
+0x08b7   U0000   # rightmiddlesummation 
+0x08bc   U2264   # lessthanequal 
+0x08bd   U2260   # notequal 
+0x08be   U2265   # greaterthanequal 
+0x08bf   U222b   # integral 
+0x08c0   U2234   # therefore 
+0x08c1   U221d   # variation 
+0x08c2   U221e   # infinity 
+0x08c5   U2207   # nabla 
+0x08c8   U2245   # approximate 
+0x08c9   U0000   # similarequal 
+0x08cd   U21d4   # ifonlyif 
+0x08ce   U21d2   # implies 
+0x08cf   U2261   # identical 
+0x08d6   U221a   # radical 
+0x08da   U2282   # includedin 
+0x08db   U2283   # includes 
+0x08dc   U2229   # intersection 
+0x08dd   U222a   # union 
+0x08de   U2227   # logicaland 
+0x08df   U2228   # logicalor 
+0x08ef   U2202   # partialderivative 
+0x08f6   U0192   # function 
+0x08fb   U2190   # leftarrow 
+0x08fc   U2191   # uparrow 
+0x08fd   U2192   # rightarrow 
+0x08fe   U2193   # downarrow 
+0x09df   U2422   # blank 
+0x09e0   U25c6   # soliddiamond 
+0x09e1   U2592   # checkerboard 
+0x09e2   U2409   # ht 
+0x09e3   U240c   # ff 
+0x09e4   U240d   # cr 
+0x09e5   U240a   # lf 
+0x09e8   U2424   # nl 
+0x09e9   U240b   # vt 
+0x09ea   U2518   # lowrightcorner 
+0x09eb   U2510   # uprightcorner 
+0x09ec   U250c   # upleftcorner 
+0x09ed   U2514   # lowleftcorner 
+0x09ee   U253c   # crossinglines 
+0x09ef   U0000   # horizlinescan1 
+0x09f0   U0000   # horizlinescan3 
+0x09f1   U2500   # horizlinescan5 
+0x09f2   U0000   # horizlinescan7 
+0x09f3   U0000   # horizlinescan9 
+0x09f4   U251c   # leftt 
+0x09f5   U2524   # rightt 
+0x09f6   U2534   # bott 
+0x09f7   U252c   # topt 
+0x09f8   U2502   # vertbar 
+0xfe50   U0300   # dead_grave 
+0xfe51   U0301   # dead_acute 
+0xfe52   U0302   # dead_circumflex 
+0xfe53   U0303   # dead_tilde 
+0xfe54   U0304   # dead_macron 
+0xfe55   U0306   # dead_breve 
+0xfe56   U0307   # dead_abovedot 
+0xfe57   U0308   # dead_diaeresis 
+0xfe58   U030a   # dead_abovering 
+0xfe59   U030b   # dead_doubleacute 
+0xfe5a   U030c   # dead_caron 
+0xfe5b   U0327   # dead_cedilla 
+0xfe5c   U0328   # dead_ogonek 
+0xfe5d   U0345   # dead_iota 
+0xfe5e   U3099   # dead_voiced_sound 
+0xfe5f   U309a   # dead_semivoiced_sound 
+0xff08   U0008   # BackSpace   /* back space, back char */ 
+0xff09   U0009   # Tab 
+0xff0a   U000a   # Linefeed    /* Linefeed, LF */ 
+0xff0b   U000b   # Clear 
+0xff0d   U000d   # Return      /* Return, enter */ 
+0xff13   U0013   # Pause       /* Pause, hold */ 
+0xff14   U0014   # Scroll_Lock 
+0xff15   U0015   # Sys_Req 
+0xff1b   U001b   # Escape 
+0xff80   U0032   # KP_Space    /* space */ 
+0xff89   U0009   # KP_Tab 
+0xff8d   U000d   # KP_Enter    /* enter */ 
+0xffaa   U002a   # KP_Multiply 
+0xffab   U002b   # KP_Add 
+0xffac   U002c   # KP_Separator        /* separator, often comma */ 
+0xffad   U002d   # KP_Subtract 
+0xffae   U002e   # KP_Decimal 
+0xffaf   U002f   # KP_Divide 
+0xffb0   U0030   # KP_0 
+0xffb1   U0031   # KP_1 
+0xffb2   U0032   # KP_2 
+0xffb3   U0033   # KP_3 
+0xffb4   U0034   # KP_4 
+0xffb5   U0035   # KP_5 
+0xffb6   U0036   # KP_6 
+0xffb7   U0037   # KP_7 
+0xffb8   U0038   # KP_8 
+0xffb9   U0039   # KP_9 
+0xffbd   U003d   # KP_Equal    /* equals */ 
+0x0aa1   U2003   # emspace 
+0x0aa2   U2002   # enspace 
+0x0aa3   U2004   # em3space 
+0x0aa4   U2005   # em4space 
+0x0aa5   U2007   # digitspace 
+0x0aa6   U2008   # punctspace 
+0x0aa7   U2009   # thinspace 
+0x0aa8   U200a   # hairspace 
+0x0aa9   U2014   # emdash 
+0x0aaa   U2013   # endash 
+0x0aac   U0000   # signifblank 
+0x0aae   U2026   # ellipsis 
+0x0aaf   U0000   # doubbaselinedot 
+0x0ab0   U2153   # onethird 
+0x0ab1   U2154   # twothirds 
+0x0ab2   U2155   # onefifth 
+0x0ab3   U2156   # twofifths 
+0x0ab4   U2157   # threefifths 
+0x0ab5   U2158   # fourfifths 
+0x0ab6   U2159   # onesixth 
+0x0ab7   U215a   # fivesixths 
+0x0ab8   U2105   # careof 
+0x0abb   U2012   # figdash 
+0x0abc   U2329   # leftanglebracket 
+0x0abd   U002e   # decimalpoint 
+0x0abe   U232a   # rightanglebracket 
+0x0abf   U0000   # marker 
+0x0ac3   U215b   # oneeighth 
+0x0ac4   U215c   # threeeighths 
+0x0ac5   U215d   # fiveeighths 
+0x0ac6   U215e   # seveneighths 
+0x0ac9   U2122   # trademark 
+0x0aca   U2613   # signaturemark 
+0x0acb   U0000   # trademarkincircle 
+0x0acc   U25c1   # leftopentriangle 
+0x0acd   U25b7   # rightopentriangle 
+0x0ace   U25cb   # emopencircle 
+0x0acf   U25a1   # emopenrectangle 
+0x0ad0   U2018   # leftsinglequotemark 
+0x0ad1   U2019   # rightsinglequotemark 
+0x0ad2   U201c   # leftdoublequotemark 
+0x0ad3   U201d   # rightdoublequotemark 
+0x0ad4   U211e   # prescription 
+0x0ad6   U2032   # minutes 
+0x0ad7   U2033   # seconds 
+0x0ad9   U271d   # latincross 
+0x0ada   U0000   # hexagram 
+0x0adb   U25ac   # filledrectbullet 
+0x0adc   U25c0   # filledlefttribullet 
+0x0add   U25b6   # filledrighttribullet 
+0x0ade   U25cf   # emfilledcircle 
+0x0adf   U25a0   # emfilledrect 
+0x0ae0   U25e6   # enopencircbullet 
+0x0ae1   U25ab   # enopensquarebullet 
+0x0ae2   U25ad   # openrectbullet 
+0x0ae3   U25b3   # opentribulletup 
+0x0ae4   U25bd   # opentribulletdown 
+0x0ae5   U2606   # openstar 
+0x0ae6   U2022   # enfilledcircbullet 
+0x0ae7   U25aa   # enfilledsqbullet 
+0x0ae8   U25b2   # filledtribulletup 
+0x0ae9   U25bc   # filledtribulletdown 
+0x0aea   U261c   # leftpointer 
+0x0aeb   U261e   # rightpointer 
+0x0aec   U2663   # club 
+0x0aed   U2666   # diamond 
+0x0aee   U2665   # heart 
+0x0af0   U2720   # maltesecross 
+0x0af1   U2020   # dagger 
+0x0af2   U2021   # doubledagger 
+0x0af3   U2713   # checkmark 
+0x0af4   U2717   # ballotcross 
+0x0af5   U266f   # musicalsharp 
+0x0af6   U266d   # musicalflat 
+0x0af7   U2642   # malesymbol 
+0x0af8   U2640   # femalesymbol 
+0x0af9   U260e   # telephone 
+0x0afa   U2315   # telephonerecorder 
+0x0afb   U2117   # phonographcopyright 
+0x0afc   U2038   # caret 
+0x0afd   U201a   # singlelowquotemark 
+0x0afe   U201e   # doublelowquotemark 
+0x0aff   U0000   # cursor 
+0x0ba3   U003c   # leftcaret 
+0x0ba6   U003e   # rightcaret 
+0x0ba8   U2228   # downcaret 
+0x0ba9   U2227   # upcaret 
+0x0bc0   U00af   # overbar 
+0x0bc2   U22a4   # downtack 
+0x0bc3   U2229   # upshoe 
+0x0bc4   U230a   # downstile 
+0x0bc6   U005f   # underbar 
+0x0bca   U2218   # jot 
+0x0bcc   U2395   # quad 
+0x0bce   U22a5   # uptack 
+0x0bcf   U25cb   # circle 
+0x0bd3   U2308   # upstile 
+0x0bd6   U222a   # downshoe 
+0x0bd8   U2283   # rightshoe 
+0x0bda   U2282   # leftshoe 
+0x0bdc   U22a3   # lefttack 
+0x0bfc   U22a2   # righttack 
+0x0cdf   U2017   # hebrew_doublelowline 
+0x0ce0   U05d0   # hebrew_aleph 
+0x0ce1   U05d1   # hebrew_bet 
+0x0ce1   U05d1   # hebrew_beth  /* deprecated */ 
+0x0ce2   U05d2   # hebrew_gimel 
+0x0ce2   U05d2   # hebrew_gimmel  /* deprecated */ 
+0x0ce3   U05d3   # hebrew_dalet 
+0x0ce3   U05d3   # hebrew_daleth  /* deprecated */ 
+0x0ce4   U05d4   # hebrew_he 
+0x0ce5   U05d5   # hebrew_waw 
+0x0ce6   U05d6   # hebrew_zain 
+0x0ce6   U05d6   # hebrew_zayin  /* deprecated */ 
+0x0ce7   U05d7   # hebrew_chet 
+0x0ce7   U05d7   # hebrew_het  /* deprecated */ 
+0x0ce8   U05d8   # hebrew_tet 
+0x0ce8   U05d8   # hebrew_teth  /* deprecated */ 
+0x0ce9   U05d9   # hebrew_yod 
+0x0cea   U05da   # hebrew_finalkaph 
+0x0ceb   U05db   # hebrew_kaph 
+0x0cec   U05dc   # hebrew_lamed 
+0x0ced   U05dd   # hebrew_finalmem 
+0x0cee   U05de   # hebrew_mem 
+0x0cef   U05df   # hebrew_finalnun 
+0x0cf0   U05e0   # hebrew_nun 
+0x0cf1   U05e1   # hebrew_samech 
+0x0cf1   U05e1   # hebrew_samekh  /* deprecated */ 
+0x0cf2   U05e2   # hebrew_ayin 
+0x0cf3   U05e3   # hebrew_finalpe 
+0x0cf4   U05e4   # hebrew_pe 
+0x0cf5   U05e5   # hebrew_finalzade 
+0x0cf5   U05e5   # hebrew_finalzadi  /* deprecated */ 
+0x0cf6   U05e6   # hebrew_zade 
+0x0cf6   U05e6   # hebrew_zadi  /* deprecated */ 
+0x0cf7   U05e7   # hebrew_kuf  /* deprecated */ 
+0x0cf7   U05e7   # hebrew_qoph 
+0x0cf8   U05e8   # hebrew_resh 
+0x0cf9   U05e9   # hebrew_shin 
+0x0cfa   U05ea   # hebrew_taf  /* deprecated */ 
+0x0cfa   U05ea   # hebrew_taw 
+0x0da1   U0e01   # Thai_kokai 
+0x0da2   U0e02   # Thai_khokhai 
+0x0da3   U0e03   # Thai_khokhuat 
+0x0da4   U0e04   # Thai_khokhwai 
+0x0da5   U0e05   # Thai_khokhon 
+0x0da6   U0e06   # Thai_khorakhang   
+0x0da7   U0e07   # Thai_ngongu   
+0x0da8   U0e08   # Thai_chochan   
+0x0da9   U0e09   # Thai_choching    
+0x0daa   U0e0a   # Thai_chochang   
+0x0dab   U0e0b   # Thai_soso 
+0x0dac   U0e0c   # Thai_chochoe 
+0x0dad   U0e0d   # Thai_yoying 
+0x0dae   U0e0e   # Thai_dochada 
+0x0daf   U0e0f   # Thai_topatak 
+0x0db0   U0e10   # Thai_thothan 
+0x0db1   U0e11   # Thai_thonangmontho 
+0x0db2   U0e12   # Thai_thophuthao 
+0x0db3   U0e13   # Thai_nonen 
+0x0db4   U0e14   # Thai_dodek 
+0x0db5   U0e15   # Thai_totao 
+0x0db6   U0e16   # Thai_thothung 
+0x0db7   U0e17   # Thai_thothahan 
+0x0db8   U0e18   # Thai_thothong 
+0x0db9   U0e19   # Thai_nonu 
+0x0dba   U0e1a   # Thai_bobaimai 
+0x0dbb   U0e1b   # Thai_popla 
+0x0dbc   U0e1c   # Thai_phophung 
+0x0dbd   U0e1d   # Thai_fofa 
+0x0dbe   U0e1e   # Thai_phophan 
+0x0dbf   U0e1f   # Thai_fofan 
+0x0dc0   U0e20   # Thai_phosamphao 
+0x0dc1   U0e21   # Thai_moma 
+0x0dc2   U0e22   # Thai_yoyak 
+0x0dc3   U0e23   # Thai_rorua 
+0x0dc4   U0e24   # Thai_ru 
+0x0dc5   U0e25   # Thai_loling 
+0x0dc6   U0e26   # Thai_lu 
+0x0dc7   U0e27   # Thai_wowaen 
+0x0dc8   U0e28   # Thai_sosala 
+0x0dc9   U0e29   # Thai_sorusi 
+0x0dca   U0e2a   # Thai_sosua 
+0x0dcb   U0e2b   # Thai_hohip 
+0x0dcc   U0e2c   # Thai_lochula 
+0x0dcd   U0e2d   # Thai_oang 
+0x0dce   U0e2e   # Thai_honokhuk 
+0x0dcf   U0e2f   # Thai_paiyannoi 
+0x0dd0   U0e30   # Thai_saraa 
+0x0dd1   U0e31   # Thai_maihanakat 
+0x0dd2   U0e32   # Thai_saraaa 
+0x0dd3   U0e33   # Thai_saraam 
+0x0dd4   U0e34   # Thai_sarai    
+0x0dd5   U0e35   # Thai_saraii    
+0x0dd6   U0e36   # Thai_saraue     
+0x0dd7   U0e37   # Thai_sarauee     
+0x0dd8   U0e38   # Thai_sarau     
+0x0dd9   U0e39   # Thai_sarauu    
+0x0dda   U0e3a   # Thai_phinthu 
+0x0dde   U0e3e   # Thai_maihanakat_maitho 
+0x0ddf   U0e3f   # Thai_baht 
+0x0de0   U0e40   # Thai_sarae     
+0x0de1   U0e41   # Thai_saraae 
+0x0de2   U0e42   # Thai_sarao 
+0x0de3   U0e43   # Thai_saraaimaimuan    
+0x0de4   U0e44   # Thai_saraaimaimalai   
+0x0de5   U0e45   # Thai_lakkhangyao 
+0x0de6   U0e46   # Thai_maiyamok 
+0x0de7   U0e47   # Thai_maitaikhu 
+0x0de8   U0e48   # Thai_maiek    
+0x0de9   U0e49   # Thai_maitho 
+0x0dea   U0e4a   # Thai_maitri 
+0x0deb   U0e4b   # Thai_maichattawa 
+0x0dec   U0e4c   # Thai_thanthakhat 
+0x0ded   U0e4d   # Thai_nikhahit 
+0x0df0   U0e50   # Thai_leksun  
+0x0df1   U0e51   # Thai_leknung   
+0x0df2   U0e52   # Thai_leksong  
+0x0df3   U0e53   # Thai_leksam 
+0x0df4   U0e54   # Thai_leksi   
+0x0df5   U0e55   # Thai_lekha   
+0x0df6   U0e56   # Thai_lekhok   
+0x0df7   U0e57   # Thai_lekchet   
+0x0df8   U0e58   # Thai_lekpaet   
+0x0df9   U0e59   # Thai_lekkao  
+0x0ea1   U3131   # Hangul_Kiyeog 
+0x0ea2   U3132   # Hangul_SsangKiyeog 
+0x0ea3   U3133   # Hangul_KiyeogSios 
+0x0ea4   U3134   # Hangul_Nieun 
+0x0ea5   U3135   # Hangul_NieunJieuj 
+0x0ea6   U3136   # Hangul_NieunHieuh 
+0x0ea7   U3137   # Hangul_Dikeud 
+0x0ea8   U3138   # Hangul_SsangDikeud 
+0x0ea9   U3139   # Hangul_Rieul 
+0x0eaa   U313a   # Hangul_RieulKiyeog 
+0x0eab   U313b   # Hangul_RieulMieum 
+0x0eac   U313c   # Hangul_RieulPieub 
+0x0ead   U313d   # Hangul_RieulSios 
+0x0eae   U313e   # Hangul_RieulTieut 
+0x0eaf   U313f   # Hangul_RieulPhieuf 
+0x0eb0   U3140   # Hangul_RieulHieuh 
+0x0eb1   U3141   # Hangul_Mieum 
+0x0eb2   U3142   # Hangul_Pieub 
+0x0eb3   U3143   # Hangul_SsangPieub 
+0x0eb4   U3144   # Hangul_PieubSios 
+0x0eb5   U3145   # Hangul_Sios 
+0x0eb6   U3146   # Hangul_SsangSios 
+0x0eb7   U3147   # Hangul_Ieung 
+0x0eb8   U3148   # Hangul_Jieuj 
+0x0eb9   U3149   # Hangul_SsangJieuj 
+0x0eba   U314a   # Hangul_Cieuc 
+0x0ebb   U314b   # Hangul_Khieuq 
+0x0ebc   U314c   # Hangul_Tieut 
+0x0ebd   U314d   # Hangul_Phieuf 
+0x0ebe   U314e   # Hangul_Hieuh 
+0x0ebf   U314f   # Hangul_A 
+0x0ec0   U3150   # Hangul_AE 
+0x0ec1   U3151   # Hangul_YA 
+0x0ec2   U3152   # Hangul_YAE 
+0x0ec3   U3153   # Hangul_EO 
+0x0ec4   U3154   # Hangul_E 
+0x0ec5   U3155   # Hangul_YEO 
+0x0ec6   U3156   # Hangul_YE 
+0x0ec7   U3157   # Hangul_O 
+0x0ec8   U3158   # Hangul_WA 
+0x0ec9   U3159   # Hangul_WAE 
+0x0eca   U315a   # Hangul_OE 
+0x0ecb   U315b   # Hangul_YO 
+0x0ecc   U315c   # Hangul_U 
+0x0ecd   U315d   # Hangul_WEO 
+0x0ece   U315e   # Hangul_WE 
+0x0ecf   U315f   # Hangul_WI 
+0x0ed0   U3160   # Hangul_YU 
+0x0ed1   U3161   # Hangul_EU 
+0x0ed2   U3162   # Hangul_YI 
+0x0ed3   U3163   # Hangul_I 
+0x0ed4   U11a8   # Hangul_J_Kiyeog 
+0x0ed5   U11a9   # Hangul_J_SsangKiyeog 
+0x0ed6   U11aa   # Hangul_J_KiyeogSios 
+0x0ed7   U11ab   # Hangul_J_Nieun 
+0x0ed8   U11ac   # Hangul_J_NieunJieuj 
+0x0ed9   U11ad   # Hangul_J_NieunHieuh 
+0x0eda   U11ae   # Hangul_J_Dikeud 
+0x0edb   U11af   # Hangul_J_Rieul 
+0x0edc   U11b0   # Hangul_J_RieulKiyeog 
+0x0edd   U11b1   # Hangul_J_RieulMieum 
+0x0ede   U11b2   # Hangul_J_RieulPieub 
+0x0edf   U11b3   # Hangul_J_RieulSios 
+0x0ee0   U11b4   # Hangul_J_RieulTieut 
+0x0ee1   U11b5   # Hangul_J_RieulPhieuf 
+0x0ee2   U11b6   # Hangul_J_RieulHieuh 
+0x0ee3   U11b7   # Hangul_J_Mieum 
+0x0ee4   U11b8   # Hangul_J_Pieub 
+0x0ee5   U11b9   # Hangul_J_PieubSios 
+0x0ee6   U11ba   # Hangul_J_Sios 
+0x0ee7   U11bb   # Hangul_J_SsangSios 
+0x0ee8   U11bc   # Hangul_J_Ieung 
+0x0ee9   U11bd   # Hangul_J_Jieuj 
+0x0eea   U11be   # Hangul_J_Cieuc 
+0x0eeb   U11bf   # Hangul_J_Khieuq 
+0x0eec   U11c0   # Hangul_J_Tieut 
+0x0eed   U11c1   # Hangul_J_Phieuf 
+0x0eee   U11c2   # Hangul_J_Hieuh 
+0x0eef   U316d   # Hangul_RieulYeorinHieuh 
+0x0ef0   U3171   # Hangul_SunkyeongeumMieum 
+0x0ef1   U3178   # Hangul_SunkyeongeumPieub 
+0x0ef2   U317f   # Hangul_PanSios 
+0x0ef3   U0000   # Hangul_KkogjiDalrinIeung 
+0x0ef4   U3184   # Hangul_SunkyeongeumPhieuf 
+0x0ef5   U3186   # Hangul_YeorinHieuh 
+0x0ef6   U318d   # Hangul_AraeA 
+0x0ef7   U318e   # Hangul_AraeAE 
+0x0ef8   U11eb   # Hangul_J_PanSios 
+0x0ef9   U0000   # Hangul_J_KkogjiDalrinIeung 
+0x0efa   U11f9   # Hangul_J_YeorinHieuh 
+0x0eff   U20a9   # Korean_Won 
+0x20a0   U20a0   # EcuSign                                       
+0x20a1   U20a1   # ColonSign                                     
+0x20a2   U20a2   # CruzeiroSign                                  
+0x20a3   U20a3   # FFrancSign                                    
+0x20a4   U20a4   # LiraSign                                      
+0x20a5   U20a5   # MillSign                                      
+0x20a6   U20a6   # NairaSign                                     
+0x20a7   U20a7   # PesetaSign                                    
+0x20a8   U20a8   # RupeeSign                                     
+0x20a9   U20a9   # WonSign                                       
+0x20aa   U20aa   # NewSheqelSign                                 
+0x20ab   U20ab   # DongSign                                      
+0x20ac   U20ac   # EuroSign                                      
Index: version.h
--- xterm-105+/version.h        Sun Jun  6 16:55:05 1999
+++ xterm-106/version.h Wed Jun  9 07:00:28 1999
@@ -6,5 +6,5 @@
  * XFree86 to which this version of xterm has been built.  The number in
  * parentheses is my patch number (T.Dickey).
  */
-#define XTERM_PATCH   105
-#define XFREE86_VERSION "XFree86 3.9Pp"
+#define XTERM_PATCH   106
+#define XFREE86_VERSION "XFree86 3.9Pq"
Index: xterm.log.html
--- xterm-105+/xterm.log.html   Sun Jun  6 16:55:05 1999
+++ xterm-106/xterm.log.html    Wed Jun  9 06:51:42 1999
@@ -41,6 +41,7 @@
 xc/programs/Xserver/hw/xfree86).
 
 <UL>
+<LI><A HREF="#xterm_106">Patch #106 - 1999/6/9 - XFree86 3.9Pq</A>
 <LI><A HREF="#xterm_105">Patch #105 - 1999/6/5 - XFree86 3.9Pp</A>
 <LI><A HREF="#xterm_104">Patch #104 - 1999/5/30 - XFree86 3.9Pn</A>
 <LI><A HREF="#xterm_103">Patch #103 - 1999/5/14 - XFree86 3.9Pm</A>
@@ -149,6 +150,20 @@
 <LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
 </UL>
 
+<H1><A NAME="xterm_106">Patch #106 - 1999/6/9 - XFree86 3.9Pq</A></H1>
+<ul>
+       <li>remove duplicate fix for OpenBSD in resize.c
+
+       <li>correct logic in ScreenWrite, which did not reset the high bytes
+         of 16-bit characters when overwriting them with a 8-bit character
+         string (reported by Thomas Wolff).
+
+       <li>integrate patch by Markus Kuhn to provide limited support for
+         input of UTF-8 16-bit data by a lookup table.
+
+       <li>correct check in non_blank_line to ensure we're in wide-character
+         mode before looking at the high bytes, for InsertChar.
+</ul>
 <H1><A NAME="xterm_105">Patch #105 - 1999/6/5 - XFree86 3.9Pp</A></H1>
 <ul>
        <li>implement new resource <em>trimSelection</em>, which allows xterm
@@ -171,7 +186,8 @@
 This is a resync patch against XFree86 3.9Pn, reflecting changes which were
 submitted by Branden Robinson, who worked with 
 Wichert Akkerman &lt;wichert@cs.leidenuniv.nl&gt;
-to set up ifdef's to handle GNU libc 2.1
+to set up ifdef's to handle GNU libc 2.1,
+and use getpt() which lets xterm avoid having to know the actual PTY name.
 <p>
 I have also added a few fixes for signed/unsigned mismatches, and corrected
 a problem in the configure script (the UTF-8 code was always configured since