Support non-Latin keyboards. - sam - An updated version of the sam text editor.
 (HTM) git clone git://vernunftzentrum.de/sam.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit c4481947a9e2aa7a200112a9c91c6d6f98da8cbc
 (DIR) parent 716679fc256d1e30976a9c76c7ccdbc6cd5441de
 (HTM) Author: Rob King <jking@deadpixi.com>
       Date:   Tue,  6 Sep 2016 11:41:00 -0500
       
       Support non-Latin keyboards.
       
       Diffstat:
         libXg/gwin.c                        |      25 +++++++++++++++++++++++--
         libXg/unikeysyms.h                  |     634 +++++++++++++++++++++++++++++++
       
       2 files changed, 657 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/libXg/gwin.c b/libXg/gwin.c
       @@ -7,7 +7,6 @@
        #include <X11/Xatom.h>
        #include <X11/keysym.h>
        
       -
        #ifndef XtSpecificationRelease
        #define R3
        #define XtPointer caddr_t
       @@ -176,6 +175,28 @@ Keymapping keymappings[] ={
            {0, 0, Kend, 0}
        };
        
       +typedef struct Unikeysym Unikeysym;
       +struct Unikeysym{
       +    KeySym keysym;
       +    unsigned short value;
       +};
       +
       +Unikeysym unikeysyms[] ={
       +    #include "unikeysyms.h"
       +    {0, 0}
       +};
       +
       +unsigned short
       +keysymtoshort(KeySym k)
       +{
       +    for (Unikeysym *ks = unikeysyms; ks->keysym != 0; ks++){
       +        if (k == ks->keysym)
       +            return ks->value;
       +    }
       +
       +    return k;
       +}
       +
        static void
        Keyaction(Widget w, XEvent *e, String *p, Cardinal *np)
        {
       @@ -276,7 +297,7 @@ Keyaction(Widget w, XEvent *e, String *p, Cardinal *np)
                                composing++;
                                STUFFCOMPOSE();
                        }
       -                c = (unsigned short)k;
       +                c = keysymtoshort(k);
                        composing = -2;
                }
        
 (DIR) diff --git a/libXg/unikeysyms.h b/libXg/unikeysyms.h
       @@ -0,0 +1,634 @@
       +    /* generated automatically from keysyms.xml */
       +    {0x1a1, 0x104}, /* LATIN CAPITAL LETTER A WITH OGONEK */
       +    {0x1a2, 0x2d8}, /* BREVE */
       +    {0x1a3, 0x141}, /* LATIN CAPITAL LETTER L WITH STROKE */
       +    {0x1a5, 0x13d}, /* LATIN CAPITAL LETTER L WITH CARON */
       +    {0x1a6, 0x15a}, /* LATIN CAPITAL LETTER S WITH ACUTE */
       +    {0x1a9, 0x160}, /* LATIN CAPITAL LETTER S WITH CARON */
       +    {0x1aa, 0x15e}, /* LATIN CAPITAL LETTER S WITH CEDILLA */
       +    {0x1ab, 0x164}, /* LATIN CAPITAL LETTER T WITH CARON */
       +    {0x1ac, 0x179}, /* LATIN CAPITAL LETTER Z WITH ACUTE */
       +    {0x1ae, 0x17d}, /* LATIN CAPITAL LETTER Z WITH CARON */
       +    {0x1af, 0x17b}, /* LATIN CAPITAL LETTER Z WITH DOT ABOVE */
       +    {0x1b1, 0x105}, /* LATIN SMALL LETTER A WITH OGONEK */
       +    {0x1b2, 0x2db}, /* OGONEK */
       +    {0x1b3, 0x142}, /* LATIN SMALL LETTER L WITH STROKE */
       +    {0x1b5, 0x13e}, /* LATIN SMALL LETTER L WITH CARON */
       +    {0x1b6, 0x15b}, /* LATIN SMALL LETTER S WITH ACUTE */
       +    {0x1b7, 0x2c7}, /* CARON */
       +    {0x1b9, 0x161}, /* LATIN SMALL LETTER S WITH CARON */
       +    {0x1ba, 0x15f}, /* LATIN SMALL LETTER S WITH CEDILLA */
       +    {0x1bb, 0x165}, /* LATIN SMALL LETTER T WITH CARON */
       +    {0x1bc, 0x17a}, /* LATIN SMALL LETTER Z WITH ACUTE */
       +    {0x1bd, 0x2dd}, /* DOUBLE ACUTE ACCENT */
       +    {0x1be, 0x17e}, /* LATIN SMALL LETTER Z WITH CARON */
       +    {0x1bf, 0x17c}, /* LATIN SMALL LETTER Z WITH DOT ABOVE */
       +    {0x1c0, 0x154}, /* LATIN CAPITAL LETTER R WITH ACUTE */
       +    {0x1c3, 0x102}, /* LATIN CAPITAL LETTER A WITH BREVE */
       +    {0x1c5, 0x139}, /* LATIN CAPITAL LETTER L WITH ACUTE */
       +    {0x1c6, 0x106}, /* LATIN CAPITAL LETTER C WITH ACUTE */
       +    {0x1c8, 0x10c}, /* LATIN CAPITAL LETTER C WITH CARON */
       +    {0x1ca, 0x118}, /* LATIN CAPITAL LETTER E WITH OGONEK */
       +    {0x1cc, 0x11a}, /* LATIN CAPITAL LETTER E WITH CARON */
       +    {0x1cf, 0x10e}, /* LATIN CAPITAL LETTER D WITH CARON */
       +    {0x1d0, 0x110}, /* LATIN CAPITAL LETTER D WITH STROKE */
       +    {0x1d1, 0x143}, /* LATIN CAPITAL LETTER N WITH ACUTE */
       +    {0x1d2, 0x147}, /* LATIN CAPITAL LETTER N WITH CARON */
       +    {0x1d5, 0x150}, /* LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
       +    {0x1d8, 0x158}, /* LATIN CAPITAL LETTER R WITH CARON */
       +    {0x1d9, 0x16e}, /* LATIN CAPITAL LETTER U WITH RING ABOVE */
       +    {0x1db, 0x170}, /* LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
       +    {0x1de, 0x162}, /* LATIN CAPITAL LETTER T WITH CEDILLA */
       +    {0x1e0, 0x155}, /* LATIN SMALL LETTER R WITH ACUTE */
       +    {0x1e3, 0x103}, /* LATIN SMALL LETTER A WITH BREVE */
       +    {0x1e5, 0x13a}, /* LATIN SMALL LETTER L WITH ACUTE */
       +    {0x1e6, 0x107}, /* LATIN SMALL LETTER C WITH ACUTE */
       +    {0x1e8, 0x10d}, /* LATIN SMALL LETTER C WITH CARON */
       +    {0x1ea, 0x119}, /* LATIN SMALL LETTER E WITH OGONEK */
       +    {0x1ec, 0x11b}, /* LATIN SMALL LETTER E WITH CARON */
       +    {0x1ef, 0x10f}, /* LATIN SMALL LETTER D WITH CARON */
       +    {0x1f0, 0x111}, /* LATIN SMALL LETTER D WITH STROKE */
       +    {0x1f1, 0x144}, /* LATIN SMALL LETTER N WITH ACUTE */
       +    {0x1f2, 0x148}, /* LATIN SMALL LETTER N WITH CARON */
       +    {0x1f5, 0x151}, /* LATIN SMALL LETTER O WITH DOUBLE ACUTE */
       +    {0x1f8, 0x159}, /* LATIN SMALL LETTER R WITH CARON */
       +    {0x1f9, 0x16f}, /* LATIN SMALL LETTER U WITH RING ABOVE */
       +    {0x1fb, 0x171}, /* LATIN SMALL LETTER U WITH DOUBLE ACUTE */
       +    {0x1fe, 0x163}, /* LATIN SMALL LETTER T WITH CEDILLA */
       +    {0x1ff, 0x2d9}, /* DOT ABOVE */
       +    {0x2a1, 0x126}, /* LATIN CAPITAL LETTER H WITH STROKE */
       +    {0x2a6, 0x124}, /* LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
       +    {0x2a9, 0x130}, /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
       +    {0x2ab, 0x11e}, /* LATIN CAPITAL LETTER G WITH BREVE */
       +    {0x2ac, 0x134}, /* LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
       +    {0x2b1, 0x127}, /* LATIN SMALL LETTER H WITH STROKE */
       +    {0x2b6, 0x125}, /* LATIN SMALL LETTER H WITH CIRCUMFLEX */
       +    {0x2b9, 0x131}, /* LATIN SMALL LETTER DOTLESS I */
       +    {0x2bb, 0x11f}, /* LATIN SMALL LETTER G WITH BREVE */
       +    {0x2bc, 0x135}, /* LATIN SMALL LETTER J WITH CIRCUMFLEX */
       +    {0x2c5, 0x10a}, /* LATIN CAPITAL LETTER C WITH DOT ABOVE */
       +    {0x2c6, 0x108}, /* LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
       +    {0x2d5, 0x120}, /* LATIN CAPITAL LETTER G WITH DOT ABOVE */
       +    {0x2d8, 0x11c}, /* LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
       +    {0x2dd, 0x16c}, /* LATIN CAPITAL LETTER U WITH BREVE */
       +    {0x2de, 0x15c}, /* LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
       +    {0x2e5, 0x10b}, /* LATIN SMALL LETTER C WITH DOT ABOVE */
       +    {0x2e6, 0x109}, /* LATIN SMALL LETTER C WITH CIRCUMFLEX */
       +    {0x2f5, 0x121}, /* LATIN SMALL LETTER G WITH DOT ABOVE */
       +    {0x2f8, 0x11d}, /* LATIN SMALL LETTER G WITH CIRCUMFLEX */
       +    {0x2fd, 0x16d}, /* LATIN SMALL LETTER U WITH BREVE */
       +    {0x2fe, 0x15d}, /* LATIN SMALL LETTER S WITH CIRCUMFLEX */
       +    {0x3a2, 0x138}, /* LATIN SMALL LETTER KRA */
       +    {0x3a3, 0x156}, /* LATIN CAPITAL LETTER R WITH CEDILLA */
       +    {0x3a5, 0x128}, /* LATIN CAPITAL LETTER I WITH TILDE */
       +    {0x3a6, 0x13b}, /* LATIN CAPITAL LETTER L WITH CEDILLA */
       +    {0x3aa, 0x112}, /* LATIN CAPITAL LETTER E WITH MACRON */
       +    {0x3ab, 0x122}, /* LATIN CAPITAL LETTER G WITH CEDILLA */
       +    {0x3ac, 0x166}, /* LATIN CAPITAL LETTER T WITH STROKE */
       +    {0x3b3, 0x157}, /* LATIN SMALL LETTER R WITH CEDILLA */
       +    {0x3b5, 0x129}, /* LATIN SMALL LETTER I WITH TILDE */
       +    {0x3b6, 0x13c}, /* LATIN SMALL LETTER L WITH CEDILLA */
       +    {0x3ba, 0x113}, /* LATIN SMALL LETTER E WITH MACRON */
       +    {0x3bb, 0x123}, /* LATIN SMALL LETTER G WITH CEDILLA */
       +    {0x3bc, 0x167}, /* LATIN SMALL LETTER T WITH STROKE */
       +    {0x3bd, 0x14a}, /* LATIN CAPITAL LETTER ENG */
       +    {0x3bf, 0x14b}, /* LATIN SMALL LETTER ENG */
       +    {0x3c0, 0x100}, /* LATIN CAPITAL LETTER A WITH MACRON */
       +    {0x3c7, 0x12e}, /* LATIN CAPITAL LETTER I WITH OGONEK */
       +    {0x3cc, 0x116}, /* LATIN CAPITAL LETTER E WITH DOT ABOVE */
       +    {0x3cf, 0x12a}, /* LATIN CAPITAL LETTER I WITH MACRON */
       +    {0x3d1, 0x145}, /* LATIN CAPITAL LETTER N WITH CEDILLA */
       +    {0x3d2, 0x14c}, /* LATIN CAPITAL LETTER O WITH MACRON */
       +    {0x3d3, 0x136}, /* LATIN CAPITAL LETTER K WITH CEDILLA */
       +    {0x3d9, 0x172}, /* LATIN CAPITAL LETTER U WITH OGONEK */
       +    {0x3dd, 0x168}, /* LATIN CAPITAL LETTER U WITH TILDE */
       +    {0x3de, 0x16a}, /* LATIN CAPITAL LETTER U WITH MACRON */
       +    {0x3e0, 0x101}, /* LATIN SMALL LETTER A WITH MACRON */
       +    {0x3e7, 0x12f}, /* LATIN SMALL LETTER I WITH OGONEK */
       +    {0x3ec, 0x117}, /* LATIN SMALL LETTER E WITH DOT ABOVE */
       +    {0x3ef, 0x12b}, /* LATIN SMALL LETTER I WITH MACRON */
       +    {0x3f1, 0x146}, /* LATIN SMALL LETTER N WITH CEDILLA */
       +    {0x3f2, 0x14d}, /* LATIN SMALL LETTER O WITH MACRON */
       +    {0x3f3, 0x137}, /* LATIN SMALL LETTER K WITH CEDILLA */
       +    {0x3f9, 0x173}, /* LATIN SMALL LETTER U WITH OGONEK */
       +    {0x3fd, 0x169}, /* LATIN SMALL LETTER U WITH TILDE */
       +    {0x3fe, 0x16b}, /* LATIN SMALL LETTER U WITH MACRON */
       +    {0x47e, 0x203e}, /* OVERLINE */
       +    {0x4a1, 0x3002}, /* KANA FULL STOP */
       +    {0x4a2, 0x300c}, /* KANA OPENING BRACKET */
       +    {0x4a3, 0x300d}, /* KANA CLOSING BRACKET */
       +    {0x4a4, 0x3001}, /* KANA COMMA */
       +    {0x4a5, 0x30fb}, /* KANA CONJUNCTIVE */
       +    {0x4a6, 0x30f2}, /* KANA LETTER WO */
       +    {0x4a7, 0x30a1}, /* KANA LETTER SMALL A */
       +    {0x4a8, 0x30a3}, /* KANA LETTER SMALL I */
       +    {0x4a9, 0x30a5}, /* KANA LETTER SMALL U */
       +    {0x4aa, 0x30a7}, /* KANA LETTER SMALL E */
       +    {0x4ab, 0x30a9}, /* KANA LETTER SMALL O */
       +    {0x4ac, 0x30e3}, /* KANA LETTER SMALL YA */
       +    {0x4ad, 0x30e5}, /* KANA LETTER SMALL YU */
       +    {0x4ae, 0x30e7}, /* KANA LETTER SMALL YO */
       +    {0x4af, 0x30c3}, /* KANA LETTER SMALL TSU */
       +    {0x4b0, 0x30fc}, /* PROLONGED SOUND SYMBOL */
       +    {0x4b1, 0x30a2}, /* KANA LETTER A */
       +    {0x4b2, 0x30a4}, /* KANA LETTER I */
       +    {0x4b3, 0x30a6}, /* KANA LETTER U */
       +    {0x4b4, 0x30a8}, /* KANA LETTER E */
       +    {0x4b5, 0x30aa}, /* KANA LETTER O */
       +    {0x4b6, 0x30ab}, /* KANA LETTER KA */
       +    {0x4b7, 0x30ad}, /* KANA LETTER KI */
       +    {0x4b8, 0x30af}, /* KANA LETTER KU */
       +    {0x4b9, 0x30b1}, /* KANA LETTER KE */
       +    {0x4ba, 0x30b3}, /* KANA LETTER KO */
       +    {0x4bb, 0x30b5}, /* KANA LETTER SA */
       +    {0x4bc, 0x30b7}, /* KANA LETTER SHI */
       +    {0x4bd, 0x30b9}, /* KANA LETTER SU */
       +    {0x4be, 0x30bb}, /* KANA LETTER SE */
       +    {0x4bf, 0x30bd}, /* KANA LETTER SO */
       +    {0x4c0, 0x30bf}, /* KANA LETTER TA */
       +    {0x4c1, 0x30c1}, /* KANA LETTER CHI */
       +    {0x4c2, 0x30c4}, /* KANA LETTER TSU */
       +    {0x4c3, 0x30c6}, /* KANA LETTER TE */
       +    {0x4c4, 0x30c8}, /* KANA LETTER TO */
       +    {0x4c5, 0x30ca}, /* KANA LETTER NA */
       +    {0x4c6, 0x30cb}, /* KANA LETTER NI */
       +    {0x4c7, 0x30cc}, /* KANA LETTER NU */
       +    {0x4c8, 0x30cd}, /* KANA LETTER NE */
       +    {0x4c9, 0x30ce}, /* KANA LETTER NO */
       +    {0x4ca, 0x30cf}, /* KANA LETTER HA */
       +    {0x4cb, 0x30d2}, /* KANA LETTER HI */
       +    {0x4cc, 0x30d5}, /* KANA LETTER FU */
       +    {0x4cd, 0x30d8}, /* KANA LETTER HE */
       +    {0x4ce, 0x30db}, /* KANA LETTER HO */
       +    {0x4cf, 0x30de}, /* KANA LETTER MA */
       +    {0x4d0, 0x30df}, /* KANA LETTER MI */
       +    {0x4d1, 0x30e0}, /* KANA LETTER MU */
       +    {0x4d2, 0x30e1}, /* KANA LETTER ME */
       +    {0x4d3, 0x30e2}, /* KANA LETTER MO */
       +    {0x4d4, 0x30e4}, /* KANA LETTER YA */
       +    {0x4d5, 0x30e6}, /* KANA LETTER YU */
       +    {0x4d6, 0x30e8}, /* KANA LETTER YO */
       +    {0x4d7, 0x30e9}, /* KANA LETTER RA */
       +    {0x4d8, 0x30ea}, /* KANA LETTER RI */
       +    {0x4d9, 0x30eb}, /* KANA LETTER RU */
       +    {0x4da, 0x30ec}, /* KANA LETTER RE */
       +    {0x4db, 0x30ed}, /* KANA LETTER RO */
       +    {0x4dc, 0x30ef}, /* KANA LETTER WA */
       +    {0x4dd, 0x30f3}, /* KANA LETTER N */
       +    {0x4de, 0x309b}, /* VOICED SOUND SYMBOL */
       +    {0x4df, 0x309c}, /* SEMIVOICED SOUND SYMBOL */
       +    {0x5ac, 0x60c}, /* ARABIC COMMA */
       +    {0x5bb, 0x61b}, /* ARABIC SEMICOLON */
       +    {0x5bf, 0x61f}, /* ARABIC QUESTION MARK */
       +    {0x5c1, 0x621}, /* ARABIC LETTER HAMZA */
       +    {0x5c2, 0x622}, /* ARABIC LETTER ALEF WITH MADDA ABOVE */
       +    {0x5c3, 0x623}, /* ARABIC LETTER ALEF WITH HAMZA ABOVE */
       +    {0x5c4, 0x624}, /* ARABIC LETTER WAW WITH HAMZA ABOVE */
       +    {0x5c5, 0x625}, /* ARABIC LETTER ALEF WITH HAMZA BELOW */
       +    {0x5c6, 0x626}, /* ARABIC LETTER YEH WITH HAMZA ABOVE */
       +    {0x5c7, 0x627}, /* ARABIC LETTER ALEF */
       +    {0x5c8, 0x628}, /* ARABIC LETTER BEH */
       +    {0x5c9, 0x629}, /* ARABIC LETTER TEH MARBUTA */
       +    {0x5ca, 0x62a}, /* ARABIC LETTER TEH */
       +    {0x5cb, 0x62b}, /* ARABIC LETTER THEH */
       +    {0x5cc, 0x62c}, /* ARABIC LETTER JEEM */
       +    {0x5cd, 0x62d}, /* ARABIC LETTER HAH */
       +    {0x5ce, 0x62e}, /* ARABIC LETTER KHAH */
       +    {0x5cf, 0x62f}, /* ARABIC LETTER DAL */
       +    {0x5d0, 0x630}, /* ARABIC LETTER THAL */
       +    {0x5d1, 0x631}, /* ARABIC LETTER REH */
       +    {0x5d2, 0x632}, /* ARABIC LETTER ZAIN */
       +    {0x5d3, 0x633}, /* ARABIC LETTER SEEN */
       +    {0x5d4, 0x634}, /* ARABIC LETTER SHEEN */
       +    {0x5d5, 0x635}, /* ARABIC LETTER SAD */
       +    {0x5d6, 0x636}, /* ARABIC LETTER DAD */
       +    {0x5d7, 0x637}, /* ARABIC LETTER TAH */
       +    {0x5d8, 0x638}, /* ARABIC LETTER ZAH */
       +    {0x5d9, 0x639}, /* ARABIC LETTER AIN */
       +    {0x5da, 0x63a}, /* ARABIC LETTER GHAIN */
       +    {0x5e0, 0x640}, /* ARABIC TATWEEL */
       +    {0x5e1, 0x641}, /* ARABIC LETTER FEH */
       +    {0x5e2, 0x642}, /* ARABIC LETTER QAF */
       +    {0x5e3, 0x643}, /* ARABIC LETTER KAF */
       +    {0x5e4, 0x644}, /* ARABIC LETTER LAM */
       +    {0x5e5, 0x645}, /* ARABIC LETTER MEEM */
       +    {0x5e6, 0x646}, /* ARABIC LETTER NOON */
       +    {0x5e7, 0x647}, /* ARABIC LETTER HEH */
       +    {0x5e8, 0x648}, /* ARABIC LETTER WAW */
       +    {0x5e9, 0x649}, /* ARABIC LETTER ALEF MAKSURA */
       +    {0x5ea, 0x64a}, /* ARABIC LETTER YEH */
       +    {0x5eb, 0x64b}, /* ARABIC FATHATAN */
       +    {0x5ec, 0x64c}, /* ARABIC DAMMATAN */
       +    {0x5ed, 0x64d}, /* ARABIC KASRATAN */
       +    {0x5ee, 0x64e}, /* ARABIC FATHA */
       +    {0x5ef, 0x64f}, /* ARABIC DAMMA */
       +    {0x5f0, 0x650}, /* ARABIC KASRA */
       +    {0x5f1, 0x651}, /* ARABIC SHADDA */
       +    {0x5f2, 0x652}, /* ARABIC SUKUN */
       +    {0x6a1, 0x452}, /* CYRILLIC SMALL LETTER DJE */
       +    {0x6a2, 0x453}, /* CYRILLIC SMALL LETTER GJE */
       +    {0x6a3, 0x451}, /* CYRILLIC SMALL LETTER IO */
       +    {0x6a4, 0x454}, /* CYRILLIC SMALL LETTER UKRAINIAN IE */
       +    {0x6a5, 0x455}, /* CYRILLIC SMALL LETTER DZE */
       +    {0x6a6, 0x456}, /* CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
       +    {0x6a7, 0x457}, /* CYRILLIC SMALL LETTER YI */
       +    {0x6a8, 0x458}, /* CYRILLIC SMALL LETTER JE */
       +    {0x6a9, 0x459}, /* CYRILLIC SMALL LETTER LJE */
       +    {0x6aa, 0x45a}, /* CYRILLIC SMALL LETTER NJE */
       +    {0x6ab, 0x45b}, /* CYRILLIC SMALL LETTER TSHE */
       +    {0x6ac, 0x45c}, /* CYRILLIC SMALL LETTER KJE */
       +    {0x6ad, 0x491}, /* CYRILLIC SMALL LETTER GHE WITH UPTURN */
       +    {0x6ae, 0x45e}, /* CYRILLIC SMALL LETTER SHORT U */
       +    {0x6af, 0x45f}, /* CYRILLIC SMALL LETTER DZHE */
       +    {0x6b0, 0x2116}, /* NUMERO SIGN */
       +    {0x6b1, 0x402}, /* CYRILLIC CAPITAL LETTER DJE */
       +    {0x6b2, 0x403}, /* CYRILLIC CAPITAL LETTER GJE */
       +    {0x6b3, 0x401}, /* CYRILLIC CAPITAL LETTER IO */
       +    {0x6b4, 0x404}, /* CYRILLIC CAPITAL LETTER UKRAINIAN IE */
       +    {0x6b5, 0x405}, /* CYRILLIC CAPITAL LETTER DZE */
       +    {0x6b6, 0x406}, /* CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
       +    {0x6b7, 0x407}, /* CYRILLIC CAPITAL LETTER YI */
       +    {0x6b8, 0x408}, /* CYRILLIC CAPITAL LETTER JE */
       +    {0x6b9, 0x409}, /* CYRILLIC CAPITAL LETTER LJE */
       +    {0x6ba, 0x40a}, /* CYRILLIC CAPITAL LETTER NJE */
       +    {0x6bb, 0x40b}, /* CYRILLIC CAPITAL LETTER TSHE */
       +    {0x6bc, 0x40c}, /* CYRILLIC CAPITAL LETTER KJE */
       +    {0x6bd, 0x490}, /* CYRILLIC CAPITAL LETTER GHE WITH UPTURN */
       +    {0x6be, 0x40e}, /* CYRILLIC CAPITAL LETTER SHORT U */
       +    {0x6bf, 0x40f}, /* CYRILLIC CAPITAL LETTER DZHE */
       +    {0x6c0, 0x44e}, /* CYRILLIC SMALL LETTER YU */
       +    {0x6c1, 0x430}, /* CYRILLIC SMALL LETTER A */
       +    {0x6c2, 0x431}, /* CYRILLIC SMALL LETTER BE */
       +    {0x6c3, 0x446}, /* CYRILLIC SMALL LETTER TSE */
       +    {0x6c4, 0x434}, /* CYRILLIC SMALL LETTER DE */
       +    {0x6c5, 0x435}, /* CYRILLIC SMALL LETTER IE */
       +    {0x6c6, 0x444}, /* CYRILLIC SMALL LETTER EF */
       +    {0x6c7, 0x433}, /* CYRILLIC SMALL LETTER GHE */
       +    {0x6c8, 0x445}, /* CYRILLIC SMALL LETTER HA */
       +    {0x6c9, 0x438}, /* CYRILLIC SMALL LETTER I */
       +    {0x6ca, 0x439}, /* CYRILLIC SMALL LETTER SHORT I */
       +    {0x6cb, 0x43a}, /* CYRILLIC SMALL LETTER KA */
       +    {0x6cc, 0x43b}, /* CYRILLIC SMALL LETTER EL */
       +    {0x6cd, 0x43c}, /* CYRILLIC SMALL LETTER EM */
       +    {0x6ce, 0x43d}, /* CYRILLIC SMALL LETTER EN */
       +    {0x6cf, 0x43e}, /* CYRILLIC SMALL LETTER O */
       +    {0x6d0, 0x43f}, /* CYRILLIC SMALL LETTER PE */
       +    {0x6d1, 0x44f}, /* CYRILLIC SMALL LETTER YA */
       +    {0x6d2, 0x440}, /* CYRILLIC SMALL LETTER ER */
       +    {0x6d3, 0x441}, /* CYRILLIC SMALL LETTER ES */
       +    {0x6d4, 0x442}, /* CYRILLIC SMALL LETTER TE */
       +    {0x6d5, 0x443}, /* CYRILLIC SMALL LETTER U */
       +    {0x6d6, 0x436}, /* CYRILLIC SMALL LETTER ZHE */
       +    {0x6d7, 0x432}, /* CYRILLIC SMALL LETTER VE */
       +    {0x6d8, 0x44c}, /* CYRILLIC SMALL LETTER SOFT SIGN */
       +    {0x6d9, 0x44b}, /* CYRILLIC SMALL LETTER YERU */
       +    {0x6da, 0x437}, /* CYRILLIC SMALL LETTER ZE */
       +    {0x6db, 0x448}, /* CYRILLIC SMALL LETTER SHA */
       +    {0x6dc, 0x44d}, /* CYRILLIC SMALL LETTER E */
       +    {0x6dd, 0x449}, /* CYRILLIC SMALL LETTER SHCHA */
       +    {0x6de, 0x447}, /* CYRILLIC SMALL LETTER CHE */
       +    {0x6df, 0x44a}, /* CYRILLIC SMALL LETTER HARD SIGN */
       +    {0x6e0, 0x42e}, /* CYRILLIC CAPITAL LETTER YU */
       +    {0x6e1, 0x410}, /* CYRILLIC CAPITAL LETTER A */
       +    {0x6e2, 0x411}, /* CYRILLIC CAPITAL LETTER BE */
       +    {0x6e3, 0x426}, /* CYRILLIC CAPITAL LETTER TSE */
       +    {0x6e4, 0x414}, /* CYRILLIC CAPITAL LETTER DE */
       +    {0x6e5, 0x415}, /* CYRILLIC CAPITAL LETTER IE */
       +    {0x6e6, 0x424}, /* CYRILLIC CAPITAL LETTER EF */
       +    {0x6e7, 0x413}, /* CYRILLIC CAPITAL LETTER GHE */
       +    {0x6e8, 0x425}, /* CYRILLIC CAPITAL LETTER HA */
       +    {0x6e9, 0x418}, /* CYRILLIC CAPITAL LETTER I */
       +    {0x6ea, 0x419}, /* CYRILLIC CAPITAL LETTER SHORT I */
       +    {0x6eb, 0x41a}, /* CYRILLIC CAPITAL LETTER KA */
       +    {0x6ec, 0x41b}, /* CYRILLIC CAPITAL LETTER EL */
       +    {0x6ed, 0x41c}, /* CYRILLIC CAPITAL LETTER EM */
       +    {0x6ee, 0x41d}, /* CYRILLIC CAPITAL LETTER EN */
       +    {0x6ef, 0x41e}, /* CYRILLIC CAPITAL LETTER O */
       +    {0x6f0, 0x41f}, /* CYRILLIC CAPITAL LETTER PE */
       +    {0x6f1, 0x42f}, /* CYRILLIC CAPITAL LETTER YA */
       +    {0x6f2, 0x420}, /* CYRILLIC CAPITAL LETTER ER */
       +    {0x6f3, 0x421}, /* CYRILLIC CAPITAL LETTER ES */
       +    {0x6f4, 0x422}, /* CYRILLIC CAPITAL LETTER TE */
       +    {0x6f5, 0x423}, /* CYRILLIC CAPITAL LETTER U */
       +    {0x6f6, 0x416}, /* CYRILLIC CAPITAL LETTER ZHE */
       +    {0x6f7, 0x412}, /* CYRILLIC CAPITAL LETTER VE */
       +    {0x6f8, 0x42c}, /* CYRILLIC CAPITAL LETTER SOFT SIGN */
       +    {0x6f9, 0x42b}, /* CYRILLIC CAPITAL LETTER YERU */
       +    {0x6fa, 0x417}, /* CYRILLIC CAPITAL LETTER ZE */
       +    {0x6fb, 0x428}, /* CYRILLIC CAPITAL LETTER SHA */
       +    {0x6fc, 0x42d}, /* CYRILLIC CAPITAL LETTER E */
       +    {0x6fd, 0x429}, /* CYRILLIC CAPITAL LETTER SHCHA */
       +    {0x6fe, 0x427}, /* CYRILLIC CAPITAL LETTER CHE */
       +    {0x6ff, 0x42a}, /* CYRILLIC CAPITAL LETTER HARD SIGN */
       +    {0x7a1, 0x386}, /* GREEK CAPITAL LETTER ALPHA WITH TONOS */
       +    {0x7a2, 0x388}, /* GREEK CAPITAL LETTER EPSILON WITH TONOS */
       +    {0x7a3, 0x389}, /* GREEK CAPITAL LETTER ETA WITH TONOS */
       +    {0x7a4, 0x38a}, /* GREEK CAPITAL LETTER IOTA WITH TONOS */
       +    {0x7a5, 0x3aa}, /* GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
       +    {0x7a7, 0x38c}, /* GREEK CAPITAL LETTER OMICRON WITH TONOS */
       +    {0x7a8, 0x38e}, /* GREEK CAPITAL LETTER UPSILON WITH TONOS */
       +    {0x7a9, 0x3ab}, /* GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
       +    {0x7ab, 0x38f}, /* GREEK CAPITAL LETTER OMEGA WITH TONOS */
       +    {0x7ae, 0x385}, /* GREEK DIALYTIKA TONOS */
       +    {0x7af, 0x2015}, /* HORIZONTAL BAR */
       +    {0x7b1, 0x3ac}, /* GREEK SMALL LETTER ALPHA WITH TONOS */
       +    {0x7b2, 0x3ad}, /* GREEK SMALL LETTER EPSILON WITH TONOS */
       +    {0x7b3, 0x3ae}, /* GREEK SMALL LETTER ETA WITH TONOS */
       +    {0x7b4, 0x3af}, /* GREEK SMALL LETTER IOTA WITH TONOS */
       +    {0x7b5, 0x3ca}, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA */
       +    {0x7b6, 0x390}, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
       +    {0x7b7, 0x3cc}, /* GREEK SMALL LETTER OMICRON WITH TONOS */
       +    {0x7b8, 0x3cd}, /* GREEK SMALL LETTER UPSILON WITH TONOS */
       +    {0x7b9, 0x3cb}, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
       +    {0x7ba, 0x3b0}, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
       +    {0x7bb, 0x3ce}, /* GREEK SMALL LETTER OMEGA WITH TONOS */
       +    {0x7c1, 0x391}, /* GREEK CAPITAL LETTER ALPHA */
       +    {0x7c2, 0x392}, /* GREEK CAPITAL LETTER BETA */
       +    {0x7c3, 0x393}, /* GREEK CAPITAL LETTER GAMMA */
       +    {0x7c4, 0x394}, /* GREEK CAPITAL LETTER DELTA */
       +    {0x7c5, 0x395}, /* GREEK CAPITAL LETTER EPSILON */
       +    {0x7c6, 0x396}, /* GREEK CAPITAL LETTER ZETA */
       +    {0x7c7, 0x397}, /* GREEK CAPITAL LETTER ETA */
       +    {0x7c8, 0x398}, /* GREEK CAPITAL LETTER THETA */
       +    {0x7c9, 0x399}, /* GREEK CAPITAL LETTER IOTA */
       +    {0x7ca, 0x39a}, /* GREEK CAPITAL LETTER KAPPA */
       +    {0x7cb, 0x39b}, /* GREEK CAPITAL LETTER LAMDA */
       +    {0x7cc, 0x39c}, /* GREEK CAPITAL LETTER MU */
       +    {0x7cd, 0x39d}, /* GREEK CAPITAL LETTER NU */
       +    {0x7ce, 0x39e}, /* GREEK CAPITAL LETTER XI */
       +    {0x7cf, 0x39f}, /* GREEK CAPITAL LETTER OMICRON */
       +    {0x7d0, 0x3a0}, /* GREEK CAPITAL LETTER PI */
       +    {0x7d1, 0x3a1}, /* GREEK CAPITAL LETTER RHO */
       +    {0x7d2, 0x3a3}, /* GREEK CAPITAL LETTER SIGMA */
       +    {0x7d4, 0x3a4}, /* GREEK CAPITAL LETTER TAU */
       +    {0x7d5, 0x3a5}, /* GREEK CAPITAL LETTER UPSILON */
       +    {0x7d6, 0x3a6}, /* GREEK CAPITAL LETTER PHI */
       +    {0x7d7, 0x3a7}, /* GREEK CAPITAL LETTER CHI */
       +    {0x7d8, 0x3a8}, /* GREEK CAPITAL LETTER PSI */
       +    {0x7d9, 0x3a9}, /* GREEK CAPITAL LETTER OMEGA */
       +    {0x7e1, 0x3b1}, /* GREEK SMALL LETTER ALPHA */
       +    {0x7e2, 0x3b2}, /* GREEK SMALL LETTER BETA */
       +    {0x7e3, 0x3b3}, /* GREEK SMALL LETTER GAMMA */
       +    {0x7e4, 0x3b4}, /* GREEK SMALL LETTER DELTA */
       +    {0x7e5, 0x3b5}, /* GREEK SMALL LETTER EPSILON */
       +    {0x7e6, 0x3b6}, /* GREEK SMALL LETTER ZETA */
       +    {0x7e7, 0x3b7}, /* GREEK SMALL LETTER ETA */
       +    {0x7e8, 0x3b8}, /* GREEK SMALL LETTER THETA */
       +    {0x7e9, 0x3b9}, /* GREEK SMALL LETTER IOTA */
       +    {0x7ea, 0x3ba}, /* GREEK SMALL LETTER KAPPA */
       +    {0x7eb, 0x3bb}, /* GREEK SMALL LETTER LAMDA */
       +    {0x7ec, 0x3bc}, /* GREEK SMALL LETTER MU */
       +    {0x7ed, 0x3bd}, /* GREEK SMALL LETTER NU */
       +    {0x7ee, 0x3be}, /* GREEK SMALL LETTER XI */
       +    {0x7ef, 0x3bf}, /* GREEK SMALL LETTER OMICRON */
       +    {0x7f0, 0x3c0}, /* GREEK SMALL LETTER PI */
       +    {0x7f1, 0x3c1}, /* GREEK SMALL LETTER RHO */
       +    {0x7f2, 0x3c3}, /* GREEK SMALL LETTER SIGMA */
       +    {0x7f3, 0x3c2}, /* GREEK SMALL LETTER FINAL SIGMA */
       +    {0x7f4, 0x3c4}, /* GREEK SMALL LETTER TAU */
       +    {0x7f5, 0x3c5}, /* GREEK SMALL LETTER UPSILON */
       +    {0x7f6, 0x3c6}, /* GREEK SMALL LETTER PHI */
       +    {0x7f7, 0x3c7}, /* GREEK SMALL LETTER CHI */
       +    {0x7f8, 0x3c8}, /* GREEK SMALL LETTER PSI */
       +    {0x7f9, 0x3c9}, /* GREEK SMALL LETTER OMEGA */
       +    {0x8a1, 0x23b7}, /* LEFT RADICAL */
       +    {0x8a4, 0x2320}, /* TOP INTEGRAL */
       +    {0x8a5, 0x2321}, /* BOTTOM INTEGRAL */
       +    {0x8a7, 0x23a1}, /* TOP LEFT SQUARE BRACKET */
       +    {0x8a8, 0x23a3}, /* BOTTOM LEFT SQUARE BRACKET */
       +    {0x8a9, 0x23a4}, /* TOP RIGHT SQUARE BRACKET */
       +    {0x8aa, 0x23a6}, /* BOTTOM RIGHT SQUARE BRACKET */
       +    {0x8ab, 0x239b}, /* TOP LEFT PARENTHESIS */
       +    {0x8ac, 0x239d}, /* BOTTOM LEFT PARENTHESIS */
       +    {0x8ad, 0x239e}, /* TOP RIGHT PARENTHESIS */
       +    {0x8ae, 0x23a0}, /* BOTTOM RIGHT PARENTHESIS */
       +    {0x8af, 0x23a8}, /* LEFT MIDDLE CURLY BRACE */
       +    {0x8b0, 0x23ac}, /* RIGHT MIDDLE CURLY BRACE */
       +    {0x8bc, 0x2264}, /* LESS THAN OR EQUAL SIGN */
       +    {0x8bd, 0x2260}, /* NOT EQUAL SIGN */
       +    {0x8be, 0x2265}, /* GREATER THAN OR EQUAL SIGN */
       +    {0x8bf, 0x222b}, /* INTEGRAL */
       +    {0x8c0, 0x2234}, /* THEREFORE */
       +    {0x8c1, 0x221d}, /* VARIATION, PROPORTIONAL TO */
       +    {0x8c2, 0x221e}, /* INFINITY */
       +    {0x8c5, 0x2207}, /* NABLA, DEL */
       +    {0x8c8, 0x223c}, /* IS APPROXIMATE TO */
       +    {0x8c9, 0x2243}, /* SIMILAR OR EQUAL TO */
       +    {0x8cd, 0x21d4}, /* IF AND ONLY IF */
       +    {0x8ce, 0x21d2}, /* IMPLIES */
       +    {0x8cf, 0x2261}, /* IDENTICAL TO */
       +    {0x8d6, 0x221a}, /* RADICAL */
       +    {0x8da, 0x2282}, /* IS INCLUDED IN */
       +    {0x8db, 0x2283}, /* INCLUDES */
       +    {0x8dc, 0x2229}, /* INTERSECTION */
       +    {0x8dd, 0x222a}, /* UNION */
       +    {0x8de, 0x2227}, /* LOGICAL AND */
       +    {0x8df, 0x2228}, /* LOGICAL OR */
       +    {0x8ef, 0x2202}, /* PARTIAL DERIVATIVE */
       +    {0x8f6, 0x192}, /* FUNCTION */
       +    {0x8fb, 0x2190}, /* LEFT ARROW */
       +    {0x8fc, 0x2191}, /* UPWARD ARROW */
       +    {0x8fd, 0x2192}, /* RIGHT ARROW */
       +    {0x8fe, 0x2193}, /* DOWNWARD ARROW */
       +    {0x9e0, 0x25c6}, /* SOLID DIAMOND */
       +    {0x9e1, 0x2592}, /* CHECKERBOARD */
       +    {0x9e2, 0x2409}, /* "HT" */
       +    {0x9e3, 0x240c}, /* "FF" */
       +    {0x9e4, 0x240d}, /* "CR" */
       +    {0x9e5, 0x240a}, /* "LF" */
       +    {0x9e8, 0x2424}, /* "NL" */
       +    {0x9e9, 0x240b}, /* "VT" */
       +    {0x9ea, 0x2518}, /* LOWER-RIGHT CORNER */
       +    {0x9eb, 0x2510}, /* UPPER-RIGHT CORNER */
       +    {0x9ec, 0x250c}, /* UPPER-LEFT CORNER */
       +    {0x9ed, 0x2514}, /* LOWER-LEFT CORNER */
       +    {0x9ee, 0x253c}, /* CROSSING-LINES */
       +    {0x9ef, 0x23ba}, /* HORIZONTAL LINE, SCAN 1 */
       +    {0x9f0, 0x23bb}, /* HORIZONTAL LINE, SCAN 3 */
       +    {0x9f1, 0x2500}, /* HORIZONTAL LINE, SCAN 5 */
       +    {0x9f2, 0x23bc}, /* HORIZONTAL LINE, SCAN 7 */
       +    {0x9f3, 0x23bd}, /* HORIZONTAL LINE, SCAN 9 */
       +    {0x9f4, 0x251c}, /* LEFT "T" */
       +    {0x9f5, 0x2524}, /* RIGHT "T" */
       +    {0x9f6, 0x2534}, /* BOTTOM "T" */
       +    {0x9f7, 0x252c}, /* TOP "T" */
       +    {0x9f8, 0x2502}, /* VERTICAL BAR */
       +    {0xaa1, 0x2003}, /* EM SPACE */
       +    {0xaa2, 0x2002}, /* EN SPACE */
       +    {0xaa3, 0x2004}, /* 3/EM SPACE */
       +    {0xaa4, 0x2005}, /* 4/EM SPACE */
       +    {0xaa5, 0x2007}, /* DIGIT SPACE */
       +    {0xaa6, 0x2008}, /* PUNCTUATION SPACE */
       +    {0xaa7, 0x2009}, /* THIN SPACE */
       +    {0xaa8, 0x200a}, /* HAIR SPACE */
       +    {0xaa9, 0x2014}, /* EM DASH */
       +    {0xaaa, 0x2013}, /* EN DASH */
       +    {0xaae, 0x2026}, /* ELLIPSIS */
       +    {0xaaf, 0x2025}, /* DOUBLE BASELINE DOT */
       +    {0xab0, 0x2153}, /* VULGAR FRACTION ONE THIRD */
       +    {0xab1, 0x2154}, /* VULGAR FRACTION TWO THIRDS */
       +    {0xab2, 0x2155}, /* VULGAR FRACTION ONE FIFTH */
       +    {0xab3, 0x2156}, /* VULGAR FRACTION TWO FIFTHS */
       +    {0xab4, 0x2157}, /* VULGAR FRACTION THREE FIFTHS */
       +    {0xab5, 0x2158}, /* VULGAR FRACTION FOUR FIFTHS */
       +    {0xab6, 0x2159}, /* VULGAR FRACTION ONE SIXTH */
       +    {0xab7, 0x215a}, /* VULGAR FRACTION FIVE SIXTHS */
       +    {0xab8, 0x2105}, /* CARE OF */
       +    {0xabb, 0x2012}, /* FIGURE DASH */
       +    {0xac3, 0x215b}, /* VULGAR FRACTION ONE EIGHTH */
       +    {0xac4, 0x215c}, /* VULGAR FRACTION THREE EIGHTHS */
       +    {0xac5, 0x215d}, /* VULGAR FRACTION FIVE EIGHTHS */
       +    {0xac6, 0x215e}, /* VULGAR FRACTION SEVEN EIGHTHS */
       +    {0xac9, 0x2122}, /* TRADEMARK SIGN */
       +    {0xad0, 0x2018}, /* LEFT SINGLE QUOTATION MARK */
       +    {0xad1, 0x2019}, /* RIGHT SINGLE QUOTATION MARK */
       +    {0xad2, 0x201c}, /* LEFT DOUBLE QUOTATION MARK */
       +    {0xad3, 0x201d}, /* RIGHT DOUBLE QUOTATION MARK */
       +    {0xad4, 0x211e}, /* PRESCRIPTION, TAKE, RECIPE */
       +    {0xad5, 0x2030}, /* PER MILLE SIGN */
       +    {0xad6, 0x2032}, /* MINUTES */
       +    {0xad7, 0x2033}, /* SECONDS */
       +    {0xad9, 0x271d}, /* LATIN CROSS */
       +    {0xaec, 0x2663}, /* CLUB */
       +    {0xaed, 0x2666}, /* DIAMOND */
       +    {0xaee, 0x2665}, /* HEART */
       +    {0xaf0, 0x2720}, /* MALTESE CROSS */
       +    {0xaf1, 0x2020}, /* DAGGER */
       +    {0xaf2, 0x2021}, /* DOUBLE DAGGER */
       +    {0xaf3, 0x2713}, /* CHECK MARK, TICK */
       +    {0xaf4, 0x2717}, /* BALLOT CROSS */
       +    {0xaf5, 0x266f}, /* MUSICAL SHARP */
       +    {0xaf6, 0x266d}, /* MUSICAL FLAT */
       +    {0xaf7, 0x2642}, /* MALE SYMBOL */
       +    {0xaf8, 0x2640}, /* FEMALE SYMBOL */
       +    {0xaf9, 0x260e}, /* TELEPHONE SYMBOL */
       +    {0xafa, 0x2315}, /* TELEPHONE RECORDER SYMBOL */
       +    {0xafb, 0x2117}, /* PHONOGRAPH COPYRIGHT SIGN */
       +    {0xafc, 0x2038}, /* CARET */
       +    {0xafd, 0x201a}, /* SINGLE LOW QUOTATION MARK */
       +    {0xafe, 0x201e}, /* DOUBLE LOW QUOTATION MARK */
       +    {0xbc2, 0x22a5}, /* DOWN TACK */
       +    {0xbc4, 0x230a}, /* DOWN STILE */
       +    {0xbca, 0x2218}, /* JOT */
       +    {0xbcc, 0x2395}, /* QUAD */
       +    {0xbce, 0x22a4}, /* UP TACK */
       +    {0xbcf, 0x25cb}, /* CIRCLE */
       +    {0xbd3, 0x2308}, /* UP STILE */
       +    {0xbdc, 0x22a2}, /* LEFT TACK */
       +    {0xbfc, 0x22a3}, /* RIGHT TACK */
       +    {0xcdf, 0x2017}, /* DOUBLE LOW LINE */
       +    {0xce0, 0x5d0}, /* HEBREW LETTER ALEF */
       +    {0xce1, 0x5d1}, /* HEBREW LETTER BET */
       +    {0xce2, 0x5d2}, /* HEBREW LETTER GIMEL */
       +    {0xce3, 0x5d3}, /* HEBREW LETTER DALET */
       +    {0xce4, 0x5d4}, /* HEBREW LETTER HE */
       +    {0xce5, 0x5d5}, /* HEBREW LETTER VAV */
       +    {0xce6, 0x5d6}, /* HEBREW LETTER ZAYIN */
       +    {0xce7, 0x5d7}, /* HEBREW LETTER HET */
       +    {0xce8, 0x5d8}, /* HEBREW LETTER TET */
       +    {0xce9, 0x5d9}, /* HEBREW LETTER YOD */
       +    {0xcea, 0x5da}, /* HEBREW LETTER FINAL KAF */
       +    {0xceb, 0x5db}, /* HEBREW LETTER KAF */
       +    {0xcec, 0x5dc}, /* HEBREW LETTER LAMED */
       +    {0xced, 0x5dd}, /* HEBREW LETTER FINAL MEM */
       +    {0xcee, 0x5de}, /* HEBREW LETTER MEM */
       +    {0xcef, 0x5df}, /* HEBREW LETTER FINAL NUN */
       +    {0xcf0, 0x5e0}, /* HEBREW LETTER NUN */
       +    {0xcf1, 0x5e1}, /* HEBREW LETTER SAMEKH */
       +    {0xcf2, 0x5e2}, /* HEBREW LETTER AYIN */
       +    {0xcf3, 0x5e3}, /* HEBREW LETTER FINAL PE */
       +    {0xcf4, 0x5e4}, /* HEBREW LETTER PE */
       +    {0xcf5, 0x5e5}, /* HEBREW LETTER FINAL TSADI */
       +    {0xcf6, 0x5e6}, /* HEBREW LETTER TSADI */
       +    {0xcf7, 0x5e7}, /* HEBREW LETTER QOF */
       +    {0xcf8, 0x5e8}, /* HEBREW LETTER RESH */
       +    {0xcf9, 0x5e9}, /* HEBREW LETTER SHIN */
       +    {0xcfa, 0x5ea}, /* HEBREW LETTER TAV */
       +    {0xda1, 0xe01}, /* THAI CHARACTER KO KAI */
       +    {0xda2, 0xe02}, /* THAI CHARACTER KHO KHAI */
       +    {0xda3, 0xe03}, /* THAI CHARACTER KHO KHUAT */
       +    {0xda4, 0xe04}, /* THAI CHARACTER KHO KHWAI */
       +    {0xda5, 0xe05}, /* THAI CHARACTER KHO KHON */
       +    {0xda6, 0xe06}, /* THAI CHARACTER KHO RAKHANG */
       +    {0xda7, 0xe07}, /* THAI CHARACTER NGO NGU */
       +    {0xda8, 0xe08}, /* THAI CHARACTER CHO CHAN */
       +    {0xda9, 0xe09}, /* THAI CHARACTER CHO CHING */
       +    {0xdaa, 0xe0a}, /* THAI CHARACTER CHO CHANG */
       +    {0xdab, 0xe0b}, /* THAI CHARACTER SO SO */
       +    {0xdac, 0xe0c}, /* THAI CHARACTER CHO CHOE */
       +    {0xdad, 0xe0d}, /* THAI CHARACTER YO YING */
       +    {0xdae, 0xe0e}, /* THAI CHARACTER DO CHADA */
       +    {0xdaf, 0xe0f}, /* THAI CHARACTER TO PATAK */
       +    {0xdb0, 0xe10}, /* THAI CHARACTER THO THAN */
       +    {0xdb1, 0xe11}, /* THAI CHARACTER THO NANGMONTHO */
       +    {0xdb2, 0xe12}, /* THAI CHARACTER THO PHUTHAO */
       +    {0xdb3, 0xe13}, /* THAI CHARACTER NO NEN */
       +    {0xdb4, 0xe14}, /* THAI CHARACTER DO DEK */
       +    {0xdb5, 0xe15}, /* THAI CHARACTER TO TAO */
       +    {0xdb6, 0xe16}, /* THAI CHARACTER THO THUNG */
       +    {0xdb7, 0xe17}, /* THAI CHARACTER THO THAHAN */
       +    {0xdb8, 0xe18}, /* THAI CHARACTER THO THONG */
       +    {0xdb9, 0xe19}, /* THAI CHARACTER NO NU */
       +    {0xdba, 0xe1a}, /* THAI CHARACTER BO BAIMAI */
       +    {0xdbb, 0xe1b}, /* THAI CHARACTER PO PLA */
       +    {0xdbc, 0xe1c}, /* THAI CHARACTER PHO PHUNG */
       +    {0xdbd, 0xe1d}, /* THAI CHARACTER FO FA */
       +    {0xdbe, 0xe1e}, /* THAI CHARACTER PHO PHAN */
       +    {0xdbf, 0xe1f}, /* THAI CHARACTER FO FAN */
       +    {0xdc0, 0xe20}, /* THAI CHARACTER PHO SAMPHAO */
       +    {0xdc1, 0xe21}, /* THAI CHARACTER MO MA */
       +    {0xdc2, 0xe22}, /* THAI CHARACTER YO YAK */
       +    {0xdc3, 0xe23}, /* THAI CHARACTER RO RUA */
       +    {0xdc4, 0xe24}, /* THAI CHARACTER RU */
       +    {0xdc5, 0xe25}, /* THAI CHARACTER LO LING */
       +    {0xdc6, 0xe26}, /* THAI CHARACTER LU */
       +    {0xdc7, 0xe27}, /* THAI CHARACTER WO WAEN */
       +    {0xdc8, 0xe28}, /* THAI CHARACTER SO SALA */
       +    {0xdc9, 0xe29}, /* THAI CHARACTER SO RUSI */
       +    {0xdca, 0xe2a}, /* THAI CHARACTER SO SUA */
       +    {0xdcb, 0xe2b}, /* THAI CHARACTER HO HIP */
       +    {0xdcc, 0xe2c}, /* THAI CHARACTER LO CHULA */
       +    {0xdcd, 0xe2d}, /* THAI CHARACTER O ANG */
       +    {0xdce, 0xe2e}, /* THAI CHARACTER HO NOKHUK */
       +    {0xdcf, 0xe2f}, /* THAI CHARACTER PAIYANNOI */
       +    {0xdd0, 0xe30}, /* THAI CHARACTER SARA A */
       +    {0xdd1, 0xe31}, /* THAI CHARACTER MAI HAN-AKAT */
       +    {0xdd2, 0xe32}, /* THAI CHARACTER SARA AA */
       +    {0xdd3, 0xe33}, /* THAI CHARACTER SARA AM */
       +    {0xdd4, 0xe34}, /* THAI CHARACTER SARA I */
       +    {0xdd5, 0xe35}, /* THAI CHARACTER SARA II */
       +    {0xdd6, 0xe36}, /* THAI CHARACTER SARA UE */
       +    {0xdd7, 0xe37}, /* THAI CHARACTER SARA UEE */
       +    {0xdd8, 0xe38}, /* THAI CHARACTER SARA U */
       +    {0xdd9, 0xe39}, /* THAI CHARACTER SARA UU */
       +    {0xdda, 0xe3a}, /* THAI CHARACTER PHINTHU */
       +    {0xddf, 0xe3f}, /* THAI CURRENCY SYMBOL BAHT */
       +    {0xde0, 0xe40}, /* THAI CHARACTER SARA E */
       +    {0xde1, 0xe41}, /* THAI CHARACTER SARA AE */
       +    {0xde2, 0xe42}, /* THAI CHARACTER SARA O */
       +    {0xde3, 0xe43}, /* THAI CHARACTER SARA AI MAIMUAN */
       +    {0xde4, 0xe44}, /* THAI CHARACTER SARA AI MAIMALAI */
       +    {0xde5, 0xe45}, /* THAI CHARACTER LAKKHANGYAO */
       +    {0xde6, 0xe46}, /* THAI CHARACTER MAIYAMOK */
       +    {0xde7, 0xe47}, /* THAI CHARACTER MAITAIKHU */
       +    {0xde8, 0xe48}, /* THAI CHARACTER MAI EK */
       +    {0xde9, 0xe49}, /* THAI CHARACTER MAI THO */
       +    {0xdea, 0xe4a}, /* THAI CHARACTER MAI TRI */
       +    {0xdeb, 0xe4b}, /* THAI CHARACTER MAI CHATTAWA */
       +    {0xdec, 0xe4c}, /* THAI CHARACTER THANTHAKHAT */
       +    {0xded, 0xe4d}, /* THAI CHARACTER NIKHAHIT */
       +    {0xdf0, 0xe50}, /* THAI DIGIT ZERO */
       +    {0xdf1, 0xe51}, /* THAI DIGIT ONE */
       +    {0xdf2, 0xe52}, /* THAI DIGIT TWO */
       +    {0xdf3, 0xe53}, /* THAI DIGIT THREE */
       +    {0xdf4, 0xe54}, /* THAI DIGIT FOUR */
       +    {0xdf5, 0xe55}, /* THAI DIGIT FIVE */
       +    {0xdf6, 0xe56}, /* THAI DIGIT SIX */
       +    {0xdf7, 0xe57}, /* THAI DIGIT SEVEN */
       +    {0xdf8, 0xe58}, /* THAI DIGIT EIGHT */
       +    {0xdf9, 0xe59}, /* THAI DIGIT NINE */
       +    {0x13bc, 0x152}, /* LATIN CAPITAL LIGATURE OE */
       +    {0x13bd, 0x153}, /* LATIN SMALL LIGATURE OE */
       +    {0x13be, 0x178}, /* LATIN CAPITAL LETTER Y WITH DIAERESIS */
       +    {0x20ac, 0x20ac}, /* CURRENCY EURO SIGN */
       +