From c0e0e123f70c4ac85c9292f193bbd4be6d178066 Mon Sep 17 00:00:00 2001 From: adam Date: Fri, 9 Nov 2012 17:17:53 +0700 Subject: [PATCH] #3 --- tcejdb/chacu.h | 45 -- tcejdb/chartables.c | 1487 -------------------------------------------------- tcejdb/chartables.h | 63 --- tcejdb/stringutils.c | 218 -------- tcejdb/stringutils.h | 81 --- tcejdb/translators.c | 314 ----------- tcejdb/translators.h | 82 --- 7 files changed, 2290 deletions(-) delete mode 100644 tcejdb/chacu.h delete mode 100644 tcejdb/chartables.c delete mode 100644 tcejdb/chartables.h delete mode 100644 tcejdb/stringutils.c delete mode 100644 tcejdb/stringutils.h delete mode 100644 tcejdb/translators.c delete mode 100644 tcejdb/translators.h diff --git a/tcejdb/chacu.h b/tcejdb/chacu.h deleted file mode 100644 index 273df14..0000000 --- a/tcejdb/chacu.h +++ /dev/null @@ -1,45 +0,0 @@ -/*- - * Copyright (c) 2008 - 2010 CAS Dev Team - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the CAS Dev. Team nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * chacu.h - * - * $CAS$ - */ -#ifndef _CHACU_H__ -#define _CHACU_H__ 1 - -/* - @file chartables.h - @brief CHAracter Conversion/manipulation Utility - */ - -#include "chartables.h" -#include "translators.h" -#include "stringutils.h" - -#endif /* _CHACU_H__ */ -/* End. */ diff --git a/tcejdb/chartables.c b/tcejdb/chartables.c deleted file mode 100644 index 71310e6..0000000 --- a/tcejdb/chartables.c +++ /dev/null @@ -1,1487 +0,0 @@ -/*- - * Copyright (c) 2008 - 2010 CAS Dev Team - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the CAS Dev. Team nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * chartables.c - * - * $CAS$ - */ - -#include "chartables.h" - -/* - @file chartables.c - @brief Character translation tables & accessors - - Unicode uppercase to lowercase conversion mapping table - http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/nls/rbagslowtoupmaptable.htm&tocNode=int_39939 - - Unicode lowercase to uppercase conversion mapping table - http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/nls/rbagslowtoupmaptable.htm&tocNode=int_39940 - */ - -typedef struct UCSTransMap { - /** Source character */ - unsigned int sc; - /** Destination character */ - unsigned int dc; - /** Source character description */ - char * desc_sc; - /** Destination character description */ - char * desc_dc; -} UCSTransMap; - -/* Uppercase code point, Lowercase code point, Uppercase character description, Lowercase character description*/ -static UCSTransMap mUCSU2L[] ={ - { 0x0041, 0x0061, "LATIN CAPITAL LETTER A", "LATIN SMALL LETTER A"}, - { 0x0042, 0x0062, "LATIN CAPITAL LETTER B", "LATIN SMALL LETTER B"}, - { 0x0043, 0x0063, "LATIN CAPITAL LETTER C", "LATIN SMALL LETTER C"}, - { 0x0044, 0x0064, "LATIN CAPITAL LETTER D", "LATIN SMALL LETTER D"}, - { 0x0045, 0x0065, "LATIN CAPITAL LETTER E", "LATIN SMALL LETTER E"}, - { 0x0046, 0x0066, "LATIN CAPITAL LETTER F", "LATIN SMALL LETTER F"}, - { 0x0047, 0x0067, "LATIN CAPITAL LETTER G", "LATIN SMALL LETTER G"}, - { 0x0048, 0x0068, "LATIN CAPITAL LETTER H", "LATIN SMALL LETTER H"}, - { 0x0049, 0x0069, "LATIN CAPITAL LETTER I", "LATIN SMALL LETTER I"}, - { 0x004A, 0x006A, "LATIN CAPITAL LETTER J", "LATIN SMALL LETTER J"}, - { 0x004B, 0x006B, "LATIN CAPITAL LETTER K", "LATIN SMALL LETTER K"}, - { 0x004C, 0x006C, "LATIN CAPITAL LETTER L", "LATIN SMALL LETTER L"}, - { 0x004D, 0x006D, "LATIN CAPITAL LETTER M", "LATIN SMALL LETTER M"}, - { 0x004E, 0x006E, "LATIN CAPITAL LETTER N", "LATIN SMALL LETTER N"}, - { 0x004F, 0x006F, "LATIN CAPITAL LETTER O", "LATIN SMALL LETTER O"}, - { 0x0050, 0x0070, "LATIN CAPITAL LETTER P", "LATIN SMALL LETTER P"}, - { 0x0051, 0x0071, "LATIN CAPITAL LETTER Q", "LATIN SMALL LETTER Q"}, - { 0x0052, 0x0072, "LATIN CAPITAL LETTER R", "LATIN SMALL LETTER R"}, - { 0x0053, 0x0073, "LATIN CAPITAL LETTER S", "LATIN SMALL LETTER S"}, - { 0x0054, 0x0074, "LATIN CAPITAL LETTER T", "LATIN SMALL LETTER T"}, - { 0x0055, 0x0075, "LATIN CAPITAL LETTER U", "LATIN SMALL LETTER U"}, - { 0x0056, 0x0076, "LATIN CAPITAL LETTER V", "LATIN SMALL LETTER V"}, - { 0x0057, 0x0077, "LATIN CAPITAL LETTER W", "LATIN SMALL LETTER W"}, - { 0x0058, 0x0078, "LATIN CAPITAL LETTER X", "LATIN SMALL LETTER X"}, - { 0x0059, 0x0079, "LATIN CAPITAL LETTER Y", "LATIN SMALL LETTER Y"}, - { 0x005A, 0x007A, "LATIN CAPITAL LETTER Z", "LATIN SMALL LETTER Z"}, - { 0x00C0, 0x00E0, "LATIN CAPITAL LETTER A GRAVE", "LATIN SMALL LETTER A GRAVE"}, - { 0x00C1, 0x00E1, "LATIN CAPITAL LETTER A ACUTE", "LATIN SMALL LETTER A GRAVE"}, - { 0x00C2, 0x00E2, "LATIN CAPITAL LETTER A CIRCUMFLEX", "LATIN SMALL LETTER A GRAVE"}, - { 0x00C3, 0x00E3, "LATIN CAPITAL LETTER A TILDE", "LATIN SMALL LETTER A GRAVE"}, - { 0x00C4, 0x00E4, "LATIN CAPITAL LETTER A DIAERESIS", "LATIN SMALL LETTER A GRAVE"}, - { 0x00C5, 0x00E5, "LATIN CAPITAL LETTER A RING", "LATIN SMALL LETTER A GRAVE"}, - { 0x00C6, 0x00E6, "LATIN CAPITAL LETTER A E", "LATIN SMALL LETTER A GRAVE"}, - { 0x00C7, 0x00E7, "LATIN CAPITAL LETTER C CEDILLA", "LATIN SMALL LETTER A GRAVE"}, - { 0x00C8, 0x00E8, "LATIN CAPITAL LETTER E GRAVE", "LATIN SMALL LETTER A GRAVE"}, - { 0x00C9, 0x00E9, "LATIN CAPITAL LETTER E ACUTE", "LATIN SMALL LETTER A GRAVE"}, - { 0x00CA, 0x00EA, "LATIN CAPITAL LETTER E CIRCUMFLEX", "LATIN SMALL LETTER E CIRCUMFLEX"}, - { 0x00CB, 0x00EB, "LATIN CAPITAL LETTER E DIAERESIS", "LATIN SMALL LETTER E DIAERESIS"}, - { 0x00CC, 0x00EC, "LATIN CAPITAL LETTER I GRAVE", "LATIN SMALL LETTER I GRAVE"}, - { 0x00CD, 0x00ED, "LATIN CAPITAL LETTER I ACUTE", "LATIN SMALL LETTER I ACUTE"}, - { 0x00CE, 0x00EE, "LATIN CAPITAL LETTER I CIRCUMFLEX", "LATIN SMALL LETTER I CIRCUMFLEX"}, - { 0x00CF, 0x00EF, "LATIN CAPITAL LETTER I DIAERESIS", "LATIN SMALL LETTER I DIAERESIS"}, - { 0x00D0, 0x00F0, "LATIN CAPITAL LETTER ETH", "LATIN SMALL LETTER ETH"}, - { 0x00D1, 0x00F1, "LATIN CAPITAL LETTER N TILDE", "LATIN SMALL LETTER N TILDE"}, - { 0x00D2, 0x00F2, "LATIN CAPITAL LETTER O GRAVE", "LATIN SMALL LETTER O GRAVE"}, - { 0x00D3, 0x00F3, "LATIN CAPITAL LETTER O ACUTE", "LATIN SMALL LETTER O ACUTE"}, - { 0x00D4, 0x00F4, "LATIN CAPITAL LETTER O CIRCUMFLEX", "LATIN SMALL LETTER O CIRCUMFLEX"}, - { 0x00D5, 0x00F5, "LATIN CAPITAL LETTER O TILDE", "LATIN SMALL LETTER O TILDE"}, - { 0x00D6, 0x00F6, "LATIN CAPITAL LETTER O DIAERESIS", "LATIN SMALL LETTER O DIAERESIS"}, - { 0x00D8, 0x00F8, "LATIN CAPITAL LETTER O SLASH", "LATIN SMALL LETTER O SLASH"}, - { 0x00D9, 0x00F9, "LATIN CAPITAL LETTER U GRAVE", "LATIN SMALL LETTER U GRAVE"}, - { 0x00DA, 0x00FA, "LATIN CAPITAL LETTER U ACUTE", "LATIN SMALL LETTER U ACUTE"}, - { 0x00DB, 0x00FB, "LATIN CAPITAL LETTER U CIRCUMFLEX", "LATIN SMALL LETTER U CIRCUMFLEX"}, - { 0x00DC, 0x00FC, "LATIN CAPITAL LETTER U DIAERESIS", "LATIN SMALL LETTER U DIAERESIS"}, - { 0x00DD, 0x00FD, "LATIN CAPITAL LETTER Y ACUTE", "LATIN SMALL LETTER Y ACUTE"}, - { 0x00DE, 0x00FE, "LATIN CAPITAL LETTER THORN", "LATIN SMALL LETTER THORN"}, - { 0x0100, 0x0101, "LATIN CAPITAL LETTER A WITH MACRON", "LATIN SMALL LETTER A WITH MACRON"}, - { 0x0102, 0x0103, "LATIN CAPITAL LETTER A WITH BREVE", "LATIN SMALL LETTER A WITH BREVE"}, - { 0x0104, 0x0105, "LATIN CAPITAL LETTER A WITH OGONEK", "LATIN SMALL LETTER A WITH OGONEK"}, - { 0x0106, 0x0107, "LATIN CAPITAL LETTER C WITH ACUTE", "LATIN SMALL LETTER C WITH ACUTE"}, - { 0x0108, 0x0109, "LATIN CAPITAL LETTER C WITH CIRCUMFLEX", "LATIN SMALL LETTER C WITH CIRCUMFLEX"}, - { 0x010A, 0x010B, "LATIN CAPITAL LETTER C WITH DOT ABOVE", "LATIN SMALL LETTER C WITH DOT ABOVE"}, - { 0x010C, 0x010D, "LATIN CAPITAL LETTER C WITH CARON", "LATIN SMALL LETTER C WITH CARON"}, - { 0x010E, 0x010F, "LATIN CAPITAL LETTER D WITH CARON", "LATIN SMALL LETTER D WITH CARON"}, - { 0x0110, 0x0111, "LATIN CAPITAL LETTER D WITH STROKE", "LATIN SMALL LETTER D WITH STROKE"}, - { 0x0112, 0x0113, "LATIN CAPITAL LETTER E WITH MACRON", "LATIN SMALL LETTER E WITH MACRON"}, - { 0x0114, 0x0115, "LATIN CAPITAL LETTER E WITH BREVE", "LATIN SMALL LETTER E WITH BREVE"}, - { 0x0116, 0x0117, "LATIN CAPITAL LETTER E WITH DOT ABOVE", "LATIN SMALL LETTER E WITH DOT ABOVE"}, - { 0x0118, 0x0119, "LATIN CAPITAL LETTER E WITH OGONEK", "LATIN SMALL LETTER E WITH OGONEK"}, - { 0x011A, 0x011B, "LATIN CAPITAL LETTER E WITH CARON", "LATIN SMALL LETTER E WITH CARON"}, - { 0x011C, 0x011D, "LATIN CAPITAL LETTER G WITH CIRCUMFLEX", "LATIN SMALL LETTER G WITH CIRCUMFLEX"}, - { 0x011E, 0x011F, "LATIN CAPITAL LETTER G WITH BREVE", "LATIN SMALL LETTER G WITH BREVE"}, - { 0x0120, 0x0121, "LATIN CAPITAL LETTER G WITH DOT ABOVE", "LATIN SMALL LETTER G WITH DOT ABOVE"}, - { 0x0122, 0x0123, "LATIN CAPITAL LETTER G WITH CEDILLA", "LATIN SMALL LETTER G WITH CEDILLA"}, - { 0x0124, 0x0125, "LATIN CAPITAL LETTER H WITH CIRCUMFLEX", "LATIN SMALL LETTER H WITH CIRCUMFLEX"}, - { 0x0126, 0x0127, "LATIN CAPITAL LETTER H WITH STROKE", "LATIN SMALL LETTER H WITH STROKE"}, - { 0x0128, 0x0129, "LATIN CAPITAL LETTER I WITH TILDE", "LATIN SMALL LETTER I WITH TILDE"}, - { 0x012A, 0x012B, "LATIN CAPITAL LETTER I WITH MACRON", "LATIN SMALL LETTER I WITH MACRON"}, - { 0x012C, 0x012D, "LATIN CAPITAL LETTER I WITH BREVE", "LATIN SMALL LETTER I WITH BREVE"}, - { 0x012E, 0x012F, "LATIN CAPITAL LETTER I WITH OGONEK", "LATIN SMALL LETTER I WITH OGONEK"}, - { 0x0130, 0x0069, "LATIN CAPITAL LETTER I WITH DOT ABOVE", "LATIN SMALL LETTER I"}, - { 0x0132, 0x0133, "LATIN CAPITAL LIGATURE IJ", "LATIN SMALL LIGATURE IJ"}, - { 0x0134, 0x0135, "LATIN CAPITAL LETTER J WITH CIRCUMFLEX", "LATIN SMALL LETTER J WITH CIRCUMFLEX"}, - { 0x0136, 0x0137, "LATIN CAPITAL LETTER K WITH CEDILLA", "LATIN SMALL LETTER K WITH CEDILLA"}, - { 0x0139, 0x013A, "LATIN CAPITAL LETTER L WITH ACUTE", "LATIN SMALL LETTER L WITH ACUTE"}, - { 0x013B, 0x013C, "LATIN CAPITAL LETTER L WITH CEDILLA", "LATIN SMALL LETTER L WITH CEDILLA"}, - { 0x013D, 0x013E, "LATIN CAPITAL LETTER L WITH CARON", "LATIN SMALL LETTER L WITH CARON"}, - { 0x013F, 0x0140, "LATIN CAPITAL LETTER L WITH MIDDLE DOT", "LATIN SMALL LETTER L WITH MIDDLE DOT"}, - { 0x0141, 0x0142, "LATIN CAPITAL LETTER L WITH STROKE", "LATIN SMALL LETTER L WITH STROKE"}, - { 0x0143, 0x0144, "LATIN CAPITAL LETTER N WITH ACUTE", "LATIN SMALL LETTER N WITH ACUTE"}, - { 0x0145, 0x0146, "LATIN CAPITAL LETTER N WITH CEDILLA", "LATIN SMALL LETTER N WITH CEDILLA"}, - { 0x0147, 0x0148, "LATIN CAPITAL LETTER N WITH CARON", "LATIN SMALL LETTER N WITH CARON"}, - { 0x014A, 0x014B, "LATIN CAPITAL LETTER ENG (SAMI)", "LATIN SMALL LETTER ENG (SAMI)"}, - { 0x014C, 0x014D, "LATIN CAPITAL LETTER O WITH MACRON", "LATIN SMALL LETTER O WITH MACRON"}, - { 0x014E, 0x014F, "LATIN CAPITAL LETTER O WITH BREVE", "LATIN SMALL LETTER O WITH BREVE"}, - { 0x0150, 0x0151, "LATIN CAPITAL LETTER O WITH DOUBLE ACUTE", "LATIN SMALL LETTER O WITH DOUBLE ACUTE"}, - { 0x0152, 0x0153, "LATIN CAPITAL LIGATURE OE", "LATIN SMALL LIGATURE OE"}, - { 0x0154, 0x0155, "LATIN CAPITAL LETTER R WITH ACUTE", "LATIN SMALL LETTER R WITH ACUTE"}, - { 0x0156, 0x0157, "LATIN CAPITAL LETTER R WITH CEDILLA", "LATIN SMALL LETTER R WITH CEDILLA"}, - { 0x0158, 0x0159, "LATIN CAPITAL LETTER R WITH CARON", "LATIN SMALL LETTER R WITH CARON"}, - { 0x015A, 0x015B, "LATIN CAPITAL LETTER S WITH ACUTE", "LATIN SMALL LETTER S WITH ACUTE"}, - { 0x015C, 0x015D, "LATIN CAPITAL LETTER S WITH CIRCUMFLEX", "LATIN SMALL LETTER S WITH CIRCUMFLEX"}, - { 0x015E, 0x015F, "LATIN CAPITAL LETTER S WITH CEDILLA", "LATIN SMALL LETTER S WITH CEDILLA"}, - { 0x0160, 0x0161, "LATIN CAPITAL LETTER S WITH CARON", "LATIN SMALL LETTER S WITH CARON"}, - { 0x0162, 0x0163, "LATIN CAPITAL LETTER T WITH CEDILLA", "LATIN SMALL LETTER T WITH CEDILLA"}, - { 0x0164, 0x0165, "LATIN CAPITAL LETTER T WITH CARON", "LATIN SMALL LETTER T WITH CARON"}, - { 0x0166, 0x0167, "LATIN CAPITAL LETTER T WITH STROKE", "LATIN SMALL LETTER T WITH STROKE"}, - { 0x0168, 0x0169, "LATIN CAPITAL LETTER U WITH TILDE", "LATIN SMALL LETTER U WITH TILDE"}, - { 0x016A, 0x016B, "LATIN CAPITAL LETTER U WITH MACRON", "LATIN SMALL LETTER U WITH MACRON"}, - { 0x016C, 0x016D, "LATIN CAPITAL LETTER U WITH BREVE", "LATIN SMALL LETTER U WITH BREVE"}, - { 0x016E, 0x016F, "LATIN CAPITAL LETTER U WITH RING ABOVE", "LATIN SMALL LETTER U WITH RING ABOVE"}, - { 0x0170, 0x0171, "LATIN CAPITAL LETTER U WITH DOUBLE ACUTE", "LATIN SMALL LETTER U WITH DOUBLE ACUTE"}, - { 0x0172, 0x0173, "LATIN CAPITAL LETTER U WITH OGONEK", "LATIN SMALL LETTER U WITH OGONEK"}, - { 0x0174, 0x0175, "LATIN CAPITAL LETTER W WITH CIRCUMFLEX", "LATIN SMALL LETTER W WITH CIRCUMFLEX"}, - { 0x0176, 0x0177, "LATIN CAPITAL LETTER Y WITH CIRCUMFLEX", "LATIN SMALL LETTER Y WITH CIRCUMFLEX"}, - { 0x0178, 0x00FF, "LATIN CAPITAL LETTER Y WITH DIAERESIS", "LATIN SMALL LETTER Y DIAERESIS"}, - { 0x0179, 0x017A, "LATIN CAPITAL LETTER Z WITH ACUTE", "LATIN SMALL LETTER Z WITH ACUTE"}, - { 0x017B, 0x017C, "LATIN CAPITAL LETTER Z WITH DOT ABOVE", "LATIN SMALL LETTER Z WITH DOT ABOVE"}, - { 0x017D, 0x017E, "LATIN CAPITAL LETTER Z WITH CARON", "LATIN SMALL LETTER Z WITH CARON"}, - { 0x0181, 0x0253, "LATIN CAPITAL LETTER B WITH HOOK", "LATIN SMALL LETTER B WITH HOOK"}, - { 0x0182, 0x0183, "LATIN CAPITAL LETTER B WITH TOPBAR", "LATIN SMALL LETTER B WITH TOPBAR"}, - { 0x0184, 0x0185, "LATIN CAPITAL LETTER TONE SIX", "LATIN SMALL LETTER TONE SIX"}, - { 0x0186, 0x0254, "LATIN CAPITAL LETTER OPEN O", "LATIN SMALL LETTER OPEN O"}, - { 0x0187, 0x0188, "LATIN CAPITAL LETTER C WITH HOOK", "LATIN SMALL LETTER C WITH HOOK"}, - { 0x018A, 0x0257, "LATIN CAPITAL LETTER D WITH HOOK", "LATIN SMALL LETTER D WITH HOOK"}, - { 0x018B, 0x018C, "LATIN CAPITAL LETTER D WITH TOPBAR", "LATIN SMALL LETTER D WITH TOPBAR"}, - { 0x018E, 0x0258, "LATIN CAPITAL LETTER REVERSED E", "LATIN SMALL LETTER REVERSED E"}, - { 0x018F, 0x0259, "LATIN CAPITAL LETTER SCHWA", "LATIN SMALL LETTER SCHWA"}, - { 0x0190, 0x025B, "LATIN CAPITAL LETTER OPEN E", "LATIN SMALL LETTER OPEN E"}, - { 0x0191, 0x0192, "LATIN CAPITAL LETTER F WITH HOOK", "LATIN SMALL LETTER F WITH HOOK"}, - { 0x0193, 0x0260, "LATIN CAPITAL LETTER G WITH HOOK", "LATIN SMALL LETTER G WITH HOOK"}, - { 0x0194, 0x0263, "LATIN CAPITAL LETTER GAMMA", "LATIN SMALL LETTER GAMMA"}, - { 0x0196, 0x0269, "LATIN CAPITAL LETTER IOTA", "LATIN SMALL LETTER IOTA"}, - { 0x0197, 0x0268, "LATIN CAPITAL LETTER I WITH STROKE", "LATIN SMALL LETTER I WITH STROKE"}, - { 0x0198, 0x0199, "LATIN CAPITAL LETTER K WITH HOOK", "LATIN SMALL LETTER K WITH HOOK"}, - { 0x019C, 0x026f, "LATIN CAPITAL LETTER TURNED M", "LATIN SMALL LETTER TURNED M"}, - { 0x019D, 0x0272, "LATIN CAPITAL LETTER N WITH LEFT HOOK", "LATIN SMALL LETTER N WITH LEFT HOOK"}, - { 0x019F, 0x0275, "LATIN CAPITAL LETTER O WITH MIDDLE TILDE", "LATIN SMALL LETTER BARRED O"}, - { 0x01A0, 0x01A1, "LATIN CAPITAL LETTER O WITH HORN", "LATIN SMALL LETTER O WITH HORN"}, - { 0x01A2, 0x01A3, "LATIN CAPITAL LETTER OI", "LATIN SMALL LETTER OI"}, - { 0x01A4, 0x01A5, "LATIN CAPITAL LETTER P WITH HOOK", "LATIN SMALL LETTER P WITH HOOK"}, - { 0x01A7, 0x01A8, "LATIN CAPITAL LETTER TONE TWO", "LATIN SMALL LETTER TONE TWO"}, - { 0x01A9, 0x0283, "LATIN CAPITAL LETTER ESH", "LATIN SMALL LETTER ESH"}, - { 0x01AC, 0x01AD, "LATIN CAPITAL LETTER T WITH HOOK", "LATIN SMALL LETTER T WITH HOOK"}, - { 0x01AE, 0x0288, "LATIN CAPITAL LETTER T WITH RETROFLEX HOOK", "LATIN SMALL LETTER T WITH RETROFLEX HOOK"}, - { 0x01AF, 0x01B0, "LATIN CAPITAL LETTER U WITH HORN", "LATIN SMALL LETTER U WITH HORN"}, - { 0x01B1, 0x028A, "LATIN CAPITAL LETTER UPSILON", "LATIN SMALL LETTER UPSILON"}, - { 0x01B2, 0x028B, "LATIN CAPITAL LETTER V WITH HOOK", "LATIN SMALL LETTER V WITH HOOK"}, - { 0x01B3, 0x01B4, "LATIN CAPITAL LETTER Y WITH HOOK", "LATIN SMALL LETTER Y WITH HOOK"}, - { 0x01B5, 0x01B6, "LATIN CAPITAL LETTER Z WITH STROKE", "LATIN SMALL LETTER Z WITH STROKE"}, - { 0x01B7, 0x0292, "LATIN CAPITAL LETTER EZH", "LATIN SMALL LETTER EZH"}, - { 0x01B8, 0x01B9, "LATIN CAPITAL LETTER EZH REVERSED", "LATIN SMALL LETTER EZH REVERSED"}, - { 0x01BC, 0x01BD, "LATIN CAPITAL LETTER TONE FIVE", "LATIN SMALL LETTER TONE FIVE"}, - { 0x01C4, 0x01C6, "LATIN CAPITAL LETTER DZ WITH CARON", "LATIN SMALL LETTER DZ WITH CARON"}, - { 0x01C5, 0x01C6, "LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON", "LATIN SMALL LETTER DZ WITH CARON"}, - { 0x01C7, 0x01C9, "LATIN CAPITAL LETTER LJ", "LATIN SMALL LETTER LJ"}, - { 0x01C8, 0x01C9, "LATIN CAPITAL LETTER L WITH SMALL LETTER J", "LATIN SMALL LETTER LJ"}, - { 0x01CA, 0x01CC, "LATIN CAPITAL LETTER NJ", "LATIN SMALL LETTER NJ"}, - { 0x01CB, 0x01CC, "LATIN CAPITAL LETTER N WITH SMALL LETTER J", "LATIN SMALL LETTER NJ"}, - { 0x01CD, 0x01CE, "LATIN CAPITAL LETTER A WITH CARON", "LATIN SMALL LETTER A WITH CARON"}, - { 0x01CF, 0x01D0, "LATIN CAPITAL LETTER I WITH CARON", "LATIN SMALL LETTER I WITH CARON"}, - { 0x01D1, 0x01D2, "LATIN CAPITAL LETTER O WITH CARON", "LATIN SMALL LETTER O WITH CARON"}, - { 0x01D3, 0x01D4, "LATIN CAPITAL LETTER U WITH CARON", "LATIN SMALL LETTER U WITH CARON"}, - { 0x01D5, 0x01D6, "LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON", "LATIN SMALL LETTER U WITH DIAERESIS AND MACRON"}, - { 0x01D7, 0x01D8, "LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE", "LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE"}, - { 0x01D9, 0x01DA, "LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON", "LATIN SMALL LETTER U WITH DIAERESIS AND CARON"}, - { 0x01DB, 0x01DC, "LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE", "LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE"}, - { 0x01DE, 0x01DF, "LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON", "LATIN SMALL LETTER A WITH DIAERESIS AND MACRON"}, - { 0x01E0, 0x01E1, "LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON", "LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON"}, - { 0x01E2, 0x01E3, "LATIN CAPITAL LIGATURE AE WITH MACRON", "LATIN SMALL LIGATURE AE WITH MACRON"}, - { 0x01E4, 0x01E5, "LATIN CAPITAL LETTER G WITH STROKE", "LATIN SMALL LETTER G WITH STROKE"}, - { 0x01E6, 0x01E7, "LATIN CAPITAL LETTER G WITH CARON", "LATIN SMALL LETTER G WITH CARON"}, - { 0x01E8, 0x01E9, "LATIN CAPITAL LETTER K WITH CARON", "LATIN SMALL LETTER K WITH CARON"}, - { 0x01EA, 0x01EB, "LATIN CAPITAL LETTER O WITH OGONEK", "LATIN SMALL LETTER O WITH OGONEK"}, - { 0x01EC, 0x01ED, "LATIN CAPITAL LETTER O WITH OGONEK AND MACRON", "LATIN SMALL LETTER O WITH OGONEK AND MACRON"}, - { 0x01EE, 0x01EF, "LATIN CAPITAL LETTER EZH WITH CARON", "LATIN SMALL LETTER EZH WITH CARON"}, - { 0x01F1, 0x01F3, "LATIN CAPITAL LETTER DZ", "LATIN SMALL LETTER DZ"}, - { 0x01F4, 0x01F5, "LATIN CAPITAL LETTER G WITH ACUTE", "LATIN SMALL LETTER G WITH ACUTE"}, - { 0x01FA, 0x01FB, "LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE", "LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE"}, - { 0x01FC, 0x01FD, "LATIN CAPITAL LIGATURE AE WITH ACUTE", "LATIN SMALL LIGATURE AE WITH ACUTE"}, - { 0x01FE, 0x01FF, "LATIN CAPITAL LETTER O WITH STROKE AND ACUTE", "LATIN SMALL LETTER O WITH STROKE AND ACUTE"}, - { 0x0200, 0x0201, "LATIN CAPITAL LETTER A WITH DOUBLE GRAVE", "LATIN SMALL LETTER A WITH DOUBLE GRAVE"}, - { 0x0202, 0x0203, "LATIN CAPITAL LETTER A WITH INVERTED BREVE", "LATIN SMALL LETTER A WITH INVERTED BREVE"}, - { 0x0204, 0x0205, "LATIN CAPITAL LETTER E WITH DOUBLE GRAVE", "LATIN SMALL LETTER E WITH DOUBLE GRAVE"}, - { 0x0206, 0x0207, "LATIN CAPITAL LETTER E WITH INVERTED BREVE", "LATIN SMALL LETTER E WITH INVERTED BREVE"}, - { 0x0208, 0x0209, "LATIN CAPITAL LETTER I WITH DOUBLE GRAVE", "LATIN SMALL LETTER I WITH DOUBLE GRAVE"}, - { 0x020A, 0x020B, "LATIN CAPITAL LETTER I WITH INVERTED BREVE", "LATIN SMALL LETTER I WITH INVERTED BREVE"}, - { 0x020C, 0x020D, "LATIN CAPITAL LETTER O WITH DOUBLE GRAVE", "LATIN SMALL LETTER O WITH DOUBLE GRAVE"}, - { 0x020E, 0x020F, "LATIN CAPITAL LETTER O WITH INVERTED BREVE", "LATIN SMALL LETTER O WITH INVERTED BREVE"}, - { 0x0210, 0x0211, "LATIN CAPITAL LETTER R WITH DOUBLE GRAVE", "LATIN SMALL LETTER R WITH DOUBLE GRAVE"}, - { 0x0212, 0x0213, "LATIN CAPITAL LETTER R WITH INVERTED BREVE", "LATIN SMALL LETTER R WITH INVERTED BREVE"}, - { 0x0214, 0x0215, "LATIN CAPITAL LETTER U WITH DOUBLE GRAVE", "LATIN SMALL LETTER U WITH DOUBLE GRAVE"}, - { 0x0216, 0x0217, "LATIN CAPITAL LETTER U WITH INVERTED BREVE", "LATIN SMALL LETTER U WITH INVERTED BREVE"}, - { 0x0386, 0x03AC, "GREEK CAPITAL LETTER ALPHA WITH TONOS", "GREEK SMALL LETTER ALPHA WITH TONOS"}, - { 0x0388, 0x03AD, "GREEK CAPITAL LETTER EPSILON WITH TONOS", "GREEK SMALL LETTER EPSILON WITH TONOS"}, - { 0x0389, 0x03AE, "GREEK CAPITAL LETTER ETA WITH TONOS", "GREEK SMALL LETTER ETA WITH TONOS"}, - { 0x038A, 0x03AF, "GREEK CAPITAL LETTER IOTA WITH TONOS", "GREEK SMALL LETTER IOTA WITH TONOS"}, - { 0x038C, 0x03CC, "GREEK CAPITAL LETTER OMICRON WITH TONOS", "GREEK SMALL LETTER OMICRON WITH TONOS"}, - { 0x038E, 0x03CD, "GREEK CAPITAL LETTER UPSILON WITH TONOS", "GREEK SMALL LETTER UPSILON WITH TONOS"}, - { 0x038F, 0x03CE, "GREEK CAPITAL LETTER OMEGA WITH TONOS", "GREEK SMALL LETTER OMEGA WITH TONOS"}, - { 0x0391, 0x03B1, "GREEK CAPITAL LETTER ALPHA", "GREEK SMALL LETTER ALPHA"}, - { 0x0392, 0x03B2, "GREEK CAPITAL LETTER BETA", "GREEK SMALL LETTER BETA"}, - { 0x0393, 0x03B3, "GREEK CAPITAL LETTER GAMMA", "GREEK SMALL LETTER GAMMA"}, - { 0x0394, 0x03B4, "GREEK CAPITAL LETTER DELTA", "GREEK SMALL LETTER DELTA"}, - { 0x0395, 0x03B5, "GREEK CAPITAL LETTER EPSILON", "GREEK SMALL LETTER EPSILON"}, - { 0x0396, 0x03B6, "GREEK CAPITAL LETTER ZETA", "GREEK SMALL LETTER ZETA"}, - { 0x0397, 0x03B7, "GREEK CAPITAL LETTER ETA", "GREEK SMALL LETTER ETA"}, - { 0x0398, 0x03B8, "GREEK CAPITAL LETTER THETA", "GREEK SMALL LETTER THETA"}, - { 0x0399, 0x03B9, "GREEK CAPITAL LETTER IOTA", "GREEK SMALL LETTER IOTA"}, - { 0x039A, 0x03BA, "GREEK CAPITAL LETTER KAPPA", "GREEK SMALL LETTER KAPPA"}, - { 0x039B, 0x03BB, "GREEK CAPITAL LETTER LAMDA", "GREEK SMALL LETTER LAMDA"}, - { 0x039C, 0x03BC, "GREEK CAPITAL LETTER MU", "GREEK SMALL LETTER MU"}, - { 0x039D, 0x03BD, "GREEK CAPITAL LETTER NU", "GREEK SMALL LETTER NU"}, - { 0x039E, 0x03BE, "GREEK CAPITAL LETTER XI", "GREEK SMALL LETTER XI"}, - { 0x039F, 0x03BF, "GREEK CAPITAL LETTER OMICRON", "GREEK SMALL LETTER OMICRON"}, - { 0x03A0, 0x03C0, "GREEK CAPITAL LETTER PI", "GREEK SMALL LETTER PI"}, - { 0x03A1, 0x03C1, "GREEK CAPITAL LETTER RHO", "GREEK SMALL LETTER RHO"}, - { 0x03A3, 0x03C3, "GREEK CAPITAL LETTER SIGMA", "GREEK SMALL LETTER SIGMA"}, - { 0x03A4, 0x03C4, "GREEK CAPITAL LETTER TAU", "GREEK SMALL LETTER TAU"}, - { 0x03A5, 0x03C5, "GREEK CAPITAL LETTER UPSILON", "GREEK SMALL LETTER UPSILON"}, - { 0x03A6, 0x03C6, "GREEK CAPITAL LETTER PHI", "GREEK SMALL LETTER PHI"}, - { 0x03A7, 0x03C7, "GREEK CAPITAL LETTER CHI", "GREEK SMALL LETTER CHI"}, - { 0x03A8, 0x03C8, "GREEK CAPITAL LETTER PSI", "GREEK SMALL LETTER PSI"}, - { 0x03A9, 0x03C9, "GREEK CAPITAL LETTER OMEGA", "GREEK SMALL LETTER OMEGA"}, - { 0x03AA, 0x03CA, "GREEK CAPITAL LETTER IOTA WITH DIALYTIKA", "GREEK SMALL LETTER IOTA WITH DIALYTIKA"}, - { 0x03AB, 0x03CB, "GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA", "GREEK SMALL LETTER UPSILON WITH DIALYTIKA"}, - { 0x03E2, 0x03E3, "COPTIC CAPITAL LETTER SHEI", "COPTIC SMALL LETTER SHEI"}, - { 0x03E4, 0x03E5, "COPTIC CAPITAL LETTER FEI", "COPTIC SMALL LETTER FEI"}, - { 0x03E6, 0x03E7, "COPTIC CAPITAL LETTER KHEI", "COPTIC SMALL LETTER KHEI"}, - { 0x03E8, 0x03E9, "COPTIC CAPITAL LETTER HORI", "COPTIC SMALL LETTER HORI"}, - { 0x03EA, 0x03EB, "COPTIC CAPITAL LETTER GANGIA", "COPTIC SMALL LETTER GANGIA"}, - { 0x03EC, 0x03ED, "COPTIC CAPITAL LETTER SHIMA", "COPTIC SMALL LETTER SHIMA"}, - { 0x03EE, 0x03EF, "COPTIC CAPITAL LETTER DEI", "COPTIC SMALL LETTER DEI"}, - { 0x0401, 0x0451, "CYRILLIC CAPITAL LETTER IO", "CYRILLIC SMALL LETTER IO"}, - { 0x0402, 0x0452, "CYRILLIC CAPITAL LETTER DJE (SERBOCROATIAN)", "CYRILLIC SMALL LETTER DJE (SERBOCROATIAN)"}, - { 0x0403, 0x0453, "CYRILLIC CAPITAL LETTER GJE", "CYRILLIC SMALL LETTER GJE"}, - { 0x0404, 0x0454, "CYRILLIC CAPITAL LETTER UKRAINIAN IE", "CYRILLIC SMALL LETTER UKRAINIAN IE"}, - { 0x0405, 0x0455, "CYRILLIC CAPITAL LETTER DZE", "CYRILLIC SMALL LETTER DZE"}, - { 0x0406, 0x0456, "CYRILLIC CAPITAL LETTER BYELORUSSIAN_UKRAINIAN I", "CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I"}, - { 0x0407, 0x0457, "CYRILLIC CAPITAL LETTER YI (UKRAINIAN)", "CYRILLIC SMALL LETTER YI (UKRAINIAN)"}, - { 0x0408, 0x0458, "CYRILLIC CAPITAL LETTER JE", "CYRILLIC SMALL LETTER JE"}, - { 0x0409, 0x0459, "CYRILLIC CAPITAL LETTER LJE", "CYRILLIC SMALL LETTER LJE"}, - { 0x040A, 0x045A, "CYRILLIC CAPITAL LETTER NJE", "CYRILLIC SMALL LETTER NJE"}, - { 0x040B, 0x045B, "CYRILLIC CAPITAL LETTER TSHE (SERBOCROATIAN)", "CYRILLIC SMALL LETTER TSHE (SERBOCROATIAN)"}, - { 0x040C, 0x045C, "CYRILLIC CAPITAL LETTER KJE", "CYRILLIC SMALL LETTER KJE"}, - { 0x040E, 0x045E, "CYRILLIC CAPITAL LETTER SHORT U (BYELORUSSIAN)", "CYRILLIC SMALL LETTER SHORT U (BYELORUSSIAN)"}, - { 0x040F, 0x045F, "CYRILLIC CAPITAL LETTER DZHE", "CYRILLIC SMALL LETTER DZHE"}, - { 0x0410, 0x0430, "CYRILLIC CAPITAL LETTER A", "CYRILLIC SMALL LETTER A"}, - { 0x0411, 0x0431, "CYRILLIC CAPITAL LETTER BE", "CYRILLIC SMALL LETTER BE"}, - { 0x0412, 0x0432, "CYRILLIC CAPITAL LETTER VE", "CYRILLIC SMALL LETTER VE"}, - { 0x0413, 0x0433, "CYRILLIC CAPITAL LETTER GHE", "CYRILLIC SMALL LETTER GHE"}, - { 0x0414, 0x0434, "CYRILLIC CAPITAL LETTER DE", "CYRILLIC SMALL LETTER DE"}, - { 0x0415, 0x0435, "CYRILLIC CAPITAL LETTER IE", "CYRILLIC SMALL LETTER IE"}, - { 0x0416, 0x0436, "CYRILLIC CAPITAL LETTER ZHE", "CYRILLIC SMALL LETTER ZHE"}, - { 0x0417, 0x0437, "CYRILLIC CAPITAL LETTER ZE", "CYRILLIC SMALL LETTER ZE"}, - { 0x0418, 0x0438, "CYRILLIC CAPITAL LETTER I", "CYRILLIC SMALL LETTER I"}, - { 0x0419, 0x0439, "CYRILLIC CAPITAL LETTER SHORT I", "CYRILLIC SMALL LETTER SHORT I"}, - { 0x041A, 0x043A, "CYRILLIC CAPITAL LETTER KA", "CYRILLIC SMALL LETTER KA"}, - { 0x041B, 0x043B, "CYRILLIC CAPITAL LETTER EL", "CYRILLIC SMALL LETTER EL"}, - { 0x041C, 0x043C, "CYRILLIC CAPITAL LETTER EM", "CYRILLIC SMALL LETTER EM"}, - { 0x041D, 0x043D, "CYRILLIC CAPITAL LETTER EN", "CYRILLIC SMALL LETTER EN"}, - { 0x041E, 0x043E, "CYRILLIC CAPITAL LETTER O", "CYRILLIC SMALL LETTER O"}, - { 0x041F, 0x043F, "CYRILLIC CAPITAL LETTER PE", "CYRILLIC SMALL LETTER PE"}, - { 0x0420, 0x0440, "CYRILLIC CAPITAL LETTER ER", "CYRILLIC SMALL LETTER ER"}, - { 0x0421, 0x0441, "CYRILLIC CAPITAL LETTER ES", "CYRILLIC SMALL LETTER ES"}, - { 0x0422, 0x0442, "CYRILLIC CAPITAL LETTER TE", "CYRILLIC SMALL LETTER TE"}, - { 0x0423, 0x0443, "CYRILLIC CAPITAL LETTER U", "CYRILLIC SMALL LETTER U"}, - { 0x0424, 0x0444, "CYRILLIC CAPITAL LETTER EF", "CYRILLIC SMALL LETTER EF"}, - { 0x0425, 0x0445, "CYRILLIC CAPITAL LETTER HA", "CYRILLIC SMALL LETTER HA"}, - { 0x0426, 0x0446, "CYRILLIC CAPITAL LETTER TSE", "CYRILLIC SMALL LETTER TSE"}, - { 0x0427, 0x0447, "CYRILLIC CAPITAL LETTER CHE", "CYRILLIC SMALL LETTER CHE"}, - { 0x0428, 0x0448, "CYRILLIC CAPITAL LETTER SHA", "CYRILLIC SMALL LETTER SHA"}, - { 0x0429, 0x0449, "CYRILLIC CAPITAL LETTER SHCHA", "CYRILLIC SMALL LETTER SHCHA"}, - { 0x042A, 0x044A, "CYRILLIC CAPITAL LETTER HARD SIGN", "CYRILLIC SMALL LETTER HARD SIGN"}, - { 0x042B, 0x044B, "CYRILLIC CAPITAL LETTER YERU", "CYRILLIC SMALL LETTER YERU"}, - { 0x042C, 0x044C, "CYRILLIC CAPITAL LETTER SOFT SIGN", "CYRILLIC SMALL LETTER SOFT SIGN"}, - { 0x042D, 0x044D, "CYRILLIC CAPITAL LETTER E", "CYRILLIC SMALL LETTER E"}, - { 0x042E, 0x044E, "CYRILLIC CAPITAL LETTER YU", "CYRILLIC SMALL LETTER YU"}, - { 0x042F, 0x044F, "CYRILLIC CAPITAL LETTER YA", "CYRILLIC SMALL LETTER YA"}, - { 0x0460, 0x0461, "CYRILLIC CAPITAL LETTER OMEGA", "CYRILLIC SMALL LETTER OMEGA"}, - { 0x0462, 0x0463, "CYRILLIC CAPITAL LETTER YAT", "CYRILLIC SMALL LETTER YAT"}, - { 0x0464, 0x0465, "CYRILLIC CAPITAL LETTER IOTIFIED E", "CYRILLIC SMALL LETTER IOTIFIED E"}, - { 0x0466, 0x0467, "CYRILLIC CAPITAL LETTER LITTLE YUS", "CYRILLIC SMALL LETTER LITTLE YUS"}, - { 0x0468, 0x0469, "CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS", "CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS"}, - { 0x046A, 0x046B, "CYRILLIC CAPITAL LETTER BIG YUS", "CYRILLIC SMALL LETTER BIG YUS"}, - { 0x046C, 0x046D, "CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS", "CYRILLIC SMALL LETTER IOTIFIED BIG YUS"}, - { 0x046E, 0x046F, "CYRILLIC CAPITAL LETTER KSI", "CYRILLIC SMALL LETTER KSI"}, - { 0x0470, 0x0471, "CYRILLIC CAPITAL LETTER PSI", "CYRILLIC SMALL LETTER PSI"}, - { 0x0472, 0x0473, "CYRILLIC CAPITAL LETTER FITA", "CYRILLIC SMALL LETTER FITA"}, - { 0x0474, 0x0475, "CYRILLIC CAPITAL LETTER IZHITSA", "CYRILLIC SMALL LETTER IZHITSA"}, - { 0x0476, 0x0477, "CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT", "CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT"}, - { 0x0478, 0x0479, "CYRILLIC CAPITAL LETTER UK", "CYRILLIC SMALL LETTER UK"}, - { 0x047A, 0x047B, "CYRILLIC CAPITAL LETTER ROUND OMEGA", "CYRILLIC SMALL LETTER ROUND OMEGA"}, - { 0x047C, 0x047D, "CYRILLIC CAPITAL LETTER OMEGA WITH TITLO", "CYRILLIC SMALL LETTER OMEGA WITH TITLO"}, - { 0x047E, 0x047F, "CYRILLIC CAPITAL LETTER OT", "CYRILLIC SMALL LETTER OT"}, - { 0x0480, 0x0481, "CYRILLIC CAPITAL LETTER KOPPA", "CYRILLIC SMALL LETTER KOPPA"}, - { 0x0490, 0x0491, "CYRILLIC CAPITAL LETTER GHE WITH UPTURN", "CYRILLIC SMALL LETTER GHE WITH UPTURN"}, - { 0x0492, 0x0493, "CYRILLIC CAPITAL LETTER GHE WITH STROKE", "CYRILLIC SMALL LETTER GHE WITH STROKE"}, - { 0x0494, 0x0495, "CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK", "CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK"}, - { 0x0496, 0x0497, "CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER", "CYRILLIC SMALL LETTER ZHE WITH DESCENDER"}, - { 0x0498, 0x0499, "CYRILLIC CAPITAL LETTER ZE WITH DESCENDER", "CYRILLIC SMALL LETTER ZE WITH DESCENDER"}, - { 0x049A, 0x049B, "CYRILLIC CAPITAL LETTER KA WITH DESCENDER", "CYRILLIC SMALL LETTER KA WITH DESCENDER"}, - { 0x049C, 0x049D, "CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE", "CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE"}, - { 0x049E, 0x049F, "CYRILLIC CAPITAL LETTER KA WITH STROKE", "CYRILLIC SMALL LETTER KA WITH STROKE"}, - { 0x04A0, 0x04A1, "CYRILLIC CAPITAL LETTER BASHKIR KA", "CYRILLIC SMALL LETTER EASHKIR KA"}, - { 0x04A2, 0x04A3, "CYRILLIC CAPITAL LETTER EN WITH DESCENDER", "CYRILLIC SMALL LETTER EN WITH DESCENDER"}, - { 0x04A4, 0x04A5, "CYRILLIC CAPITAL LIGATURE EN GHF", "CYRILLIC SMALL LIGATURE EN GHE"}, - { 0x04A6, 0x04A7, "CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK (ABKHASIAN)", "CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK (ABKHASIAN)"}, - { 0x04A8, 0x04A9, "CYRILLIC CAPITAL LETTER ABKHASIAN HA", "CYRILLIC SMALL LETTER ABKHASIAN HA"}, - { 0x04AA, 0x04AB, "CYRILLIC CAPITAL LETTER ES WITH DESCENDER", "CYRILLIC SMALL LETTER ES WITH DESCENDER"}, - { 0x04AC, 0x04AD, "CYRILLIC CAPITAL LETTER TE WITH DESCENDER", "CYRILLIC SMALL LETTER TE WITH DESCENDER"}, - { 0x04AE, 0x04AF, "CYRILLIC CAPITAL LETTER STRAIGHT U", "CYRILLIC SMALL LETTER STRAIGHT U"}, - { 0x04B0, 0x04B1, "CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE", "CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE"}, - { 0x04B2, 0x04B3, "CYRILLIC CAPITAL LETTER HA WITH DESCENDER", "CYRILLIC SMALL LETTER HA WITH DESCENDER"}, - { 0x04B4, 0x04B5, "CYRILLIC CAPITAL LIGATURE TE TSE (ABKHASIAN)", "CYRILLIC SMALL LIGATURE TE TSE (ABKHASIAN)"}, - { 0x04B6, 0x04B7, "CYRILLIC CAPITAL LETTER CHE WITH DESCENDER", "CYRILLIC SMALL LETTER CHE WITH DESCENDER"}, - { 0x04B8, 0x04B9, "CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE", "CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE"}, - { 0x04BA, 0x04BB, "CYRILLIC CAPITAL LETTER SHHA", "CYRILLIC SMALL LETTER SHHA"}, - { 0x04BC, 0x04BD, "CYRILLIC CAPITAL LETTER ABKHASIAN CHE", "CYRILLIC SMALL LETTER ABKHASIAN CHE"}, - { 0x04BE, 0x04BF, "CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER", "CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER"}, - { 0x04C1, 0x04C2, "CYRILLIC CAPITAL LETTER ZHE WITH BREVE", "CYRILLIC SMALL LETTER ZHE WITH BREVE"}, - { 0x04C3, 0x04C4, "CYRILLIC CAPITAL LETTER KA WITH HOOK", "CYRILLIC SMALL LETTER KA WITH HOOK"}, - { 0x04C7, 0x04C8, "CYRILLIC CAPITAL LETTER EN WITH HOOK", "CYRILLIC SMALL LETTER EN WITH HOOK"}, - { 0x04CB, 0x04CC, "CYRILLIC CAPITAL LETTER KHAKASSIAN CHE", "CYRILLIC SMALL LETTER KHAKASSIAN CHE"}, - { 0x04D0, 0x04D1, "CYRILLIC CAPITAL LETTER A WITH BREVE", "CYRILLIC SMALL LETTER A WITH BREVE"}, - { 0x04D2, 0x04D3, "CYRILLIC CAPITAL LETTER A WITH DIAERESIS", "CYRILLIC SMALL LETTER A WITH DIAERESIS"}, - { 0x04D4, 0x04D5, "CYRILLIC CAPITAL LIGATURE A IE", "CYRILLIC SMALL LIGATURE A IE"}, - { 0x04D6, 0x04D7, "CYRILLIC CAPITAL LETTER IE WITH BREVE", "CYRILLIC SMALL LETTER IE WITH BREVE"}, - { 0x04D8, 0x04D9, "CYRILLIC CAPITAL LETTER SCHWA", "CYRILLIC SMALL LETTER SCHWA"}, - { 0x04DA, 0x04DB, "CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS", "CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS"}, - { 0x04DC, 0x04DD, "CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS", "CYRILLIC SMALL LETTER ZHE WITH DIAERESIS"}, - { 0x04DE, 0x04DF, "CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS", "CYRILLIC SMALL LETTER ZE WITH DIAERESIS"}, - { 0x04E0, 0x04E1, "CYRILLIC CAPITAL LETTER ABKHASIAN DZE", "CYRILLIC SMALL LETTER ABKHASIAN DZE"}, - { 0x04E2, 0x04E3, "CYRILLIC CAPITAL LETTER I WITH MACRON", "CYRILLIC SMALL LETTER I WITH MACRON"}, - { 0x04E4, 0x04E5, "CYRILLIC CAPITAL LETTER I WITH DIAERESIS", "CYRILLIC SMALL LETTER I WITH DIAERESIS"}, - { 0x04E6, 0x04E7, "CYRILLIC CAPITAL LETTER O WITH DIAERESIS", "CYRILLIC SMALL LETTER O WITH DIAERESIS"}, - { 0x04E8, 0x04E9, "CYRILLIC CAPITAL LETTER BARRED O", "CYRILLIC SMALL LETTER BARRED O"}, - { 0x04EA, 0x04EB, "CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS", "CYRILLIC SMALL LETTER BARRED 0 WITH DIAERESIS"}, - { 0x04EE, 0x04EF, "CYRILLIC CAPITAL LETTER U WITH MACRON", "CYRILLIC SMALL LETTER U WITH MACRON"}, - { 0x04F0, 0x04F1, "CYRILLIC CAPITAL LETTER U WITH DIAERESIS", "CYRILLIC SMALL LETTER U WITH DIAERESIS"}, - { 0x04F2, 0x04F3, "CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE", "CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE"}, - { 0x04F4, 0x04F5, "CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS", "CYRILLIC SMALL LETTER CHE WITH DIAERESIS"}, - { 0x04F8, 0x04F9, "CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS", "CYRILLIC SMALL LETTER YERU WITH DIAERESIS"}, - { 0x0531, 0x0561, "ARMENIAN CAPITAL LETTER AYB", "ARMENIAN SMALL LETTER AYB"}, - { 0x0532, 0x0562, "ARMENIAN CAPITAL LETTER BEN", "ARMENIAN SMALL LETTER BEN"}, - { 0x0533, 0x0563, "ARMENIAN CAPITAL LETTER GIM", "ARMENIAN SMALL LETTER GIM"}, - { 0x0534, 0x0564, "ARMENIAN CAPITAL LETTER DA", "ARMENIAN SMALL LETTER DA"}, - { 0x0535, 0x0565, "ARMENIAN CAPITAL LETTER ECH", "ARMENIAN SMALL LETTER ECH"}, - { 0x0536, 0x0566, "ARMENIAN CAPITAL LETTER ZA", "ARMENIAN SMALL LETTER ZA"}, - { 0x0537, 0x0567, "ARMENIAN CAPITAL LETTER EH", "ARMENIAN SMALL LETTER EH"}, - { 0x0538, 0x0568, "ARMENIAN CAPITAL LETTER ET", "ARMENIAN SMALL LETTER ET"}, - { 0x0539, 0x0569, "ARMENIAN CAPITAL LETTER TO", "ARMENIAN SMALL LETTER TO"}, - { 0x053A, 0x056A, "ARMENIAN CAPITAL LETTER ZHE", "ARMENIAN SMALL LETTER ZHE"}, - { 0x053B, 0x056B, "ARMENIAN CAPITAL LETTER INI", "ARMENIAN SMALL LETTER INI"}, - { 0x053C, 0x056C, "ARMENIAN CAPITAL LETTER LIWN", "ARMENIAN SMALL LETTER LIWN"}, - { 0x053D, 0x056D, "ARMENIAN CAPITAL LETTER XEH", "ARMENIAN SMALL LETTER XEH"}, - { 0x053E, 0x056E, "ARMENIAN CAPITAL LETTER CA", "ARMENIAN SMALL LETTER CA"}, - { 0x053F, 0x056F, "ARMENIAN CAPITAL LETTER KEN", "ARMENIAN SMALL LETTER KEN"}, - { 0x0540, 0x0570, "ARMENIAN CAPITAL LETTER HO", "ARMENIAN SMALL LETTER HO"}, - { 0x0541, 0x0571, "ARMENIAN CAPITAL LETTER JA", "ARMENIAN SMALL LETTER JA"}, - { 0x0542, 0x0572, "ARMENIAN CAPITAL LETTER GHAD", "ARMENIAN SMALL LETTER GHAD"}, - { 0x0543, 0x0573, "ARMENIAN CAPITAL LETTER CHEH", "ARMENIAN SMALL LETTER CHEH"}, - { 0x0544, 0x0574, "ARMENIAN CAPITAL LETTER MEN", "ARMENIAN SMALL LETTER MEN"}, - { 0x0545, 0x0575, "ARMENIAN CAPITAL LETTER YI", "ARMENIAN SMALL LETTER YI"}, - { 0x0546, 0x0576, "ARMENIAN CAPITAL LETTER NOW", "ARMENIAN SMALL LETTER NOW"}, - { 0x0547, 0x0577, "ARMENIAN CAPITAL LETTER SHA", "ARMENIAN SMALL LETTER SNA"}, - { 0x0548, 0x0578, "ARMENIAN CAPITAL LETTER VO", "ARMENIAN SMALL LETTER VO"}, - { 0x0549, 0x0579, "ARMENIAN CAPITAL LETTER CHA", "ARMENIAN SMALL LETTER CHA"}, - { 0x054A, 0x057A, "ARMENIAN CAPITAL LETTER PEH", "ARMENIAN SMALL LETTER PEH"}, - { 0x054B, 0x057B, "ARMENIAN CAPITAL LETTER JHEH", "ARMENIAN SMALL LETTER JHEH"}, - { 0x054C, 0x057C, "ARMENIAN CAPITAL LETTER RA", "ARMENIAN SMALL LETTER RA"}, - { 0x054D, 0x057D, "ARMENIAN CAPITAL LETTER SEH", "ARMENIAN SMALL LETTER SEH"}, - { 0x054E, 0x057E, "ARMENIAN CAPITAL LETTER VEW", "ARMENIAN SMALL LETTER VEW"}, - { 0x054F, 0x057F, "ARMENIAN CAPITAL LETTER TIWN", "ARMENIAN SMALL LETTER TIWN"}, - { 0x0550, 0x0580, "ARMENIAN CAPITAL LETTER REH", "ARMENIAN SMALL LETTER REH"}, - { 0x0551, 0x0581, "ARMENIAN CAPITAL LETTER CO", "ARMENIAN SMALL LETTER CO"}, - { 0x0552, 0x0582, "ARMENIAN CAPITAL LETTER YIWN", "ARMENIAN SMALL LETTER YIWN"}, - { 0x0553, 0x0583, "ARMENIAN CAPITAL LETTER PIWR", "ARMENIAN SMALL LETTER PIWP"}, - { 0x0554, 0x0584, "ARMENIAN CAPITAL LETTER KEH", "ARMENIAN SMALL LETTER KEH"}, - { 0x0555, 0x0585, "ARMENIAN CAPITAL LETTER OH", "ARMENIAN SMALL LETTER OH"}, - { 0x0556, 0x0586, "ARMENIAN CAPITAL LETTER FEH", "ARMENIAN SMALL LETTER FEH"}, - { 0x10A0, 0x10D0, "GEORGIAN CAPITAL LETTER AN (KHUTSURI)", "GEORGIAN LETTER AN"}, - { 0x10A1, 0x10D1, "GEORGIAN CAPITAL LETTER BAN (KHUTSURI)", "GEORGIAN LETTER BAN"}, - { 0x10A2, 0x10D2, "GEORGIAN CAPITAL LETTER GAN (KHUTSURI)", "GEORGIAN LETTER GAN"}, - { 0x10A3, 0x10D3, "GEORGIAN CAPITAL LETTER DON (KHUTSURI)", "GEORGIAN LETTER DON"}, - { 0x10A4, 0x10D4, "GEORGIAN CAPITAL LETTER EN (KHUTSURI)", "GEORGIAN LETTER EN"}, - { 0x10A5, 0x10D5, "GEORGIAN CAPITAL LETTER VIN (KHUTSURI)", "GEORGIAN LETTER VIN"}, - { 0x10A6, 0x10D6, "GEORGIAN CAPITAL LETTER ZEN (KHUTSURI)", "GEORGIAN LETTER ZEN"}, - { 0x10A7, 0x10D7, "GEORGIAN CAPITAL LETTER TAN (KHUTSURI)", "GEORGIAN LETTER TAN"}, - { 0x10A8, 0x10D8, "GEORGIAN CAPITAL LETTER IN (KHUTSURI)", "GEORGIAN LETTER IN"}, - { 0x10A9, 0x10D9, "GEORGIAN CAPITAL LETTER KAN (KHUTSURI)", "GEORGIAN LETTER KAN"}, - { 0x10AA, 0x10DA, "GEORGIAN CAPITAL LETTER LAS (KHUTSURI)", "GEORGIAN LETTER LAS"}, - { 0x10AB, 0x10DB, "GEORGIAN CAPITAL LETTER MAN (KHUTSURI)", "GEORGIAN LETTER MAN"}, - { 0x10AC, 0x10DC, "GEORGIAN CAPITAL LETTER NAR (KHUTSURI)", "GEORGIAN LETTER NAR"}, - { 0x10AD, 0x10DD, "GEORGIAN CAPITAL LETTER ON (KHUTSURI)", "GEORGIAN LETTER ON"}, - { 0x10AE, 0x10DE, "GEORGIAN CAPITAL LETTER PAR (KHUTSURI)", "GEORGIAN LETTER PAR"}, - { 0x10AF, 0x10DF, "GEORGIAN CAPITAL LETTER ZHAR (KHUTSURI)", "GEORGIAN LETTER ZHAR"}, - { 0x10B0, 0x10E0, "GEORGIAN CAPITAL LETTER RAE (KHUTSURI)", "GEORGIAN LETTER RAE"}, - { 0x10B1, 0x10E1, "GEORGIAN CAPITAL LETTER SAN (KHUTSURI)", "GEORGIAN LETTER SAN"}, - { 0x10B2, 0x10E2, "GEORGIAN CAPITAL LETTER TAR (KHUTSURI)", "GEORGIAN LETTER TAR"}, - { 0x10B3, 0x10E3, "GEORGIAN CAPITAL LETTER UN (KHUTSURI)", "GEORGIAN LETTER UN"}, - { 0x10B4, 0x10E4, "GEORGIAN CAPITAL LETTER PHAR (KHUTSURI)", "GEORGIAN LETTER PHAR"}, - { 0x10B5, 0x10E5, "GEORGIAN CAPITAL LETTER KHAR (KHUTSURI)", "GEORGIAN LETTER KHAR"}, - { 0x10B6, 0x10E6, "GEORGIAN CAPITAL LETTER GHAN (KHUTSURI)", "GEORGIAN LETTER GHAN"}, - { 0x10B7, 0x10E7, "GEORGIAN CAPITAL LETTER QAR (KHUTSURI)", "GEORGIAN LETTER QAR"}, - { 0x10B8, 0x10E8, "GEORGIAN CAPITAL LETTER SHIN (KHUTSURI)", "GEORGIAN LETTER SHIN"}, - { 0x10B9, 0x10E9, "GEORGIAN CAPITAL LETTER CHIN (KHUTSURI)", "GEORGIAN LETTER CHIN"}, - { 0x10BA, 0x10EA, "GEORGIAN CAPITAL LETTER CAN (KHUTSURI)", "GEORGIAN LETTER CAN"}, - { 0x10BB, 0x10EB, "GEORGIAN CAPITAL LETTER JIL (KHUTSURI)", "GEORGIAN LETTER JIL"}, - { 0x10BC, 0x10EC, "GEORGIAN CAPITAL LETTER CIL (KHUTSURI)", "GEORGIAN LETTER CIL"}, - { 0x10BD, 0x10ED, "GEORGIAN CAPITAL LETTER CHAR (KHUTSURI)", "GEORGIAN LETTER CHAR"}, - { 0x10BE, 0x10EE, "GEORGIAN CAPITAL LETTER XAN (KHUTSURI)", "GEORGIAN LETTER XAN"}, - { 0x10BF, 0x10EF, "GEORGIAN CAPITAL LETTER JHAN (KHUTSURI)", "GEORGIAN LETTER JHAN"}, - { 0x10C0, 0x10F0, "GEORGIAN CAPITAL LETTER HAE (KHUTSURI)", "GEORGIAN LETTER HAE"}, - { 0x10C1, 0x10F1, "GEORGIAN CAPITAL LETTER HE (KHUTSURI)", "GEORGIAN LETTER HE"}, - { 0x10C2, 0x10F2, "GEORGIAN CAPITAL LETTER HIE (KHUTSURI)", "GEORGIAN LETTER HIE"}, - { 0x10C3, 0x10F3, "GEORGIAN CAPITAL LETTER WE (KHUTSURI)", "GEORGIAN LETTER WE"}, - { 0x10C4, 0x10F4, "GEORGIAN CAPITAL LETTER HAR (KHUTSURI)", "GEORGIAN LETTER HAR"}, - { 0x10C5, 0x10F5, "GEORGIAN CAPITAL LETTER HOE (KHUTSURI)", "GEORGIAN LETTER HOE"}, - { 0x1E00, 0x1E01, "LATIN CAPITAL LETTER A WITH RING BELOW", "LATIN SMALL LETTER A WITH RING BELOW"}, - { 0x1E02, 0x1E03, "LATIN CAPITAL LETTER B WITH DOT ABOVE", "LATIN SMALL LETTER B WITH DOT ABOVE"}, - { 0x1E04, 0x1E05, "LATIN CAPITAL LETTER B WITH DOT BELOW", "LATIN SMALL LETTER B WITH DOT BELOW"}, - { 0x1E06, 0x1E07, "LATIN CAPITAL LETTER B WITH LINE BELOW", "LATIN SMALL LETTER B WITH LINE BELOW"}, - { 0x1E08, 0x1E09, "LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE", "LATIN SMALL LETTER C WITH CEDILLA AND ACUTE"}, - { 0x1E0A, 0x1E0B, "LATIN CAPITAL LETTER D WITH DOT ABOVE", "LATIN SMALL LETTER D WITH DOT ABOVE"}, - { 0x1E0C, 0x1E0D, "LATIN CAPITAL LETTER D WITH DOT BELOW", "LATIN SMALL LETTER D WITH DOT BELOW"}, - { 0x1E0E, 0x1E0F, "LATIN CAPITAL LETTER D WITH LINE BELOW", "LATIN SMALL LETTER D WITH LINE BELOW"}, - { 0x1E10, 0x1E11, "LATIN CAPITAL LETTER D WITH CEDILLA", "LATIN SMALL LETTER D WITH CEDILLA"}, - { 0x1E12, 0x1E13, "LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW", "LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW"}, - { 0x1E14, 0x1E15, "LATIN CAPITAL LETTER E WITH MACRON AND GRAVE", "LATIN SMALL LETTER E WITH MACRON AND GRAVE"}, - { 0x1E16, 0x1E17, "LATIN CAPITAL LETTER E WITH MACRON AND ACUTE", "LATIN SMALL LETTER E WITH MACRON AND ACUTE"}, - { 0x1E18, 0x1E19, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW", "LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW"}, - { 0x1E1A, 0x1E1B, "LATIN CAPITAL LETTER E WITH TILDE BELOW", "LATIN SMALL LETTER E WITH TILDE BELOW"}, - { 0x1E1C, 0x1E1D, "LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE", "LATIN SMALL LETTER E WITH CEDILLA AND BREVE"}, - { 0x1E1E, 0x1E1F, "LATIN CAPITAL LETTER F WITH DOT ABOVE", "LATIN SMALL LETTER F WITH DOT ABOVE"}, - { 0x1E20, 0x1E21, "LATIN CAPITAL LETTER G WITH MACRON", "LATIN SMALL LETTER G WITH MACRON"}, - { 0x1E22, 0x1E23, "LATIN CAPITAL LETTER H WITH DOT ABOVE", "LATIN SMALL LETTER H WITH DOT ABOVE"}, - { 0x1E24, 0x1E25, "LATIN CAPITAL LETTER H WITH DOT BELOW", "LATIN SMALL LETTER H WITH DOT BELOW"}, - { 0x1E26, 0x1E27, "LATIN CAPITAL LETTER H WITH DIAERESIS", "LATIN SMALL LETTER H WITH DIAERESIS"}, - { 0x1E28, 0x1E29, "LATIN CAPITAL LETTER H WITH CEDILLA", "LATIN SMALL LETTER H WITH CEDILLA"}, - { 0x1E2A, 0x1E2B, "LATIN CAPITAL LETTER H WITH BREVE BELOW", "LATIN SMALL LETTER H WITH BREVE BELOW"}, - { 0x1E2C, 0x1E2D, "LATIN CAPITAL LETTER I WITH TILDE BELOW", "LATIN SMALL LETTER I WITH TILDE BELOW"}, - { 0x1E2E, 0x1E2F, "LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE", "LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE"}, - { 0x1E30, 0x1E31, "LATIN CAPITAL LETTER K WITH ACUTE", "LATIN SMALL LETTER K WITH ACUTE"}, - { 0x1E32, 0x1E33, "LATIN CAPITAL LETTER K WITH DOT BELOW", "LATIN SMALL LETTER K WITH DOT BELOW"}, - { 0x1E34, 0x1E35, "LATIN CAPITAL LETTER K WITH LINE BELOW", "LATIN SMALL LETTER K WITH LINE BELOW"}, - { 0x1E36, 0x1E37, "LATIN CAPITAL LETTER L WITH DOT BELOW", "LATIN SMALL LETTER L WITH DOT BELOW"}, - { 0x1E38, 0x1E39, "LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON", "LATIN SMALL LETTER L WITH DOT BELOW AND MACRON"}, - { 0x1E3A, 0x1E3B, "LATIN CAPITAL LETTER L WITH LINE BELOW", "LATIN SMALL LETTER L WITH LINE BELOW"}, - { 0x1E3C, 0x1E3D, "LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW", "LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW"}, - { 0x1E3E, 0x1E3F, "LATIN CAPITAL LETTER M WITH ACUTE", "LATIN SMALL LETTER M WITH ACUTE"}, - { 0x1E40, 0x1E41, "LATIN CAPITAL LETTER M WITH DOT ABOVE", "LATIN SMALL LETTER M WITH DOT ABOVE"}, - { 0x1E42, 0x1E43, "LATIN CAPITAL LETTER M WITH DOT BELOW", "LATIN SMALL LETTER M WITH DOT BELOW"}, - { 0x1E44, 0x1E45, "LATIN CAPITAL LETTER N WITH DOT ABOVE", "LATIN SMALL LETTER N WITH DOT ABOVE"}, - { 0x1E46, 0x1E47, "LATIN CAPITAL LETTER N WITH DOT BELOW", "LATIN SMALL LETTER N WITH DOT BELOW"}, - { 0x1E48, 0x1E49, "LATIN CAPITAL LETTER N WITH LINE BELOW", "LATIN SMALL LETTER N WITH LINE BELOW"}, - { 0x1E4A, 0x1E4B, "LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW", "LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW"}, - { 0x1E4C, 0x1E4D, "LATIN CAPITAL LETTER O WITH TILDE AND ACUTE", "LATIN SMALL LETTER O WITH TILDE AND ACUTE"}, - { 0x1E4E, 0x1E4F, "LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS", "LATIN SMALL LETTER O WITH TILDE AND DIAERESIS"}, - { 0x1E50, 0x1E51, "LATIN CAPITAL LETTER O WITH MACRON AND GRAVE", "LATIN SMALL LETTER O WITH MACRON AND GRAVE"}, - { 0x1E52, 0x1E53, "LATIN CAPITAL LETTER O WITH MACRON AND ACUTE", "LATIN SMALL LETTER O WITH MACRON AND ACUTE"}, - { 0x1E54, 0x1E55, "LATIN CAPITAL LETTER P WITH ACUTE", "LATIN SMALL LETTER P WITH ACUTE"}, - { 0x1E56, 0x1E57, "LATIN CAPITAL LETTER P WITH DOT ABOVE", "LATIN SMALL LETTER P WITH DOT ABOVE"}, - { 0x1E58, 0x1E59, "LATIN CAPITAL LETTER R WITH DOT ABOVE", "LATIN SMALL LETTER R WITH DOT ABOVE"}, - { 0x1E5A, 0x1E5B, "LATIN CAPITAL LETTER R WITH DOT BELOW", "LATIN SMALL LETTER R WITH DOT BELOW"}, - { 0x1E5C, 0x1E5D, "LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON", "LATIN SMALL LETTER R WITH DOT BELOW AND MACRON"}, - { 0x1E5E, 0x1E5F, "LATIN CAPITAL LETTER R WITH LINE BELOW", "LATIN SMALL LETTER R WITH LINE BELOW"}, - { 0x1E60, 0x1E61, "LATIN CAPITAL LETTER S WITH DOT ABOVE", "LATIN SMALL LETTER S WITH DOT ABOVE"}, - { 0x1E62, 0x1E63, "LATIN CAPITAL LETTER S WITH DOT BELOW", "LATIN SMALL LETTER S WITH DOT BELOW"}, - { 0x1E64, 0x1E65, "LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE", "LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE"}, - { 0x1E66, 0x1E67, "LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE", "LATIN SMALL LETTER S WITH CARON AND DOT ABOVE"}, - { 0x1E68, 0x1E69, "LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE", "LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE"}, - { 0x1E6A, 0x1E6B, "LATIN CAPITAL LETTER T WITH DOT ABOVE", "LATIN SMALL LETTER T WITH DOT ABOVE"}, - { 0x1E6C, 0x1E6D, "LATIN CAPITAL LETTER T WITH DOT BELOW", "LATIN SMALL LETTER T WITH DOT BELOW"}, - { 0x1E6E, 0x1E6F, "LATIN CAPITAL LETTER T WITH LINE BELOW", "LATIN SMALL LETTER T WITH LINE BELOW"}, - { 0x1E70, 0x1E71, "LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW", "LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW"}, - { 0x1E72, 0x1E73, "LATIN CAPITAL LETTER U WITH DIAERESIS BELOW", "LATIN SMALL LETTER U WITH DIAERESIS BELOW"}, - { 0x1E74, 0x1E75, "LATIN CAPITAL LETTER U WITH TILDE BELOW", "LATIN SMALL LETTER U WITH TILDE BELOW"}, - { 0x1E76, 0x1E77, "LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW", "LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW"}, - { 0x1E78, 0x1E79, "LATIN CAPITAL LETTER U WITH TILDE AND ACUTE", "LATIN SMALL LETTER U WITH TILDE AND ACUTE"}, - { 0x1E7A, 0x1E7B, "LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS", "LATIN SMALL LETTER U WITH MACRON AND DIAERESIS"}, - { 0x1E7C, 0x1E7D, "LATIN CAPITAL LETTER V WITH TILDE", "LATIN SMALL LETTER V WITH TILDE"}, - { 0x1E7E, 0x1E7F, "LATIN CAPITAL LETTER V WITH DOT BELOW", "LATIN SMALL LETTER V WITH DOT BELOW"}, - { 0x1E80, 0x1E81, "LATIN CAPITAL LETTER W WITH GRAVE", "LATIN SMALL LETTER W WITH GRAVE"}, - { 0x1E82, 0x1E83, "LATIN CAPITAL LETTER W WITH ACUTE", "LATIN SMALL LETTER W WITH ACUTE"}, - { 0x1E84, 0x1E85, "LATIN CAPITAL LETTER W WITH DIAERESIS", "LATIN SMALL LETTER W WITH DIAERESIS"}, - { 0x1E86, 0x1E87, "LATIN CAPITAL LETTER W WITH DOT ABOVE", "LATIN SMALL LETTER W WITH DOT ABOVE"}, - { 0x1E88, 0x1E89, "LATIN CAPITAL LETTER W WITH DOT BELOW", "LATIN SMALL LETTER W WITH DOT BELOW"}, - { 0x1E8A, 0x1E8B, "LATIN CAPITAL LETTER X WITH DOT ABOVE", "LATIN SMALL LETTER X WITH DOT ABOVE"}, - { 0x1E8C, 0x1E8D, "LATIN CAPITAL LETTER X5 WITH DIAERESIS", "LATIN SMALL LETTER X WITH DIAERESIS"}, - { 0x1E8E, 0x1E8F, "LATIN CAPITAL LETTER Y WITH DOT ABOVE", "LATIN SMALL LETTER Y WITH DOT ABOVE"}, - { 0x1E90, 0x1E91, "LATIN CAPITAL LETTER Z WITH CIRCUMFLEX", "LATIN SMALL LETTER Z WITH CIRCUMFLEX"}, - { 0x1E92, 0x1E93, "LATIN CAPITAL LETTER Z WITH DOT BELOW", "LATIN SMALL LETTER Z WITH DOT BELOW"}, - { 0x1E94, 0x1E95, "LATIN CAPITAL LETTER Z WITH LINE BELOW", "LATIN SMALL LETTER Z WITH LINE BELOW"}, - { 0x1EA0, 0x1EA1, "LATIN CAPITAL LETTER A WITH DOT BELOW", "LATIN SMALL LETTER A WITH DOT BELOW"}, - { 0x1EA2, 0x1EA3, "LATIN CAPITAL LETTER A WITH HOOK ABOVE", "LATIN SMALL LETTER A WITH HOOK ABOVE"}, - { 0x1EA4, 0x1EA5, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE", "LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE"}, - { 0x1EA6, 0x1EA7, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE", "LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE"}, - { 0x1EA8, 0x1EA9, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE", "LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE"}, - { 0x1EAA, 0x1EAB, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE", "LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE"}, - { 0x1EAC, 0x1EAD, "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW", "LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW"}, - { 0x1EAE, 0x1EAF, "LATIN CAPITAL LETTER A WITH BREVE AND ACUTE", "LATIN SMALL LETTER A WITH BREVE AND ACUTE"}, - { 0x1EB0, 0x1EB1, "LATIN CAPITAL LETTER A WITH BREVE AND GRAVE", "LATIN SMALL LETTER A WITH BREVE AND GRAVE"}, - { 0x1EB2, 0x1EB3, "LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE", "LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE"}, - { 0x1EB4, 0x1EB5, "LATIN CAPITAL LETTER A WITH BREVE AND TILDE", "LATIN SMALL LETTER A WITH BREVE AND TILDE"}, - { 0x1EB6, 0x1EB7, "LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW", "LATIN SMALL LETTER A WITH BREVE AND DOT BELOW"}, - { 0x1EB8, 0x1EB9, "LATIN CAPITAL LETTER E WITH DOT BELOW", "LATIN SMALL LETTER E WITH DOT BELOW"}, - { 0x1EBA, 0x1EBB, "LATIN CAPITAL LETTER E WITH HOOK ABOVE", "LATIN SMALL LETTER E WITH HOOK ABOVE"}, - { 0x1EBC, 0x1EBD, "LATIN CAPITAL LETTER E WITH TILDE", "LATIN SMALL LETTER E WITH TILDE"}, - { 0x1EBE, 0x1EBF, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE", "LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE"}, - { 0x1EC0, 0x1EC1, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE", "LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE"}, - { 0x1EC2, 0x1EC3, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE", "LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE"}, - { 0x1EC4, 0x1EC5, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE", "LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE"}, - { 0x1EC6, 0x1EC7, "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW", "LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW"}, - { 0x1EC8, 0x1EC9, "LATIN CAPITAL LETTER I WITH HOOK ABOVE", "LATIN SMALL LETTER I WITH HOOK ABOVE"}, - { 0x1ECA, 0x1ECB, "LATIN CAPITAL LETTER I WITH DOT BELOW", "LATIN SMALL LETTER I WITH DOT BELOW"}, - { 0x1ECC, 0x1ECD, "LATIN CAPITAL LETTER O WITH DOT BELOW", "LATIN SMALL LETTER O WITH DOT BELOW"}, - { 0x1ECE, 0x1ECF, "LATIN CAPITAL LETTER O WITH HOOK ABOVE", "LATIN SMALL LETTER O WITH HOOK ABOVE"}, - { 0x1ED0, 0x1ED1, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE", "LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE"}, - { 0x1ED2, 0x1ED3, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE", "LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE"}, - { 0x1ED4, 0x1ED5, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE", "LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE"}, - { 0x1ED6, 0x1ED7, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE", "LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE"}, - { 0x1ED8, 0x1ED9, "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW", "LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW"}, - { 0x1EDA, 0x1EDB, "LATIN CAPITAL LETTER O WITH HORN AND ACUTE", "LATIN SMALL LETTER O WITH HORN AND ACUTE"}, - { 0x1EDC, 0x1EDD, "LATIN CAPITAL LETTER O WITH HORN AND GRAVE", "LATIN SMALL LETTER O WITH HORN AND GRAVE"}, - { 0x1EDE, 0x1EDF, "LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE", "LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE"}, - { 0x1EE0, 0x1EE1, "LATIN CAPITAL LETTER O WITH HORN AND TILDE", "LATIN SMALL LETTER O WITH HORN AND TILDE"}, - { 0x1EE2, 0x1EE3, "LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW", "LATIN SMALL LETTER O WITH HORN AND DOT BELOW"}, - { 0x1EE4, 0x1EE5, "LATIN CAPITAL LETTER U WITH DOT BELOW", "LATIN SMALL LETTER U WITH DOT BELOW"}, - { 0x1EE6, 0x1EE7, "LATIN CAPITAL LETTER U WITH HOOK ABOVE", "LATIN SMALL LETTER U WITH HOOK ABOVE"}, - { 0x1EE8, 0x1EE9, "LATIN CAPITAL LETTER U WITH HORN AND ACUTE", "LATIN SMALL LETTER U WITH HORN AND ACUTE"}, - { 0x1EEA, 0x1EEB, "LATIN CAPITAL LETTER U WITH HORN AND GRAVE", "LATIN SMALL LETTER U WITH HORN AND GRAVE"}, - { 0x1EEC, 0x1EED, "LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE", "LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE"}, - { 0x1EEE, 0x1EEF, "LATIN CAPITAL LETTER U WITH HORN AND TILDE", "LATIN SMALL LETTER U WITH HORN AND TILDE"}, - { 0x1EF0, 0x1EF1, "LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW", "LATIN SMALL LETTER U WITH HORN AND DOT BELOW"}, - { 0x1EF2, 0x1EF3, "LATIN CAPITAL LETTER Y WITH GRAVE", "LATIN SMALL LETTER Y WITH GRAVE"}, - { 0x1EF4, 0x1EF5, "LATIN CAPITAL LETTER Y WITH DOT BELOW", "LATIN SMALL LETTER Y WITH DOT BELOW"}, - { 0x1EF6, 0x1EF7, "LATIN CAPITAL LETTER Y WITH HOOK ABOVE", "LATIN SMALL LETTER Y WITH HOOK ABOVE"}, - { 0x1EF8, 0x1EF9, "LATIN CAPITAL LETTER Y WITH TILDE", "LATIN SMALL LETTER Y WITH TILDE"}, - { 0x1F08, 0x1F00, "GREEK CAPITAL LETTER ALPHA WITH PSILI", "GREEK SMALL LETTER ALPHA WITH PSILI"}, - { 0x1F09, 0x1F01, "GREEK CAPITAL LETTER ALPHA WITH DASIA", "GREEK SMALL LETTER ALPHA WITH DASIA"}, - { 0x1F0A, 0x1F02, "GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA", "GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA"}, - { 0x1F0B, 0x1F03, "GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA", "GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA"}, - { 0x1F0C, 0x1F04, "GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA", "GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA"}, - { 0x1F0D, 0x1F05, "GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA", "GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA"}, - { 0x1F0E, 0x1F06, "GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI", "GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI"}, - { 0x1F0F, 0x1F07, "GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI", "GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI"}, - { 0x1F18, 0x1F10, "GREEK CAPITAL LETTER EPSILON WITH PSILI", "GREEK SMALL LETTER EPSILON WITH PSILI"}, - { 0x1F19, 0x1F11, "GREEK CAPITAL LETTER EPSILON WITH DASIA", "GREEK SMALL LETTER EPSILON WITH DASIA"}, - { 0x1F1A, 0x1F12, "GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA", "GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA"}, - { 0x1F1B, 0x1F13, "GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA", "GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA"}, - { 0x1F1C, 0x1F14, "GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA", "GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA"}, - { 0x1F1D, 0x1F15, "GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA", "GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA"}, - { 0x1F28, 0x1F20, "GREEK CAPITAL LETTER ETA WITH PSILI", "GREEK SMALL LETTER ETA WITH PSILI"}, - { 0x1F29, 0x1F21, "GREEK CAPITAL LETTER ETA WITH DASIA", "GREEK SMALL LETTER ETA WITH DASIA"}, - { 0x1F2A, 0x1F22, "GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA", "GREEK SMALL LETTER ETA WITH PSILI AND VARIA"}, - { 0x1F2B, 0x1F23, "GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA", "GREEK SMALL LETTER ETA WITH DASIA AND VARIA"}, - { 0x1F2C, 0x1F24, "GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA", "GREEK SMALL LETTER ETA WITH PSILI AND OXIA"}, - { 0x1F2D, 0x1F25, "GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA", "GREEK SMALL LETTER ETA WITH DASIA AND OXIA"}, - { 0x1F2E, 0x1F26, "GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI", "GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI"}, - { 0x1F2F, 0x1F27, "GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI", "GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI"}, - { 0x1F38, 0x1F30, "GREEK CAPITAL LETTER IOTA WITH PSILI", "GREEK SMALL LETTER IOTA WITH PSILI"}, - { 0x1F39, 0x1F31, "GREEK CAPITAL LETTER IOTA WITH DASIA", "GREEK SMALL LETTER IOTA WITH DASIA"}, - { 0x1F3A, 0x1F32, "GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA", "GREEK SMALL LETTER IOTA WITH PSILI AND VARIA"}, - { 0x1F3B, 0x1F33, "GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA", "GREEK SMALL LETTER IOTA WITH DASIA AND VARIA"}, - { 0x1F3C, 0x1F34, "GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA", "GREEK SMALL LETTER IOTA WITH PSILI AND OXIA"}, - { 0x1F3D, 0x1F35, "GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA", "GREEK SMALL LETTER IOTA WITH DASIA AND OXIA"}, - { 0x1F3E, 0x1F36, "GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI", "GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI"}, - { 0x1F3F, 0x1F37, "GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI", "GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI"}, - { 0x1F48, 0x1F40, "GREEK CAPITAL LETTER OMICRON WITH PSILI", "GREEK SMALL LETTER OMICRON WITH PSILI"}, - { 0x1F49, 0x1F41, "GREEK CAPITAL LETTER OMICRON WITH DASIA", "GREEK SMALL LETTER OMICRON WITH DASIA"}, - { 0x1F4A, 0x1F42, "GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA", "GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA"}, - { 0x1F4B, 0x1F43, "GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA", "GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA"}, - { 0x1F4C, 0x1F44, "GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA", "GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA"}, - { 0x1F4D, 0x1F45, "GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA", "GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA"}, - { 0x1F59, 0x1F51, "GREEK CAPITAL LETTER UPSILON WITH OASIS", "GREEK SMALL LETTER UPSILON WITH DASIA"}, - { 0x1F5B, 0x1F53, "GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA", "GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA"}, - { 0x1F5D, 0x1F55, "GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA", "GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA"}, - { 0x1F5F, 0x1F57, "GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI", "GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI"}, - { 0x1F68, 0x1F60, "GREEK CAPITAL LETTER OMEGA WITH PSILI", "GREEK SMALL LETTER OMEGA WITH PSILI"}, - { 0x1F69, 0x1F61, "GREEK CAPITAL LETTER OMEGA WITH DASIA", "GREEK SMALL LETTER OMEGA WITH DASIA"}, - { 0x1F6A, 0x1F62, "GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA", "GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA"}, - { 0x1F6B, 0x1F63, "GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA", "GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA"}, - { 0x1F6C, 0x1F64, "GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA", "GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA"}, - { 0x1F6D, 0x1F65, "GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA", "GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA"}, - { 0x1F6E, 0x1F66, "GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI", "GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI"}, - { 0x1F6F, 0x1F67, "GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI", "GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI"}, - { 0x1F88, 0x1F80, "GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI", "GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI"}, - { 0x1F89, 0x1F81, "GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI"}, - { 0x1F8A, 0x1F82, "GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI"}, - { 0x1F8B, 0x1F83, "GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI"}, - { 0x1F8C, 0x1F84, "GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMEN", "GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI"}, - { 0x1F8D, 0x1F85, "GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMEN", "GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI"}, - { 0x1F8E, 0x1F86, "GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI", "GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI"}, - { 0x1F8F, 0x1F87, "GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI", "GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI"}, - { 0x1F98, 0x1F90, "GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI", "GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI"}, - { 0x1F99, 0x1F91, "GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI"}, - { 0x1F9A, 0x1F92, "GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI"}, - { 0x1F9B, 0x1F93, "GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI"}, - { 0x1F9C, 0x1F94, "GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI"}, - { 0x1F9D, 0x1F95, "GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI"}, - { 0x1F9E, 0x1F96, "GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI", "GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI"}, - { 0x1F9F, 0x1F97, "GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI", "GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI"}, - { 0x1FA8, 0x1FA0, "GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI", "GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI"}, - { 0x1FA9, 0x1FA1, "GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI"}, - { 0x1FAA, 0x1FA2, "GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI"}, - { 0x1FAB, 0x1FA3, "GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI"}, - { 0x1FAC, 0x1FA4, "GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI"}, - { 0x1FAD, 0x1FA5, "GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI", "GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI"}, - { 0x1FAE, 0x1FA6, "GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI", "GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI"}, - { 0x1FAF, 0x1FA7, "GREEK CAPITAL LETTER OMECA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI", "GREEK SMALL LETTER OMEGA WITH DASIA AND PEPISPOMENI AND YPOGEGRAMMENI"}, - { 0x1FB8, 0x1FB0, "GREEK CAPITAL LETTER ALPHA WITH VRACHY", "GREEK SMALL LETTER ALPHA WITH VRACHY"}, - { 0x1FB9, 0x1FB1, "GREEK CAPITAL LETTER ALPHA WITH MACRON", "GREEK SMALL LETTER ALPHA WITH MACRON"}, - { 0x1FD8, 0x1FD0, "GREEK CAPITAL LETTER IOTA WITH VRACHY", "GREEK SMALL LETTER IOTA WITH VRACHY"}, - { 0x1FD9, 0x1FD1, "GREEK CAPITAL LETTER IOTA WITH MACRON", "GREEK SMALL LETTER IOTA WITH MACRON"}, - { 0x1FE8, 0x1FE0, "GREEK CAPITAL LETTER UPSILON WITH VRACHY", "GREEK SMALL LETTER UPSILON WITH VRACHY"}, - { 0x1FE9, 0x1FE1, "GREEK CAPITAL LETTER UPSILON WITH MACRON", "GREEK SMALL LETTER UPSILON WITH MACRON"}, - { 0x24B6, 0x24D0, "CIRCLED LATIN CAPITAL LETTER A", "CIRCLED LATIN SMALL LETTER A"}, - { 0x24B7, 0x24D1, "CIRCLED LATIN CAPITAL LETTER B", "CIRCLED LATIN SMALL LETTER B"}, - { 0x24B8, 0x24D2, "CIRCLED LATIN CAPITAL LETTER C", "CIRCLED LATIN SMALL LETTER C"}, - { 0x24B9, 0x24D3, "CIRCLED LATIN CAPITAL LETTER D", "CIRCLED LATIN SMALL LETTER D"}, - { 0x24BA, 0x24D4, "CIRCLED LATIN CAPITAL LETTER E", "CIRCLED LATIN SMALL LETTER E"}, - { 0x24BB, 0x24D5, "CIRCLED LATIN CAPITAL LETTER F", "CIRCLED LATIN SMALL LETTER F"}, - { 0x24BC, 0x24D6, "CIRCLED LATIN CAPITAL LETTER G", "CIRCLED LATIN SMALL LETTER G"}, - { 0x24BD, 0x24D7, "CIRCLED LATIN CAPITAL LETTER H", "CIRCLED LATIN SMALL LETTER H"}, - { 0x24BE, 0x24D8, "CIRCLED LATIN CAPITAL LETTER I", "CIRCLED LATIN SMALL LETTER I"}, - { 0x24BF, 0x24D9, "CIRCLED LATIN CAPITAL LETTER J", "CIRCLED LATIN SMALL LETTER J"}, - { 0x24C0, 0x24DA, "CIRCLED LATIN CAPITAL LETTER K", "CIRCLED LATIN SMALL LETTER K"}, - { 0x24C1, 0x24DB, "CIRCLED LATIN CAPITAL LETTER L", "CIRCLED LATIN SMALL LETTER L"}, - { 0x24C2, 0x24DC, "CIRCLED LATIN CAPITAL LETTER M", "CIRCLED LATIN SMALL LETTER M"}, - { 0x24C3, 0x24DD, "CIRCLED LATIN CAPITAL LETTER N", "CIRCLED LATIN SMALL LETTER N"}, - { 0x24C4, 0x24DE, "CIRCLED LATIN CAPITAL LETTER O", "CIRCLED LATIN SMALL LETTER O"}, - { 0x24C5, 0x24DF, "CIRCLED LATIN CAPITAL LETTER P", "CIRCLED LATIN SMALL LETTER P"}, - { 0x24C6, 0x24E0, "CIRCLED LATIN CAPITAL LETTER Q", "CIRCLED LATIN SMALL LETTER Q"}, - { 0x24C7, 0x24E1, "CIRCLED LATIN CAPITAL LETTER R", "CIRCLED LATIN SMALL LETTER R"}, - { 0x24C8, 0x24E2, "CIRCLED LATIN CAPITAL LETTER S", "CIRCLED LATIN SMALL LETTER S"}, - { 0x24C9, 0x24E3, "CIRCLED LATIN CAPITAL LETTER T", "CIRCLED LATIN SMALL LETTER T"}, - { 0x24CA, 0x24E4, "CIRCLED LATIN CAPITAL LETTER U", "CIRCLED LATIN SMALL LETTER U"}, - { 0x24CB, 0x24E5, "CIRCLED LATIN CAPITAL LETTER V", "CIRCLED LATIN SMALL LETTER V"}, - { 0x24CC, 0x24E6, "CIRCLED LATIN CAPITAL LETTER W", "CIRCLED LATIN SMALL LETTER W"}, - { 0x24CD, 0x24E7, "CIRCLED LATIN CAPITAL LETTER X", "CIRCLED LATIN SMALL LETTER X"}, - { 0x24CE, 0x24E8, "CIRCLED LATIN CAPITAL LETTER Y", "CIRCLED LATIN SMALL LETTER Y"}, - { 0x24CF, 0x24E9, "CIRCLED LATIN CAPITAL LETTER Z", "CIRCLED LATIN SMALL LETTER Z"}, - { 0xFF21, 0xFF41, "FULLWIDTH LATIN CAPITAL LETTER A", "FULLWIDTH LATIN SMALL LETTER A"}, - { 0xFF22, 0xFF42, "FULLWIDTH LATIN CAPITAL LETTER B", "FULLWIDTH LATIN SMALL LETTER B"}, - { 0xFF23, 0xFF43, "FULLWIDTH LATIN CAPITAL LETTER C", "FULLWIDTH LATIN SMALL LETTER C"}, - { 0xFF24, 0xFF44, "FULLWIDTH LATIN CAPITAL LETTER D", "FULLWIDTH LATIN SMALL LETTER D"}, - { 0xFF25, 0xFF45, "FULLWIDTH LATIN CAPITAL LETTER E", "FULLWIDTH LATIN SMALL LETTER E"}, - { 0xFF26, 0xFF46, "FULLWIDTH LATIN CAPITAL LETTER F", "FULLWIDTH LATIN SMALL LETTER F"}, - { 0xFF27, 0xFF47, "FULLWIDTH LATIN CAPITAL LETTER G", "FULLWIDTH LATIN SMALL LETTER G"}, - { 0xFF28, 0xFF48, "FULLWIDTH LATIN CAPITAL LETTER H", "FULLWIDTH LATIN SMALL LETTER H"}, - { 0xFF29, 0xFF49, "FULLWIDTH LATIN CAPITAL LETTER I", "FULLWIDTH LATIN SMALL LETTER I"}, - { 0xFF2A, 0xFF4A, "FULLWIDTH LATIN CAPITAL LETTER J", "FULLWIDTH LATIN SMALL LETTER J"}, - { 0xFF2B, 0xFF4B, "FULLWIDTH LATIN CAPITAL LETTER K", "FULLWIDTH LATIN SMALL LETTER K"}, - { 0xFF2C, 0xFF4C, "FULLWIDTH LATIN CAPITAL LETTER L", "FULLWIDTH LATIN SMALL LETTER L"}, - { 0xFF2D, 0xFF4D, "FULLWIDTH LATIN CAPITAL LETTER M", "FULLWIDTH LATIN SMALL LETTER M"}, - { 0xFF2E, 0xFF4E, "FULLWIDTH LATIN CAPITAL LETTER N", "FULLWIDTH LATIN SMALL LETTER N"}, - { 0xFF2F, 0xFF4F, "FULLWIDTH LATIN CAPITAL LETTER O", "FULLWIDTH LATIN SMALL LETTER O"}, - { 0xFF30, 0xFF50, "FULLWIDTH LATIN CAPITAL LETTER P", "FULLWIDTH LATIN SMALL LETTER P"}, - { 0xFF31, 0xFF51, "FULLWIDTH LATIN CAPITAL LETTER Q", "FULLWIDTH LATIN SMALL LETTER Q"}, - { 0xFF32, 0xFF52, "FULLWIDTH LATIN CAPITAL LETTER R", "FULLWIDTH LATIN SMALL LETTER R"}, - { 0xFF33, 0xFF53, "FULLWIDTH LATIN CAPITAL LETTER S", "FULLWIDTH LATIN SMALL LETTER S"}, - { 0xFF34, 0xFF54, "FULLWIDTH LATIN CAPITAL LETTER T", "FULLWIDTH LATIN SMALL LETTER T"}, - { 0xFF35, 0xFF55, "FULLWIDTH LATIN CAPITAL LETTER U", "FULLWIDTH LATIN SMALL LETTER U"}, - { 0xFF36, 0xFF56, "FULLWIDTH LATIN CAPITAL LETTER V", "FULLWIDTH LATIN SMALL LETTER V"}, - { 0xFF37, 0xFF57, "FULLWIDTH LATIN CAPITAL LETTER W", "FULLWIDTH LATIN SMALL LETTER W"}, - { 0xFF38, 0xFF58, "FULLWIDTH LATIN CAPITAL LETTER X", "FULLWIDTH LATIN SMALL LETTER X"}, - { 0xFF39, 0xFF59, "FULLWIDTH LATIN CAPITAL LETTER Y", "FULLWIDTH LATIN SMALL LETTER Y"}, - { 0xFF3A, 0xFF5A, "FULLWIDTH LATIN CAPITAL LETTER Z", "FULLWIDTH LATIN SMALL LETTER Z"}, -}; - - -/* Lowercase code point, Uppercase code point, Lowercase character description, Uppercase character description */ -static UCSTransMap mUCSL2U[] ={ - { 0x0061, 0x0041, "LATIN SMALL LETTER A", "LATIN CAPITAL LETTER A"}, - { 0x0062, 0x0042, "LATIN SMALL LETTER B", "LATIN CAPITAL LETTER B"}, - { 0x0063, 0x0043, "LATIN SMALL LETTER C", "LATIN CAPITAL LETTER C"}, - { 0x0064, 0x0044, "LATIN SMALL LETTER D", "LATIN CAPITAL LETTER D"}, - { 0x0065, 0x0045, "LATIN SMALL LETTER E", "LATIN CAPITAL LETTER E"}, - { 0x0066, 0x0046, "LATIN SMALL LETTER F", "LATIN CAPITAL LETTER F"}, - { 0x0067, 0x0047, "LATIN SMALL LETTER G", "LATIN CAPITAL LETTER G"}, - { 0x0068, 0x0048, "LATIN SMALL LETTER H", "LATIN CAPITAL LETTER H"}, - { 0x0069, 0x0049, "LATIN SMALL LETTER I", "LATIN CAPITAL LETTER I"}, - { 0x006A, 0x004A, "LATIN SMALL LETTER J", "LATIN CAPITAL LETTER J"}, - { 0x006B, 0x004B, "LATIN SMALL LETTER K", "LATIN CAPITAL LETTER K"}, - { 0x006C, 0x004C, "LATIN SMALL LETTER L", "LATIN CAPITAL LETTER L"}, - { 0x006D, 0x004D, "LATIN SMALL LETTER M", "LATIN CAPITAL LETTER M"}, - { 0x006E, 0x004E, "LATIN SMALL LETTER N", "LATIN CAPITAL LETTER N"}, - { 0x006F, 0x004F, "LATIN SMALL LETTER O", "LATIN CAPITAL LETTER O"}, - { 0x0070, 0x0050, "LATIN SMALL LETTER P", "LATIN CAPITAL LETTER P"}, - { 0x0071, 0x0051, "LATIN SMALL LETTER Q", "LATIN CAPITAL LETTER Q"}, - { 0x0072, 0x0052, "LATIN SMALL LETTER R", "LATIN CAPITAL LETTER R"}, - { 0x0073, 0x0053, "LATIN SMALL LETTER S", "LATIN CAPITAL LETTER S"}, - { 0x0074, 0x0054, "LATIN SMALL LETTER T", "LATIN CAPITAL LETTER T"}, - { 0x0075, 0x0055, "LATIN SMALL LETTER U", "LATIN CAPITAL LETTER U"}, - { 0x0076, 0x0056, "LATIN SMALL LETTER V", "LATIN CAPITAL LETTER V"}, - { 0x0077, 0x0057, "LATIN SMALL LETTER W", "LATIN CAPITAL LETTER W"}, - { 0x0078, 0x0058, "LATIN SMALL LETTER X", "LATIN CAPITAL LETTER X"}, - { 0x0079, 0x0059, "LATIN SMALL LETTER Y", "LATIN CAPITAL LETTER Y"}, - { 0x007A, 0x005A, "LATIN SMALL LETTER Z", "LATIN CAPITAL LETTER Z"}, - { 0x00E0, 0x00C0, "LATIN SMALL LETTER A GRAVE", "LATIN CAPITAL LETTER A GRAVE"}, - { 0x00E1, 0x00C1, "LATIN SMALL LETTER A GRAVE", "LATIN CAPITAL LETTER A ACUTE"}, - { 0x00E2, 0x00C2, "LATIN SMALL LETTER A GRAVE", "LATIN CAPITAL LETTER A CIRCUMFLEX"}, - { 0x00E3, 0x00C3, "LATIN SMALL LETTER A GRAVE", "LATIN CAPITAL LETTER A TILDE"}, - { 0x00E4, 0x00C4, "LATIN SMALL LETTER A GRAVE", "LATIN CAPITAL LETTER A DIAERESIS"}, - { 0x00E5, 0x00C5, "LATIN SMALL LETTER A GRAVE", "LATIN CAPITAL LETTER A RING"}, - { 0x00E6, 0x00C6, "LATIN SMALL LETTER A GRAVE", "LATIN CAPITAL LETTER A E"}, - { 0x00E7, 0x00C7, "LATIN SMALL LETTER A GRAVE", "LATIN CAPITAL LETTER C CEDILLA"}, - { 0x00E8, 0x00C8, "LATIN SMALL LETTER A GRAVE", "LATIN CAPITAL LETTER E GRAVE"}, - { 0x00E9, 0x00C9, "LATIN SMALL LETTER A GRAVE", "LATIN CAPITAL LETTER E ACUTE"}, - { 0x00EA, 0x00CA, "LATIN SMALL LETTER E CIRCUMFLEX", "LATIN CAPITAL LETTER E CIRCUMFLEX"}, - { 0x00EB, 0x00CB, "LATIN SMALL LETTER E DIAERESIS", "LATIN CAPITAL LETTER E DIAERESIS"}, - { 0x00EC, 0x00CC, "LATIN SMALL LETTER I GRAVE", "LATIN CAPITAL LETTER I GRAVE"}, - { 0x00ED, 0x00CD, "LATIN SMALL LETTER I ACUTE", "LATIN CAPITAL LETTER I ACUTE"}, - { 0x00EE, 0x00CE, "LATIN SMALL LETTER I CIRCUMFLEX", "LATIN CAPITAL LETTER I CIRCUMFLEX"}, - { 0x00EF, 0x00CF, "LATIN SMALL LETTER I DIAERESIS", "LATIN CAPITAL LETTER I DIAERESIS"}, - { 0x00F0, 0x00D0, "LATIN SMALL LETTER ETH", "LATIN CAPITAL LETTER ETH"}, - { 0x00F1, 0x00D1, "LATIN SMALL LETTER N TILDE", "LATIN CAPITAL LETTER N TILDE"}, - { 0x00F2, 0x00D2, "LATIN SMALL LETTER O GRAVE", "LATIN CAPITAL LETTER O GRAVE"}, - { 0x00F3, 0x00D3, "LATIN SMALL LETTER O ACUTE", "LATIN CAPITAL LETTER O ACUTE"}, - { 0x00F4, 0x00D4, "LATIN SMALL LETTER O CIRCUMFLEX", "LATIN CAPITAL LETTER O CIRCUMFLEX"}, - { 0x00F5, 0x00D5, "LATIN SMALL LETTER O TILDE", "LATIN CAPITAL LETTER O TILDE"}, - { 0x00F6, 0x00D6, "LATIN SMALL LETTER O DIAERESIS", "LATIN CAPITAL LETTER O DIAERESIS"}, - { 0x00F8, 0x00D8, "LATIN SMALL LETTER O SLASH", "LATIN CAPITAL LETTER O SLASH"}, - { 0x00F9, 0x00D9, "LATIN SMALL LETTER U GRAVE", "LATIN CAPITAL LETTER U GRAVE"}, - { 0x00FA, 0x00DA, "LATIN SMALL LETTER U ACUTE", "LATIN CAPITAL LETTER U ACUTE"}, - { 0x00FB, 0x00DB, "LATIN SMALL LETTER U CIRCUMFLEX", "LATIN CAPITAL LETTER U CIRCUMFLEX"}, - { 0x00FC, 0x00DC, "LATIN SMALL LETTER U DIAERESIS", "LATIN CAPITAL LETTER U DIAERESIS"}, - { 0x00FD, 0x00DD, "LATIN SMALL LETTER Y ACUTE", "LATIN CAPITAL LETTER Y ACUTE"}, - { 0x00FE, 0x00DE, "LATIN SMALL LETTER THORN", "LATIN CAPITAL LETTER THORN"}, - { 0x00FF, 0x0178, "LATIN SMALL LETTER Y DIAERESIS", "LATIN CAPITAL LETTER Y WITH DIAERESIS"}, - { 0x0101, 0x0100, "LATIN SMALL LETTER A WITH MACRON", "LATIN CAPITAL LETTER A WITH MACRON"}, - { 0x0103, 0x0102, "LATIN SMALL LETTER A WITH BREVE", "LATIN CAPITAL LETTER A WITH BREVE"}, - { 0x0105, 0x0104, "LATIN SMALL LETTER A WITH OGONEK", "LATIN CAPITAL LETTER A WITH OGONEK"}, - { 0x0107, 0x0106, "LATIN SMALL LETTER C WITH ACUTE", "LATIN CAPITAL LETTER C WITH ACUTE"}, - { 0x0109, 0x0108, "LATIN SMALL LETTER C WITH CIRCUMFLEX", "LATIN CAPITAL LETTER C WITH CIRCUMFLEX"}, - { 0x010B, 0x010A, "LATIN SMALL LETTER C WITH DOT ABOVE", "LATIN CAPITAL LETTER C WITH DOT ABOVE"}, - { 0x010D, 0x010C, "LATIN SMALL LETTER C WITH CARON", "LATIN CAPITAL LETTER C WITH CARON"}, - { 0x010F, 0x010E, "LATIN SMALL LETTER D WITH CARON", "LATIN CAPITAL LETTER D WITH CARON"}, - { 0x0111, 0x0110, "LATIN SMALL LETTER D WITH STROKE", "LATIN CAPITAL LETTER D WITH STROKE"}, - { 0x0113, 0x0112, "LATIN SMALL LETTER E WITH MACRON", "LATIN CAPITAL LETTER E WITH MACRON"}, - { 0x0115, 0x0114, "LATIN SMALL LETTER E WITH BREVE", "LATIN CAPITAL LETTER E WITH BREVE"}, - { 0x0117, 0x0116, "LATIN SMALL LETTER E WITH DOT ABOVE", "LATIN CAPITAL LETTER E WITH DOT ABOVE"}, - { 0x0119, 0x0118, "LATIN SMALL LETTER E WITH OGONEK", "LATIN CAPITAL LETTER E WITH OGONEK"}, - { 0x011B, 0x011A, "LATIN SMALL LETTER E WITH CARON", "LATIN CAPITAL LETTER E WITH CARON"}, - { 0x011D, 0x011C, "LATIN SMALL LETTER G WITH CIRCUMFLEX", "LATIN CAPITAL LETTER G WITH CIRCUMFLEX"}, - { 0x011F, 0x011E, "LATIN SMALL LETTER G WITH BREVE", "LATIN CAPITAL LETTER G WITH BREVE"}, - { 0x0121, 0x0120, "LATIN SMALL LETTER G WITH DOT ABOVE", "LATIN CAPITAL LETTER G WITH DOT ABOVE"}, - { 0x0123, 0x0122, "LATIN SMALL LETTER G WITH CEDILLA", "LATIN CAPITAL LETTER G WITH CEDILLA"}, - { 0x0125, 0x0124, "LATIN SMALL LETTER H WITH CIRCUMFLEX", "LATIN CAPITAL LETTER H WITH CIRCUMFLEX"}, - { 0x0127, 0x0126, "LATIN SMALL LETTER H WITH STROKE", "LATIN CAPITAL LETTER H WITH STROKE"}, - { 0x0129, 0x0128, "LATIN SMALL LETTER I WITH TILDE", "LATIN CAPITAL LETTER I WITH TILDE"}, - { 0x012B, 0x012A, "LATIN SMALL LETTER I WITH MACRON", "LATIN CAPITAL LETTER I WITH MACRON"}, - { 0x012D, 0x012C, "LATIN SMALL LETTER I WITH BREVE", "LATIN CAPITAL LETTER I WITH BREVE"}, - { 0x012F, 0x012E, "LATIN SMALL LETTER I WITH OGONEK", "LATIN CAPITAL LETTER I WITH OGONEK"}, - { 0x0131, 0x0049, "LATIN SMALL LETTER DOTLESS I", "LATIN CAPITAL LETTER I"}, - { 0x0133, 0x0132, "LATIN SMALL LIGATURE IJ", "LATIN CAPITAL LIGATURE IJ"}, - { 0x0135, 0x0134, "LATIN SMALL LETTER J WITH CIRCUMFLEX", "LATIN CAPITAL LETTER J WITH CIRCUMFLEX"}, - { 0x0137, 0x0136, "LATIN SMALL LETTER K WITH CEDILLA", "LATIN CAPITAL LETTER K WITH CEDILLA"}, - { 0x013A, 0x0139, "LATIN SMALL LETTER L WITH ACUTE", "LATIN CAPITAL LETTER L WITH ACUTE"}, - { 0x013C, 0x013B, "LATIN SMALL LETTER L WITH CEDILLA", "LATIN CAPITAL LETTER L WITH CEDILLA"}, - { 0x013E, 0x013D, "LATIN SMALL LETTER L WITH CARON", "LATIN CAPITAL LETTER L WITH CARON"}, - { 0x0140, 0x013F, "LATIN SMALL LETTER L WITH MIDDLE DOT", "LATIN CAPITAL LETTER L WITH MIDDLE DOT"}, - { 0x0142, 0x0141, "LATIN SMALL LETTER L WITH STROKE", "LATIN CAPITAL LETTER L WITH STROKE"}, - { 0x0144, 0x0143, "LATIN SMALL LETTER N WITH ACUTE", "LATIN CAPITAL LETTER N WITH ACUTE"}, - { 0x0146, 0x0145, "LATIN SMALL LETTER N WITH CEDILLA", "LATIN CAPITAL LETTER N WITH CEDILLA"}, - { 0x0148, 0x0147, "LATIN SMALL LETTER N WITH CARON", "LATIN CAPITAL LETTER N WITH CARON"}, - { 0x014B, 0x014A, "LATIN SMALL LETTER ENG (SAMI)", "LATIN CAPITAL LETTER ENG (SAMI)"}, - { 0x014D, 0x014C, "LATIN SMALL LETTER O WITH MACRON", "LATIN CAPITAL LETTER O WITH MACRON"}, - { 0x014F, 0x014E, "LATIN SMALL LETTER O WITH BREVE", "LATIN CAPITAL LETTER O WITH BREVE"}, - { 0x0151, 0x0150, "LATIN SMALL LETTER O WITH DOUBLE ACUTE", "LATIN CAPITAL LETTER O WITH DOUBLE ACUTE"}, - { 0x0153, 0x0152, "LATIN SMALL LIGATURE OE", "LATIN CAPITAL LIGATURE OE"}, - { 0x0155, 0x0154, "LATIN SMALL LETTER R WITH ACUTE", "LATIN CAPITAL LETTER R WITH ACUTE"}, - { 0x0157, 0x0156, "LATIN SMALL LETTER R WITH CEDILLA", "LATIN CAPITAL LETTER R WITH CEDILLA"}, - { 0x0159, 0x0158, "LATIN SMALL LETTER R WITH CARON", "LATIN CAPITAL LETTER R WITH CARON"}, - { 0x015B, 0x015A, "LATIN SMALL LETTER S WITH ACUTE", "LATIN CAPITAL LETTER S WITH ACUTE"}, - { 0x015D, 0x015C, "LATIN SMALL LETTER S WITH CIRCUMFLEX", "LATIN CAPITAL LETTER S WITH CIRCUMFLEX"}, - { 0x015F, 0x015E, "LATIN SMALL LETTER S WITH CEDILLA", "LATIN CAPITAL LETTER S WITH CEDILLA"}, - { 0x0161, 0x0160, "LATIN SMALL LETTER S WITH CARON", "LATIN CAPITAL LETTER S WITH CARON"}, - { 0x0163, 0x0162, "LATIN SMALL LETTER T WITH CEDILLA", "LATIN CAPITAL LETTER T WITH CEDILLA"}, - { 0x0165, 0x0164, "LATIN SMALL LETTER T WITH CARON", "LATIN CAPITAL LETTER T WITH CARON"}, - { 0x0167, 0x0166, "LATIN SMALL LETTER T WITH STROKE", "LATIN CAPITAL LETTER T WITH STROKE"}, - { 0x0169, 0x0168, "LATIN SMALL LETTER U WITH TILDE", "LATIN CAPITAL LETTER U WITH TILDE"}, - { 0x016B, 0x016A, "LATIN SMALL LETTER U WITH MACRON", "LATIN CAPITAL LETTER U WITH MACRON"}, - { 0x016D, 0x016C, "LATIN SMALL LETTER U WITH BREVE", "LATIN CAPITAL LETTER U WITH BREVE"}, - { 0x016F, 0x016E, "LATIN SMALL LETTER U WITH RING ABOVE", "LATIN CAPITAL LETTER U WITH RING ABOVE"}, - { 0x0171, 0x0170, "LATIN SMALL LETTER U WITH DOUBLE ACUTE", "LATIN CAPITAL LETTER U WITH DOUBLE ACUTE"}, - { 0x0173, 0x0172, "LATIN SMALL LETTER U WITH OGONEK", "LATIN CAPITAL LETTER U WITH OGONEK"}, - { 0x0175, 0x0174, "LATIN SMALL LETTER W WITH CIRCUMFLEX", "LATIN CAPITAL LETTER W WITH CIRCUMFLEX"}, - { 0x0177, 0x0176, "LATIN SMALL LETTER Y WITH CIRCUMFLEX", "LATIN CAPITAL LETTER Y WITH CIRCUMFLEX"}, - { 0x017A, 0x0179, "LATIN SMALL LETTER Z WITH ACUTE", "LATIN CAPITAL LETTER Z WITH ACUTE"}, - { 0x017C, 0x017B, "LATIN SMALL LETTER Z WITH DOT ABOVE", "LATIN CAPITAL LETTER Z WITH DOT ABOVE"}, - { 0x017E, 0x017D, "LATIN SMALL LETTER Z WITH CARON", "LATIN CAPITAL LETTER Z WITH CARON"}, - { 0x0183, 0x0182, "LATIN SMALL LETTER B WITH TOPBAR", "LATIN CAPITAL LETTER B WITH TOPBAR"}, - { 0x0185, 0x0184, "LATIN SMALL LETTER TONE SIX", "LATIN CAPITAL LETTER TONE SIX"}, - { 0x0188, 0x0187, "LATIN SMALL LETTER C WITH HOOK", "LATIN CAPITAL LETTER C WITH HOOK"}, - { 0x018C, 0x018B, "LATIN SMALL LETTER D WITH TOPBAR", "LATIN CAPITAL LETTER D WITH TOPBAR"}, - { 0x0192, 0x0191, "LATIN SMALL LETTER F WITH HOOK", "LATIN CAPITAL LETTER F WITH HOOK"}, - { 0x0199, 0x0198, "LATIN SMALL LETTER K WITH HOOK", "LATIN CAPITAL LETTER K WITH HOOK"}, - { 0x01A1, 0x01A0, "LATIN SMALL LETTER O WITH HORN", "LATIN CAPITAL LETTER O WITH HORN"}, - { 0x01A3, 0x01A2, "LATIN SMALL LETTER OI", "LATIN CAPITAL LETTER OI"}, - { 0x01A5, 0x01A4, "LATIN SMALL LETTER P WITH HOOK", "LATIN CAPITAL LETTER P WITH HOOK"}, - { 0x01A8, 0x01A7, "LATIN SMALL LETTER TONE TWO", "LATIN CAPITAL LETTER TONE TWO"}, - { 0x01AD, 0x01AC, "LATIN SMALL LETTER T WITH HOOK", "LATIN CAPITAL LETTER T WITH HOOK"}, - { 0x01B0, 0x01AF, "LATIN SMALL LETTER U WITH HORN", "LATIN CAPITAL LETTER U WITH HORN"}, - { 0x01B4, 0x01B3, "LATIN SMALL LETTER Y WITH HOOK", "LATIN CAPITAL LETTER Y WITH HOOK"}, - { 0x01B6, 0x01B5, "LATIN SMALL LETTER Z WITH STROKE", "LATIN CAPITAL LETTER Z WITH STROKE"}, - { 0x01B9, 0x01B8, "LATIN SMALL LETTER EZH REVERSED", "LATIN CAPITAL LETTER EZH REVERSED"}, - { 0x01BD, 0x01BC, "LATIN SMALL LETTER TONE FIVE", "LATIN CAPITAL LETTER TONE FIVE"}, - { 0x01C6, 0x01C4, "LATIN SMALL LETTER DZ WITH CARON", "LATIN CAPITAL LETTER DZ WITH CARON"}, - { 0x01C9, 0x01C7, "LATIN SMALL LETTER LJ", "LATIN CAPITAL LETTER LJ"}, - { 0x01CC, 0x01CA, "LATIN SMALL LETTER NJ", "LATIN CAPITAL LETTER NJ"}, - { 0x01CE, 0x01CD, "LATIN SMALL LETTER A WITH CARON", "LATIN CAPITAL LETTER A WITH CARON"}, - { 0x01D0, 0x01CF, "LATIN SMALL LETTER I WITH CARON", "LATIN CAPITAL LETTER I WITH CARON"}, - { 0x01D2, 0x01D1, "LATIN SMALL LETTER O WITH CARON", "LATIN CAPITAL LETTER O WITH CARON"}, - { 0x01D4, 0x01D3, "LATIN SMALL LETTER U WITH CARON", "LATIN CAPITAL LETTER U WITH CARON"}, - { 0x01D6, 0x01D5, "LATIN SMALL LETTER U WITH DIAERESIS AND MACRON", "LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON"}, - { 0x01D8, 0x01D7, "LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE", "LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE"}, - { 0x01DA, 0x01D9, "LATIN SMALL LETTER U WITH DIAERESIS AND CARON", "LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON"}, - { 0x01DC, 0x01DB, "LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE", "LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE"}, - { 0x01DF, 0x01DE, "LATIN SMALL LETTER A WITH DIAERESIS AND MACRON", "LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON"}, - { 0x01E1, 0x01E0, "LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON", "LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON"}, - { 0x01E3, 0x01E2, "LATIN SMALL LIGATURE AE WITH MACRON", "LATIN CAPITAL LIGATURE AE MTH MACRON"}, - { 0x01E5, 0x01E4, "LATIN SMALL LETTER G WITH STROKE", "LATIN CAPITAL LETTER G WITH STROKE"}, - { 0x01E7, 0x01E6, "LATIN SMALL LETTER G WITH CARON", "LATIN CAPITAL LETTER G WITH CARON"}, - { 0x01E9, 0x01E8, "LATIN SMALL LETTER K WITH CARON", "LATIN CAPITAL LETTER K WITH CARON"}, - { 0x01EB, 0x01EA, "LATIN SMALL LETTER O WITH OGONEK", "LATIN CAPITAL LETTER O WITH OGONEK"}, - { 0x01ED, 0x01EC, "LATIN SMALL LETTER O WITH OGONEK AND MACRON", "LATIN CAPITAL LETTER O WITH OGONEK AND MACRON"}, - { 0x01EF, 0x01EE, "LATIN SMALL LETTER EZH WITH CARON", "LATIN CAPITAL LETTER EZH WITH CARON"}, - { 0x01F3, 0x01F1, "LATIN SMALL LETTER DZ", "LATIN CAPITAL LETTER DZ"}, - { 0x01F5, 0x01F4, "LATIN SMALL LETTER G WITH ACUTE", "LATIN CAPITAL LETTER G WITH ACUTE"}, - { 0x01FB, 0x01FA, "LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE", "LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE"}, - { 0x01FD, 0x01FC, "LATIN SMALL LIGATURE AE WITH ACUTE", "LATIN CAPITAL LIGATURE AE WITH ACUTE"}, - { 0x01FF, 0x01FE, "LATIN SMALL LETTER O WITH STROKE AND ACUTE", "LATIN CAPITAL LETTER O WITH STROKE AND ACUTE"}, - { 0x0201, 0x0200, "LATIN SMALL LETTER A WITH DOUBLE GRAVE", "LATIN CAPITAL LETTER A WITH DOUBLE GRAVE"}, - { 0x0203, 0x0202, "LATIN SMALL LETTER A WITH INVERTED BREVE", "LATIN CAPITAL LETTER A WITH INVERTED BREVE"}, - { 0x0205, 0x0204, "LATIN SMALL LETTER E WITH DOUBLE GRAVE", "LATIN CAPITAL LETTER E WITH DOUBLE GRAVE"}, - { 0x0207, 0x0206, "LATIN SMALL LETTER E WITH INVERTED BREVE", "LATIN CAPITAL LETTER E WITH INVERTED BREVE"}, - { 0x0209, 0x0208, "LATIN SMALL LETTER I WITH DOUBLE GRAVE", "LATIN CAPITAL LETTER I WITH DOUBLE GRAVE"}, - { 0x020B, 0x020A, "LATIN SMALL LETTER I WITH INVERTED BREVE", "LATIN CAPITAL LETTER I WITH INVERTED BREVE"}, - { 0x020D, 0x020C, "LATIN SMALL LETTER O WITH DOUBLE GRAVE", "LATIN CAPITAL LETTER O WITH DOUBLE GRAVE"}, - { 0x020F, 0x020E, "LATIN SMALL LETTER O WITH INVERTED BREVE", "LATIN CAPITAL LETTER O WITH INVERTED BREVE"}, - { 0x0211, 0x0210, "LATIN SMALL LETTER R WITH DOUBLE GRAVE", "LATIN CAPITAL LETTER R WITH DOUBLE GRAVE"}, - { 0x0213, 0x0212, "LATIN SMALL LETTER R WITH INVERTED BREVE", "LATIN CAPITAL LETTER R WITH INVERTED BREVE"}, - { 0x0215, 0x0214, "LATIN SMALL LETTER U WITH DOUBLE GRAVE", "LATIN CAPITAL LETTER U WITH DOUBLE GRAVE"}, - { 0x0217, 0x0216, "LATIN SMALL LETTER U WITH INVERTED BREVE", "LATIN CAPITAL LETTER U WITH INVERTED BREVE"}, - { 0x0253, 0x0181, "LATIN SMALL LETTER B WITH HOOK", "LATIN CAPITAL LETTER B WITH HOOK"}, - { 0x0254, 0x0186, "LATIN SMALL LETTER OPEN O", "LATIN CAPITAL LETTER OPEN O"}, - { 0x0257, 0x018A, "LATIN SMALL LETTER D WITH HOOK", "LATIN CAPITAL LETTER D WITH HOOK"}, - { 0x0258, 0x018E, "LATIN SMALL LETTER REVERSED E", "LATIN CAPITAL LETTER REVERSED E"}, - { 0x0259, 0x018F, "LATIN SMALL LETTER SCHWA", "LATIN CAPITAL LETTER SCHWA"}, - { 0x025B, 0x0190, "LATIN SMALL LETTER OPEN E", "LATIN CAPITAL LETTER OPEN E"}, - { 0x0260, 0x0193, "LATIN SMALL LETTER G WITH HOOK", "LATIN CAPITAL LETTER G WITH HOOK"}, - { 0x0263, 0x0194, "LATIN SMALL LETTER GAMMA", "LATIN CAPITAL LETTER GAMMA"}, - { 0x0268, 0x0197, "LATIN SMALL LETTER I WITH STROKE", "LATIN CAPITAL LETTER I WITH STROKE"}, - { 0x0269, 0x0196, "LATIN SMALL LETTER IOTA", "LATIN CAPITAL LETTER IOTA"}, - { 0x026F, 0x019C, "LATIN SMALL LETTER TURNED M", "LATIN CAPITAL LETTER TURNED M"}, - { 0x0272, 0x019D, "LATIN SMALL LETTER N WITH LEFT HOOK", "LATIN CAPITAL LETTER N WITH LEFT HOOK"}, - { 0x0275, 0x019F, "LATIN SMALL LETTER BARRED O", "LATIN CAPITAL LETTER O WITH MIDDLE TILDE"}, - { 0x0283, 0x01A9, "LATIN SMALL LETTER ESH", "LATIN CAPITAL LETTER ESH"}, - { 0x0288, 0x01AE, "LATIN SMALL LETTER T WITH RETROFLEX HOOK", "LATIN CAPITAL LETTER T WITH RETROFLEX HOOK"}, - { 0x028A, 0x01B1, "LATIN SMALL LETTER UPSILON", "LATIN CAPITAL LETTER UPSILON"}, - { 0x028B, 0x01B2, "LATIN SMALL LETTER V WITH HOOK", "LATIN CAPITAL LETTER V WITH HOOK"}, - { 0x0292, 0x01B7, "LATIN SMALL LETTER EZH", "LATIN CAPITAL LETTER EZH"}, - { 0x03AC, 0x0386, "GREEK SMALL LETTER ALPHA WITH TONOS", "GREEK CAPITAL LETTER ALPHA WITH TONOS"}, - { 0x03AD, 0x0388, "GREEK SMALL LETTER EPSILON WITH TONOS", "GREEK CAPITAL LETTER EPSILON WITH TONOS"}, - { 0x03AE, 0x0389, "GREEK SMALL LETTER ETA WITH TONOS", "GREEK CAPITAL LETTER ETA WITH TONOS"}, - { 0x03AF, 0x038A, "GREEK SMALL LETTER IOTA WITH TONOS", "GREEK CAPITAL LETTER IOTA WITH TONOS"}, - { 0x03B1, 0x0391, "GREEK SMALL LETTER ALPHA", "GREEK CAPITAL LETTER ALPHA"}, - { 0x03B2, 0x0392, "GREEK SMALL LETTER BETA", "GREEK CAPITAL LETTER BETA"}, - { 0x03B3, 0x0393, "GREEK SMALL LETTER GAMMA", "GREEK CAPITAL LETTER GAMMA"}, - { 0x03B4, 0x0394, "GREEK SMALL LETTER DELTA", "GREEK CAPITAL LETTER DELTA"}, - { 0x03B5, 0x0395, "GREEK SMALL LETTER EPSILON", "GREEK CAPITAL LETTER EPSILON"}, - { 0x03B6, 0x0396, "GREEK SMALL LETTER ZETA", "GREEK CAPITAL LETTER ZETA"}, - { 0x03B7, 0x0397, "GREEK SMALL LETTER ETA", "GREEK CAPITAL LETTER ETA"}, - { 0x03B8, 0x0398, "GREEK SMALL LETTER THETA", "GREEK CAPITAL LETTER THETA"}, - { 0x03B9, 0x0399, "GREEK SMALL LETTER IOTA", "GREEK CAPITAL LETTER IOTA"}, - { 0x03BA, 0x039A, "GREEK SMALL LETTER KAPPA", "GREEK CAPITAL LETTER KAPPA"}, - { 0x03BB, 0x039B, "GREEK SMALL LETTER LAMDA", "GREEK CAPITAL LETTER LAMDA"}, - { 0x03BC, 0x039C, "GREEK SMALL LETTER MU", "GREEK CAPITAL LETTER MU"}, - { 0x03BD, 0x039D, "GREEK SMALL LETTER NU", "GREEK CAPITAL LETTER NU"}, - { 0x03BE, 0x039E, "GREEK SMALL LETTER XI", "GREEK CAPITAL LETTER XI"}, - { 0x03BF, 0x039F, "GREEK SMALL LETTER OMICRON", "GREEK CAPITAL LETTER OMICRON"}, - { 0x03C0, 0x03A0, "GREEK SMALL LETTER PI", "GREEK CAPITAL LETTER PI"}, - { 0x03C1, 0x03A1, "GREEK SMALL LETTER RHO", "GREEK CAPITAL LETTER RHO"}, - { 0x03C3, 0x03A3, "GREEK SMALL LETTER SIGMA", "GREEK CAPITAL LETTER SIGMA"}, - { 0x03C4, 0x03A4, "GREEK SMALL LETTER TAU", "GREEK CAPITAL LETTER TAU"}, - { 0x03C5, 0x03A5, "GREEK SMALL LETTER UPSILON", "GREEK CAPITAL LETTER UPSILON"}, - { 0x03C6, 0x03A6, "GREEK SMALL LETTER PHI", "GREEK CAPITAL LETTER PHI"}, - { 0x03C7, 0x03A7, "GREEK SMALL LETTER CHI", "GREEK CAPITAL LETTER CHI"}, - { 0x03C8, 0x03A8, "GREEK SMALL LETTER PSI", "GREEK CAPITAL LETTER PSI"}, - { 0x03C9, 0x03A9, "GREEK SMALL LETTER OMEGA", "GREEK CAPITAL LETTER OMEGA"}, - { 0x03CA, 0x03AA, "GREEK SMALL LETTER IOTA WITH DIALYTIKA", "GREEK CAPITAL LETTER IOTA WITH DIALYTIKA"}, - { 0x03CB, 0x03AB, "GREEK SMALL LETTER UPSILON WITH DIALYTIKA", "GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA"}, - { 0x03CC, 0x038C, "GREEK SMALL LETTER OMICRON WITH TONOS", "GREEK CAPITAL LETTER OMICRON WITH TONOS"}, - { 0x03CD, 0x038E, "GREEK SMALL LETTER UPSILON WITH TONOS", "GREEK CAPITAL LETTER UPSILON WITH TONOS"}, - { 0x03CE, 0x038F, "GREEK SMALL LETTER OMEGA WITH TONOS", "GREEK CAPITAL LETTER OMEGA WITH TONOS"}, - { 0x03E3, 0x03E2, "COPTIC SMALL LETTER SHEI", "COPTIC CAPITAL LETTER SHEI"}, - { 0x03E5, 0x03E4, "COPTIC SMALL LETTER FEI", "COPTIC CAPITAL LETTER FEI"}, - { 0x03E7, 0x03E6, "COPTIC SMALL LETTER KHEI", "COPTIC CAPITAL LETTER KHEI"}, - { 0x03E9, 0x03E8, "COPTIC SMALL LETTER HORI", "COPTIC CAPITAL LETTER HORI"}, - { 0x03EB, 0x03EA, "COPTIC SMALL LETTER GANGIA", "COPTIC CAPITAL LETTER GANGIA"}, - { 0x03ED, 0x03EC, "COPTIC SMALL LETTER SHIMA", "COPTIC CAPITAL LETTER SHIMA"}, - { 0x03EF, 0x03EE, "COPTIC SMALL LETTER DEI", "COPTIC CAPITAL LETTER DEI"}, - { 0x0430, 0x0410, "CYRILLIC SMALL LETTER A", "CYRILLIC CAPITAL LETTER A"}, - { 0x0431, 0x0411, "CYRILLIC SMALL LETTER BE", "CYRILLIC CAPITAL LETTER BE"}, - { 0x0432, 0x0412, "CYRILLIC SMALL LETTER VE", "CYRILLIC CAPITAL LETTER VE"}, - { 0x0433, 0x0413, "CYRILLIC SMALL LETTER GHE", "CYRILLIC CAPITAL LETTER GHE"}, - { 0x0434, 0x0414, "CYRILLIC SMALL LETTER DE", "CYRILLIC CAPITAL LETTER DE"}, - { 0x0435, 0x0415, "CYRILLIC SMALL LETTER IE", "CYRILLIC CAPITAL LETTER IE"}, - { 0x0436, 0x0416, "CYRILLIC SMALL LETTER ZHE", "CYRILLIC CAPITAL LETTER ZHE"}, - { 0x0437, 0x0417, "CYRILLIC SMALL LETTER ZE", "CYRILLIC CAPITAL LETTER ZE"}, - { 0x0438, 0x0418, "CYRILLIC SMALL LETTER I", "CYRILLIC CAPITAL LETTER I"}, - { 0x0439, 0x0419, "CYRILLIC SMALL LETTER SHORT I", "CYRILLIC CAPITAL LETTER SHORT I"}, - { 0x043A, 0x041A, "CYRILLIC SMALL LETTER KA", "CYRILLIC CAPITAL LETTER KA"}, - { 0x043B, 0x041B, "CYRILLIC SMALL LETTER EL", "CYRILLIC CAPITAL LETTER EL"}, - { 0x043C, 0x041C, "CYRILLIC SMALL LETTER EM", "CYRILLIC CAPITAL LETTER EM"}, - { 0x043D, 0x041D, "CYRILLIC SMALL LETTER EN", "CYRILLIC CAPITAL LETTER EN"}, - { 0x043E, 0x041E, "CYRILLIC SMALL LETTER O", "CYRILLIC CAPITAL LETTER O"}, - { 0x043F, 0x041F, "CYRILLIC SMALL LETTER PE", "CYRILLIC CAPITAL LETTER PE"}, - { 0x0440, 0x0420, "CYRILLIC SMALL LETTER ER", "CYRILLIC CAPITAL LETTER ER"}, - { 0x0441, 0x0421, "CYRILLIC SMALL LETTER ES", "CYRILLIC CAPITAL LETTER ES"}, - { 0x0442, 0x0422, "CYRILLIC SMALL LETTER TE", "CYRILLIC CAPITAL LETTER TE"}, - { 0x0443, 0x0423, "CYRILLIC SMALL LETTER U", "CYRILLIC CAPITAL LETTER U"}, - { 0x0444, 0x0424, "CYRILLIC SMALL LETTER EF", "CYRILLIC CAPITAL LETTER EF"}, - { 0x0445, 0x0425, "CYRILLIC SMALL LETTER HA", "CYRILLIC CAPITAL LETTER HA"}, - { 0x0446, 0x0426, "CYRILLIC SMALL LETTER TSE", "CYRILLIC CAPITAL LETTER TSE"}, - { 0x0447, 0x0427, "CYRILLIC SMALL LETTER CHE", "CYRILLIC CAPITAL LETTER CHE"}, - { 0x0448, 0x0428, "CYRILLIC SMALL LETTER SHA", "CYRILLIC CAPITAL LETTER SHA"}, - { 0x0449, 0x0429, "CYRILLIC SMALL LETTER SHCHA", "CYRILLIC CAPITAL LETTER SHCHA"}, - { 0x044A, 0x042A, "CYRILLIC SMALL LETTER HARD SIGN", "CYRILLIC CAPITAL LETTER HARD SIGN"}, - { 0x044B, 0x042B, "CYRILLIC SMALL LETTER YERU", "CYRILLIC CAPITAL LETTER YERU"}, - { 0x044C, 0x042C, "CYRILLIC SMALL LETTER SOFT SIGN", "CYRILLIC CAPITAL LETTER SOFT SIGN"}, - { 0x044D, 0x042D, "CYRILLIC SMALL LETTER E", "CYRILLIC CAPITAL LETTER E"}, - { 0x044E, 0x042E, "CYRILLIC SMALL LETTER YU", "CYRILLIC CAPITAL LETTER YU"}, - { 0x044F, 0x042F, "CYRILLIC SMALL LETTER YA", "CYRILLIC CAPITAL LETTER YA"}, - { 0x0451, 0x0401, "CYRILLIC SMALL LETTER IO", "CYRILLIC CAPITAL LETTER IO"}, - { 0x0452, 0x0402, "CYRILLIC SMALL LETTER DJE (SERBOCROATIAN)", "CYRILLIC CAPITAL LETTER DJE (SERBOCROATIAN)"}, - { 0x0453, 0x0403, "CYRILLIC SMALL LETTER GJE", "CYRILLIC CAPITAL LETTER GJE"}, - { 0x0454, 0x0404, "CYRILLIC SMALL LETTER UKRAINIAN IE", "CYRILLIC CAPITAL LETTER UKRAINIAN IE"}, - { 0x0455, 0x0405, "CYRILLIC SMALL LETTER DZE", "CYRILLIC CAPITAL LETTER DZE"}, - { 0x0456, 0x0406, "CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I", "CYRILLIC CAPITAL LETTER BYELORUSSIAN_UKRAINIAN I"}, - { 0x0457, 0x0407, "CYRILLIC SMALL LETTER YI (UKRAINIAN)", "CYRILLIC CAPITAL LETTER YI (UKRAINIAN)"}, - { 0x0458, 0x0408, "CYRILLIC SMALL LETTER JE", "CYRILLIC CAPITAL LETTER JE"}, - { 0x0459, 0x0409, "CYRILLIC SMALL LETTER LJE", "CYRILLIC CAPITAL LETTER LJE"}, - { 0x045A, 0x040A, "CYRILLIC SMALL LETTER NJE", "CYRILLIC CAPITAL LETTER NJE"}, - { 0x045B, 0x040B, "CYRILLIC SMALL LETTER TSHE (SERBOCROATIAN)", "CYRILLIC CAPITAL LETTER TSHE (SERBOCROATIAN)"}, - { 0x045C, 0x040C, "CYRILLIC SMALL LETTER KJE", "CYRILLIC CAPITAL LETTER KJE"}, - { 0x045E, 0x040E, "CYRILLIC SMALL LETTER SHORT U (BYELORUSSIAN)", "CYRILLIC CAPITAL LETTER SHORT U (BYELORUSSIAN)"}, - { 0x045F, 0x040F, "CYRILLIC SMALL LETTER DZHE", "CYRILLIC CAPITAL LETTER DZHE"}, - { 0x0461, 0x0460, "CYRILLIC SMALL LETTER OMEGA", "CYRILLIC CAPITAL LETTER OMEGA"}, - { 0x0463, 0x0462, "CYRILLIC SMALL LETTER YAT", "CYRILLIC CAPITAL LETTER YAT"}, - { 0x0465, 0x0464, "CYRILLIC SMALL LETTER IOTIFIED E", "CYRILLIC CAPITAL LETTER IOTIFIED E"}, - { 0x0467, 0x0466, "CYRILLIC SMALL LETTER LITTLE YUS", "CYRILLIC CAPITAL LETTER LITTLE YUS"}, - { 0x0469, 0x0468, "CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS", "CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS"}, - { 0x046B, 0x046A, "CYRILLIC SMALL LETTER BIG YUS", "CYRILLIC CAPITAL LETTER BIG YUS"}, - { 0x046D, 0x046C, "CYRILLIC SMALL LETTER IOTIFIED BIG YUS", "CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS"}, - { 0x046F, 0x046E, "CYRILLIC SMALL LETTER KSI", "CYRILLIC CAPITAL LETTER KSI"}, - { 0x0471, 0x0470, "CYRILLIC SMALL LETTER PSI", "CYRILLIC CAPITAL LETTER PSI"}, - { 0x0473, 0x0472, "CYRILLIC SMALL LETTER FITA", "CYRILLIC CAPITAL LETTER FITA"}, - { 0x0475, 0x0474, "CYRILLIC SMALL LETTER IZHITSA", "CYRILLIC CAPITAL LETTER IZHITSA"}, - { 0x0477, 0x0476, "CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT", "CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT"}, - { 0x0479, 0x0478, "CYRILLIC SMALL LETTER UK", "CYRILLIC CAPITAL LETTER UK"}, - { 0x047B, 0x047A, "CYRILLIC SMALL LETTER ROUND OMEGA", "CYRILLIC CAPITAL LETTER ROUND OMEGA"}, - { 0x047D, 0x047C, "CYRILLIC SMALL LETTER OMEGA WITH TITLO", "CYRILLIC CAPITAL LETTER OMEGA WITH TITLO"}, - { 0x047F, 0x047E, "CYRILLIC SMALL LETTER OT", "CYRILLIC CAPITAL LETTER OT"}, - { 0x0481, 0x0480, "CYRILLIC SMALL LETTER KOPPA", "CYRILLIC CAPITAL LETTER KOPPA"}, - { 0x0491, 0x0490, "CYRILLIC SMALL LETTER GHE WITH UPTURN", "CYRILLIC CAPITAL LETTER GHE WITH UPTURN"}, - { 0x0493, 0x0492, "CYRILLIC SMALL LETTER GHE WITH STROKE", "CYRILLIC CAPITAL LETTER GHE WITH STROKE"}, - { 0x0495, 0x0494, "CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK", "CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK"}, - { 0x0497, 0x0496, "CYRILLIC SMALL LETTER ZHE WITH DESCENDER", "CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER"}, - { 0x0499, 0x0498, "CYRILLIC SMALL LETTER ZE WITH DESCENDER", "CYRILLIC CAPITAL LETTER ZE WITH DESCENDER"}, - { 0x049B, 0x049A, "CYRILLIC SMALL LETTER KA WITH DESCENDER", "CYRILLIC CAPITAL LETTER KA WITH DESCENDER"}, - { 0x049D, 0x049C, "CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE", "CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE"}, - { 0x049F, 0x049E, "CYRILLIC SMALL LETTER KA WITH STROKE", "CYRILLIC CAPITAL LETTER KA WITH STROKE"}, - { 0x04A1, 0x04A0, "CYRILLIC SMALL LETTER EASHKIR KA", "CYRILLIC CAPITAL LETTER BASHKIR KA"}, - { 0x04A3, 0x04A2, "CYRILLIC SMALL LETTER EN WITH DESCENOER", "CYRILLIC CAPITAL LETTER EN WITH DESCENDER"}, - { 0x04A5, 0x04A4, "CYRILLIC SMALL LIGATURE EN GHE", "CYRILLIC CAPITAL LIGATURE EN GHF"}, - { 0x04A7, 0x04A6, "CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK (ABKHASIAN)", "CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK (ABKHASIAN)"}, - { 0x04A9, 0x04A8, "CYRILLIC SMALL LETTER ABKHASIAN HA", "CYRILLIC CAPITAL LETTER ABKHASIAN HA"}, - { 0x04AB, 0x04AA, "CYRILLIC SMALL LETTER ES WITH DESCENDER", "CYRILLIC CAPITAL LETTER ES WITH DESCENDER"}, - { 0x04AD, 0x04AC, "CYRILLIC SMALL LETTER TE WITH DESCENDER", "CYRILLIC CAPITAL LETTER TE WITH DESCENDER"}, - { 0x04AF, 0x04AE, "CYRILLIC SMALL LETTER STRAIGHT U", "CYRILLIC CAPITAL LETTER STRAIGHT U"}, - { 0x04B1, 0x04B0, "CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE", "CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE"}, - { 0x04B3, 0x04B2, "CYRILLIC SMALL LETTER HA WITH DESCENDER", "CYRILLIC CAPITAL LETTER HA WITH DESCENDER"}, - { 0x04B5, 0x04B4, "CYRILLIC SMALL LIGATURE TE TSE (ABKHASIAN)", "CYRILLIC CAPITAL LIGATURE TE TSE (ABKHASIAN)"}, - { 0x04B7, 0x04B6, "CYRILLIC SMALL LETTER CHE WITH DESCENDER", "CYRILLIC CAPITAL LETTER CHE WITH DESCENDER"}, - { 0x04B9, 0x04B8, "CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE", "CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE"}, - { 0x04BB, 0x04BA, "CYRILLIC SMALL LETTER SHHA", "CYRILLIC CAPITAL LETTER SHHA"}, - { 0x04BD, 0x04BC, "CYRILLIC SMALL LETTER ABKHASIAN CHE", "CYRILLIC CAPITAL LETTER ABKHASIAN CHE"}, - { 0x04BF, 0x04BE, "CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER", "CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER"}, - { 0x04C2, 0x04C1, "CYRILLIC SMALL LETTER ZHE WITH BREVE", "CYRILLIC CAPITAL LETTER ZHE WITH BREVE"}, - { 0x04C4, 0x04C3, "CYRILLIC SMALL LETTER KA WITH HOOK", "CYRILLIC CAPITAL LETTER KA WITH HOOK"}, - { 0x04C8, 0x04C7, "CYRILLIC SMALL LETTER EN WITH HOOK", "CYRILLIC CAPITAL LETTER EN WITH HOOK"}, - { 0x04CC, 0x04CB, "CYRILLIC SMALL LETTER KHAKASSIAN CHE", "CYRILLIC CAPITAL LETTER KHAKASSIAN CHE"}, - { 0x04D1, 0x04D0, "CYRILLIC SMALL LETTER A WITH BREVE", "CYRILLIC CAPITAL LETTER A WITH BREVE"}, - { 0x04D3, 0x04D2, "CYRILLIC SMALL LETTER A WITH DIAERESIS", "CYRILLIC CAPITAL LETTER A WITH DIAERESIS"}, - { 0x04D5, 0x04D4, "CYRILLIC SMALL LIGATURE A IE", "CYRILLIC CAPITAL LIGATURE A IE"}, - { 0x04D7, 0x04D6, "CYRILLIC SMALL LETTER IE WITH BREVE", "CYRILLIC CAPITAL LETTER IE WITH BREVE"}, - { 0x04D9, 0x04D8, "CYRILLIC SMALL LETTER SCHWA", "CYRILLIC CAPITAL LETTER SCHWA"}, - { 0x04DB, 0x04DA, "CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS", "CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS"}, - { 0x04DD, 0x04DC, "CYRILLIC SMALL LETTER ZHE WITH DIAERESIS", "CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS"}, - { 0x04DF, 0x04DE, "CYRILLIC SMALL LETTER ZE WITH DIAERESIS", "CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS"}, - { 0x04E1, 0x04E0, "CYRILLIC SMALL LETTER ABKHASIAN DZE", "CYRILLIC CAPITAL LETTER ABKHASIAN DZE"}, - { 0x04E3, 0x04E2, "CYRILLIC SMALL LETTER I WITH MACRON", "CYRILLIC CAPITAL LETTER I WITH MACRON"}, - { 0x04E5, 0x04E4, "CYRILLIC SMALL LETTER I WITH DIAERESIS", "CYRILLIC CAPITAL LETTER I WITH DIAERESIS"}, - { 0x04E7, 0x04E6, "CYRILLIC SMALL LETTER O WITH DIAERESIS", "CYRILLIC CAPITAL LETTER O WITH DIAERESIS"}, - { 0x04E9, 0x04E8, "CYRILLIC SMALL LETTER BARRED O", "CYRILLIC CAPITAL LETTER BARRED O"}, - { 0x04EB, 0x04EA, "CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS", "CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS"}, - { 0x04EF, 0x04EE, "CYRILLIC SMALL LETTER U WITH MACRON", "CYRILLIC CAPITAL LETTER U WITH MACRON"}, - { 0x04F1, 0x04F0, "CYRILLIC SMALL LETTER U WITH DIAERESIS", "CYRILLIC CAPITAL LETTER U WITH DIAERESIS"}, - { 0x04F3, 0x04F2, "CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE", "CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE"}, - { 0x04F5, 0x04F4, "CYRILLIC SMALL LETTER CHE AITH DIAERESIS", "CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS"}, - { 0x04F9, 0x04F8, "CYRILLIC SMALL LETTER YERU WITH DIAERESIS", "CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS"}, - { 0x0561, 0x0531, "ARMENIAN SMALL LETTER AYB", "ARMENIAN CAPITAL LETTER AYB"}, - { 0x0562, 0x0532, "ARMENIAN SMALL LETTER BEN", "ARMENIAN CAPITAL LETTER BEN"}, - { 0x0563, 0x0533, "ARMENIAN SMALL LETTER GIM", "ARMENIAN CAPITAL LETTER GIM"}, - { 0x0564, 0x0534, "ARMENIAN SMALL LETTER DA", "ARMENIAN CAPITAL LETTER DA"}, - { 0x0565, 0x0535, "ARMENIAN SMALL LETTER ECH", "ARMENIAN CAPITAL LETTER ECH"}, - { 0x0566, 0x0536, "ARMENIAN SMALL LETTER ZA", "ARMENIAN CAPITAL LETTER ZA"}, - { 0x0567, 0x0537, "ARMENIAN SMALL LETTER EH", "ARMENIAN CAPITAL LETTER EH"}, - { 0x0568, 0x0538, "ARMENIAN SMALL LETTER ET", "ARMENIAN CAPITAL LETTER ET"}, - { 0x0569, 0x0539, "ARMENIAN SMALL LETTER TO", "ARMENIAN CAPITAL LETTER TO"}, - { 0x056A, 0x053A, "ARMENIAN SMALL LETTER ZHE", "ARMENIAN CAPITAL LETTER ZHE"}, - { 0x056B, 0x053B, "ARMENIAN SMALL LETTER INI", "ARMENIAN CAPITAL LETTER INI"}, - { 0x056C, 0x053C, "ARMENIAN SMALL LETTER LIWN", "ARMENIAN CAPITAL LETTER LIWN"}, - { 0x056D, 0x053D, "ARMENIAN SMALL LETTER XEH", "ARMENIAN CAPITAL LETTER XEH"}, - { 0x056E, 0x053E, "ARMENIAN SMALL LETTER CA", "ARMENIAN CAPITAL LETTER CA"}, - { 0x056F, 0x053F, "ARMENIAN SMALL LETTER KEN", "ARMENIAN CAPITAL LETTER KEN"}, - { 0x0570, 0x0540, "ARMENIAN SMALL LETTER HO", "ARMENIAN CAPITAL LETTER HO"}, - { 0x0571, 0x0541, "ARMENIAN SMALL LETTER JA", "ARMENIAN CAPITAL LETTER JA"}, - { 0x0572, 0x0542, "ARMENIAN SMALL LETTER GHAD", "ARMENIAN CAPITAL LETTER GHAD"}, - { 0x0573, 0x0543, "ARMENIAN SMALL LETTER CHEH", "ARMENIAN CAPITAL LETTER CHEH"}, - { 0x0574, 0x0544, "ARMENIAN SMALL LETTER MEN", "ARMENIAN CAPITAL LETTER MEN"}, - { 0x0575, 0x0545, "ARMENIAN SMALL LETTER YI", "ARMENIAN CAPITAL LETTER YI"}, - { 0x0576, 0x0546, "ARMENIAN SMALL LETTER NOW", "ARMENIAN CAPITAL LETTER NOW"}, - { 0x0577, 0x0547, "ARMENIAN SMALL LETTER SNA", "ARMENIAN CAPITAL LETTER SHA"}, - { 0x0578, 0x0548, "ARMENIAN SMALL LETTER VO", "ARMENIAN CAPITAL LETTER VO"}, - { 0x0579, 0x0549, "ARMENIAN SMALL LETTER CHA", "ARMENIAN CAPITAL LETTER CHA"}, - { 0x057A, 0x054A, "ARMENIAN SMALL LETTER PEH", "ARMENIAN CAPITAL LETTER PEH"}, - { 0x057B, 0x054B, "ARMENIAN SMALL LETTER JHEH", "ARMENIAN CAPITAL LETTER JHEH"}, - { 0x057C, 0x054C, "ARMENIAN SMALL LETTER RA", "ARMENIAN CAPITAL LETTER RA"}, - { 0x057D, 0x054D, "ARMENIAN SMALL LETTER SEH", "ARMENIAN CAPITAL LETTER SEH"}, - { 0x057E, 0x054E, "ARMENIAN SMALL LETTER VEW", "ARMENIAN CAPITAL LETTER VEW"}, - { 0x057F, 0x054F, "ARMENIAN SMALL LETTER TIWN", "ARMENIAN CAPITAL LETTER TIWN"}, - { 0x0580, 0x0550, "ARMENIAN SMALL LETTER REH", "ARMENIAN CAPITAL LETTER REH"}, - { 0x0581, 0x0551, "ARMENIAN SMALL LETTER CO", "ARMENIAN CAPITAL LETTER CO"}, - { 0x0582, 0x0552, "ARMENIAN SMALL LETTER YIWN", "ARMENIAN CAPITAL LETTER YIWN"}, - { 0x0583, 0x0553, "ARMENIAN SMALL LETTER PIWP", "ARMENIAN CAPITAL LETTER PIWR"}, - { 0x0584, 0x0554, "ARMENIAN SMALL LETTER KEH", "ARMENIAN CAPITAL LETTER KEH"}, - { 0x0585, 0x0555, "ARMENIAN SMALL LETTER OH", "ARMENIAN CAPITAL LETTER OH"}, - { 0x0586, 0x0556, "ARMENIAN SMALL LETTER FEH", "ARMENIAN CAPITAL LETTER FEH"}, - { 0x10D0, 0x10A0, "GEORGIAN LETTER AN", "GEORGIAN CAPITAL LETTER AN (KHUTSURI)"}, - { 0x10D1, 0x10A1, "GEORGIAN LETTER BAN", "GEORGIAN CAPITAL LETTER BAN (KHUTSURI)"}, - { 0x10D2, 0x10A2, "GEORGIAN LETTER GAN", "GEORGIAN CAPITAL LETTER GAN (KHUTSURI)"}, - { 0x10D3, 0x10A3, "GEORGIAN LETTER DON", "GEORGIAN CAPITAL LETTER DON (KHUTSURI)"}, - { 0x10D4, 0x10A4, "GEORGIAN LETTER EN", "GEORGIAN CAPITAL LETTER EN (KHUTSURI)"}, - { 0x10D5, 0x10A5, "GEORGIAN LETTER VIN", "GEORGIAN CAPITAL LETTER VIN (KHUTSURI)"}, - { 0x10D6, 0x10A6, "GEORGIAN LETTER ZEN", "GEORGIAN CAPITAL LETTER ZEN (KHUTSURI)"}, - { 0x10D7, 0x10A7, "GEORGIAN LETTER TAN", "GEORGIAN CAPITAL LETTER TAN (KHUTSURI)"}, - { 0x10D8, 0x10A8, "GEORGIAN LETTER IN", "GEORGIAN CAPITAL LETTER IN (KHUTSURI)"}, - { 0x10D9, 0x10A9, "GEORGIAN LETTER KAN", "GEORGIAN CAPITAL LETTER KAN (KHUTSURI)"}, - { 0x10DA, 0x10AA, "GEORGIAN LETTER LAS", "GEORGIAN CAPITAL LETTER LAS (KHUTSURI)"}, - { 0x10DB, 0x10AB, "GEORGIAN LETTER MAN", "GEORGIAN CAPITAL LETTER MAN (KHUTSURI)"}, - { 0x10DC, 0x10AC, "GEORGIAN LETTER NAR", "GEORGIAN CAPITAL LETTER NAR (KHUTSURI)"}, - { 0x10DD, 0x10AD, "GEORGIAN LETTER ON", "GEORGIAN CAPITAL LETTER ON (KHUTSURI)"}, - { 0x10DE, 0x10AE, "GEORGIAN LETTER PAR", "GEORGIAN CAPITAL LETTER PAR (KHUTSURI)"}, - { 0x10DF, 0x10AF, "GEORGIAN LETTER ZHAR", "GEORGIAN CAPITAL LETTER ZHAR (KHUTSURI)"}, - { 0x10E0, 0x10B0, "GEORGIAN LETTER RAE", "GEORGIAN CAPITAL LETTER RAE (KHUTSURI)"}, - { 0x10E1, 0x10B1, "GEORGIAN LETTER SAN", "GEORGIAN CAPITAL LETTER SAN (KHUTSURI)"}, - { 0x10E2, 0x10B2, "GEORGIAN LETTER TAR", "GEORGIAN CAPITAL LETTER TAR (KHUTSURI)"}, - { 0x10E3, 0x10B3, "GEORGIAN LETTER UN", "GEORGIAN CAPITAL LETTER UN (KHUTSURI)"}, - { 0x10E4, 0x10B4, "GEORGIAN LETTER PHAR", "GEORGIAN CAPITAL LETTER PHAR (KHUTSURI)"}, - { 0x10E5, 0x10B5, "GEORGIAN LETTER KHAR", "GEORGIAN CAPITAL LETTER KHAR (KHUTSURI)"}, - { 0x10E6, 0x10B6, "GEORGIAN LETTER GHAN", "GEORGIAN CAPITAL LETTER GHAN (KHUTSURI)"}, - { 0x10E7, 0x10B7, "GEORGIAN LETTER QAR", "GEORGIAN CAPITAL LETTER QAR (KHUTSURI)"}, - { 0x10E8, 0x10B8, "GEORGIAN LETTER SHIN", "GEORGIAN CAPITAL LETTER SHIN (KHUTSURI)"}, - { 0x10E9, 0x10B9, "GEORGIAN LETTER CHIN", "GEORGIAN CAPITAL LETTER CHIN (KHUTSURI)"}, - { 0x10EA, 0x10BA, "GEORGIAN LETTER CAN", "GEORGIAN CAPITAL LETTER CAN (KHUTSURI)"}, - { 0x10EB, 0x10BB, "GEORGIAN LETTER JIL", "GEORGIAN CAPITAL LETTER JIL (KHUTSURI)"}, - { 0x10EC, 0x10BC, "GEORGIAN LETTER CIL", "GEORGIAN CAPITAL LETTER CIL (KHUTSURI)"}, - { 0x10ED, 0x10BD, "GEORGIAN LETTER CHAR", "GEORGIAN CAPITAL LETTER CHAR (KHUTSURI)"}, - { 0x10EE, 0x10BE, "GEORGIAN LETTER XAN", "GEORGIAN CAPITAL LETTER XAN (KHUTSURI)"}, - { 0x10EF, 0x10BF, "GEORGIAN LETTER JHAN", "GEORGIAN CAPITAL LETTER JHAN (KHUTSURI)"}, - { 0x10F0, 0x10C0, "GEORGIAN LETTER HAE", "GEORGIAN CAPITAL LETTER HAE (KHUTSURI)"}, - { 0x10F1, 0x10C1, "GEORGIAN LETTER HE", "GEORGIAN CAPITAL LETTER HE (KHUTSURI)"}, - { 0x10F2, 0x10C2, "GEORGIAN LETTER HIE", "GEORGIAN CAPITAL LETTER HIE (KHUTSURI)"}, - { 0x10F3, 0x10C3, "GEORGIAN LETTER WE", "GEORGIAN CAPITAL LETTER WE (KHUTSURI)"}, - { 0x10F4, 0x10C4, "GEORGIAN LETTER HAR", "GEORGIAN CAPITAL LETTER HAR (KHUTSURI)"}, - { 0x10F5, 0x10C5, "GEORGIAN LETTER HOE", "GEORGIAN CAPITAL LETTER HOE (KHUTSURI)"}, - { 0x1E01, 0x1E00, "LATIN SMALL LETTER A WITH RING BELOW", "LATIN CAPITAL LETTER A WITH RING BELOW"}, - { 0x1E03, 0x1E02, "LATIN SMALL LETTER B WITH DOT ABOVE", "LATIN CAPITAL LETTER B WITH DOT ABOVE"}, - { 0x1E05, 0x1E04, "LATIN SMALL LETTER B WITH DOT BELOW", "LATIN CAPITAL LETTER B WITH DOT BELOW"}, - { 0x1E07, 0x1E06, "LATIN SMALL LETTER B WITH LINE BELOW", "LATIN CAPITAL LETTER B WITH LINE BELOW"}, - { 0x1E09, 0x1E08, "LATIN SMALL LETTER C WITH CEDILLA AND ACUTE", "LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE"}, - { 0x1E0B, 0x1E0A, "LATIN SMALL LETTER D WITH DOT ABOVE", "LATIN CAPITAL LETTER D WITH DOT ABOVE"}, - { 0x1E0D, 0x1E0C, "LATIN SMALL LETTER D WITH DOT BELOW", "LATIN CAPITAL LETTER D WITH DOT BELOW"}, - { 0x1E0F, 0x1E0E, "LATIN SMALL LETTER D WITH LINE BELOW", "LATIN CAPITAL LETTER D WITH LINE BELOW"}, - { 0x1E11, 0x1E10, "LATIN SMALL LETTER D WITH CEDILLA", "LATIN CAPITAL LETTER D WITH CEDILLA"}, - { 0x1E13, 0x1E12, "LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW", "LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW"}, - { 0x1E15, 0x1E14, "LATIN SMALL LETTER E WITH MACRON AND GRAVE", "LATIN CAPITAL LETTER E WITH MACRON AND GRAVE"}, - { 0x1E17, 0x1E16, "LATIN SMALL LETTER E WITH MACRON AND ACUTE", "LATIN CAPITAL LETTER E WITH MACRON AND ACUTE"}, - { 0x1E19, 0x1E18, "LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW", "LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW"}, - { 0x1E1B, 0x1E1A, "LATIN SMALL LETTER E WITH TILDE BELOW", "LATIN CAPITAL LETTER E WITH TILDE BELOW"}, - { 0x1E1D, 0x1E1C, "LATIN SMALL LETTER E WITH CEDILLA AND BREVE", "LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE"}, - { 0x1E1F, 0x1E1E, "LATIN SMALL LETTER F WITH DOT ABOVE", "LATIN CAPITAL LETTER F WITH DOT ABOVE"}, - { 0x1E21, 0x1E20, "LATIN SMALL LETTER G WITH MACRON", "LATIN CAPITAL LETTER G WITH MACRON"}, - { 0x1E23, 0x1E22, "LATIN SMALL LETTER H WITH DOT ABOVE", "LATIN CAPITAL LETTER H WITH DOT ABOVE"}, - { 0x1E25, 0x1E24, "LATIN SMALL LETTER H WITH DOT BELOW", "LATIN CAPITAL LETTER H WITH DOT BELOW"}, - { 0x1E27, 0x1E26, "LATIN SMALL LETTER H WITH DIAERESIS", "LATIN CAPITAL LETTER H WITH DIAERESIS"}, - { 0x1E29, 0x1E28, "LATIN SMALL LETTER H WITH CEDILLA", "LATIN CAPITAL LETTER H WITH CEDILLA"}, - { 0x1E2B, 0x1E2A, "LATIN SMALL LETTER H WITH BREVE BELOW", "LATIN CAPITAL LETTER H WITH BREVE BELOW"}, - { 0x1E2D, 0x1E2C, "LATIN SMALL LETTER I WITH TILDE BELOW", "LATIN CAPITAL LETTER I WITH TILDE BELOW"}, - { 0x1E2F, 0x1E2E, "LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE", "LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE"}, - { 0x1E31, 0x1E30, "LATIN SMALL LETTER K WITH ACUTE", "LATIN CAPITAL LETTER K WITH ACUTE"}, - { 0x1E33, 0x1E32, "LATIN SMALL LETTER K WITH DOT BELOW", "LATIN CAPITAL LETTER K WITH DOT BELOW"}, - { 0x1E35, 0x1E34, "LATIN SMALL LETTER K WITH LINE BELOW", "LATIN CAPITAL LETTER K WITH LINE BELOW"}, - { 0x1E37, 0x1E36, "LATIN SMALL LETTER L WITH DOT BELOW", "LATIN CAPITAL LETTER L WITH DOT BELOW"}, - { 0x1E39, 0x1E38, "LATIN SMALL LETTER L WITH DOT BELOW AND MACRON", "LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON"}, - { 0x1E3B, 0x1E3A, "LATIN SMALL LETTER L WITH LINE BELOW", "LATIN CAPITAL LETTER L WITH LINE BELOW"}, - { 0x1E3D, 0x1E3C, "LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW", "LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW"}, - { 0x1E3F, 0x1E3E, "LATIN SMALL LETTER M WITH ACUTE", "LATIN CAPITAL LETTER M WITH ACUTE"}, - { 0x1E41, 0x1E40, "LATIN SMALL LETTER M WITH DOT ABOVE", "LATIN CAPITAL LETTER M WITH DOT ABOVE"}, - { 0x1E43, 0x1E42, "LATIN SMALL LETTER M WITH DOT BELOW", "LATIN CAPITAL LETTER M WITH DOT BELOW"}, - { 0x1E45, 0x1E44, "LATIN SMALL LETTER N WITH DOT ABOVE", "LATIN CAPITAL LETTER N WITH DOT ABOVE"}, - { 0x1E47, 0x1E46, "LATIN SMALL LETTER N WITH DOT BELOW", "LATIN CAPITAL LETTER N WITH DOT BELOW"}, - { 0x1E49, 0x1E48, "LATIN SMALL LETTER N WITH LINE BELOW", "LATIN CAPITAL LETTER N WITH LINE BELOW"}, - { 0x1E4B, 0x1E4A, "LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW", "LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW"}, - { 0x1E4D, 0x1E4C, "LATIN SMALL LETTER O WITH TILDE AND ACUTE", "LATIN CAPITAL LETTER O WITH TILDE AND ACUTE"}, - { 0x1E4F, 0x1E4E, "LATIN SMALL LETTER O WITH TlLDE AND DIAERESIS", "LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS"}, - { 0x1E51, 0x1E50, "LATIN SMALL LETTER O WITH MACRON AND GRAVE", "LATIN CAPITAL LETTER O WITH MACRON AND GRAVE"}, - { 0x1E53, 0x1E52, "LATIN SMALL LETTER O WITH MACRON AND ACUTE", "LATIN CAPITAL LETTER O WITH MACRON AND ACUTE"}, - { 0x1E55, 0x1E54, "LATIN SMALL LETTER P WITH ACUTE", "LATIN CAPITAL LETTER P WITH ACUTE"}, - { 0x1E57, 0x1E56, "LATIN SMALL LETTER P WITH DOT ABOVE", "LATIN CAPITAL LETTER P WITH DOT ABOVE"}, - { 0x1E59, 0x1E58, "LATIN SMALL LETTER R WITH DOT ABOVE", "LATIN CAPITAL LETTER R WITH DOT ABOVE"}, - { 0x1E5B, 0x1E5A, "LATIN SMALL LETTER R WITH DOT BELOW", "LATIN CAPITAL LETTER R WITH DOT BELOW"}, - { 0x1E5D, 0x1E5C, "LATIN SMALL LETTER R WITH DOT BELOW AND MACRON", "LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON"}, - { 0x1E5F, 0x1E5E, "LATIN SMALL LETTER R WITH LINE BELOW", "LATIN CAPITAL LETTER R WITH LINE BELOW"}, - { 0x1E61, 0x1E60, "LATIN SMALL LETTER S WITH DOT ABOVE", "LATIN CAPITAL LETTER S WITH DOT ABOVE"}, - { 0x1E63, 0x1E62, "LATIN SMALL LETTER S WITH DOT BELOW", "LATIN CAPITAL LETTER S WITH DOT BELOW"}, - { 0x1E65, 0x1E64, "LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE", "LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE"}, - { 0x1E67, 0x1E66, "LATIN SMALL LETTER S WITH CARON AND DOT ABOVE", "LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE"}, - { 0x1E69, 0x1E68, "LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE", "LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE"}, - { 0x1E6B, 0x1E6A, "LATIN SMALL LETTER T WITH DOT ABOVE", "LATIN CAPITAL LETTER T WITH DOT ABOVE"}, - { 0x1E6D, 0x1E6C, "LATIN SMALL LETTER T WITH DOT BELOW", "LATIN CAPITAL LETTER T WITH DOT BELOW"}, - { 0x1E6F, 0x1E6E, "LATIN SMALL LETTER T WITH LINE BELOW", "LATIN CAPITAL LETTER T WITH LINE BELOW"}, - { 0x1E71, 0x1E70, "LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW", "LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW"}, - { 0x1E73, 0x1E72, "LATIN SMALL LETTER U WITH DIAERESIS BELOW", "LATIN CAPITAL LETTER U WITH DIAERESIS BELOW"}, - { 0x1E75, 0x1E74, "LATIN SMALL LETTER U WITH TILDE BELOW", "LATIN CAPITAL LETTER U WITH TILDE BELOW"}, - { 0x1E77, 0x1E76, "LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW", "LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW"}, - { 0x1E79, 0x1E78, "LATIN SMALL LETTER U WITH TILDE AND ACUTE", "LATIN CAPITAL LETTER U WITH TILDE AND ACUTE"}, - { 0x1E7B, 0x1E7A, "LATIN SMALL LETTER U WITH MACRON AND DIAERESIS", "LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS"}, - { 0x1E7D, 0x1E7C, "LATIN SMALL LETTER V WITH TILDE", "LATIN CAPITAL LETTER V WITH TILDE"}, - { 0x1E7F, 0x1E7E, "LATIN SMALL LETTER V WITH DOT BELOW", "LATIN CAPITAL LETTER V WITH DOT BELOW"}, - { 0x1E81, 0x1E80, "LATIN SMALL LETTER W WITH GRAVE", "LATIN CAPITAL LETTER W WITH GRAVE"}, - { 0x1E83, 0x1E82, "LATIN SMALL LETTER W WITH ACUTE", "LATIN CAPITAL LETTER W WITH ACUTE"}, - { 0x1E85, 0x1E84, "LATIN SMALL LETTER W WITH DIAERESIS", "LATIN CAPITAL LETTER W WITH DIAERESIS"}, - { 0x1E87, 0x1E86, "LATIN SMALL LETTER W WITH DOT ABOVE", "LATIN CAPITAL LETTER W WITH DOT ABOVE"}, - { 0x1E89, 0x1E88, "LATIN SMALL LETTER W WITH DOT BELOW", "LATIN CAPITAL LETTER W WITH DOT BELOW"}, - { 0x1E8B, 0x1E8A, "LATIN SMALL LETTER X WITH DOT ABOVE", "LATIN CAPITAL LETTER X WITH DOT ABOVE"}, - { 0x1E8D, 0x1E8C, "LATIN SMALL LETTER X WITH DIAERESIS", "LATIN CAPITAL LETTER X5 WITH DIAERESIS"}, - { 0x1E8F, 0x1E8E, "LATIN SMALL LETTER Y WITH DOT ABOVE", "LATIN CAPITAL LETTER Y WITH DOT ABOVE"}, - { 0x1E91, 0x1E90, "LATIN SMALL LETTER Z WITH CIRCUMFLEX", "LATIN CAPITAL LETTER Z WITH CIRCUMFLEX"}, - { 0x1E93, 0x1E92, "LATIN SMALL LETTER Z WITH DOT BELOW", "LATIN CAPITAL LETTER Z WITH DOT BELOW"}, - { 0x1E95, 0x1E94, "LATIN SMALL LETTER Z WITH LINE BELOW", "LATIN CAPITAL LETTER Z WITH LINE BELOW"}, - { 0x1EA1, 0x1EA0, "LATIN SMALL LETTER A WITH DOT BELOW", "LATIN CAPITAL LETTER A WITH DOT BELOW"}, - { 0x1EA3, 0x1EA2, "LATIN SMALL LETTER A WITH HOOK ABOVE", "LATIN CAPITAL LETTER A WITH HOOK ABOVE"}, - { 0x1EA5, 0x1EA4, "LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE", "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE"}, - { 0x1EA7, 0x1EA6, "LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE", "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE"}, - { 0x1EA9, 0x1EA8, "LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE", "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE"}, - { 0x1EAB, 0x1EAA, "LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE", "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE"}, - { 0x1EAD, 0x1EAC, "LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW", "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW"}, - { 0x1EAF, 0x1EAE, "LATIN SMALL LETTER A WITH BREVE AND ACUTE", "LATIN CAPITAL LETTER A WITH BREVE AND ACUTE"}, - { 0x1EB1, 0x1EB0, "LATIN SMALL LETTER A WITH BREVE AND GRAVE", "LATIN CAPITAL LETTER A WITH BREVE AND GRAVE"}, - { 0x1EB3, 0x1EB2, "LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE", "LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE"}, - { 0x1EB5, 0x1EB4, "LATIN SMALL LETTER A WITH BREVE AND TILDE", "LATIN CAPITAL LETTER A WITH BREVE AND TILDE"}, - { 0x1EB7, 0x1EB6, "LATIN SMALL LETTER A WITH BREVE AND DOT BELOW", "LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW"}, - { 0x1EB9, 0x1EB8, "LATIN SMALL LETTER E WITH DOT BELOW", "LATIN CAPITAL LETTER E WITH DOT BELOW"}, - { 0x1EBB, 0x1EBA, "LATIN SMALL LETTER E WITH HOOK ABOVE", "LATIN CAPITAL LETTER E WITH HOOK ABOVE"}, - { 0x1EBD, 0x1EBC, "LATIN SMALL LETTER E WITH TILDE", "LATIN CAPITAL LETTER E WITH TILDE"}, - { 0x1EBF, 0x1EBE, "LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE", "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE"}, - { 0x1EC1, 0x1EC0, "LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE", "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE"}, - { 0x1EC3, 0x1EC2, "LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE", "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE"}, - { 0x1EC5, 0x1EC4, "LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE", "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE"}, - { 0x1EC7, 0x1EC6, "LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW", "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW"}, - { 0x1EC9, 0x1EC8, "LATIN SMALL LETTER I WITH HOOK ABOVE", "LATIN CAPITAL LETTER I WITH HOOK ABOVE"}, - { 0x1ECB, 0x1ECA, "LATIN SMALL LETTER I WITH DOT BELOW", "LATIN CAPITAL LETTER I WITH DOT BELOW"}, - { 0x1ECD, 0x1ECC, "LATIN SMALL LETTER O WITH DOT BELOW", "LATIN CAPITAL LETTER O WITH DOT BELOW"}, - { 0x1ECF, 0x1ECE, "LATIN SMALL LETTER O WITH HOOK ABOVE", "LATIN CAPITAL LETTER O WITH HOOK ABOVE"}, - { 0x1ED1, 0x1ED0, "LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE", "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE"}, - { 0x1ED3, 0x1ED2, "LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE", "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE"}, - { 0x1ED5, 0x1ED4, "LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE", "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE"}, - { 0x1ED7, 0x1ED6, "LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE", "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE"}, - { 0x1ED9, 0x1ED8, "LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW", "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW"}, - { 0x1EDB, 0x1EDA, "LATIN SMALL LETTER O WITH HORN AND ACUTE", "LATIN CAPITAL LETTER O WITH HORN AND ACUTE"}, - { 0x1EDD, 0x1EDC, "LATIN SMALL LETTER O WITH HORN AND GRAVE", "LATIN CAPITAL LETTER O WITH HORN AND GRAVE"}, - { 0x1EDF, 0x1EDE, "LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE", "LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE"}, - { 0x1EE1, 0x1EE0, "LATIN SMALL LETTER O WITH HORN AND TILDE", "LATIN CAPITAL LETTER O WITH HORN AND TILDE"}, - { 0x1EE3, 0x1EE2, "LATIN SMALL LETTER O WITH HORN AND DOT BELOW", "LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW"}, - { 0x1EE5, 0x1EE4, "LATIN SMALL LETTER U WITH DOT BELOW", "LATIN CAPITAL LETTER U WITH DOT BELOW"}, - { 0x1EE7, 0x1EE6, "LATIN SMALL LETTER U WITH HOOK ABOVE", "LATIN CAPITAL LETTER U WITH HOOK ABOVE"}, - { 0x1EE9, 0x1EE8, "LATIN SMALL LETTER U WITH HORN AND ACUTE", "LATIN CAPITAL LETTER U WITH HORN AND ACUTE"}, - { 0x1EEB, 0x1EEA, "LATIN SMALL LETTER U WITH HORN AND GRAVE", "LATIN CAPITAL LETTER U WITH HORN AND GRAVE"}, - { 0x1EED, 0x1EEC, "LATIN SMALL LETTER U WITH HORN AND HOCK ABOVE", "LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE"}, - { 0x1EEF, 0x1EEE, "LATIN SMALL LETTER U WITH HORN AND TILDE", "LATIN CAPITAL LETTER U WITH HORN AND TILDE"}, - { 0x1EF1, 0x1EF0, "LATIN SMALL LETTER U WITH HORN AND DOT BELOW", "LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW"}, - { 0x1EF3, 0x1EF2, "LATIN SMALL LETTER Y WITH GRAVE", "LATIN CAPITAL LETTER Y WITH GRAVE"}, - { 0x1EF5, 0x1EF4, "LATIN SMALL LETTER Y WITH DOT BELOW", "LATIN CAPITAL LETTER Y WITH DOT BELOW"}, - { 0x1EF7, 0x1EF6, "LATIN SMALL LETTER Y WITH HOOK ABOVE", "LATIN CAPITAL LETTER Y WITH HOOK ABOVE"}, - { 0x1EF9, 0x1EF8, "LATIN SMALL LETTER Y WITH TILDE", "LATIN CAPITAL LETTER Y WITH TILDE"}, - { 0x1F00, 0x1F08, "GREEK SMALL LETTER ALPHA WITH PSILI", "GREEK CAPITAL LETTER ALPHA WITH PSILI"}, - { 0x1F01, 0x1F09, "GREEK SMALL LETTER ALPHA WITH DASIA", "GREEK CAPITAL LETTER ALPHA WITH DASIA"}, - { 0x1F02, 0x1F0A, "GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA", "GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA"}, - { 0x1F03, 0x1F0B, "GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA", "GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA"}, - { 0x1F04, 0x1F0C, "GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA", "GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA"}, - { 0x1F05, 0x1F0D, "GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA", "GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA"}, - { 0x1F06, 0x1F0E, "GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI", "GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI"}, - { 0x1F07, 0x1F0F, "GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI", "GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI"}, - { 0x1F10, 0x1F18, "GREEK SMALL LETTER EPSILON WITH PSILI", "GREEK CAPITAL LETTER EPSILON WITH PSILI"}, - { 0x1F11, 0x1F19, "GREEK SMALL LETTER EPSILON WITH DASIA", "GREEK CAPITAL LETTER EPSILON WITH DASIA"}, - { 0x1F12, 0x1F1A, "GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA", "GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA"}, - { 0x1F13, 0x1F1B, "GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA", "GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA"}, - { 0x1F14, 0x1F1C, "GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA", "GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA"}, - { 0x1F15, 0x1F1D, "GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA", "GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA"}, - { 0x1F20, 0x1F28, "GREEK SMALL LETTER ETA WITH PSILI", "GREEK CAPITAL LETTER ETA WITH PSILI"}, - { 0x1F21, 0x1F29, "GREEK SMALL LETTER ETA WITH DASIA", "GREEK CAPITAL LETTER ETA WITH DASIA"}, - { 0x1F22, 0x1F2A, "GREEK SMALL LETTER ETA WITH PSILI AND VARIA", "GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA"}, - { 0x1F23, 0x1F2B, "GREEK SMALL LETTER ETA WITH DASIA AND VARIA", "GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA"}, - { 0x1F24, 0x1F2C, "GREEK SMALL LETTER ETA WITH PSILI AND OXIA", "GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA"}, - { 0x1F25, 0x1F2D, "GREEK SMALL LETTER ETA WITH DASIA AND OXIA", "GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA"}, - { 0x1F26, 0x1F2E, "GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI", "GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI"}, - { 0x1F27, 0x1F2F, "GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI", "GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI"}, - { 0x1F30, 0x1F38, "GREEK SMALL LETTER IOTA WITH PSILI", "GREEK CAPITAL LETTER IOTA WITH PSILI"}, - { 0x1F31, 0x1F39, "GREEK SMALL LETTER IOTA WITH DASIA", "GREEK CAPITAL LETTER IOTA WITH DASIA"}, - { 0x1F32, 0x1F3A, "GREEK SMALL LETTER IOTA WITH PSILI AND VARIA", "GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA"}, - { 0x1F33, 0x1F3B, "GREEK SMALL LETTER IOTA WITH DASIA AND VARIA", "GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA"}, - { 0x1F34, 0x1F3C, "GREEK SMALL LETTER IOTA WITH PSILI AND OXIA", "GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA"}, - { 0x1F35, 0x1F3D, "GREEK SMALL LETTER IOTA WITH DASIA AND OXIA", "GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA"}, - { 0x1F36, 0x1F3E, "GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI", "GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI"}, - { 0x1F37, 0x1F3F, "GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI", "GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI"}, - { 0x1F40, 0x1F48, "GREEK SMALL LETTER OMICRON WITH PSILI", "GREEK CAPITAL LETTER OMICRON WITH PSILI"}, - { 0x1F41, 0x1F49, "GREEK SMALL LETTER OMICRON WITH DASIA", "GREEK CAPITAL LETTER OMICRON WITH DASIA"}, - { 0x1F42, 0x1F4A, "GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA", "GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA"}, - { 0x1F43, 0x1F4B, "GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA", "GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA"}, - { 0x1F44, 0x1F4C, "GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA", "GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA"}, - { 0x1F45, 0x1F4D, "GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA", "GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA"}, - { 0x1F51, 0x1F59, "GREEK SMALL LETTER UPSILON WITH DASIA", "GREEK CAPITAL LETTER UPSILON WITH OASIS"}, - { 0x1F53, 0x1F5B, "GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA", "GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA"}, - { 0x1F55, 0x1F5D, "GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA", "GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA"}, - { 0x1F57, 0x1F5F, "GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI", "GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI"}, - { 0x1F60, 0x1F68, "GREEK SMALL LETTER OMEGA WITh PSILI", "GREEK CAPITAL LETTER OMEGA WITH PSILI"}, - { 0x1F61, 0x1F69, "GREEK SMALL LETTER OMEGA WITH DASIA", "GREEK CAPITAL LETTER OMEGA WITH DASIA"}, - { 0x1F62, 0x1F6A, "GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA", "GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA"}, - { 0x1F63, 0x1F6B, "GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA", "GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA"}, - { 0x1F64, 0x1F6C, "GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA", "GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA"}, - { 0x1F65, 0x1F6D, "GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA", "GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA"}, - { 0x1F66, 0x1F6E, "GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI", "GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI"}, - { 0x1F67, 0x1F6F, "GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI", "GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI"}, - { 0x1F80, 0x1F88, "GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ALPHA WITh PSILI AND PROSGEGRAMMENI"}, - { 0x1F81, 0x1F89, "GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI"}, - { 0x1F82, 0x1F8A, "GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI"}, - { 0x1F83, 0x1F8B, "GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI"}, - { 0x1F84, 0x1F8C, "GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMEN"}, - { 0x1F85, 0x1F8D, "GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMEN"}, - { 0x1F86, 0x1F8E, "GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI"}, - { 0x1F87, 0x1F8F, "GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI"}, - { 0x1F90, 0x1F98, "GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI"}, - { 0x1F91, 0x1F99, "GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI"}, - { 0x1F92, 0x1F9A, "GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI"}, - { 0x1F93, 0x1F9B, "GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI"}, - { 0x1F94, 0x1F9C, "GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI"}, - { 0x1F95, 0x1F9D, "GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI"}, - { 0x1F96, 0x1F9E, "GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI"}, - { 0x1F97, 0x1F9F, "GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI"}, - { 0x1FA0, 0x1FA8, "GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI"}, - { 0x1FA1, 0x1FA9, "GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI"}, - { 0x1FA2, 0x1FAA, "GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI"}, - { 0x1FA3, 0x1FAB, "GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI"}, - { 0x1FA4, 0x1FAC, "GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI"}, - { 0x1FA5, 0x1FAD, "GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI"}, - { 0x1FA6, 0x1FAE, "GREEK SMALL LETTER OMEGA WITh PSILI AND PERISPOMENI AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI"}, - { 0x1FA7, 0x1FAF, "GREEK SMALL LETTER OMEGA WITH DASIA AND PEPISPOMENI AND YPOGEGRAMMENI", "GREEK CAPITAL LETTER OMECA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI"}, - { 0x1FB0, 0x1FB8, "GREEK SMALL LETTER ALPHA WITH VRACHY", "GREEK CAPITAL LETTER ALPHA WITH VRACHY"}, - { 0x1FB1, 0x1FB9, "GREEK SMALL LETTER ALPHA WITH MACRON", "GREEK CAPITAL LETTER ALPHA WITH MACRON"}, - { 0x1FD0, 0x1FD8, "GREEK SMALL LETTER IOTA WITH VRACHY", "GREEK CAPITAL LETTER IOTA WITH VRACHY"}, - { 0x1FD1, 0x1FD9, "GREEK SMALL LETTER IOTA WITH MACRON", "GREEK CAPITAL LETTER IOTA WITH MACRON"}, - { 0x1FE0, 0x1FE8, "GREEK SMALL LETTER UPSILON WITH VRACHY", "GREEK CAPITAL LETTER UPSILON WITH VRACHY"}, - { 0x1FE1, 0x1FE9, "GREEK SMALL LETTER UPSILON WITH MACRON", "GREEK CAPITAL LETTER UPSILON WITH MACRON"}, - { 0x24D0, 0x24B6, "CIRCLED LATIN SMALL LETTER A", "CIRCLED LATIN CAPITAL LETTER A"}, - { 0x24D1, 0x24B7, "CIRCLED LATIN SMALL LETTER B", "CIRCLED LATIN CAPITAL LETTER B"}, - { 0x24D2, 0x24B8, "CIRCLED LATIN SMALL LETTER C", "CIRCLED LATIN CAPITAL LETTER C"}, - { 0x24D3, 0x24B9, "CIRCLED LATIN SMALL LETTER D", "CIRCLED LATIN CAPITAL LETTER D"}, - { 0x24D4, 0x24BA, "CIRCLED LATIN SMALL LETTER E", "CIRCLED LATIN CAPITAL LETTER E"}, - { 0x24D5, 0x24BB, "CIRCLED LATIN SMALL LETTER F", "CIRCLED LATIN CAPITAL LETTER F"}, - { 0x24D6, 0x24BC, "CIRCLED LATIN SMALL LETTER G", "CIRCLED LATIN CAPITAL LETTER G"}, - { 0x24D7, 0x24BD, "CIRCLED LATIN SMALL LETTER H", "CIRCLED LATIN CAPITAL LETTER H"}, - { 0x24D8, 0x24BE, "CIRCLED LATIN SMALL LETTER I", "CIRCLED LATIN CAPITAL LETTER I"}, - { 0x24D9, 0x24BF, "CIRCLED LATIN SMALL LETTER J", "CIRCLED LATIN CAPITAL LETTER J"}, - { 0x24DA, 0x24C0, "CIRCLED LATIN SMALL LETTER K", "CIRCLED LATIN CAPITAL LETTER K"}, - { 0x24DB, 0x24C1, "CIRCLED LATIN SMALL LETTER L", "CIRCLED LATIN CAPITAL LETTER L"}, - { 0x24DC, 0x24C2, "CIRCLED LATIN SMALL LETTER M", "CIRCLED LATIN CAPITAL LETTER M"}, - { 0x24DD, 0x24C3, "CIRCLED LATIN SMALL LETTER N", "CIRCLED LATIN CAPITAL LETTER N"}, - { 0x24DE, 0x24C4, "CIRCLED LATIN SMALL LETTER O", "CIRCLED LATIN CAPITAL LETTER O"}, - { 0x24DF, 0x24C5, "CIRCLED LATIN SMALL LETTER P", "CIRCLED LATIN CAPITAL LETTER P"}, - { 0x24E0, 0x24C6, "CIRCLED LATIN SMALL LETTER Q", "CIRCLED LATIN CAPITAL LETTER Q"}, - { 0x24E1, 0x24C7, "CIRCLED LATIN SMALL LETTER R", "CIRCLED LATIN CAPITAL LETTER R"}, - { 0x24E2, 0x24C8, "CIRCLED LATIN SMALL LETTER S", "CIRCLED LATIN CAPITAL LETTER S"}, - { 0x24E3, 0x24C9, "CIRCLED LATIN SMALL LETTER T", "CIRCLED LATIN CAPITAL LETTER T"}, - { 0x24E4, 0x24CA, "CIRCLED LATIN SMALL LETTER U", "CIRCLED LATIN CAPITAL LETTER U"}, - { 0x24E5, 0x24CB, "CIRCLED LATIN SMALL LETTER V", "CIRCLED LATIN CAPITAL LETTER V"}, - { 0x24E6, 0x24CC, "CIRCLED LATIN SMALL LETTER W", "CIRCLED LATIN CAPITAL LETTER W"}, - { 0x24E7, 0x24CD, "CIRCLED LATIN SMALL LETTER X", "CIRCLED LATIN CAPITAL LETTER X"}, - { 0x24E8, 0x24CE, "CIRCLED LATIN SMALL LETTER Y", "CIRCLED LATIN CAPITAL LETTER Y"}, - { 0x24E9, 0x24CF, "CIRCLED LATIN SMALL LETTER Z", "CIRCLED LATIN CAPITAL LETTER Z"}, - { 0xFF41, 0xFF21, "FULLWIDTH LATIN SMALL LETTER A", "FULLWIDTH LATIN CAPITAL LETTER A"}, - { 0xFF42, 0xFF22, "FULLWIDTH LATIN SMALL LETTER B", "FULLWIDTH LATIN CAPITAL LETTER B"}, - { 0xFF43, 0xFF23, "FULLWIDTH LATIN SMALL LETTER C", "FULLWIDTH LATIN CAPITAL LETTER C"}, - { 0xFF44, 0xFF24, "FULLWIDTH LATIN SMALL LETTER D", "FULLWIDTH LATIN CAPITAL LETTER D"}, - { 0xFF45, 0xFF25, "FULLWIDTH LATIN SMALL LETTER E", "FULLWIDTH LATIN CAPITAL LETTER E"}, - { 0xFF46, 0xFF26, "FULLWIDTH LATIN SMALL LETTER F", "FULLWIDTH LATIN CAPITAL LETTER F"}, - { 0xFF47, 0xFF27, "FULLWIDTH LATIN SMALL LETTER G", "FULLWIDTH LATIN CAPITAL LETTER G"}, - { 0xFF48, 0xFF28, "FULLWIDTH LATIN SMALL LETTER H", "FULLWIDTH LATIN CAPITAL LETTER H"}, - { 0xFF49, 0xFF29, "FULLWIDTH LATIN SMALL LETTER I", "FULLWIDTH LATIN CAPITAL LETTER I"}, - { 0xFF4A, 0xFF2A, "FULLWIDTH LATIN SMALL LETTER J", "FULLWIDTH LATIN CAPITAL LETTER J"}, - { 0xFF4B, 0xFF2B, "FULLWIDTH LATIN SMALL LETTER K", "FULLWIDTH LATIN CAPITAL LETTER K"}, - { 0xFF4C, 0xFF2C, "FULLWIDTH LATIN SMALL LETTER L", "FULLWIDTH LATIN CAPITAL LETTER L"}, - { 0xFF4D, 0xFF2D, "FULLWIDTH LATIN SMALL LETTER M", "FULLWIDTH LATIN CAPITAL LETTER M"}, - { 0xFF4E, 0xFF2E, "FULLWIDTH LATIN SMALL LETTER N", "FULLWIDTH LATIN CAPITAL LETTER N"}, - { 0xFF4F, 0xFF2F, "FULLWIDTH LATIN SMALL LETTER O", "FULLWIDTH LATIN CAPITAL LETTER O"}, - { 0xFF50, 0xFF30, "FULLWIDTH LATIN SMALL LETTER P", "FULLWIDTH LATIN CAPITAL LETTER P"}, - { 0xFF51, 0xFF31, "FULLWIDTH LATIN SMALL LETTER Q", "FULLWIDTH LATIN CAPITAL LETTER Q"}, - { 0xFF52, 0xFF32, "FULLWIDTH LATIN SMALL LETTER R", "FULLWIDTH LATIN CAPITAL LETTER R"}, - { 0xFF53, 0xFF33, "FULLWIDTH LATIN SMALL LETTER S", "FULLWIDTH LATIN CAPITAL LETTER S"}, - { 0xFF54, 0xFF34, "FULLWIDTH LATIN SMALL LETTER T", "FULLWIDTH LATIN CAPITAL LETTER T"}, - { 0xFF55, 0xFF35, "FULLWIDTH LATIN SMALL LETTER U", "FULLWIDTH LATIN CAPITAL LETTER U"}, - { 0xFF56, 0xFF36, "FULLWIDTH LATIN SMALL LETTER V", "FULLWIDTH LATIN CAPITAL LETTER V"}, - { 0xFF57, 0xFF37, "FULLWIDTH LATIN SMALL LETTER W", "FULLWIDTH LATIN CAPITAL LETTER W"}, - { 0xFF58, 0xFF38, "FULLWIDTH LATIN SMALL LETTER X", "FULLWIDTH LATIN CAPITAL LETTER X"}, - { 0xFF59, 0xFF39, "FULLWIDTH LATIN SMALL LETTER Y", "FULLWIDTH LATIN CAPITAL LETTER Y"}, - { 0xFF5A, 0xFF3A, "FULLWIDTH LATIN SMALL LETTER Z", "FULLWIDTH LATIN CAPITAL LETTER Z"} -}; - -/* - * Convert an upper-case letter to the corresponding lower-case letter. - */ -unsigned int wlc(unsigned int iChar) { - /* Number of elements */ - int iLBound = 0; - int iRBound = sizeof (mUCSU2L) / sizeof (UCSTransMap) - 1; - unsigned int iUC; - int iPos; - - /* Binary search */ - for (;;) { - /* Calculate new position */ - iPos = (iRBound + iLBound) >> 1; - iUC = mUCSU2L[iPos].sc; - - /* Search in left half */ - if (iUC > iChar) { - iRBound = iPos; - } /* Search in right half */ - else if (iUC < iChar) { - iLBound = iPos; - } /* Found symbol */ - else { - return mUCSU2L[iPos].dc; - } - - /* Nothing found */ - if (iRBound - iLBound <= 1) { - if (iChar == mUCSU2L[iRBound].sc) { - return mUCSU2L[iRBound].dc; - } - if (iChar == mUCSU2L[iLBound].sc) { - return mUCSU2L[iLBound].dc; - } - - return iChar; - } - } - /* Make compiler happy */ - return 0; -} - -/* - * Convert an lower-case letter to the corresponding upper-case letter. - */ -unsigned int wuc(unsigned int iChar) { - /* Number of elements */ - int iLBound = 0; - int iRBound = sizeof (mUCSL2U) / sizeof (UCSTransMap) - 1; - unsigned int iUC; - int iPos; - - /* Binary search */ - for (;;) { - /* Calculate new position */ - iPos = (iRBound + iLBound) >> 1; - iUC = mUCSL2U[iPos].sc; - - /* Search in left half */ - if (iUC > iChar) { - iRBound = iPos; - } /* Search in right half */ - else if (iUC < iChar) { - iLBound = iPos; - } /* Found symbol */ - else { - return mUCSL2U[iPos].dc; - } - - /* Nothing found */ - if (iRBound - iLBound <= 1) { - if (iChar == mUCSL2U[iRBound].sc) { - return mUCSL2U[iRBound].dc; - } - if (iChar == mUCSL2U[iLBound].sc) { - return mUCSL2U[iLBound].dc; - } - - return iChar; - } - } - /* Make compiler happy */ - return 0; -} - -/* End. */ diff --git a/tcejdb/chartables.h b/tcejdb/chartables.h deleted file mode 100644 index ead7f7d..0000000 --- a/tcejdb/chartables.h +++ /dev/null @@ -1,63 +0,0 @@ -/*- - * Copyright (c) 2008 - 2010 CAS Dev Team - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the CAS Dev. Team nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * chartables.h - * - * $CAS$ - */ -#ifndef _CHARTABLES_H__ -#define _CHARTABLES_H__ 1 - -/* - @file chartables.h - @brief Character translation tables & accessors, header file - - Unicode uppercase to lowercase conversion mapping table - http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/nls/rbagslowtoupmaptable.htm&tocNode=int_39939 - - Unicode lowercase to uppercase conversion mapping table - http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/nls/rbagslowtoupmaptable.htm&tocNode=int_39940 - */ - -/** - @fn unsigned int wlc(unsigned int iChar); - @brief Convert an upper-case letter to the corresponding lower-case letter. - @param iChar - UCS character - @return lowercase character if found in translation table or intouched character otherwise - */ -unsigned int wlc(unsigned int iChar); - -/** - @fn unsigned int wuc(unsigned int iChar) - @brief Convert an lower-case letter to the corresponding upper-case letter. - @param iChar - UCS character - @return uppercase character if found in translation table or intouched character otherwise - */ -unsigned int wuc(unsigned int iChar); - -#endif /* _CHARTABLES_H__ */ -/* End. */ diff --git a/tcejdb/stringutils.c b/tcejdb/stringutils.c deleted file mode 100644 index cab169d..0000000 --- a/tcejdb/stringutils.c +++ /dev/null @@ -1,218 +0,0 @@ -/*- - * Copyright (c) 2008 - 2010 CAS Dev Team - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the CAS Dev. Team nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * translators.c - * - * $CAS$ - */ - -#include "translators.h" -#include "chartables.h" - -#include -#include - -/* - * Find length of NULL-terminated UTF8 string - */ -int utf8strlen(const char * szSrc) { - int iCharacters = 0; - int iProcessedSrc = 0; - - for (;;) { - unsigned int iUCS = 0; - /* Exit condition */ - if (*szSrc == '\0') { - break; - } - - /* Convert symbol from UTF8 to UCS */ - iProcessedSrc = utf8tow(szSrc, 6, &iUCS); - - /* Incorrect input character */ - if (iProcessedSrc == -1) { - return -1; - } - - szSrc += iProcessedSrc; - - ++iCharacters; - } - - return iCharacters; -} - -/* - * Find length of UTF8 string, check not more than iSrcLen bytes. - */ -int utf8strnlen(const char * szSrc, int iSrcLen) { - int iCharacters = 0; - int iProcessedSrc = 0; - - for (;;) { - unsigned int iUCS = 0; - /* Convert symbol from UTF8 to UCS */ - iProcessedSrc = utf8tow(szSrc, iSrcLen, &iUCS); - - /* Incorrect input character */ - if (iProcessedSrc == -1) { - return -1; - } - - szSrc += iProcessedSrc; - iSrcLen -= iProcessedSrc; - if (iUCS == 0 && iSrcLen == 0) { - break; - } - - ++iCharacters; - - /* Exit condition */ - if (iSrcLen == 0) { - break; - } - } - - return iCharacters; -} - -/* - * Compare two utf-8 strings - */ -int utf8strncmp(const char * szSrc1, int iSrc1Len, const char * szSrc2, int iSrc2Len) { - int iProcessedSrc1 = 0; - int iProcessedSrc2 = 0; - - unsigned int iUCS1 = 0; - unsigned int iUCS2 = 0; - - if (iSrc1Len == 0 || iSrc2Len == 0) { - return (iSrc1Len - iSrc2Len); - } - for (;;) { - /* Convert symbol from UTF8 to UCS */ - iProcessedSrc1 = utf8tow(szSrc1, iSrc1Len, &iUCS1); - /* Incorrect input character in first string */ - if (iProcessedSrc1 == -1) { - return -2; - } - - szSrc1 += iProcessedSrc1; - iSrc1Len -= iProcessedSrc1; - - /* Convert symbol from UTF8 to UCS */ - iProcessedSrc2 = utf8tow(szSrc2, iSrc2Len, &iUCS2); - /* Incorrect input character in second string */ - if (iProcessedSrc2 == -1) { - return 2; - } - - szSrc2 += iProcessedSrc2; - iSrc2Len -= iProcessedSrc2; - - /* - * In Modified UTF-8, the null character (U+0000) is encoded as 0xC0,0x80 - * rather than 0x00, which is not valid UTF-8 - */ - if (iUCS1 != iUCS2 || - iUCS1 == 0 || - iUCS2 == 0 || - iSrc1Len == 0 || - iSrc2Len == 0) { - break; - } - } - - if (iUCS1 > iUCS2) { - return 1; - } - if (iUCS1 < iUCS2) { - return -1; - } - - return 0; -} - -/* - *Compare two utf-8 strings, ignoring case - */ -int utf8strncasecmp(const char * szSrc1, int iSrc1Len, const char * szSrc2, int iSrc2Len) { - int iProcessedSrc1 = 0; - int iProcessedSrc2 = 0; - - unsigned int iUCS1 = 0; - unsigned int iUCS2 = 0; - for (;;) { - /* Convert symbol from UTF8 to UCS */ - iProcessedSrc1 = utf8tow(szSrc1, iSrc1Len, &iUCS1); - /* Incorrect input character in first string */ - if (iProcessedSrc1 == -1) { - return -2; - } - - szSrc1 += iProcessedSrc1; - iSrc1Len -= iProcessedSrc1; - - /* Convert symbol from UTF8 to UCS */ - iProcessedSrc2 = utf8tow(szSrc2, iSrc2Len, &iUCS2); - /* Incorrect input character in second string */ - if (iProcessedSrc2 == -1) { - return 2; - } - - szSrc2 += iProcessedSrc2; - iSrc2Len -= iProcessedSrc2; - - /* Change case */ - iUCS1 = wlc(iUCS1); - /* Change case */ - iUCS2 = wlc(iUCS2); - - /* - * In Modified UTF-8, the null character (U+0000) is encoded as 0xC0,0x80 - * rather than 0x00, which is not valid UTF-8 - */ - if (iUCS1 != iUCS2 || - iUCS1 == 0 || - iUCS2 == 0 || - iSrc1Len == 0 || - iSrc2Len == 0) { - break; - } - } - - if (iUCS1 > iUCS2) { - return 1; - } - if (iUCS1 < iUCS2) { - return -1; - } - - return 0; -} - -/* End. */ diff --git a/tcejdb/stringutils.h b/tcejdb/stringutils.h deleted file mode 100644 index ac195aa..0000000 --- a/tcejdb/stringutils.h +++ /dev/null @@ -1,81 +0,0 @@ -/*- - * Copyright (c) 2008 - 2010 CAS Dev Team - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the CAS Dev. Team nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * stringutils.h - * - * $CAS$ - */ -#ifndef _STRINGUTILS_H__ -#define _STRINGUTILS_H__ 1 - -/* - @file stringutils.h - @brief UTF8 strings functions - */ - -/** - @fn int utf8strlen(const char * szSrc); - @brief Find length of NULL-terminated UTF8 string - @param szSrc - Source UTF8 string - @param iSrcLen - Source string length - @return >0 (number of utf8 characters) if success, -1 - if incorrect input character found - */ -int utf8strlen(const char * szSrc); - -/** - @fn int utf8strlen(const char * szSrc, int iSrcLen); - @brief Find length of UTF8 string, check not more than iSrcLen bytes. - @param szSrc - Source UTF8 string - @param iSrcLen - Source string length - @return >0 (number of utf8 characters) if success, -1 - if incorrect input character found - */ -int utf8strnlen(const char * szSrc, int iSrcLen); - -/** - @fn int utf8strncmp(const char * szSrc1, int iSrc1Len, const char * szSrc2, int iSrc2Len); - @brief Compare two utf-8 strings - @param szSrc1 - First UTF8 string - @param iSrc1Len - First string length - @param szSrc2 - Second UTF8 string - @param iSrc2Len - Second string length - @return +1, 0, -1 according as szSrc1 is lexicographically greater than, equal to, or less than szSrc2. If function return +2 or -2 it means that first or second string contains incorrct UTF8 characters - */ -int utf8strncmp(const char * szSrc1, int iSrc1Len, const char * szSrc2, int iSrc2Len); - -/** - @fn int utf8strncasecmp(const char * szSrc1, int iSrc1Len, const char * szSrc2, int iSrc2Len); - @brief Compare two utf-8 strings, ignoring case - @param szSrc1 - First UTF8 string - @param iSrc1Len - First string length - @param szSrc2 - Second UTF8 string - @param iSrc2Len - Second string length - @return +1, 0, -1 according as szSrc1 is lexicographically greater than, equal to, or less than szSrc2 after translation of each corresponding character to lower-case. If function return -2 or +2 it means that first or second string contains incorrect UTF8 characters - */ -int utf8strncasecmp(const char * szSrc1, int iSrc1Len, const char * szSrc2, int iSrc2Len); - -#endif /* _STRINGUTILS_H__ */ -/* End. */ diff --git a/tcejdb/translators.c b/tcejdb/translators.c deleted file mode 100644 index 478cbbe..0000000 --- a/tcejdb/translators.c +++ /dev/null @@ -1,314 +0,0 @@ -/*- - * Copyright (c) 2008 - 2010 CAS Dev Team - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the CAS Dev. Team nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * translators.c - * - * $CAS$ - */ - -#include "translators.h" -#include "chartables.h" - -#include -#include -#include -#include -#include - -/** - @var typedef unsigned int ((*CaseFn)(unsigned int)); - */ -typedef unsigned int ((*CaseFn)(unsigned int)); - -/* - * Convert UTF8 character to wide - */ -int wtoutf8(unsigned int iUCS, char * sUTF8) { - int iPos = 0; - int iCharLength = 0; - unsigned char sUTF8Prefix = 0; - - /* ASCII characters. */ - if ((iUCS & ~0x0000007F) == 0) { - /* Modified UTF-8, special case */ - if (iUCS == 0) { - sUTF8[0] = (char) 0xC0; - sUTF8[1] = (char) 0x80; - return 2; - } - - sUTF8[0] = (char) iUCS; - return 1; - } - /* - * Does not need here, but let it be - if ((iUCS & ~0x0000007F) == 0) - { - sUTF8Prefix = 0x00; // 11000000b - iCharLength = 1; - } else - */ - - if ((iUCS & ~0x000007FF) == 0) { - sUTF8Prefix = 0xC0; // 11000000b - iCharLength = 2; - } else if ((iUCS & ~0x0000FFFF) == 0) { - sUTF8Prefix = 0xE0; // 11100000b - iCharLength = 3; - } else if ((iUCS & ~0x001FFFFF) == 0) { - sUTF8Prefix = 0xF0; // 11110000b - iCharLength = 4; - } else if ((iUCS & ~0x03FFFFFF) == 0) { - sUTF8Prefix = 0xF8; // 11111000b - iCharLength = 5; - } else if ((iUCS & ~0x7FFFFFFF) == 0) { - sUTF8Prefix = 0xFC; // 11111100b - iCharLength = 6; - }/* Incorrect multibyte character */ - else { - return -1; - } - - /* - * Convert UCS character to UTF8. Split value in 6-bit chunks and - * move to UTF8 string - */ - for (iPos = iCharLength - 1; iPos > 0; --iPos) { - sUTF8[iPos] = (iUCS & 0x0000003F) | 0x80; - iUCS >>= 6; - } - - /* UTF8 prefix, special case */ - sUTF8[0] = (iUCS & 0x000000FF) | sUTF8Prefix; - - /* Return size of UTF8 character */ - return iCharLength; -} - -/* - * Convert character to UTF8 - */ -int utf8tow(const char * sUTF8, int iUTF8Length, unsigned int * iUCSResult) { - unsigned int iUCS = 0; - int iPos = 0; - int iCharLength = 0; - unsigned char ucPrefix = 0; - unsigned int uBoundary = 0; - - /* Incorrect multibyte sequence */ - if (iUTF8Length == 0 || sUTF8 == NULL) { - return -1; - } - - /* - Determine size of UTF8 character & check "shortest form" of char - */ - ucPrefix = (unsigned char) (*sUTF8); - - /* 10000000b & 00000000b */ - if ((ucPrefix & 0x80) == 0) { - ucPrefix = 0x7F; - iCharLength = 1; - uBoundary = 0; - }/* 11100000b & 11000000b */ - else if ((ucPrefix & 0xE0) == 0xC0) { - ucPrefix = 0x1F; - iCharLength = 2; - uBoundary = 0x80; - }/* 11110000b & 11100000b */ - else if ((ucPrefix & 0xF0) == 0xE0) { - ucPrefix = 0x0F; - iCharLength = 3; - uBoundary = 0x00000800; - }/* 11111000b & 11110000b */ - else if ((ucPrefix & 0xF8) == 0xF0) { - ucPrefix = 0x07; - iCharLength = 4; - uBoundary = 0x00010000; - }/* 11111100b & 11111000b */ - else if ((ucPrefix & 0xFC) == 0xF8) { - ucPrefix = 0x03; - iCharLength = 5; - uBoundary = 0x00200000; - }/* 11111110b & 11111100b */ - else if ((ucPrefix & 0xFE) == 0xFC) { - ucPrefix = 0x01; - iCharLength = 6; - uBoundary = 0x04000000; - }/* Invalid UTF8 sequence */ - else { - return -1; - } - - /* Invalid UTF8 sequence */ - if (iUTF8Length < iCharLength) { - return -1; - } - - /* Special case for first character */ - iUCS = (unsigned char) (*sUTF8) & ucPrefix; - ++sUTF8; - for (iPos = 1; iPos < iCharLength; ++iPos) { - /* Incorect characters in middle of string */ - if (((*sUTF8) & 0xC0) != 0x80) { - return -1; - } - - /* Join value from 6-bit chunks */ - iUCS <<= 6; - iUCS |= (*sUTF8) & 0x3F; - ++sUTF8; - } - - /* Check boundary */ - if (iUCS < uBoundary) { - /* Modified UTF-8, special case */ - if (!(iUCS == 0 && uBoundary == 0x80)) { - /* Not a "shortest form" of char */ - return -1; - } - } - - *iUCSResult = iUCS; - - return iCharLength; -} - -/* - * Make a UTF8 string upper or lowercase - */ -int changeutf8case(const char * szSrc, int iSrcLen, char ** szDst, int * iDstLen, CaseFn pCaseFn) { - int iAllocated = iSrcLen; - char * szTMPDst = (char*) malloc(sizeof (char) * iAllocated); - int iRealDstLen = 0; - - int iProcessedSrc = 0; - int iProcessedDst = 0; - int iChars = 0; - - for (;;) { - unsigned int iUCS = 0; - /* Convert symbol from UTF8 to UCS */ - iProcessedSrc = utf8tow(szSrc, iSrcLen, &iUCS); - /* Incorrect input character */ - if (iProcessedSrc == -1) { - free(szTMPDst); - return -1; - } - - szSrc += iProcessedSrc; - iSrcLen -= iProcessedSrc; - - /* Modifies UTF-8. Special case for end-of-string */ - if (iSrcLen == 0 && iUCS == 0) { - szTMPDst[iRealDstLen] = 0; - break; - } - - /* Change case */ - iUCS = ((*pCaseFn)(iUCS)); - - /* Convert symbol from UCS to UTF8 */ - iProcessedDst = wtoutf8(iUCS, szTMPDst + iRealDstLen); - /* Incorrect lowercase character; I hope, this should NEVER happened */ - if (iProcessedDst == -1) { - free(szTMPDst); - return -2; - } - /* Store processed size */ - iRealDstLen += iProcessedDst; - - /* Check free memory in destination buffer */ - if (iRealDstLen + 6 > iAllocated) { - char * szReallocated = NULL; - - /* Reallocate buffer to 1.5 sizes of original */ - iAllocated = iAllocated + iAllocated / 2; - szReallocated = realloc(szTMPDst, iAllocated * sizeof (char)); - /* Cannot reallocate memory */ - if (szReallocated == NULL) { - free(szTMPDst); - return -3; - } - szTMPDst = szReallocated; - } - - /* Exit condition */ - if (iSrcLen == 0) { - break; - } - - - ++iChars; - } - - *iDstLen = iChars; - *szDst = szTMPDst; - return 0; -} - -/* - * Make a UTF8 string lowercase - */ -int utf8lcstr(const char * szSrc, int iSrcLen, char ** szDst, int * iDstLen) { - return changeutf8case(szSrc, iSrcLen, szDst, iDstLen, wlc); -} - - -int utf8lcstr2(const char * szSrc, int iSrcLen, char ** szDst, int * iDstLen) { - int ret = changeutf8case(szSrc, iSrcLen, szDst, iDstLen, wlc); - if (ret < 0) { - *szDst = (char*) malloc(sizeof (char) * iSrcLen); - memcpy(*szDst, szSrc, iSrcLen); - *iDstLen = iSrcLen; - } - return 0; -} - -int asciilcstr(const char * szSrc, int iSrcLen, char ** szDst, int * iDstLen) { - int i; - char * szTMPDst = (char*) malloc(sizeof (char) * iSrcLen); - *iDstLen = iSrcLen; - for (i = 0; i < iSrcLen; ++i) { - if (szSrc[i] == '\0') { - szTMPDst[i] = '\0'; - break; - } - szTMPDst[i] = (char) tolower(szSrc[i]); - } - *szDst = szTMPDst; - return szTMPDst; -} - -/* - * Make a UTF8 string uppercase - */ -int utf8ucstr(const char * szSrc, int iSrcLen, char ** szDst, int * iDstLen) { - return changeutf8case(szSrc, iSrcLen, szDst, iDstLen, wuc); -} - -/* End. */ diff --git a/tcejdb/translators.h b/tcejdb/translators.h deleted file mode 100644 index 2819c55..0000000 --- a/tcejdb/translators.h +++ /dev/null @@ -1,82 +0,0 @@ -/*- - * Copyright (c) 2008 - 2010 CAS Dev Team - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the CAS Dev. Team nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * translators.h - * - * $CAS$ - */ -#ifndef _TRANSLATORS_H__ -#define _TRANSLATORS_H__ 1 - -/* - @file translatros.h - @brief Uppercase/lowercase manipulation functions - */ - -/** - @fn int wtoutf8(unsigned int iUCS, char * sUTF8); - @brief convert UTF8 character to wide - @param iUCS - UCS character - @param sUTF8 - UTF8 string, at least 6 bytes length - @return size of UTF8 character if success or -1 otherwise - */ -int wtoutf8(unsigned int iUCS, char * sUTF8); - -/** - @fn int utf8tow(const char * sUTF8, int iUTF8Length, unsigned int * iUCSResult); - @brief convert character to UTF8 - @param sUTF8 - String with UTF8 characters - @param iUTF8Length - max. string length - @param iUCSResult - UCS character - @return size of UTF8 character if success or -1 otherwise - */ -int utf8tow(const char * sUTF8, int iUTF8Length, unsigned int * iUCSResult); - -/** - @fn int utf8lcstr(const char * szSrc, int iSrcLen, char ** szDst, int * iDstLen); - @brief Make a UTF8 string lowercase - @param szSrc - Source UTF8 string - @param iSrcLen - Source string length - @param szDst - Destination UTF8 string - @param iDstLen - Destination string length - @return 0 - if success, -1 - if incorrect input character found, -2 - if incorrect lowercase character found in translation table ; -3 - if can't reallocate memory. - */ -int utf8lcstr(const char * szSrc, int iSrcLen, char ** szDst, int * iDstLen); - -/** - @fn int utf8ucstr(const char * szSrc, int iSrcLen, char ** szDst, int * iDstLen); - @brief Make a UTF8 string uppercase - @param szSrc - Source UTF8 string - @param iSrcLen - Source string length - @param szDst - Destination UTF8 string - @param iDstLen - Destination string length - @return 0 - if success, -1 - if incorrect input character found, -2 - if incorrect lowercase character found in translation table ; -3 - if can't reallocate memory. - */ -int utf8ucstr(const char * szSrc, int iSrcLen, char ** szDst, int * iDstLen); - -#endif /* _TRANSLATORS_H__ */ -/* End. */ -- 2.7.4