summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Reher <tde@4reher.org>2023-06-22 09:22:42 -0700
committerVincent Reher <tde@4reher.org>2023-10-02 11:22:04 -0700
commita39403fb8be586e9b9e4b326616156fbfed27c6c (patch)
tree85f7bf35279604d3c648d7fe0521890e2ee5283d
parent4c0dae60b2fbc60996fc8f4bd29ee6219b869527 (diff)
downloadtdelibs-a39403fb8be586e9b9e4b326616156fbfed27c6c.tar.gz
tdelibs-a39403fb8be586e9b9e4b326616156fbfed27c6c.zip
This new branch is a follow-up to the latest and
final commit to branch issue/270/tdelibs-V3. It includes the following files that were mistakenly omitted in that commit: tdecore/CMakeLists.txt tdecore/README.tdestringmatcher tdecore/tdeglobal.cpp tdecore/tdeglobal.h tdecore/tdestringmatcher.cpp tdecore/tdestringmatcher.h tdeio/tdeio/tdefileitem.cpp tdeio/tdeio/tdefileitem.h It also includes updates to the following files, some of which are based on recent feedback from @MicheleC: tdecore/tequivchars-mapping.h tdecore/tequivchars.cpp tdecore/tequivchars.h Signed-off-by: Vincent Reher <tde@4reher.org>
-rw-r--r--tdecore/CMakeLists.txt5
-rw-r--r--tdecore/README.tdestringmatcher121
-rw-r--r--tdecore/tdeglobal.cpp31
-rw-r--r--tdecore/tdeglobal.h17
-rwxr-xr-xtdecore/tdestringmatcher.cpp649
-rw-r--r--tdecore/tdestringmatcher.h134
-rw-r--r--tdecore/tequivchars-mapping.h3085
-rwxr-xr-xtdecore/tequivchars.cpp241
-rw-r--r--tdecore/tequivchars.h34
-rw-r--r--tdeio/tdeio/tdefileitem.cpp60
-rw-r--r--tdeio/tdeio/tdefileitem.h45
11 files changed, 4406 insertions, 16 deletions
diff --git a/tdecore/CMakeLists.txt b/tdecore/CMakeLists.txt
index c794a8039..3df630ac3 100644
--- a/tdecore/CMakeLists.txt
+++ b/tdecore/CMakeLists.txt
@@ -72,7 +72,7 @@ install( FILES
kcalendarsystem.h kcalendarsystemfactory.h kmacroexpander.h
kmanagerselection.h kmountpoint.h kuser.h klockfile.h
kidna.h ktempdir.h kshell.h fixx11h.h kxerrorhandler.h
- tdelibs_export.h kde_file.h ktimezones.h
+ tdelibs_export.h kde_file.h ktimezones.h tdestringmatcher.h tequivchars.h
${CMAKE_CURRENT_BINARY_DIR}/kdemacros.h
DESTINATION ${INCLUDE_INSTALL_DIR} )
@@ -135,13 +135,14 @@ set( ${target}_SRCS
kprotocolinfo_tdecore.cpp kprotocolinfofactory.cpp kxerrorhandler.cpp
kuser.cpp tdeconfigskeleton.cpp tdeconfigdialogmanager.cpp klockfile.cpp
kqiodevicegzip_p.cpp ktimezones.cpp ksimpledirwatch.cpp
+ tdestringmatcher.cpp tequivchars.cpp
)
tde_add_library( ${target} SHARED AUTOMOC
SOURCES ${${target}_SRCS}
VERSION 14.1.0
EMBED tdecorenetwork-static
- LINK DCOP-shared tdefx-shared ICE SM ${ZLIB_LIBRARIES} ${RESOLV_LIBRARIES}
+ LINK DCOP-shared tdefx-shared ICE SM ${ZLIB_LIBRARIES}
LINK_PRIVATE ltdlc-static ${KDESVGICONS} ${XCOMPOSITE_LIBRARIES}
${LIBIDN_LIBRARIES} ${LIBBFD_LIBRARIES} ${LIB_UTIL} ${GAMIN_LIBRARIES}
${Backtrace_LIBRARY}
diff --git a/tdecore/README.tdestringmatcher b/tdecore/README.tdestringmatcher
new file mode 100644
index 000000000..dc9e6bca5
--- /dev/null
+++ b/tdecore/README.tdestringmatcher
@@ -0,0 +1,121 @@
+The TDEStringMatcher class provides string matching against a list of one
+or more match patterns along with associated options. A single pattern with
+its associated options will be referred to herein as a "match specification".
+
+Current match specification options include:
+
+ * Type of match pattern:
+
+ REGEX: Pattern is a regular expression.
+ WILDCARD: Pattern is a wildcard expression like that used
+ in POSIX shell file globbing.
+ SUBSTRING: Pattern is a simple substring that matches any
+ string in which it occurs. Substring characters do not
+ have any other meaning that controls matching.
+
+ * Alphanumeric character handling in a pattern:
+
+ NONE: each unescaped alphanumeric character in a pattern
+ is distinct and will match only itself.
+ CASE INSENSITIVE: each unescaped letter in a pattern
+ will match its lower and upper case variants.
+ EQUIVALENCE: Each unescaped variant of an alphanumeric
+ character will match all stylistic and accented
+ variations of that character.
+
+ * Desired outcome of matching
+
+ TRUE: match succeeds if a string matches the match pattern.
+ FALSE: match succeeds if a string does NOT match the match pattern.
+
+Applications may set and get match specification lists either directly or
+indirectly (using an encoded match specifications string). The matching
+functions provided are:
+
+ matchAny(): strings match if they match any pattern in list.
+ matchAll(): strings match only if the match all patterns in list.
+
+MATCH SPECIFICATIONS STRING
+
+The TDEStringMatcher class provides applications an encoded match
+specifications string solely intended to be used for storing and retrieving
+match specifications. These strings are formatted as follows:
+
+ OptionString <Tab> PatternString [ <Tab> OptionString <Tab> PatternString ...]
+
+Option strings may contain only the following characters:
+
+ 'r' - Match pattern is a regular expression [default]
+ 'w' - Match pattern is a wildcard expression
+ 's' - Match pattern is a simple substring
+ 'c' - Letter case variants are distinct (e.g. case-sensitive) [default]
+ 'i' - Letter case variants are equivalent (e.g. case-insensitive)
+ 'e' - All letter & number character variants are equivalent
+ '=' - Match succeeds if pattern matches [default]
+ '!' - Match succeeds if pattern does NOT match (inverted match)
+
+Option strings should ideally contain exactly 3 characters indicating match
+pattern type, alphanumeric character handling, and desired outcome of matching.
+Specifying fewer option characters is possible but may result in unexpected
+inferred values. Specifying additional and possibly contradictory option
+characters is also possible, with later characters overriding earlier ones.
+
+Pattern strings may not be empty. Invalid pattern strings will cause the
+entire match specifications string to be rejected.
+
+Match specifications strings that are stored in TDE configuration files will
+be modified as follows:
+
+ '\' characters in original pattern are encoded as '\\'
+ The <Tab> separator is encoded as '\t'
+
+Using file name matching as an example, the match specifications string:
+ wc= .* rc= ~$ se! e ri= ^a.+\.[0-9]+$
+encoded in a TDE configuration file as:
+ wc=\t.*\trc=\t~$\tse!\te\tri=\t^a.+\\.[0-9]+$
+will match file names as follows:
+
+ * All "dotfiles" would be matched with wildcard matching.
+ * All file names ending with '~' (e.g kwrite backup names) would be
+ matched with case-sensitive regex matching.
+ * All filenames that do NOT contain an equivalent variant of the letter
+ 'e' (e.g. 'e','ê','Ě','E') would be matched with substring matching.
+ * All file names starting with letter 'a' or 'A' and ending with '.'
+ followed by one or more numeric digits would be matched with case-
+ insensitive regex matching.
+
+IMPLEMENTATION NOTES:
+
+ * Regular expressions are currently supported by TQRegExp and are
+ thereby subject to its limitations and bugs. This may be changed
+ in the future (e.g. direct access to PCRE2, porting of Qt 5.x
+ QRegularExpression).
+
+ * Wildcard pattern matching on GLIBC systems is done using the fnmatch
+ function with GNU extended patterns supported. Consult the fnmatch(3)
+ and glob(7) manual pages for more information. On non-GLIBC systems,
+ basic (not extended) wildcard patterns are converted to basic regular
+ expressions and processed by the underlying regular expression engine.
+
+ * Simple substrings are also supported as match patterns. These are
+ currently processed by the TQString.find() function. In the future,
+ these may be converted and processed by the underlying regex engine,
+ depending on the tradeoff between code simplification and efficiency.
+
+ * Alphanumeric equivalence is conceptually similar to [=x=] POSIX
+ equivalence class bracket expressions (which are not supported)
+ but is intended to apply globally in patterns. The following
+ are caveats when this option is utilized:
+
+ - There is potentially significant overhead due to the fact that
+ match patterns and match strings must be converted prior to
+ matching. Conversion requires character-by-character lookup
+ and replacement using a pre-built table.
+
+ - The table contains equivalents for [0-9A-Z] which should work
+ well for Latin-derived languages. It also contains support for
+ other numeric and non-latin letter characters, the efficacy of
+ which is not as certain.
+
+ - Due to the 16-bit size limitation of TQChar, the table does not
+ contain mappings for codepoints greater than U+FFFF.
diff --git a/tdecore/tdeglobal.cpp b/tdecore/tdeglobal.cpp
index 09f496034..03f39ac80 100644
--- a/tdecore/tdeglobal.cpp
+++ b/tdecore/tdeglobal.cpp
@@ -33,6 +33,8 @@
#include <tdeconfig.h>
#include <tdelocale.h>
#include <kcharsets.h>
+#include <tequivchars.h>
+#include <tdestringmatcher.h>
#include <kiconloader.h>
#ifdef __TDE_HAVE_TDEHWLIB
#include <tdehardwaredevices.h>
@@ -131,6 +133,32 @@ KCharsets *TDEGlobal::charsets()
return _charsets;
}
+TEquivChars *TDEGlobal::equivChars()
+{
+ if( _equivChars == 0 ) {
+ _equivChars = new TEquivChars();
+ }
+ return _equivChars;
+}
+
+TDEStringMatcher *TDEGlobal::hiddenFileMatcher()
+{
+ if( _hiddenFileMatcher == 0 ) {
+ //-Debug: TSMTRACE << "TDEGlobal::hiddenFileMatcher(): Global HFM initialization STARTED" << endl;
+ _hiddenFileMatcher = new TDEStringMatcher();
+ TDEGlobal::config()->setGroup( "General" );
+ const char* settingsDefault = "wc=\t.*"; // wildcard match of dotfiles
+ // CAUTION: for economy of expression, we are leveraging our insider knowledge
+ // that TSM::StringDivider is defined as '\t' instead of more properly doing this:
+ // char settingsDefault[5] = { 'w', TSM::StringDivider, '.', '*', 0 };
+ TQString settings = TDEGlobal::config()->readEntry( "globalHiddenFileSpec", settingsDefault );
+ //-Debug: TSMTRACE << "TDEGlobal::hiddenFileMatcher(): using retrieved patternString = '" << settings << "'" << endl;
+ _hiddenFileMatcher->setMatchSpecs( settings );
+ }
+
+ return _hiddenFileMatcher;
+}
+
void TDEGlobal::setActiveInstance(TDEInstance *i)
{
_activeInstance = i;
@@ -223,6 +251,9 @@ TDEInstance *TDEGlobal::_instance = 0;
TDEInstance *TDEGlobal::_activeInstance = 0;
TDELocale *TDEGlobal::_locale = 0;
KCharsets *TDEGlobal::_charsets = 0;
+TEquivChars *TDEGlobal::_equivChars = 0;
+TDEStringMatcher *TDEGlobal::_hiddenFileMatcher = 0;
+
KStaticDeleterList *TDEGlobal::_staticDeleters = 0;
#ifdef WIN32
diff --git a/tdecore/tdeglobal.h b/tdecore/tdeglobal.h
index 1269c36a9..ebb465cf0 100644
--- a/tdecore/tdeglobal.h
+++ b/tdecore/tdeglobal.h
@@ -30,6 +30,8 @@ class TDEHardwareDevices;
class TDEGlobalNetworkManager;
#endif
class TDELocale;
+class TDEStringMatcher;
+class TEquivChars;
class TDEStandardDirs;
class KStaticDeleterBase;
class KStaticDeleterList;
@@ -108,6 +110,18 @@ public:
static KCharsets *charsets();
/**
+ * The global alphanumeric character equivalence mapper.
+ * @return the global alphanumeric character equivalence mapper.
+ */
+ static TEquivChars *equivChars();
+
+ /**
+ * The global hidden file matcher.
+ * @return the global hidden file matcher
+ */
+ static TDEStringMatcher *hiddenFileMatcher();
+
+ /**
* Creates a static TQString.
*
* To be used inside functions(!) like:
@@ -174,6 +188,9 @@ public:
static TDEInstance *_instance;
static TDELocale *_locale;
static KCharsets *_charsets;
+ static TDEStringMatcher *_hiddenFileMatcher;
+ static TEquivChars *_equivChars;
+
static KStaticDeleterList *_staticDeleters;
/**
diff --git a/tdecore/tdestringmatcher.cpp b/tdecore/tdestringmatcher.cpp
new file mode 100755
index 000000000..7e9f1ee0d
--- /dev/null
+++ b/tdecore/tdestringmatcher.cpp
@@ -0,0 +1,649 @@
+#include "tdestringmatcher.h"
+#include "tequivchars.h"
+
+#include <tdeglobal.h>
+#include <tqregexp.h>
+#include <kdebug.h>
+
+#include <features.h>
+#ifdef __GLIBC__
+#include <fnmatch.h>
+#pragma message "TSM using GLIBC fnmatch() for wildcard matching"
+#endif
+
+//================================================================================================
+
+namespace TSM {
+
+class AuxData
+{
+public:
+ AuxData();
+ TQString patternConverted; // Pattern converted from original (e.g ANCHandling::EQUIVALENCE)
+ TQRegExp* matchEngine; // Used when PatternType::REGEX
+#ifdef __GLIBC__
+ int fnmatchFlags; // Used by fnmatch() when PatternType::WILDCARD
+#endif
+ bool isCaseSensitive; // PatternType::SUBSTRING
+};
+
+AuxData::AuxData()
+{
+ isCaseSensitive = true;
+#ifdef __GLIBC__
+ fnmatchFlags = FNM_EXTMATCH; // Bash shell option 'extglob'
+#endif
+ matchEngine = nullptr;
+ patternConverted = "";
+}
+
+} // End of namespace TSM
+
+//================================================================================================
+
+using namespace TSM;
+
+typedef TQValueVector<AuxData> AuxDataList;
+
+class TDEStringMatcher::TDEStringMatcherPrivate {
+public:
+
+ // Properties that may be set / accessed through the TSM interface
+ TQString m_matchSpecString;
+ MatchSpecList m_matchSpecList;
+
+ // Properties that are internal implementation only
+ AuxDataList m_auxData;
+ void clearAll();
+};
+
+void TDEStringMatcher::TDEStringMatcherPrivate::clearAll()
+{
+ m_matchSpecString = "";
+ m_matchSpecList.clear();
+ for ( size_t index = 0 ; index < m_auxData.count() ; index++ ) {
+ if ( m_auxData[index].matchEngine != nullptr ) {
+ TSMTRACE << "Freeing match engine " << m_auxData[index].matchEngine << endl;
+ delete m_auxData[index].matchEngine;
+ }
+ }
+ m_auxData.clear();
+}
+
+//================================================================================================
+
+TDEStringMatcher::TDEStringMatcher()
+{
+ TSMTRACE << "TSM::TDEStringMatcher(): New instance created: " << this << endl;
+ d = new TDEStringMatcherPrivate;
+}
+
+TDEStringMatcher::~TDEStringMatcher()
+{
+ d->clearAll();
+ delete d;
+ TSMTRACE << "TSM::~TDEStringMatcher(): Instance destroyed: " << this << endl;
+}
+
+
+//================================================================================================
+// Match specification output functions
+//================================================================================================
+
+const TQString TDEStringMatcher::getMatchSpecString() const
+{
+ return d->m_matchSpecString;
+}
+
+const MatchSpecList TDEStringMatcher::getMatchSpecs() const
+{
+ return d->m_matchSpecList;
+}
+
+
+//================================================================================================
+// Match specification input functions
+//================================================================================================
+
+bool TDEStringMatcher::setMatchSpecs( MatchSpecList newMatchSpecList )
+{
+ TDEStringMatcherPrivate workArea;
+
+ TQStringList newMatchSpecs;
+
+ TSMTRACE << "TSM::setPatterns(): validating match specification list" << endl;
+
+ for ( MatchSpec matchSpec : newMatchSpecList ) {
+
+ if ( matchSpec.pattern.isEmpty() ) {
+ TSMTRACE << " Error: empty pattern!" << endl;
+ workArea.clearAll();
+ return false;
+ }
+ if ( matchSpec.pattern.find( TQChar(PatterStringDivider) ) >= 0 ) {
+ TSMTRACE << " Error: pattern contains reserved separator character" << endl;
+ workArea.clearAll();
+ return false;
+ }
+
+ AuxData auxWork;
+ TQString inferredOptionString;
+
+ // Validate / process PatternType
+
+ auxWork.patternConverted = matchSpec.pattern;
+ switch ( matchSpec.patternType ) {
+ case PatternType::WILDCARD :
+ inferredOptionString += TQChar('w');
+#ifndef __GLIBC__
+ auxWork.patternConverted = wildcardToRegex( auxWork.patternConverted );
+ TSMTRACE << " Converted wildcard expression '" << matchSpec.pattern << "' to regex '" << auxWork.patternConverted << "'" << endl;
+#endif
+ break;
+ case PatternType::REGEX :
+ inferredOptionString += TQChar('r');
+ break;
+ case PatternType::SUBSTRING :
+ inferredOptionString += TQChar('s');
+ break;
+ default:
+ TSMTRACE << " Error: pattern type out of range" << endl;
+ workArea.clearAll();
+ return false;
+ }
+
+ // Validate / process ANCHandling
+
+ TQString before = auxWork.patternConverted;
+ switch ( matchSpec.ancHandling ) {
+ case ANCHandling::CASE_SENSITIVE :
+ inferredOptionString += TQChar('c');
+ auxWork.isCaseSensitive = true;
+ break;
+ case ANCHandling::CASE_INSENSITIVE :
+ inferredOptionString += TQChar('i');
+ auxWork.isCaseSensitive = false;
+#ifdef __GLIBC__
+ auxWork.fnmatchFlags |= FNM_CASEFOLD;
+#endif
+ break;
+ case ANCHandling::EQUIVALENCE :
+ inferredOptionString += TQChar('e');
+ auxWork.isCaseSensitive = true;
+ auxWork.patternConverted = TDEGlobal::equivChars()->replaceChars( auxWork.patternConverted, true );
+ TSMTRACE << " Converted match pattern '" << before << "' to equivalent '" << auxWork.patternConverted << "'" << endl;
+ break;
+ default:
+ TSMTRACE << " Error: alphabetic character handling specification out of range" << endl;
+ workArea.clearAll();
+ return false;
+ }
+
+ if ( matchSpec.expectMatch )
+ inferredOptionString += TQChar('=');
+ else
+ inferredOptionString += TQChar('!');
+
+ // Test validity of pattern
+
+ TQRegExp rxWork;
+ int result;
+
+ switch ( matchSpec.patternType ) {
+ case PatternType::WILDCARD :
+#ifdef __GLIBC__ // Test wildcard expression using a subject matter expert
+ result = fnmatch(
+ auxWork.patternConverted.local8Bit().data(),
+ auxWork.patternConverted.local8Bit().data(),
+ auxWork.fnmatchFlags
+ ); // Comparison should fail
+ switch ( result ) {
+ case 0: // matched
+ case FNM_NOMATCH: // not matched
+ break;
+ default:
+ TSMTRACE << " Error: invalid wildcard syntax" << endl;
+ workArea.clearAll();
+ return false;
+ }
+ break;
+#endif // Otherwise we will test wildcard expression as one converted to a regex
+ case PatternType::REGEX :
+ // Prepare regex
+ rxWork.setPattern( auxWork.patternConverted );
+ rxWork.setCaseSensitive( auxWork.isCaseSensitive );
+ // Test regex
+ if ( rxWork.isValid() ) {
+ auxWork.matchEngine = new TQRegExp;
+ *auxWork.matchEngine = rxWork;
+ TSMTRACE << "AuxData: Allocated regex engine for matching '" << auxWork.matchEngine->pattern() << "'" << endl;
+ }
+ else {
+ TSMTRACE << " Error: invalid regex syntax'" << endl;
+ workArea.clearAll();
+ return false;
+ }
+ break;
+ // if (! rxWork.isReallyWhatUserIntended() ) { HA HA
+ }
+
+ // This particular match specification is good
+
+ newMatchSpecs.append( inferredOptionString );
+ newMatchSpecs.append( matchSpec.pattern );
+ workArea.m_auxData.append( auxWork );
+ }
+
+ // All proposed match specifications are good, update everything accordingly
+
+ workArea.m_matchSpecList = newMatchSpecList;
+ workArea.m_matchSpecString = newMatchSpecs.join( TQChar(PatterStringDivider) );
+ d->clearAll();
+ *d = workArea;
+ //-Debug: TSMTRACE << " Notifying slots of pattern change" << endl;
+ emit patternsChanged();
+ //-Debug: TSMTRACE << " All slots have been notified" << endl;
+ TSMTRACE << "TSM::setPatterns(): Patterns were successfully regenerated from list" << endl << endl;
+ return true;
+}
+
+//=================================================================================================
+
+bool TDEStringMatcher::setMatchSpecs( TQString newMatchSpecString )
+{
+ if ( newMatchSpecString == d->m_matchSpecString )
+ return true;
+
+ TDEStringMatcherPrivate workArea;
+
+ MatchSpec matchSpec = {
+ PatternType::DEFAULT,
+ ANCHandling::DEFAULT,
+ true, // seeking matches, not non-matches
+ ""
+ };
+
+ TSMTRACE << "TSM::setPatterns: Proposed match specification string: <" << newMatchSpecString << ">" << endl;
+
+ if ( newMatchSpecString.isEmpty() ) {
+ TSMTRACE << " Empty pattern string => match specifications will be cleared" << endl;
+ d->m_matchSpecList.clear();
+ d->m_matchSpecString = "";
+ emit patternsChanged();
+ return true;
+ }
+
+ TQStringList newMatchSpecs = TQStringList::split( PatterStringDivider, newMatchSpecString, true );
+
+ if ( newMatchSpecs.count() % 2 != 0 ) {
+ TSMTRACE << " Error: match specification string must contain an even number of components" << endl;
+ return false;
+ }
+
+ bool processingOptionString = true; // expected format: option string , pattern string, ...
+
+ for ( TQString &specification : newMatchSpecs ) {
+
+ if ( processingOptionString ) {
+ specification = specification.lower();
+ TSMTRACE << " Processing match option string: '" << specification << "'" << endl;
+ for ( int i = 0 ; i < specification.length() ; i++ ) {
+
+ TQChar optionChar = specification[i];
+ //Debug: TSMTRACE << " Option character: '" << optionChar << "'" << endl;
+
+ switch ( optionChar ) {
+ case 'r' : matchSpec.patternType = PatternType::REGEX ; break;
+ case 'w' : matchSpec.patternType = PatternType::WILDCARD ; break;
+ case 's' : matchSpec.patternType = PatternType::SUBSTRING ; break;
+ case 'c' : matchSpec.ancHandling = ANCHandling::CASE_SENSITIVE ; break;
+ case 'i' : matchSpec.ancHandling = ANCHandling::CASE_INSENSITIVE; break;
+ case 'e' : matchSpec.ancHandling = ANCHandling::EQUIVALENCE ; break;
+ case '=' : matchSpec.expectMatch = true ; break;
+ case '!' : matchSpec.expectMatch = false ; break;
+ default:
+ // We reserve ALL other possible option characters for future use!
+ TSMTRACE << " Error: invalid option character" << endl;
+ workArea.clearAll();
+ return false;
+ }
+ }
+
+ processingOptionString = false; // next spec should be a pattern string
+ } // processingOptionString
+
+ else { // ! processingOptionString
+
+ TSMTRACE << " Processing match pattern string: '" << specification << "'" << endl;
+
+ if ( specification.isEmpty() ) {
+ TSMTRACE << " Error: empty pattern!" << endl;
+ workArea.clearAll();
+ return false;
+ }
+
+ AuxData auxWork;
+
+ // Validate / process PatternType
+
+ auxWork.patternConverted = specification;
+ switch ( matchSpec.patternType ) {
+ case PatternType::WILDCARD :
+#ifndef __GLIBC__
+ auxWork.patternConverted = wildcardToRegex( specification );
+ TSMTRACE << " Converted wildcard expression '" << specification << "' to regex '" << auxWork.patternConverted << "'" << endl;
+ break;
+#endif
+ case PatternType::REGEX :
+ case PatternType::SUBSTRING :
+ break;
+ default :
+ // This should never arise since the content of this field was set within this function
+ kdWarning() << "Error while processing '" << specification
+ << "' pattern type out of range: " << (uchar) matchSpec.patternType
+ << endl;
+ workArea.clearAll();
+ return false;
+ }
+
+ // Validate / process ANCHandling
+
+ TQString before = auxWork.patternConverted;
+ switch ( matchSpec.ancHandling ) {
+ case ANCHandling::CASE_SENSITIVE :
+ auxWork.isCaseSensitive = true;
+ break;
+ case ANCHandling::CASE_INSENSITIVE :
+ auxWork.isCaseSensitive = false;
+#ifdef __GLIBC__
+ auxWork.fnmatchFlags |= FNM_CASEFOLD;
+#endif
+ break;
+ case ANCHandling::EQUIVALENCE :
+ auxWork.isCaseSensitive = true;
+ auxWork.patternConverted = TDEGlobal::equivChars()->replaceChars( auxWork.patternConverted, true );
+ TSMTRACE << " Converted match pattern '" << before << "' to equivalent '" << auxWork.patternConverted << "'" << endl;
+ break;
+ default: break;
+ kdWarning() << "Error while processing '" << specification
+ << "' alphabetic character handling specification out of range: " << (uchar) matchSpec.ancHandling
+ << endl;
+ workArea.clearAll();
+ return false;
+ }
+
+ // Test validity of pattern
+
+ TQRegExp rxWork; // single working copy == each pattern inherits previous options
+ int result;
+
+ switch ( matchSpec.patternType ) {
+ case PatternType::WILDCARD :
+#ifdef __GLIBC__ // Test wildcard expression using a subject matter expert
+ result = fnmatch(
+ auxWork.patternConverted.local8Bit().data(),
+ auxWork.patternConverted.local8Bit().data(),
+ auxWork.fnmatchFlags
+ ); // Comparison should fail
+ switch ( result ) {
+ case 0: // matched
+ case FNM_NOMATCH: // not matched
+ break;
+ default:
+ TSMTRACE << " Error: invalid wildcard syntax" << endl;
+ workArea.clearAll();
+ return false;
+ }
+ break;
+#endif // Otherwise we will test wildcard expression as one converted to x regex
+ case PatternType::REGEX :
+ // Prepare regex
+ rxWork.setPattern( auxWork.patternConverted );
+ rxWork.setCaseSensitive( auxWork.isCaseSensitive );
+ // Test regex
+ if ( rxWork.isValid() ) {
+ auxWork.matchEngine = new TQRegExp;
+ *auxWork.matchEngine = rxWork;
+ TSMTRACE << " AuxData: Allocated regex engine " << auxWork.matchEngine << "for pattern: " << auxWork.matchEngine->pattern() << endl;
+ }
+ else {
+ TSMTRACE << " Error: invalid regex syntax" << endl;
+ workArea.clearAll();
+ return false;
+ }
+ break;
+ // if (! rxWork.isReallyWhatUserIntended() ) { HA HA
+ }
+
+ matchSpec.pattern = specification;
+ workArea.m_matchSpecList.push_back( matchSpec );
+ workArea.m_auxData.append( auxWork );
+
+ processingOptionString = true; // next spec should be an option string
+ } // ! processingOptionString completed
+ }
+
+ workArea.m_matchSpecString = newMatchSpecString;
+ d->clearAll();
+ *d = workArea;
+ TSMTRACE << " Final patternString: '" << d->m_matchSpecString << "'" << endl;
+ TSMTRACE << " Number of match patterns in list: '" << d->m_matchSpecList.count() << "'" << endl;
+ //-Debug: TSMTRACE << " Notifying slots of pattern change" << endl;
+ emit patternsChanged();
+ //-Debug: TSMTRACE << " All slots have been notified" << endl;
+ TSMTRACE << "TSM::setPatterns(): Patterns were successfully regenerated from string" << endl << endl;
+ return true;
+}
+
+//================================================================================================
+// Match functions
+//================================================================================================
+
+bool TDEStringMatcher::matchAny( const TQString& stringToMatch ) const
+{
+/* DEBUG
+ TSMTRACE << "TSM:matchAny(): Attempting to match string '" << stringToMatch << "' against stored patterns" << endl;
+ if ( d->m_matchSpecList.isEmpty() ) {
+ //-Debug: TSMTRACE << "Match failed on empty pattern list!" << endl;
+ return false;
+ }
+*/
+ TQString equivalentString;
+
+ for ( size_t index = 0 ; index < d->m_matchSpecList.count() ; index++ )
+ {
+ TQString matchWhat = stringToMatch;
+ TQString matchThis = d->m_auxData[index].patternConverted;
+
+ if ( d->m_matchSpecList[index].ancHandling == ANCHandling::EQUIVALENCE ) {
+ if ( equivalentString.isEmpty() ) {
+ equivalentString = TDEGlobal::equivChars()->replaceChars( stringToMatch, false ) ;
+ }
+ matchWhat = equivalentString;
+ }
+
+ bool matchFound = false;
+ switch ( d->m_matchSpecList[index].patternType ) {
+ case PatternType::WILDCARD :
+#ifdef __GLIBC__
+ matchFound = ( fnmatch(
+ matchThis.local8Bit().data(),
+ matchWhat.local8Bit().data(),
+ d->m_auxData[index].fnmatchFlags
+ ) == 0 );
+ break;
+#endif
+ case PatternType::REGEX :
+ matchFound = ( d->m_auxData[index].matchEngine->search( matchWhat ) >= 0 );
+ break;
+ case PatternType::SUBSTRING :
+ matchFound = ( matchWhat.find( matchThis, 0, d->m_auxData[index].isCaseSensitive ) >= 0 );
+ break;
+ }
+
+ if ( matchFound == d->m_matchSpecList[index].expectMatch ) {
+ TSMTRACE << " Success! match of pattern '" << matchThis << "' against '" << matchWhat << "' turned out as expected" << endl;
+ return true;
+ }
+ }
+
+ TSMTRACE << " Match failed, there were no pattern matches against '" << stringToMatch << "' that turned out as expected" << endl;
+ return false ;
+}
+
+bool TDEStringMatcher::matchAll( const TQString& stringToMatch ) const
+{
+ TSMTRACE << "TSM:matchAll(): Attempting to match string '" << stringToMatch << "' against stored patterns" << endl;
+ if ( d->m_matchSpecList.isEmpty() ) {
+ //-Debug: TSMTRACE << "Match failed on empty pattern list!" << endl;
+ return false;
+ }
+
+ TQString equivalentString;
+
+ for ( size_t index = 0 ; index < d->m_matchSpecList.count() ; index++ )
+ {
+ TQString matchWhat = stringToMatch;
+ TQString matchThis = d->m_auxData[index].patternConverted;
+
+ if ( d->m_matchSpecList[index].ancHandling == ANCHandling::EQUIVALENCE ) {
+ if ( equivalentString.isEmpty() ) {
+ equivalentString = TDEGlobal::equivChars()->replaceChars( stringToMatch, false ) ;
+ }
+ matchWhat = equivalentString;
+ }
+
+ bool matchFound = false;
+ switch ( d->m_matchSpecList[index].patternType ) {
+ case PatternType::WILDCARD :
+#ifdef __GLIBC__
+ matchFound = ( fnmatch(
+ matchThis.local8Bit().data(),
+ matchWhat.local8Bit().data(),
+ d->m_auxData[index].fnmatchFlags
+ ) == 0 );
+ break;
+#endif
+ case PatternType::REGEX :
+ matchFound = ( d->m_auxData[index].matchEngine->search( matchWhat ) >= 0 );
+ break;
+ case PatternType::SUBSTRING :
+ matchFound = ( matchWhat.find( matchThis, 0, d->m_auxData[index].isCaseSensitive ) >= 0 );
+ break;
+ }
+
+ if ( matchFound != d->m_matchSpecList[index].expectMatch ) {
+ TSMTRACE << " Match of pattern '" << matchThis << "' against '" << matchWhat << "' did not turn out as expected" << endl;
+ return false;
+ }
+ }
+
+ TSMTRACE << " Expected pattern matching succeeded" << endl;
+ return true;
+}
+
+//================================================================================================
+// Utility functions
+//================================================================================================
+
+/*
+ The following code is a modified copy of that found in tqt3/src/tools/qregexp.cpp.
+ We export this as utility function for applications that wish to convert a basic
+ wildcard expression into a basic regular expression. TSM will not use this unless
+ GLIBC fnmatch() is not available.
+*/
+TQString TDEStringMatcher::wildcardToRegex( const TQString& wildcardPattern )
+{
+ int wclen = wildcardPattern.length();
+ TQString rx = TQString::fromLatin1( "" );
+ int i = 0;
+ const TQChar *wc = wildcardPattern.unicode();
+ while ( i < wclen ) {
+ TQChar c = wc[i++];
+ switch ( c.unicode() ) {
+ case '*':
+ rx += TQString::fromLatin1( ".*" );
+ break;
+ case '?':
+ rx += TQChar( '.' );
+ break;
+ case '$':
+ case '(':
+ case ')':
+ case '+':
+ case '.':
+ case '\\':
+ case '^':
+ case '{':
+ case '|':
+ case '}':
+ rx += TQChar( '\\' );
+ rx += c;
+ break;
+ case '[':
+ rx += c;
+ /* This is not correct, POSIX states that negation character is '!'
+ if ( wc[i] == TQChar('^') )
+ rx += wc[i++];
+ */
+ if ( wc[i] == TQChar('!') ) {
+ rx += TQChar('^');
+ i++;
+ } else if ( wc[i] == TQChar('^') ) {
+ rx += TQChar( '\\' );
+ rx += wc[i++];
+ }
+ if ( i < wclen ) {
+ if ( rx[i] == ']' )
+ rx += wc[i++];
+ while ( i < wclen && wc[i] != TQChar(']') ) {
+ if ( wc[i] == '\\' )
+ rx += TQChar( '\\' );
+ rx += wc[i++];
+ }
+ }
+ break;
+ default:
+ rx += c;
+ }
+ }
+ /* Wildcard patterns must match entire string */
+ return TQChar('^') + rx + TQChar('$');
+ /* TBD: Add support for extglob */
+}
+static TQString escapeRegexChars( const TQString& basicString )
+{
+ int wclen = basicString.length();
+ TQString outputString = TQString::fromLatin1( "" );
+ int i = 0;
+ const TQChar *wc = basicString.unicode();
+ while ( i < wclen ) {
+ TQChar c = wc[i++];
+ switch ( c.unicode() ) {
+ case '+':
+ case '.':
+ case '^':
+ case '(':
+ case ')':
+ case '[':
+ case ']':
+ case '{':
+ case '}':
+ case '|':
+ case '$':
+ case '?':
+ case '*':
+ case '\\':
+ outputString += TQChar( '\\' );
+ outputString += c;
+ break;
+ default:
+ outputString += c;
+ }
+ }
+ return outputString;
+}
+
+//================================================================================================
+
+#include "tdestringmatcher.moc"
diff --git a/tdecore/tdestringmatcher.h b/tdecore/tdestringmatcher.h
new file mode 100644
index 000000000..504ccfa8c
--- /dev/null
+++ b/tdecore/tdestringmatcher.h
@@ -0,0 +1,134 @@
+#ifndef TDESTRINGMATCHER_H
+#define TDESTRINGMATCHER_H
+
+#include "tdelibs_export.h"
+
+#include <tqobject.h>
+#include <tqvaluevector.h>
+
+#define TSMTRACE kdWarning() << "<TSMTRACE> "
+
+namespace TSM
+{
+/**
+ * Enumeration used by the TDEStringMatcher class
+ * defining types of patterns to be matched
+ */
+enum class PatternType: uchar
+{
+ REGEX,
+ WILDCARD,
+ SUBSTRING,
+ //OTHER,
+ DEFAULT = REGEX
+};
+
+/**
+ * Enumeration used by the TDEStringMatcher class
+ * defining special handling of alphanumeric characters
+ */
+enum class ANCHandling: uchar
+{
+ CASE_SENSITIVE = 0, // No handling, each character distinct
+ CASE_INSENSITIVE = 1, // Alphabetic case variants are same
+ EQUIVALENCE = 2, // Alphanumeric equivalents are same
+ DEFAULT = CASE_SENSITIVE
+};
+
+/**
+ * Structure used by the TDEStringMatcher class
+ * representing properties of a single match specification.
+ */
+struct MatchSpec
+{
+ PatternType patternType;
+ ANCHandling ancHandling;
+ bool expectMatch; // "matching" vs. "not matching"
+ TQString pattern;
+};
+
+/**
+ * Container used in a TDEStringMatcher object
+ * representing multiple match specifications.
+ */
+typedef TQValueVector<MatchSpec> MatchSpecList;
+
+// Use horizontal tab as m_patternString separator
+inline constexpr char PatterStringDivider { '\t' };
+
+} // End of namespace TSM
+
+
+/**
+ * Generic string matcher class.
+ */
+class TDECORE_EXPORT TDEStringMatcher : public TQObject
+{
+Q_OBJECT
+public:
+
+ TDEStringMatcher();
+ ~TDEStringMatcher();
+
+ /**
+ @return list of currently defined match specifications.
+ */
+ const TSM::MatchSpecList getMatchSpecs() const;
+
+ /**
+ @return string encoding list of currently defined match specifications.
+ */
+ const TQString getMatchSpecString() const;
+
+ /**
+ Use @param newMatchSpecList to generate the internal list of match
+ specifications to be used for pattern matching.
+ */
+ bool setMatchSpecs( TSM::MatchSpecList newMatchSpecList );
+
+ /**
+ Use specially encoded @param newPatternString to generate the internal
+ list of match specifications to be used for pattern matching. Refer
+ to file README.tdestringmatcher in tdelibs/tdecore source code for
+ more information on how the input string should be formatted.
+ */
+ bool setMatchSpecs( TQString newMatchSpecString );
+
+ /**
+ @return whether or not @param stringToMatch matches any of
+ the current match specifications.
+ */
+ bool matchAny( const TQString& stringToMatch ) const;
+
+ /**
+ @return whether or not @param stringToMatch matches all of
+ the current match specifications.
+ */
+ bool matchAll( const TQString& stringToMatch ) const;
+
+ /**
+ @return a basic regular expression formed by converting the basic
+ wildcard expression in @param wildcardPattern.
+ */
+ TQString wildcardToRegex( const TQString& wildcardPattern );
+
+ /**
+ @return a string that is @param basicString with all special regular
+ expression characters escaped. Useful for regular expression engines
+ that do not support /Q.../E.
+ */
+ TQString escapeRegexChars( const TQString& basicString );
+
+
+signals:
+
+ void patternsChanged();
+
+private:
+
+ class TDEStringMatcherPrivate;
+ TDEStringMatcherPrivate *d;
+
+};
+
+#endif
diff --git a/tdecore/tequivchars-mapping.h b/tdecore/tequivchars-mapping.h
new file mode 100644
index 000000000..fd625189b
--- /dev/null
+++ b/tdecore/tequivchars-mapping.h
@@ -0,0 +1,3085 @@
+#ifndef TEQUIVCHARS_MAPPING_H
+#define TEQUIVCHARS_MAPPING_H
+
+#ifndef OPTIMIZE_ASCII_LOOKUP
+[2993]={ // Make sure this dimension accurately reflects content of table below
+ { 0x00041 , 0x00061 }, // <LATIN CAPITAL LETTER A> => <LATIN SMALL LETTER A>
+ { 0x00042 , 0x00062 }, // <LATIN CAPITAL LETTER B> => <LATIN SMALL LETTER B>
+ { 0x00043 , 0x00063 }, // <LATIN CAPITAL LETTER C> => <LATIN SMALL LETTER C>
+ { 0x00044 , 0x00064 }, // <LATIN CAPITAL LETTER D> => <LATIN SMALL LETTER D>
+ { 0x00045 , 0x00065 }, // <LATIN CAPITAL LETTER E> => <LATIN SMALL LETTER E>
+ { 0x00046 , 0x00066 }, // <LATIN CAPITAL LETTER F> => <LATIN SMALL LETTER F>
+ { 0x00047 , 0x00067 }, // <LATIN CAPITAL LETTER G> => <LATIN SMALL LETTER G>
+ { 0x00048 , 0x00068 }, // <LATIN CAPITAL LETTER H> => <LATIN SMALL LETTER H>
+ { 0x00049 , 0x00069 }, // <LATIN CAPITAL LETTER I> => <LATIN SMALL LETTER I>
+ { 0x0004a , 0x0006a }, // <LATIN CAPITAL LETTER J> => <LATIN SMALL LETTER J>
+ { 0x0004b , 0x0006b }, // <LATIN CAPITAL LETTER K> => <LATIN SMALL LETTER K>
+ { 0x0004c , 0x0006c }, // <LATIN CAPITAL LETTER L> => <LATIN SMALL LETTER L>
+ { 0x0004d , 0x0006d }, // <LATIN CAPITAL LETTER M> => <LATIN SMALL LETTER M>
+ { 0x0004e , 0x0006e }, // <LATIN CAPITAL LETTER N> => <LATIN SMALL LETTER N>
+ { 0x0004f , 0x0006f }, // <LATIN CAPITAL LETTER O> => <LATIN SMALL LETTER O>
+ { 0x00050 , 0x00070 }, // <LATIN CAPITAL LETTER P> => <LATIN SMALL LETTER P>
+ { 0x00051 , 0x00071 }, // <LATIN CAPITAL LETTER Q> => <LATIN SMALL LETTER Q>
+ { 0x00052 , 0x00072 }, // <LATIN CAPITAL LETTER R> => <LATIN SMALL LETTER R>
+ { 0x00053 , 0x00073 }, // <LATIN CAPITAL LETTER S> => <LATIN SMALL LETTER S>
+ { 0x00054 , 0x00074 }, // <LATIN CAPITAL LETTER T> => <LATIN SMALL LETTER T>
+ { 0x00055 , 0x00075 }, // <LATIN CAPITAL LETTER U> => <LATIN SMALL LETTER U>
+ { 0x00056 , 0x00076 }, // <LATIN CAPITAL LETTER V> => <LATIN SMALL LETTER V>
+ { 0x00057 , 0x00077 }, // <LATIN CAPITAL LETTER W> => <LATIN SMALL LETTER W>
+ { 0x00058 , 0x00078 }, // <LATIN CAPITAL LETTER X> => <LATIN SMALL LETTER X>
+ { 0x00059 , 0x00079 }, // <LATIN CAPITAL LETTER Y> => <LATIN SMALL LETTER Y>
+ { 0x0005a , 0x0007a }, // <LATIN CAPITAL LETTER Z> => <LATIN SMALL LETTER Z>
+#else
+[2967]={ // Make sure this dimension accurately reflects content of table below
+ /* Excluded ASCII characters are handled as a special case in our code. */
+#endif
+ { 0x000aa , 0x00061 }, // <FEMININE ORDINAL INDICATOR> => <LATIN SMALL LETTER A>
+ { 0x000b2 , 0x00032 }, // <SUPERSCRIPT TWO> => <DIGIT TWO>
+ { 0x000b3 , 0x00033 }, // <SUPERSCRIPT THREE> => <DIGIT THREE>
+ { 0x000b5 , 0x003bc }, // <MICRO SIGN> => <GREEK SMALL LETTER MU>
+ { 0x000b9 , 0x00031 }, // <SUPERSCRIPT ONE> => <DIGIT ONE>
+ { 0x000ba , 0x0006f }, // <MASCULINE ORDINAL INDICATOR> => <LATIN SMALL LETTER O>
+ { 0x000c0 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH GRAVE> => <LATIN SMALL LETTER A>
+ { 0x000c1 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH ACUTE> => <LATIN SMALL LETTER A>
+ { 0x000c2 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH CIRCUMFLEX> => <LATIN SMALL LETTER A>
+ { 0x000c3 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH TILDE> => <LATIN SMALL LETTER A>
+ { 0x000c4 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH DIAERESIS> => <LATIN SMALL LETTER A>
+ { 0x000c5 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH RING ABOVE> => <LATIN SMALL LETTER A>
+ { 0x000c7 , 0x00063 }, // <LATIN CAPITAL LETTER C WITH CEDILLA> => <LATIN SMALL LETTER C>
+ { 0x000c8 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH GRAVE> => <LATIN SMALL LETTER E>
+ { 0x000c9 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH ACUTE> => <LATIN SMALL LETTER E>
+ { 0x000ca , 0x00065 }, // <LATIN CAPITAL LETTER E WITH CIRCUMFLEX> => <LATIN SMALL LETTER E>
+ { 0x000cb , 0x00065 }, // <LATIN CAPITAL LETTER E WITH DIAERESIS> => <LATIN SMALL LETTER E>
+ { 0x000cc , 0x00069 }, // <LATIN CAPITAL LETTER I WITH GRAVE> => <LATIN SMALL LETTER I>
+ { 0x000cd , 0x00069 }, // <LATIN CAPITAL LETTER I WITH ACUTE> => <LATIN SMALL LETTER I>
+ { 0x000ce , 0x00069 }, // <LATIN CAPITAL LETTER I WITH CIRCUMFLEX> => <LATIN SMALL LETTER I>
+ { 0x000cf , 0x00069 }, // <LATIN CAPITAL LETTER I WITH DIAERESIS> => <LATIN SMALL LETTER I>
+ { 0x000d0 , 0x00064 }, // <LATIN CAPITAL LETTER ETH> => <LATIN SMALL LETTER D>
+ { 0x000d1 , 0x0006e }, // <LATIN CAPITAL LETTER N WITH TILDE> => <LATIN SMALL LETTER N>
+ { 0x000d2 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH GRAVE> => <LATIN SMALL LETTER O>
+ { 0x000d3 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH ACUTE> => <LATIN SMALL LETTER O>
+ { 0x000d4 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH CIRCUMFLEX> => <LATIN SMALL LETTER O>
+ { 0x000d5 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH TILDE> => <LATIN SMALL LETTER O>
+ { 0x000d6 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH DIAERESIS> => <LATIN SMALL LETTER O>
+ { 0x000d8 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH STROKE> => <LATIN SMALL LETTER O>
+ { 0x000d9 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH GRAVE> => <LATIN SMALL LETTER U>
+ { 0x000da , 0x00075 }, // <LATIN CAPITAL LETTER U WITH ACUTE> => <LATIN SMALL LETTER U>
+ { 0x000db , 0x00075 }, // <LATIN CAPITAL LETTER U WITH CIRCUMFLEX> => <LATIN SMALL LETTER U>
+ { 0x000dc , 0x00075 }, // <LATIN CAPITAL LETTER U WITH DIAERESIS> => <LATIN SMALL LETTER U>
+ { 0x000dd , 0x00079 }, // <LATIN CAPITAL LETTER Y WITH ACUTE> => <LATIN SMALL LETTER Y>
+ { 0x000de , 0x000fe }, // <LATIN CAPITAL LETTER THORN> => <LATIN SMALL LETTER THORN>
+ { 0x000e0 , 0x00061 }, // <LATIN SMALL LETTER A WITH GRAVE> => <LATIN SMALL LETTER A>
+ { 0x000e1 , 0x00061 }, // <LATIN SMALL LETTER A WITH ACUTE> => <LATIN SMALL LETTER A>
+ { 0x000e2 , 0x00061 }, // <LATIN SMALL LETTER A WITH CIRCUMFLEX> => <LATIN SMALL LETTER A>
+ { 0x000e3 , 0x00061 }, // <LATIN SMALL LETTER A WITH TILDE> => <LATIN SMALL LETTER A>
+ { 0x000e4 , 0x00061 }, // <LATIN SMALL LETTER A WITH DIAERESIS> => <LATIN SMALL LETTER A>
+ { 0x000e5 , 0x00061 }, // <LATIN SMALL LETTER A WITH RING ABOVE> => <LATIN SMALL LETTER A>
+ { 0x000e7 , 0x00063 }, // <LATIN SMALL LETTER C WITH CEDILLA> => <LATIN SMALL LETTER C>
+ { 0x000e8 , 0x00065 }, // <LATIN SMALL LETTER E WITH GRAVE> => <LATIN SMALL LETTER E>
+ { 0x000e9 , 0x00065 }, // <LATIN SMALL LETTER E WITH ACUTE> => <LATIN SMALL LETTER E>
+ { 0x000ea , 0x00065 }, // <LATIN SMALL LETTER E WITH CIRCUMFLEX> => <LATIN SMALL LETTER E>
+ { 0x000eb , 0x00065 }, // <LATIN SMALL LETTER E WITH DIAERESIS> => <LATIN SMALL LETTER E>
+ { 0x000ec , 0x00069 }, // <LATIN SMALL LETTER I WITH GRAVE> => <LATIN SMALL LETTER I>
+ { 0x000ed , 0x00069 }, // <LATIN SMALL LETTER I WITH ACUTE> => <LATIN SMALL LETTER I>
+ { 0x000ee , 0x00069 }, // <LATIN SMALL LETTER I WITH CIRCUMFLEX> => <LATIN SMALL LETTER I>
+ { 0x000ef , 0x00069 }, // <LATIN SMALL LETTER I WITH DIAERESIS> => <LATIN SMALL LETTER I>
+ { 0x000f0 , 0x00064 }, // <LATIN SMALL LETTER ETH> => <LATIN SMALL LETTER D>
+ { 0x000f1 , 0x0006e }, // <LATIN SMALL LETTER N WITH TILDE> => <LATIN SMALL LETTER N>
+ { 0x000f2 , 0x0006f }, // <LATIN SMALL LETTER O WITH GRAVE> => <LATIN SMALL LETTER O>
+ { 0x000f3 , 0x0006f }, // <LATIN SMALL LETTER O WITH ACUTE> => <LATIN SMALL LETTER O>
+ { 0x000f4 , 0x0006f }, // <LATIN SMALL LETTER O WITH CIRCUMFLEX> => <LATIN SMALL LETTER O>
+ { 0x000f5 , 0x0006f }, // <LATIN SMALL LETTER O WITH TILDE> => <LATIN SMALL LETTER O>
+ { 0x000f6 , 0x0006f }, // <LATIN SMALL LETTER O WITH DIAERESIS> => <LATIN SMALL LETTER O>
+ { 0x000f8 , 0x0006f }, // <LATIN SMALL LETTER O WITH STROKE> => <LATIN SMALL LETTER O>
+ { 0x000f9 , 0x00075 }, // <LATIN SMALL LETTER U WITH GRAVE> => <LATIN SMALL LETTER U>
+ { 0x000fa , 0x00075 }, // <LATIN SMALL LETTER U WITH ACUTE> => <LATIN SMALL LETTER U>
+ { 0x000fb , 0x00075 }, // <LATIN SMALL LETTER U WITH CIRCUMFLEX> => <LATIN SMALL LETTER U>
+ { 0x000fc , 0x00075 }, // <LATIN SMALL LETTER U WITH DIAERESIS> => <LATIN SMALL LETTER U>
+ { 0x000fd , 0x00079 }, // <LATIN SMALL LETTER Y WITH ACUTE> => <LATIN SMALL LETTER Y>
+ { 0x000ff , 0x00079 }, // <LATIN SMALL LETTER Y WITH DIAERESIS> => <LATIN SMALL LETTER Y>
+ { 0x00100 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH MACRON> => <LATIN SMALL LETTER A>
+ { 0x00101 , 0x00061 }, // <LATIN SMALL LETTER A WITH MACRON> => <LATIN SMALL LETTER A>
+ { 0x00102 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH BREVE> => <LATIN SMALL LETTER A>
+ { 0x00103 , 0x00061 }, // <LATIN SMALL LETTER A WITH BREVE> => <LATIN SMALL LETTER A>
+ { 0x00104 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH OGONEK> => <LATIN SMALL LETTER A>
+ { 0x00105 , 0x00061 }, // <LATIN SMALL LETTER A WITH OGONEK> => <LATIN SMALL LETTER A>
+ { 0x00106 , 0x00063 }, // <LATIN CAPITAL LETTER C WITH ACUTE> => <LATIN SMALL LETTER C>
+ { 0x00107 , 0x00063 }, // <LATIN SMALL LETTER C WITH ACUTE> => <LATIN SMALL LETTER C>
+ { 0x00108 , 0x00063 }, // <LATIN CAPITAL LETTER C WITH CIRCUMFLEX> => <LATIN SMALL LETTER C>
+ { 0x00109 , 0x00063 }, // <LATIN SMALL LETTER C WITH CIRCUMFLEX> => <LATIN SMALL LETTER C>
+ { 0x0010a , 0x00063 }, // <LATIN CAPITAL LETTER C WITH DOT ABOVE> => <LATIN SMALL LETTER C>
+ { 0x0010b , 0x00063 }, // <LATIN SMALL LETTER C WITH DOT ABOVE> => <LATIN SMALL LETTER C>
+ { 0x0010c , 0x00063 }, // <LATIN CAPITAL LETTER C WITH CARON> => <LATIN SMALL LETTER C>
+ { 0x0010d , 0x00063 }, // <LATIN SMALL LETTER C WITH CARON> => <LATIN SMALL LETTER C>
+ { 0x0010e , 0x00064 }, // <LATIN CAPITAL LETTER D WITH CARON> => <LATIN SMALL LETTER D>
+ { 0x0010f , 0x00064 }, // <LATIN SMALL LETTER D WITH CARON> => <LATIN SMALL LETTER D>
+ { 0x00110 , 0x00064 }, // <LATIN CAPITAL LETTER D WITH STROKE> => <LATIN SMALL LETTER D>
+ { 0x00111 , 0x00064 }, // <LATIN SMALL LETTER D WITH STROKE> => <LATIN SMALL LETTER D>
+ { 0x00112 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH MACRON> => <LATIN SMALL LETTER E>
+ { 0x00113 , 0x00065 }, // <LATIN SMALL LETTER E WITH MACRON> => <LATIN SMALL LETTER E>
+ { 0x00114 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH BREVE> => <LATIN SMALL LETTER E>
+ { 0x00115 , 0x00065 }, // <LATIN SMALL LETTER E WITH BREVE> => <LATIN SMALL LETTER E>
+ { 0x00116 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH DOT ABOVE> => <LATIN SMALL LETTER E>
+ { 0x00117 , 0x00065 }, // <LATIN SMALL LETTER E WITH DOT ABOVE> => <LATIN SMALL LETTER E>
+ { 0x00118 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH OGONEK> => <LATIN SMALL LETTER E>
+ { 0x00119 , 0x00065 }, // <LATIN SMALL LETTER E WITH OGONEK> => <LATIN SMALL LETTER E>
+ { 0x0011a , 0x00065 }, // <LATIN CAPITAL LETTER E WITH CARON> => <LATIN SMALL LETTER E>
+ { 0x0011b , 0x00065 }, // <LATIN SMALL LETTER E WITH CARON> => <LATIN SMALL LETTER E>
+ { 0x0011c , 0x00067 }, // <LATIN CAPITAL LETTER G WITH CIRCUMFLEX> => <LATIN SMALL LETTER G>
+ { 0x0011d , 0x00067 }, // <LATIN SMALL LETTER G WITH CIRCUMFLEX> => <LATIN SMALL LETTER G>
+ { 0x0011e , 0x00067 }, // <LATIN CAPITAL LETTER G WITH BREVE> => <LATIN SMALL LETTER G>
+ { 0x0011f , 0x00067 }, // <LATIN SMALL LETTER G WITH BREVE> => <LATIN SMALL LETTER G>
+ { 0x00120 , 0x00067 }, // <LATIN CAPITAL LETTER G WITH DOT ABOVE> => <LATIN SMALL LETTER G>
+ { 0x00121 , 0x00067 }, // <LATIN SMALL LETTER G WITH DOT ABOVE> => <LATIN SMALL LETTER G>
+ { 0x00122 , 0x00067 }, // <LATIN CAPITAL LETTER G WITH CEDILLA> => <LATIN SMALL LETTER G>
+ { 0x00123 , 0x00067 }, // <LATIN SMALL LETTER G WITH CEDILLA> => <LATIN SMALL LETTER G>
+ { 0x00124 , 0x00068 }, // <LATIN CAPITAL LETTER H WITH CIRCUMFLEX> => <LATIN SMALL LETTER H>
+ { 0x00125 , 0x00068 }, // <LATIN SMALL LETTER H WITH CIRCUMFLEX> => <LATIN SMALL LETTER H>
+ { 0x00126 , 0x00068 }, // <LATIN CAPITAL LETTER H WITH STROKE> => <LATIN SMALL LETTER H>
+ { 0x00127 , 0x00068 }, // <LATIN SMALL LETTER H WITH STROKE> => <LATIN SMALL LETTER H>
+ { 0x00128 , 0x00069 }, // <LATIN CAPITAL LETTER I WITH TILDE> => <LATIN SMALL LETTER I>
+ { 0x00129 , 0x00069 }, // <LATIN SMALL LETTER I WITH TILDE> => <LATIN SMALL LETTER I>
+ { 0x0012a , 0x00069 }, // <LATIN CAPITAL LETTER I WITH MACRON> => <LATIN SMALL LETTER I>
+ { 0x0012b , 0x00069 }, // <LATIN SMALL LETTER I WITH MACRON> => <LATIN SMALL LETTER I>
+ { 0x0012c , 0x00069 }, // <LATIN CAPITAL LETTER I WITH BREVE> => <LATIN SMALL LETTER I>
+ { 0x0012d , 0x00069 }, // <LATIN SMALL LETTER I WITH BREVE> => <LATIN SMALL LETTER I>
+ { 0x0012e , 0x00069 }, // <LATIN CAPITAL LETTER I WITH OGONEK> => <LATIN SMALL LETTER I>
+ { 0x0012f , 0x00069 }, // <LATIN SMALL LETTER I WITH OGONEK> => <LATIN SMALL LETTER I>
+ { 0x00130 , 0x00069 }, // <LATIN CAPITAL LETTER I WITH DOT ABOVE> => <LATIN SMALL LETTER I>
+ { 0x00134 , 0x0006a }, // <LATIN CAPITAL LETTER J WITH CIRCUMFLEX> => <LATIN SMALL LETTER J>
+ { 0x00135 , 0x0006a }, // <LATIN SMALL LETTER J WITH CIRCUMFLEX> => <LATIN SMALL LETTER J>
+ { 0x00136 , 0x0006b }, // <LATIN CAPITAL LETTER K WITH CEDILLA> => <LATIN SMALL LETTER K>
+ { 0x00137 , 0x0006b }, // <LATIN SMALL LETTER K WITH CEDILLA> => <LATIN SMALL LETTER K>
+ { 0x00139 , 0x0006c }, // <LATIN CAPITAL LETTER L WITH ACUTE> => <LATIN SMALL LETTER L>
+ { 0x0013a , 0x0006c }, // <LATIN SMALL LETTER L WITH ACUTE> => <LATIN SMALL LETTER L>
+ { 0x0013b , 0x0006c }, // <LATIN CAPITAL LETTER L WITH CEDILLA> => <LATIN SMALL LETTER L>
+ { 0x0013c , 0x0006c }, // <LATIN SMALL LETTER L WITH CEDILLA> => <LATIN SMALL LETTER L>
+ { 0x0013d , 0x0006c }, // <LATIN CAPITAL LETTER L WITH CARON> => <LATIN SMALL LETTER L>
+ { 0x0013e , 0x0006c }, // <LATIN SMALL LETTER L WITH CARON> => <LATIN SMALL LETTER L>
+ { 0x0013f , 0x0006c }, // <LATIN CAPITAL LETTER L WITH MIDDLE DOT> => <LATIN SMALL LETTER L>
+ { 0x00140 , 0x0006c }, // <LATIN SMALL LETTER L WITH MIDDLE DOT> => <LATIN SMALL LETTER L>
+ { 0x00141 , 0x0006c }, // <LATIN CAPITAL LETTER L WITH STROKE> => <LATIN SMALL LETTER L>
+ { 0x00142 , 0x0006c }, // <LATIN SMALL LETTER L WITH STROKE> => <LATIN SMALL LETTER L>
+ { 0x00143 , 0x0006e }, // <LATIN CAPITAL LETTER N WITH ACUTE> => <LATIN SMALL LETTER N>
+ { 0x00144 , 0x0006e }, // <LATIN SMALL LETTER N WITH ACUTE> => <LATIN SMALL LETTER N>
+ { 0x00145 , 0x0006e }, // <LATIN CAPITAL LETTER N WITH CEDILLA> => <LATIN SMALL LETTER N>
+ { 0x00146 , 0x0006e }, // <LATIN SMALL LETTER N WITH CEDILLA> => <LATIN SMALL LETTER N>
+ { 0x00147 , 0x0006e }, // <LATIN CAPITAL LETTER N WITH CARON> => <LATIN SMALL LETTER N>
+ { 0x00148 , 0x0006e }, // <LATIN SMALL LETTER N WITH CARON> => <LATIN SMALL LETTER N>
+ { 0x0014a , 0x0014b }, // <LATIN CAPITAL LETTER ENG> => <LATIN SMALL LETTER ENG>
+ { 0x0014c , 0x0006f }, // <LATIN CAPITAL LETTER O WITH MACRON> => <LATIN SMALL LETTER O>
+ { 0x0014d , 0x0006f }, // <LATIN SMALL LETTER O WITH MACRON> => <LATIN SMALL LETTER O>
+ { 0x0014e , 0x0006f }, // <LATIN CAPITAL LETTER O WITH BREVE> => <LATIN SMALL LETTER O>
+ { 0x0014f , 0x0006f }, // <LATIN SMALL LETTER O WITH BREVE> => <LATIN SMALL LETTER O>
+ { 0x00150 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH DOUBLE ACUTE> => <LATIN SMALL LETTER O>
+ { 0x00151 , 0x0006f }, // <LATIN SMALL LETTER O WITH DOUBLE ACUTE> => <LATIN SMALL LETTER O>
+ { 0x00154 , 0x00072 }, // <LATIN CAPITAL LETTER R WITH ACUTE> => <LATIN SMALL LETTER R>
+ { 0x00155 , 0x00072 }, // <LATIN SMALL LETTER R WITH ACUTE> => <LATIN SMALL LETTER R>
+ { 0x00156 , 0x00072 }, // <LATIN CAPITAL LETTER R WITH CEDILLA> => <LATIN SMALL LETTER R>
+ { 0x00157 , 0x00072 }, // <LATIN SMALL LETTER R WITH CEDILLA> => <LATIN SMALL LETTER R>
+ { 0x00158 , 0x00072 }, // <LATIN CAPITAL LETTER R WITH CARON> => <LATIN SMALL LETTER R>
+ { 0x00159 , 0x00072 }, // <LATIN SMALL LETTER R WITH CARON> => <LATIN SMALL LETTER R>
+ { 0x0015a , 0x00073 }, // <LATIN CAPITAL LETTER S WITH ACUTE> => <LATIN SMALL LETTER S>
+ { 0x0015b , 0x00073 }, // <LATIN SMALL LETTER S WITH ACUTE> => <LATIN SMALL LETTER S>
+ { 0x0015c , 0x00073 }, // <LATIN CAPITAL LETTER S WITH CIRCUMFLEX> => <LATIN SMALL LETTER S>
+ { 0x0015d , 0x00073 }, // <LATIN SMALL LETTER S WITH CIRCUMFLEX> => <LATIN SMALL LETTER S>
+ { 0x0015e , 0x00073 }, // <LATIN CAPITAL LETTER S WITH CEDILLA> => <LATIN SMALL LETTER S>
+ { 0x0015f , 0x00073 }, // <LATIN SMALL LETTER S WITH CEDILLA> => <LATIN SMALL LETTER S>
+ { 0x00160 , 0x00073 }, // <LATIN CAPITAL LETTER S WITH CARON> => <LATIN SMALL LETTER S>
+ { 0x00161 , 0x00073 }, // <LATIN SMALL LETTER S WITH CARON> => <LATIN SMALL LETTER S>
+ { 0x00162 , 0x00074 }, // <LATIN CAPITAL LETTER T WITH CEDILLA> => <LATIN SMALL LETTER T>
+ { 0x00163 , 0x00074 }, // <LATIN SMALL LETTER T WITH CEDILLA> => <LATIN SMALL LETTER T>
+ { 0x00164 , 0x00074 }, // <LATIN CAPITAL LETTER T WITH CARON> => <LATIN SMALL LETTER T>
+ { 0x00165 , 0x00074 }, // <LATIN SMALL LETTER T WITH CARON> => <LATIN SMALL LETTER T>
+ { 0x00166 , 0x00167 }, // <LATIN CAPITAL LETTER T WITH STROKE> => <LATIN SMALL LETTER T WITH STROKE>
+ { 0x00168 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH TILDE> => <LATIN SMALL LETTER U>
+ { 0x00169 , 0x00075 }, // <LATIN SMALL LETTER U WITH TILDE> => <LATIN SMALL LETTER U>
+ { 0x0016a , 0x00075 }, // <LATIN CAPITAL LETTER U WITH MACRON> => <LATIN SMALL LETTER U>
+ { 0x0016b , 0x00075 }, // <LATIN SMALL LETTER U WITH MACRON> => <LATIN SMALL LETTER U>
+ { 0x0016c , 0x00075 }, // <LATIN CAPITAL LETTER U WITH BREVE> => <LATIN SMALL LETTER U>
+ { 0x0016d , 0x00075 }, // <LATIN SMALL LETTER U WITH BREVE> => <LATIN SMALL LETTER U>
+ { 0x0016e , 0x00075 }, // <LATIN CAPITAL LETTER U WITH RING ABOVE> => <LATIN SMALL LETTER U>
+ { 0x0016f , 0x00075 }, // <LATIN SMALL LETTER U WITH RING ABOVE> => <LATIN SMALL LETTER U>
+ { 0x00170 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH DOUBLE ACUTE> => <LATIN SMALL LETTER U>
+ { 0x00171 , 0x00075 }, // <LATIN SMALL LETTER U WITH DOUBLE ACUTE> => <LATIN SMALL LETTER U>
+ { 0x00172 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH OGONEK> => <LATIN SMALL LETTER U>
+ { 0x00173 , 0x00075 }, // <LATIN SMALL LETTER U WITH OGONEK> => <LATIN SMALL LETTER U>
+ { 0x00174 , 0x00077 }, // <LATIN CAPITAL LETTER W WITH CIRCUMFLEX> => <LATIN SMALL LETTER W>
+ { 0x00175 , 0x00077 }, // <LATIN SMALL LETTER W WITH CIRCUMFLEX> => <LATIN SMALL LETTER W>
+ { 0x00176 , 0x00079 }, // <LATIN CAPITAL LETTER Y WITH CIRCUMFLEX> => <LATIN SMALL LETTER Y>
+ { 0x00177 , 0x00079 }, // <LATIN SMALL LETTER Y WITH CIRCUMFLEX> => <LATIN SMALL LETTER Y>
+ { 0x00178 , 0x00079 }, // <LATIN CAPITAL LETTER Y WITH DIAERESIS> => <LATIN SMALL LETTER Y>
+ { 0x00179 , 0x0007a }, // <LATIN CAPITAL LETTER Z WITH ACUTE> => <LATIN SMALL LETTER Z>
+ { 0x0017a , 0x0007a }, // <LATIN SMALL LETTER Z WITH ACUTE> => <LATIN SMALL LETTER Z>
+ { 0x0017b , 0x0007a }, // <LATIN CAPITAL LETTER Z WITH DOT ABOVE> => <LATIN SMALL LETTER Z>
+ { 0x0017c , 0x0007a }, // <LATIN SMALL LETTER Z WITH DOT ABOVE> => <LATIN SMALL LETTER Z>
+ { 0x0017d , 0x0007a }, // <LATIN CAPITAL LETTER Z WITH CARON> => <LATIN SMALL LETTER Z>
+ { 0x0017e , 0x0007a }, // <LATIN SMALL LETTER Z WITH CARON> => <LATIN SMALL LETTER Z>
+ { 0x0017f , 0x00073 }, // <LATIN SMALL LETTER LONG S> => <LATIN SMALL LETTER S>
+ { 0x00181 , 0x00253 }, // <LATIN CAPITAL LETTER B WITH HOOK> => <LATIN SMALL LETTER B WITH HOOK>
+ { 0x00182 , 0x00183 }, // <LATIN CAPITAL LETTER B WITH TOPBAR> => <LATIN SMALL LETTER B WITH TOPBAR>
+ { 0x00184 , 0x00185 }, // <LATIN CAPITAL LETTER TONE SIX> => <LATIN SMALL LETTER TONE SIX>
+ { 0x00186 , 0x00254 }, // <LATIN CAPITAL LETTER OPEN O> => <LATIN SMALL LETTER OPEN O>
+ { 0x00187 , 0x00188 }, // <LATIN CAPITAL LETTER C WITH HOOK> => <LATIN SMALL LETTER C WITH HOOK>
+ { 0x00189 , 0x00256 }, // <LATIN CAPITAL LETTER AFRICAN D> => <LATIN SMALL LETTER D WITH TAIL>
+ { 0x0018a , 0x00257 }, // <LATIN CAPITAL LETTER D WITH HOOK> => <LATIN SMALL LETTER D WITH HOOK>
+ { 0x0018b , 0x0018c }, // <LATIN CAPITAL LETTER D WITH TOPBAR> => <LATIN SMALL LETTER D WITH TOPBAR>
+ { 0x0018e , 0x001dd }, // <LATIN CAPITAL LETTER REVERSED E> => <LATIN SMALL LETTER TURNED E>
+ { 0x0018f , 0x00259 }, // <LATIN CAPITAL LETTER SCHWA> => <LATIN SMALL LETTER SCHWA>
+ { 0x00190 , 0x0025b }, // <LATIN CAPITAL LETTER OPEN E> => <LATIN SMALL LETTER OPEN E>
+ { 0x00191 , 0x00192 }, // <LATIN CAPITAL LETTER F WITH HOOK> => <LATIN SMALL LETTER F WITH HOOK>
+ { 0x00193 , 0x00260 }, // <LATIN CAPITAL LETTER G WITH HOOK> => <LATIN SMALL LETTER G WITH HOOK>
+ { 0x00194 , 0x00263 }, // <LATIN CAPITAL LETTER GAMMA> => <LATIN SMALL LETTER GAMMA>
+ { 0x00196 , 0x00269 }, // <LATIN CAPITAL LETTER IOTA> => <LATIN SMALL LETTER IOTA>
+ { 0x00197 , 0x00268 }, // <LATIN CAPITAL LETTER I WITH STROKE> => <LATIN SMALL LETTER I WITH STROKE>
+ { 0x00198 , 0x00199 }, // <LATIN CAPITAL LETTER K WITH HOOK> => <LATIN SMALL LETTER K WITH HOOK>
+ { 0x0019c , 0x0026f }, // <LATIN CAPITAL LETTER TURNED M> => <LATIN SMALL LETTER TURNED M>
+ { 0x0019d , 0x00272 }, // <LATIN CAPITAL LETTER N WITH LEFT HOOK> => <LATIN SMALL LETTER N WITH LEFT HOOK>
+ { 0x0019f , 0x00275 }, // <LATIN CAPITAL LETTER O WITH MIDDLE TILDE> => <LATIN SMALL LETTER BARRED O>
+ { 0x001a0 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH HORN> => <LATIN SMALL LETTER O>
+ { 0x001a1 , 0x0006f }, // <LATIN SMALL LETTER O WITH HORN> => <LATIN SMALL LETTER O>
+ { 0x001a2 , 0x001a3 }, // <LATIN CAPITAL LETTER OI> => <LATIN SMALL LETTER OI>
+ { 0x001a4 , 0x001a5 }, // <LATIN CAPITAL LETTER P WITH HOOK> => <LATIN SMALL LETTER P WITH HOOK>
+ { 0x001a6 , 0x00280 }, // <LATIN LETTER YR> => <LATIN LETTER SMALL CAPITAL R>
+ { 0x001a7 , 0x001a8 }, // <LATIN CAPITAL LETTER TONE TWO> => <LATIN SMALL LETTER TONE TWO>
+ { 0x001a9 , 0x00283 }, // <LATIN CAPITAL LETTER ESH> => <LATIN SMALL LETTER ESH>
+ { 0x001ac , 0x001ad }, // <LATIN CAPITAL LETTER T WITH HOOK> => <LATIN SMALL LETTER T WITH HOOK>
+ { 0x001ae , 0x00288 }, // <LATIN CAPITAL LETTER T WITH RETROFLEX HOOK> => <LATIN SMALL LETTER T WITH RETROFLEX HOOK>
+ { 0x001af , 0x00075 }, // <LATIN CAPITAL LETTER U WITH HORN> => <LATIN SMALL LETTER U>
+ { 0x001b0 , 0x00075 }, // <LATIN SMALL LETTER U WITH HORN> => <LATIN SMALL LETTER U>
+ { 0x001b1 , 0x0028a }, // <LATIN CAPITAL LETTER UPSILON> => <LATIN SMALL LETTER UPSILON>
+ { 0x001b2 , 0x0028b }, // <LATIN CAPITAL LETTER V WITH HOOK> => <LATIN SMALL LETTER V WITH HOOK>
+ { 0x001b3 , 0x001b4 }, // <LATIN CAPITAL LETTER Y WITH HOOK> => <LATIN SMALL LETTER Y WITH HOOK>
+ { 0x001b5 , 0x001b6 }, // <LATIN CAPITAL LETTER Z WITH STROKE> => <LATIN SMALL LETTER Z WITH STROKE>
+ { 0x001b7 , 0x00292 }, // <LATIN CAPITAL LETTER EZH> => <LATIN SMALL LETTER EZH>
+ { 0x001b8 , 0x001b9 }, // <LATIN CAPITAL LETTER EZH REVERSED> => <LATIN SMALL LETTER EZH REVERSED>
+ { 0x001bc , 0x001bd }, // <LATIN CAPITAL LETTER TONE FIVE> => <LATIN SMALL LETTER TONE FIVE>
+ { 0x001cd , 0x00061 }, // <LATIN CAPITAL LETTER A WITH CARON> => <LATIN SMALL LETTER A>
+ { 0x001ce , 0x00061 }, // <LATIN SMALL LETTER A WITH CARON> => <LATIN SMALL LETTER A>
+ { 0x001cf , 0x00069 }, // <LATIN CAPITAL LETTER I WITH CARON> => <LATIN SMALL LETTER I>
+ { 0x001d0 , 0x00069 }, // <LATIN SMALL LETTER I WITH CARON> => <LATIN SMALL LETTER I>
+ { 0x001d1 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH CARON> => <LATIN SMALL LETTER O>
+ { 0x001d2 , 0x0006f }, // <LATIN SMALL LETTER O WITH CARON> => <LATIN SMALL LETTER O>
+ { 0x001d3 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH CARON> => <LATIN SMALL LETTER U>
+ { 0x001d4 , 0x00075 }, // <LATIN SMALL LETTER U WITH CARON> => <LATIN SMALL LETTER U>
+ { 0x001d5 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON> => <LATIN SMALL LETTER U>
+ { 0x001d6 , 0x00075 }, // <LATIN SMALL LETTER U WITH DIAERESIS AND MACRON> => <LATIN SMALL LETTER U>
+ { 0x001d7 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE> => <LATIN SMALL LETTER U>
+ { 0x001d8 , 0x00075 }, // <LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE> => <LATIN SMALL LETTER U>
+ { 0x001d9 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON> => <LATIN SMALL LETTER U>
+ { 0x001da , 0x00075 }, // <LATIN SMALL LETTER U WITH DIAERESIS AND CARON> => <LATIN SMALL LETTER U>
+ { 0x001db , 0x00075 }, // <LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE> => <LATIN SMALL LETTER U>
+ { 0x001dc , 0x00075 }, // <LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE> => <LATIN SMALL LETTER U>
+ { 0x001de , 0x00061 }, // <LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON> => <LATIN SMALL LETTER A>
+ { 0x001df , 0x00061 }, // <LATIN SMALL LETTER A WITH DIAERESIS AND MACRON> => <LATIN SMALL LETTER A>
+ { 0x001e0 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON> => <LATIN SMALL LETTER A>
+ { 0x001e1 , 0x00061 }, // <LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON> => <LATIN SMALL LETTER A>
+ { 0x001e4 , 0x001e5 }, // <LATIN CAPITAL LETTER G WITH STROKE> => <LATIN SMALL LETTER G WITH STROKE>
+ { 0x001e6 , 0x00067 }, // <LATIN CAPITAL LETTER G WITH CARON> => <LATIN SMALL LETTER G>
+ { 0x001e7 , 0x00067 }, // <LATIN SMALL LETTER G WITH CARON> => <LATIN SMALL LETTER G>
+ { 0x001e8 , 0x0006b }, // <LATIN CAPITAL LETTER K WITH CARON> => <LATIN SMALL LETTER K>
+ { 0x001e9 , 0x0006b }, // <LATIN SMALL LETTER K WITH CARON> => <LATIN SMALL LETTER K>
+ { 0x001ea , 0x0006f }, // <LATIN CAPITAL LETTER O WITH OGONEK> => <LATIN SMALL LETTER O>
+ { 0x001eb , 0x0006f }, // <LATIN SMALL LETTER O WITH OGONEK> => <LATIN SMALL LETTER O>
+ { 0x001ec , 0x0006f }, // <LATIN CAPITAL LETTER O WITH OGONEK AND MACRON> => <LATIN SMALL LETTER O>
+ { 0x001ed , 0x0006f }, // <LATIN SMALL LETTER O WITH OGONEK AND MACRON> => <LATIN SMALL LETTER O>
+ { 0x001ee , 0x00292 }, // <LATIN CAPITAL LETTER EZH WITH CARON> => <LATIN SMALL LETTER EZH>
+ { 0x001ef , 0x00292 }, // <LATIN SMALL LETTER EZH WITH CARON> => <LATIN SMALL LETTER EZH>
+ { 0x001f0 , 0x0006a }, // <LATIN SMALL LETTER J WITH CARON> => <LATIN SMALL LETTER J>
+ { 0x001f4 , 0x00067 }, // <LATIN CAPITAL LETTER G WITH ACUTE> => <LATIN SMALL LETTER G>
+ { 0x001f5 , 0x00067 }, // <LATIN SMALL LETTER G WITH ACUTE> => <LATIN SMALL LETTER G>
+ { 0x001f6 , 0x00195 }, // <LATIN CAPITAL LETTER HWAIR> => <LATIN SMALL LETTER HV>
+ { 0x001f7 , 0x001bf }, // <LATIN CAPITAL LETTER WYNN> => <LATIN LETTER WYNN>
+ { 0x001f8 , 0x0006e }, // <LATIN CAPITAL LETTER N WITH GRAVE> => <LATIN SMALL LETTER N>
+ { 0x001f9 , 0x0006e }, // <LATIN SMALL LETTER N WITH GRAVE> => <LATIN SMALL LETTER N>
+ { 0x001fa , 0x00061 }, // <LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE> => <LATIN SMALL LETTER A>
+ { 0x001fb , 0x00061 }, // <LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE> => <LATIN SMALL LETTER A>
+ { 0x001fe , 0x0006f }, // <LATIN CAPITAL LETTER O WITH STROKE AND ACUTE> => <LATIN SMALL LETTER O>
+ { 0x001ff , 0x0006f }, // <LATIN SMALL LETTER O WITH STROKE AND ACUTE> => <LATIN SMALL LETTER O>
+ { 0x00200 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH DOUBLE GRAVE> => <LATIN SMALL LETTER A>
+ { 0x00201 , 0x00061 }, // <LATIN SMALL LETTER A WITH DOUBLE GRAVE> => <LATIN SMALL LETTER A>
+ { 0x00202 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH INVERTED BREVE> => <LATIN SMALL LETTER A>
+ { 0x00203 , 0x00061 }, // <LATIN SMALL LETTER A WITH INVERTED BREVE> => <LATIN SMALL LETTER A>
+ { 0x00204 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH DOUBLE GRAVE> => <LATIN SMALL LETTER E>
+ { 0x00205 , 0x00065 }, // <LATIN SMALL LETTER E WITH DOUBLE GRAVE> => <LATIN SMALL LETTER E>
+ { 0x00206 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH INVERTED BREVE> => <LATIN SMALL LETTER E>
+ { 0x00207 , 0x00065 }, // <LATIN SMALL LETTER E WITH INVERTED BREVE> => <LATIN SMALL LETTER E>
+ { 0x00208 , 0x00069 }, // <LATIN CAPITAL LETTER I WITH DOUBLE GRAVE> => <LATIN SMALL LETTER I>
+ { 0x00209 , 0x00069 }, // <LATIN SMALL LETTER I WITH DOUBLE GRAVE> => <LATIN SMALL LETTER I>
+ { 0x0020a , 0x00069 }, // <LATIN CAPITAL LETTER I WITH INVERTED BREVE> => <LATIN SMALL LETTER I>
+ { 0x0020b , 0x00069 }, // <LATIN SMALL LETTER I WITH INVERTED BREVE> => <LATIN SMALL LETTER I>
+ { 0x0020c , 0x0006f }, // <LATIN CAPITAL LETTER O WITH DOUBLE GRAVE> => <LATIN SMALL LETTER O>
+ { 0x0020d , 0x0006f }, // <LATIN SMALL LETTER O WITH DOUBLE GRAVE> => <LATIN SMALL LETTER O>
+ { 0x0020e , 0x0006f }, // <LATIN CAPITAL LETTER O WITH INVERTED BREVE> => <LATIN SMALL LETTER O>
+ { 0x0020f , 0x0006f }, // <LATIN SMALL LETTER O WITH INVERTED BREVE> => <LATIN SMALL LETTER O>
+ { 0x00210 , 0x00072 }, // <LATIN CAPITAL LETTER R WITH DOUBLE GRAVE> => <LATIN SMALL LETTER R>
+ { 0x00211 , 0x00072 }, // <LATIN SMALL LETTER R WITH DOUBLE GRAVE> => <LATIN SMALL LETTER R>
+ { 0x00212 , 0x00072 }, // <LATIN CAPITAL LETTER R WITH INVERTED BREVE> => <LATIN SMALL LETTER R>
+ { 0x00213 , 0x00072 }, // <LATIN SMALL LETTER R WITH INVERTED BREVE> => <LATIN SMALL LETTER R>
+ { 0x00214 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH DOUBLE GRAVE> => <LATIN SMALL LETTER U>
+ { 0x00215 , 0x00075 }, // <LATIN SMALL LETTER U WITH DOUBLE GRAVE> => <LATIN SMALL LETTER U>
+ { 0x00216 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH INVERTED BREVE> => <LATIN SMALL LETTER U>
+ { 0x00217 , 0x00075 }, // <LATIN SMALL LETTER U WITH INVERTED BREVE> => <LATIN SMALL LETTER U>
+ { 0x00218 , 0x00073 }, // <LATIN CAPITAL LETTER S WITH COMMA BELOW> => <LATIN SMALL LETTER S>
+ { 0x00219 , 0x00073 }, // <LATIN SMALL LETTER S WITH COMMA BELOW> => <LATIN SMALL LETTER S>
+ { 0x0021a , 0x00074 }, // <LATIN CAPITAL LETTER T WITH COMMA BELOW> => <LATIN SMALL LETTER T>
+ { 0x0021b , 0x00074 }, // <LATIN SMALL LETTER T WITH COMMA BELOW> => <LATIN SMALL LETTER T>
+ { 0x0021c , 0x0021d }, // <LATIN CAPITAL LETTER YOGH> => <LATIN SMALL LETTER YOGH>
+ { 0x0021e , 0x00068 }, // <LATIN CAPITAL LETTER H WITH CARON> => <LATIN SMALL LETTER H>
+ { 0x0021f , 0x00068 }, // <LATIN SMALL LETTER H WITH CARON> => <LATIN SMALL LETTER H>
+ { 0x00220 , 0x0019e }, // <LATIN CAPITAL LETTER N WITH LONG RIGHT LEG> => <LATIN SMALL LETTER N WITH LONG RIGHT LEG>
+ { 0x00222 , 0x00223 }, // <LATIN CAPITAL LETTER OU> => <LATIN SMALL LETTER OU>
+ { 0x00224 , 0x00225 }, // <LATIN CAPITAL LETTER Z WITH HOOK> => <LATIN SMALL LETTER Z WITH HOOK>
+ { 0x00226 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH DOT ABOVE> => <LATIN SMALL LETTER A>
+ { 0x00227 , 0x00061 }, // <LATIN SMALL LETTER A WITH DOT ABOVE> => <LATIN SMALL LETTER A>
+ { 0x00228 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH CEDILLA> => <LATIN SMALL LETTER E>
+ { 0x00229 , 0x00065 }, // <LATIN SMALL LETTER E WITH CEDILLA> => <LATIN SMALL LETTER E>
+ { 0x0022a , 0x0006f }, // <LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON> => <LATIN SMALL LETTER O>
+ { 0x0022b , 0x0006f }, // <LATIN SMALL LETTER O WITH DIAERESIS AND MACRON> => <LATIN SMALL LETTER O>
+ { 0x0022c , 0x0006f }, // <LATIN CAPITAL LETTER O WITH TILDE AND MACRON> => <LATIN SMALL LETTER O>
+ { 0x0022d , 0x0006f }, // <LATIN SMALL LETTER O WITH TILDE AND MACRON> => <LATIN SMALL LETTER O>
+ { 0x0022e , 0x0006f }, // <LATIN CAPITAL LETTER O WITH DOT ABOVE> => <LATIN SMALL LETTER O>
+ { 0x0022f , 0x0006f }, // <LATIN SMALL LETTER O WITH DOT ABOVE> => <LATIN SMALL LETTER O>
+ { 0x00230 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON> => <LATIN SMALL LETTER O>
+ { 0x00231 , 0x0006f }, // <LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON> => <LATIN SMALL LETTER O>
+ { 0x00232 , 0x00079 }, // <LATIN CAPITAL LETTER Y WITH MACRON> => <LATIN SMALL LETTER Y>
+ { 0x00233 , 0x00079 }, // <LATIN SMALL LETTER Y WITH MACRON> => <LATIN SMALL LETTER Y>
+ { 0x0023a , 0x02c65 }, // <LATIN CAPITAL LETTER A WITH STROKE> => <LATIN SMALL LETTER A WITH STROKE>
+ { 0x0023b , 0x0023c }, // <LATIN CAPITAL LETTER C WITH STROKE> => <LATIN SMALL LETTER C WITH STROKE>
+ { 0x0023d , 0x0019a }, // <LATIN CAPITAL LETTER L WITH BAR> => <LATIN SMALL LETTER L WITH BAR>
+ { 0x0023e , 0x02c66 }, // <LATIN CAPITAL LETTER T WITH DIAGONAL STROKE> => <LATIN SMALL LETTER T WITH DIAGONAL STROKE>
+ { 0x00241 , 0x00242 }, // <LATIN CAPITAL LETTER GLOTTAL STOP> => <LATIN SMALL LETTER GLOTTAL STOP>
+ { 0x00243 , 0x00180 }, // <LATIN CAPITAL LETTER B WITH STROKE> => <LATIN SMALL LETTER B WITH STROKE>
+ { 0x00244 , 0x00289 }, // <LATIN CAPITAL LETTER U BAR> => <LATIN SMALL LETTER U BAR>
+ { 0x00245 , 0x0028c }, // <LATIN CAPITAL LETTER TURNED V> => <LATIN SMALL LETTER TURNED V>
+ { 0x00246 , 0x00247 }, // <LATIN CAPITAL LETTER E WITH STROKE> => <LATIN SMALL LETTER E WITH STROKE>
+ { 0x00248 , 0x00249 }, // <LATIN CAPITAL LETTER J WITH STROKE> => <LATIN SMALL LETTER J WITH STROKE>
+ { 0x0024a , 0x0024b }, // <LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL> => <LATIN SMALL LETTER Q WITH HOOK TAIL>
+ { 0x0024c , 0x0024d }, // <LATIN CAPITAL LETTER R WITH STROKE> => <LATIN SMALL LETTER R WITH STROKE>
+ { 0x0024e , 0x0024f }, // <LATIN CAPITAL LETTER Y WITH STROKE> => <LATIN SMALL LETTER Y WITH STROKE>
+ { 0x002b0 , 0x00068 }, // <MODIFIER LETTER SMALL H> => <LATIN SMALL LETTER H>
+ { 0x002b1 , 0x00266 }, // <MODIFIER LETTER SMALL H WITH HOOK> => <LATIN SMALL LETTER H WITH HOOK>
+ { 0x002b2 , 0x0006a }, // <MODIFIER LETTER SMALL J> => <LATIN SMALL LETTER J>
+ { 0x002b3 , 0x00072 }, // <MODIFIER LETTER SMALL R> => <LATIN SMALL LETTER R>
+ { 0x002b4 , 0x00279 }, // <MODIFIER LETTER SMALL TURNED R> => <LATIN SMALL LETTER TURNED R>
+ { 0x002b5 , 0x0027b }, // <MODIFIER LETTER SMALL TURNED R WITH HOOK> => <LATIN SMALL LETTER TURNED R WITH HOOK>
+ { 0x002b6 , 0x00281 }, // <MODIFIER LETTER SMALL CAPITAL INVERTED R> => <LATIN LETTER SMALL CAPITAL INVERTED R>
+ { 0x002b7 , 0x00077 }, // <MODIFIER LETTER SMALL W> => <LATIN SMALL LETTER W>
+ { 0x002b8 , 0x00079 }, // <MODIFIER LETTER SMALL Y> => <LATIN SMALL LETTER Y>
+ { 0x002e0 , 0x00263 }, // <MODIFIER LETTER SMALL GAMMA> => <LATIN SMALL LETTER GAMMA>
+ { 0x002e1 , 0x0006c }, // <MODIFIER LETTER SMALL L> => <LATIN SMALL LETTER L>
+ { 0x002e2 , 0x00073 }, // <MODIFIER LETTER SMALL S> => <LATIN SMALL LETTER S>
+ { 0x002e3 , 0x00078 }, // <MODIFIER LETTER SMALL X> => <LATIN SMALL LETTER X>
+ { 0x002e4 , 0x00295 }, // <MODIFIER LETTER SMALL REVERSED GLOTTAL STOP> => <LATIN LETTER PHARYNGEAL VOICED FRICATIVE>
+ { 0x00370 , 0x00371 }, // <GREEK CAPITAL LETTER HETA> => <GREEK SMALL LETTER HETA>
+ { 0x00372 , 0x00373 }, // <GREEK CAPITAL LETTER ARCHAIC SAMPI> => <GREEK SMALL LETTER ARCHAIC SAMPI>
+ { 0x00376 , 0x00377 }, // <GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA> => <GREEK SMALL LETTER PAMPHYLIAN DIGAMMA>
+ { 0x0037a , 0x003b9 }, // <GREEK YPOGEGRAMMENI> => <GREEK SMALL LETTER IOTA>
+ { 0x0037f , 0x003f3 }, // <GREEK CAPITAL LETTER YOT> => <GREEK LETTER YOT>
+ { 0x00386 , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH TONOS> => <GREEK SMALL LETTER ALPHA>
+ { 0x00388 , 0x003b5 }, // <GREEK CAPITAL LETTER EPSILON WITH TONOS> => <GREEK SMALL LETTER EPSILON>
+ { 0x00389 , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH TONOS> => <GREEK SMALL LETTER ETA>
+ { 0x0038a , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH TONOS> => <GREEK SMALL LETTER IOTA>
+ { 0x0038c , 0x003bf }, // <GREEK CAPITAL LETTER OMICRON WITH TONOS> => <GREEK SMALL LETTER OMICRON>
+ { 0x0038e , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON WITH TONOS> => <GREEK SMALL LETTER UPSILON>
+ { 0x0038f , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH TONOS> => <GREEK SMALL LETTER OMEGA>
+ { 0x00390 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS> => <GREEK SMALL LETTER IOTA>
+ { 0x00391 , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA> => <GREEK SMALL LETTER ALPHA>
+ { 0x00392 , 0x003b2 }, // <GREEK CAPITAL LETTER BETA> => <GREEK SMALL LETTER BETA>
+ { 0x00393 , 0x003b3 }, // <GREEK CAPITAL LETTER GAMMA> => <GREEK SMALL LETTER GAMMA>
+ { 0x00394 , 0x003b4 }, // <GREEK CAPITAL LETTER DELTA> => <GREEK SMALL LETTER DELTA>
+ { 0x00395 , 0x003b5 }, // <GREEK CAPITAL LETTER EPSILON> => <GREEK SMALL LETTER EPSILON>
+ { 0x00396 , 0x003b6 }, // <GREEK CAPITAL LETTER ZETA> => <GREEK SMALL LETTER ZETA>
+ { 0x00397 , 0x003b7 }, // <GREEK CAPITAL LETTER ETA> => <GREEK SMALL LETTER ETA>
+ { 0x00398 , 0x003b8 }, // <GREEK CAPITAL LETTER THETA> => <GREEK SMALL LETTER THETA>
+ { 0x00399 , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA> => <GREEK SMALL LETTER IOTA>
+ { 0x0039a , 0x003ba }, // <GREEK CAPITAL LETTER KAPPA> => <GREEK SMALL LETTER KAPPA>
+ { 0x0039b , 0x003bb }, // <GREEK CAPITAL LETTER LAMDA> => <GREEK SMALL LETTER LAMDA>
+ { 0x0039c , 0x003bc }, // <GREEK CAPITAL LETTER MU> => <GREEK SMALL LETTER MU>
+ { 0x0039d , 0x003bd }, // <GREEK CAPITAL LETTER NU> => <GREEK SMALL LETTER NU>
+ { 0x0039e , 0x003be }, // <GREEK CAPITAL LETTER XI> => <GREEK SMALL LETTER XI>
+ { 0x0039f , 0x003bf }, // <GREEK CAPITAL LETTER OMICRON> => <GREEK SMALL LETTER OMICRON>
+ { 0x003a0 , 0x003c0 }, // <GREEK CAPITAL LETTER PI> => <GREEK SMALL LETTER PI>
+ { 0x003a1 , 0x003c1 }, // <GREEK CAPITAL LETTER RHO> => <GREEK SMALL LETTER RHO>
+ { 0x003a3 , 0x003c3 }, // <GREEK CAPITAL LETTER SIGMA> => <GREEK SMALL LETTER SIGMA>
+ { 0x003a4 , 0x003c4 }, // <GREEK CAPITAL LETTER TAU> => <GREEK SMALL LETTER TAU>
+ { 0x003a5 , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON> => <GREEK SMALL LETTER UPSILON>
+ { 0x003a6 , 0x003c6 }, // <GREEK CAPITAL LETTER PHI> => <GREEK SMALL LETTER PHI>
+ { 0x003a7 , 0x003c7 }, // <GREEK CAPITAL LETTER CHI> => <GREEK SMALL LETTER CHI>
+ { 0x003a8 , 0x003c8 }, // <GREEK CAPITAL LETTER PSI> => <GREEK SMALL LETTER PSI>
+ { 0x003a9 , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA> => <GREEK SMALL LETTER OMEGA>
+ { 0x003aa , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH DIALYTIKA> => <GREEK SMALL LETTER IOTA>
+ { 0x003ab , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA> => <GREEK SMALL LETTER UPSILON>
+ { 0x003ac , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH TONOS> => <GREEK SMALL LETTER ALPHA>
+ { 0x003ad , 0x003b5 }, // <GREEK SMALL LETTER EPSILON WITH TONOS> => <GREEK SMALL LETTER EPSILON>
+ { 0x003ae , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH TONOS> => <GREEK SMALL LETTER ETA>
+ { 0x003af , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH TONOS> => <GREEK SMALL LETTER IOTA>
+ { 0x003b0 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS> => <GREEK SMALL LETTER UPSILON>
+ { 0x003c2 , 0x003c3 }, // <GREEK SMALL LETTER FINAL SIGMA> => <GREEK SMALL LETTER SIGMA>
+ { 0x003ca , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH DIALYTIKA> => <GREEK SMALL LETTER IOTA>
+ { 0x003cb , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH DIALYTIKA> => <GREEK SMALL LETTER UPSILON>
+ { 0x003cc , 0x003bf }, // <GREEK SMALL LETTER OMICRON WITH TONOS> => <GREEK SMALL LETTER OMICRON>
+ { 0x003cd , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH TONOS> => <GREEK SMALL LETTER UPSILON>
+ { 0x003ce , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH TONOS> => <GREEK SMALL LETTER OMEGA>
+ { 0x003d0 , 0x003b2 }, // <GREEK BETA SYMBOL> => <GREEK SMALL LETTER BETA>
+ { 0x003d1 , 0x003b8 }, // <GREEK THETA SYMBOL> => <GREEK SMALL LETTER THETA>
+ { 0x003d2 , 0x003c5 }, // <GREEK UPSILON WITH HOOK SYMBOL> => <GREEK SMALL LETTER UPSILON>
+ { 0x003d3 , 0x003c5 }, // <GREEK UPSILON WITH ACUTE AND HOOK SYMBOL> => <GREEK SMALL LETTER UPSILON>
+ { 0x003d4 , 0x003c5 }, // <GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL> => <GREEK SMALL LETTER UPSILON>
+ { 0x003d5 , 0x003c6 }, // <GREEK PHI SYMBOL> => <GREEK SMALL LETTER PHI>
+ { 0x003d6 , 0x003c0 }, // <GREEK PI SYMBOL> => <GREEK SMALL LETTER PI>
+ { 0x003d8 , 0x003d9 }, // <GREEK LETTER ARCHAIC KOPPA> => <GREEK SMALL LETTER ARCHAIC KOPPA>
+ { 0x003da , 0x003db }, // <GREEK LETTER STIGMA> => <GREEK SMALL LETTER STIGMA>
+ { 0x003dc , 0x003dd }, // <GREEK LETTER DIGAMMA> => <GREEK SMALL LETTER DIGAMMA>
+ { 0x003de , 0x003df }, // <GREEK LETTER KOPPA> => <GREEK SMALL LETTER KOPPA>
+ { 0x003e0 , 0x003e1 }, // <GREEK LETTER SAMPI> => <GREEK SMALL LETTER SAMPI>
+ { 0x003e2 , 0x003e3 }, // <COPTIC CAPITAL LETTER SHEI> => <COPTIC SMALL LETTER SHEI>
+ { 0x003e4 , 0x003e5 }, // <COPTIC CAPITAL LETTER FEI> => <COPTIC SMALL LETTER FEI>
+ { 0x003e6 , 0x003e7 }, // <COPTIC CAPITAL LETTER KHEI> => <COPTIC SMALL LETTER KHEI>
+ { 0x003e8 , 0x003e9 }, // <COPTIC CAPITAL LETTER HORI> => <COPTIC SMALL LETTER HORI>
+ { 0x003ea , 0x003eb }, // <COPTIC CAPITAL LETTER GANGIA> => <COPTIC SMALL LETTER GANGIA>
+ { 0x003ec , 0x003ed }, // <COPTIC CAPITAL LETTER SHIMA> => <COPTIC SMALL LETTER SHIMA>
+ { 0x003ee , 0x003ef }, // <COPTIC CAPITAL LETTER DEI> => <COPTIC SMALL LETTER DEI>
+ { 0x003f0 , 0x003ba }, // <GREEK KAPPA SYMBOL> => <GREEK SMALL LETTER KAPPA>
+ { 0x003f1 , 0x003c1 }, // <GREEK RHO SYMBOL> => <GREEK SMALL LETTER RHO>
+ { 0x003f2 , 0x003c3 }, // <GREEK LUNATE SIGMA SYMBOL> => <GREEK SMALL LETTER SIGMA>
+ { 0x003f4 , 0x003b8 }, // <GREEK CAPITAL THETA SYMBOL> => <GREEK SMALL LETTER THETA>
+ { 0x003f5 , 0x003b5 }, // <GREEK LUNATE EPSILON SYMBOL> => <GREEK SMALL LETTER EPSILON>
+ { 0x003f7 , 0x003f8 }, // <GREEK CAPITAL LETTER SHO> => <GREEK SMALL LETTER SHO>
+ { 0x003f9 , 0x003c3 }, // <GREEK CAPITAL LUNATE SIGMA SYMBOL> => <GREEK SMALL LETTER SIGMA>
+ { 0x003fa , 0x003fb }, // <GREEK CAPITAL LETTER SAN> => <GREEK SMALL LETTER SAN>
+ { 0x003fd , 0x0037b }, // <GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL> => <GREEK SMALL REVERSED LUNATE SIGMA SYMBOL>
+ { 0x003fe , 0x0037c }, // <GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL> => <GREEK SMALL DOTTED LUNATE SIGMA SYMBOL>
+ { 0x003ff , 0x0037d }, // <GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL> => <GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL>
+ { 0x00400 , 0x00435 }, // <CYRILLIC CAPITAL LETTER IE WITH GRAVE> => <CYRILLIC SMALL LETTER IE>
+ { 0x00401 , 0x00435 }, // <CYRILLIC CAPITAL LETTER IO> => <CYRILLIC SMALL LETTER IE>
+ { 0x00402 , 0x00452 }, // <CYRILLIC CAPITAL LETTER DJE> => <CYRILLIC SMALL LETTER DJE>
+ { 0x00403 , 0x00433 }, // <CYRILLIC CAPITAL LETTER GJE> => <CYRILLIC SMALL LETTER GHE>
+ { 0x00404 , 0x00454 }, // <CYRILLIC CAPITAL LETTER UKRAINIAN IE> => <CYRILLIC SMALL LETTER UKRAINIAN IE>
+ { 0x00405 , 0x00455 }, // <CYRILLIC CAPITAL LETTER DZE> => <CYRILLIC SMALL LETTER DZE>
+ { 0x00406 , 0x00456 }, // <CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I> => <CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I>
+ { 0x00407 , 0x00456 }, // <CYRILLIC CAPITAL LETTER YI> => <CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I>
+ { 0x00408 , 0x00458 }, // <CYRILLIC CAPITAL LETTER JE> => <CYRILLIC SMALL LETTER JE>
+ { 0x00409 , 0x00459 }, // <CYRILLIC CAPITAL LETTER LJE> => <CYRILLIC SMALL LETTER LJE>
+ { 0x0040a , 0x0045a }, // <CYRILLIC CAPITAL LETTER NJE> => <CYRILLIC SMALL LETTER NJE>
+ { 0x0040b , 0x0045b }, // <CYRILLIC CAPITAL LETTER TSHE> => <CYRILLIC SMALL LETTER TSHE>
+ { 0x0040c , 0x0043a }, // <CYRILLIC CAPITAL LETTER KJE> => <CYRILLIC SMALL LETTER KA>
+ { 0x0040d , 0x00438 }, // <CYRILLIC CAPITAL LETTER I WITH GRAVE> => <CYRILLIC SMALL LETTER I>
+ { 0x0040e , 0x00443 }, // <CYRILLIC CAPITAL LETTER SHORT U> => <CYRILLIC SMALL LETTER U>
+ { 0x0040f , 0x0045f }, // <CYRILLIC CAPITAL LETTER DZHE> => <CYRILLIC SMALL LETTER DZHE>
+ { 0x00410 , 0x00430 }, // <CYRILLIC CAPITAL LETTER A> => <CYRILLIC SMALL LETTER A>
+ { 0x00411 , 0x00431 }, // <CYRILLIC CAPITAL LETTER BE> => <CYRILLIC SMALL LETTER BE>
+ { 0x00412 , 0x00432 }, // <CYRILLIC CAPITAL LETTER VE> => <CYRILLIC SMALL LETTER VE>
+ { 0x00413 , 0x00433 }, // <CYRILLIC CAPITAL LETTER GHE> => <CYRILLIC SMALL LETTER GHE>
+ { 0x00414 , 0x00434 }, // <CYRILLIC CAPITAL LETTER DE> => <CYRILLIC SMALL LETTER DE>
+ { 0x00415 , 0x00435 }, // <CYRILLIC CAPITAL LETTER IE> => <CYRILLIC SMALL LETTER IE>
+ { 0x00416 , 0x00436 }, // <CYRILLIC CAPITAL LETTER ZHE> => <CYRILLIC SMALL LETTER ZHE>
+ { 0x00417 , 0x00437 }, // <CYRILLIC CAPITAL LETTER ZE> => <CYRILLIC SMALL LETTER ZE>
+ { 0x00418 , 0x00438 }, // <CYRILLIC CAPITAL LETTER I> => <CYRILLIC SMALL LETTER I>
+ { 0x00419 , 0x00439 }, // <CYRILLIC CAPITAL LETTER SHORT I> => <CYRILLIC SMALL LETTER SHORT I>
+ { 0x0041a , 0x0043a }, // <CYRILLIC CAPITAL LETTER KA> => <CYRILLIC SMALL LETTER KA>
+ { 0x0041b , 0x0043b }, // <CYRILLIC CAPITAL LETTER EL> => <CYRILLIC SMALL LETTER EL>
+ { 0x0041c , 0x0043c }, // <CYRILLIC CAPITAL LETTER EM> => <CYRILLIC SMALL LETTER EM>
+ { 0x0041d , 0x0043d }, // <CYRILLIC CAPITAL LETTER EN> => <CYRILLIC SMALL LETTER EN>
+ { 0x0041e , 0x0043e }, // <CYRILLIC CAPITAL LETTER O> => <CYRILLIC SMALL LETTER O>
+ { 0x0041f , 0x0043f }, // <CYRILLIC CAPITAL LETTER PE> => <CYRILLIC SMALL LETTER PE>
+ { 0x00420 , 0x00440 }, // <CYRILLIC CAPITAL LETTER ER> => <CYRILLIC SMALL LETTER ER>
+ { 0x00421 , 0x00441 }, // <CYRILLIC CAPITAL LETTER ES> => <CYRILLIC SMALL LETTER ES>
+ { 0x00422 , 0x00442 }, // <CYRILLIC CAPITAL LETTER TE> => <CYRILLIC SMALL LETTER TE>
+ { 0x00423 , 0x00443 }, // <CYRILLIC CAPITAL LETTER U> => <CYRILLIC SMALL LETTER U>
+ { 0x00424 , 0x00444 }, // <CYRILLIC CAPITAL LETTER EF> => <CYRILLIC SMALL LETTER EF>
+ { 0x00425 , 0x00445 }, // <CYRILLIC CAPITAL LETTER HA> => <CYRILLIC SMALL LETTER HA>
+ { 0x00426 , 0x00446 }, // <CYRILLIC CAPITAL LETTER TSE> => <CYRILLIC SMALL LETTER TSE>
+ { 0x00427 , 0x00447 }, // <CYRILLIC CAPITAL LETTER CHE> => <CYRILLIC SMALL LETTER CHE>
+ { 0x00428 , 0x00448 }, // <CYRILLIC CAPITAL LETTER SHA> => <CYRILLIC SMALL LETTER SHA>
+ { 0x00429 , 0x00449 }, // <CYRILLIC CAPITAL LETTER SHCHA> => <CYRILLIC SMALL LETTER SHCHA>
+ { 0x0042a , 0x0044a }, // <CYRILLIC CAPITAL LETTER HARD SIGN> => <CYRILLIC SMALL LETTER HARD SIGN>
+ { 0x0042b , 0x0044b }, // <CYRILLIC CAPITAL LETTER YERU> => <CYRILLIC SMALL LETTER YERU>
+ { 0x0042c , 0x0044c }, // <CYRILLIC CAPITAL LETTER SOFT SIGN> => <CYRILLIC SMALL LETTER SOFT SIGN>
+ { 0x0042d , 0x0044d }, // <CYRILLIC CAPITAL LETTER E> => <CYRILLIC SMALL LETTER E>
+ { 0x0042e , 0x0044e }, // <CYRILLIC CAPITAL LETTER YU> => <CYRILLIC SMALL LETTER YU>
+ { 0x0042f , 0x0044f }, // <CYRILLIC CAPITAL LETTER YA> => <CYRILLIC SMALL LETTER YA>
+ { 0x00450 , 0x00435 }, // <CYRILLIC SMALL LETTER IE WITH GRAVE> => <CYRILLIC SMALL LETTER IE>
+ { 0x00451 , 0x00435 }, // <CYRILLIC SMALL LETTER IO> => <CYRILLIC SMALL LETTER IE>
+ { 0x00453 , 0x00433 }, // <CYRILLIC SMALL LETTER GJE> => <CYRILLIC SMALL LETTER GHE>
+ { 0x00457 , 0x00456 }, // <CYRILLIC SMALL LETTER YI> => <CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I>
+ { 0x0045c , 0x0043a }, // <CYRILLIC SMALL LETTER KJE> => <CYRILLIC SMALL LETTER KA>
+ { 0x0045d , 0x00438 }, // <CYRILLIC SMALL LETTER I WITH GRAVE> => <CYRILLIC SMALL LETTER I>
+ { 0x0045e , 0x00443 }, // <CYRILLIC SMALL LETTER SHORT U> => <CYRILLIC SMALL LETTER U>
+ { 0x00460 , 0x00461 }, // <CYRILLIC CAPITAL LETTER OMEGA> => <CYRILLIC SMALL LETTER OMEGA>
+ { 0x00462 , 0x00463 }, // <CYRILLIC CAPITAL LETTER YAT> => <CYRILLIC SMALL LETTER YAT>
+ { 0x00464 , 0x00465 }, // <CYRILLIC CAPITAL LETTER IOTIFIED E> => <CYRILLIC SMALL LETTER IOTIFIED E>
+ { 0x00466 , 0x00467 }, // <CYRILLIC CAPITAL LETTER LITTLE YUS> => <CYRILLIC SMALL LETTER LITTLE YUS>
+ { 0x00468 , 0x00469 }, // <CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS> => <CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS>
+ { 0x0046a , 0x0046b }, // <CYRILLIC CAPITAL LETTER BIG YUS> => <CYRILLIC SMALL LETTER BIG YUS>
+ { 0x0046c , 0x0046d }, // <CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS> => <CYRILLIC SMALL LETTER IOTIFIED BIG YUS>
+ { 0x0046e , 0x0046f }, // <CYRILLIC CAPITAL LETTER KSI> => <CYRILLIC SMALL LETTER KSI>
+ { 0x00470 , 0x00471 }, // <CYRILLIC CAPITAL LETTER PSI> => <CYRILLIC SMALL LETTER PSI>
+ { 0x00472 , 0x00473 }, // <CYRILLIC CAPITAL LETTER FITA> => <CYRILLIC SMALL LETTER FITA>
+ { 0x00474 , 0x00475 }, // <CYRILLIC CAPITAL LETTER IZHITSA> => <CYRILLIC SMALL LETTER IZHITSA>
+ { 0x00476 , 0x00475 }, // <CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT> => <CYRILLIC SMALL LETTER IZHITSA>
+ { 0x00477 , 0x00475 }, // <CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT> => <CYRILLIC SMALL LETTER IZHITSA>
+ { 0x00478 , 0x00479 }, // <CYRILLIC CAPITAL LETTER UK> => <CYRILLIC SMALL LETTER UK>
+ { 0x0047a , 0x0047b }, // <CYRILLIC CAPITAL LETTER ROUND OMEGA> => <CYRILLIC SMALL LETTER ROUND OMEGA>
+ { 0x0047c , 0x0047d }, // <CYRILLIC CAPITAL LETTER OMEGA WITH TITLO> => <CYRILLIC SMALL LETTER OMEGA WITH TITLO>
+ { 0x0047e , 0x0047f }, // <CYRILLIC CAPITAL LETTER OT> => <CYRILLIC SMALL LETTER OT>
+ { 0x00480 , 0x00481 }, // <CYRILLIC CAPITAL LETTER KOPPA> => <CYRILLIC SMALL LETTER KOPPA>
+ { 0x0048a , 0x0048b }, // <CYRILLIC CAPITAL LETTER SHORT I WITH TAIL> => <CYRILLIC SMALL LETTER SHORT I WITH TAIL>
+ { 0x0048c , 0x0048d }, // <CYRILLIC CAPITAL LETTER SEMISOFT SIGN> => <CYRILLIC SMALL LETTER SEMISOFT SIGN>
+ { 0x0048e , 0x0048f }, // <CYRILLIC CAPITAL LETTER ER WITH TICK> => <CYRILLIC SMALL LETTER ER WITH TICK>
+ { 0x00490 , 0x00433 }, // <CYRILLIC CAPITAL LETTER GHE WITH UPTURN> => <CYRILLIC SMALL LETTER GHE>
+ { 0x00491 , 0x00433 }, // <CYRILLIC SMALL LETTER GHE WITH UPTURN> => <CYRILLIC SMALL LETTER GHE>
+ { 0x00492 , 0x00493 }, // <CYRILLIC CAPITAL LETTER GHE WITH STROKE> => <CYRILLIC SMALL LETTER GHE WITH STROKE>
+ { 0x00494 , 0x00495 }, // <CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK> => <CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK>
+ { 0x00496 , 0x00497 }, // <CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER> => <CYRILLIC SMALL LETTER ZHE WITH DESCENDER>
+ { 0x00498 , 0x00499 }, // <CYRILLIC CAPITAL LETTER ZE WITH DESCENDER> => <CYRILLIC SMALL LETTER ZE WITH DESCENDER>
+ { 0x0049a , 0x0049b }, // <CYRILLIC CAPITAL LETTER KA WITH DESCENDER> => <CYRILLIC SMALL LETTER KA WITH DESCENDER>
+ { 0x0049c , 0x0049d }, // <CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE> => <CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE>
+ { 0x0049e , 0x0049f }, // <CYRILLIC CAPITAL LETTER KA WITH STROKE> => <CYRILLIC SMALL LETTER KA WITH STROKE>
+ { 0x004a0 , 0x004a1 }, // <CYRILLIC CAPITAL LETTER BASHKIR KA> => <CYRILLIC SMALL LETTER BASHKIR KA>
+ { 0x004a2 , 0x004a3 }, // <CYRILLIC CAPITAL LETTER EN WITH DESCENDER> => <CYRILLIC SMALL LETTER EN WITH DESCENDER>
+ { 0x004a4 , 0x004a5 }, // <CYRILLIC CAPITAL LIGATURE EN GHE> => <CYRILLIC SMALL LIGATURE EN GHE>
+ { 0x004a6 , 0x004a7 }, // <CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK> => <CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK>
+ { 0x004a8 , 0x004a9 }, // <CYRILLIC CAPITAL LETTER ABKHASIAN HA> => <CYRILLIC SMALL LETTER ABKHASIAN HA>
+ { 0x004aa , 0x004ab }, // <CYRILLIC CAPITAL LETTER ES WITH DESCENDER> => <CYRILLIC SMALL LETTER ES WITH DESCENDER>
+ { 0x004ac , 0x004ad }, // <CYRILLIC CAPITAL LETTER TE WITH DESCENDER> => <CYRILLIC SMALL LETTER TE WITH DESCENDER>
+ { 0x004ae , 0x004af }, // <CYRILLIC CAPITAL LETTER STRAIGHT U> => <CYRILLIC SMALL LETTER STRAIGHT U>
+ { 0x004b0 , 0x004b1 }, // <CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE> => <CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE>
+ { 0x004b2 , 0x004b3 }, // <CYRILLIC CAPITAL LETTER HA WITH DESCENDER> => <CYRILLIC SMALL LETTER HA WITH DESCENDER>
+ { 0x004b4 , 0x004b5 }, // <CYRILLIC CAPITAL LIGATURE TE TSE> => <CYRILLIC SMALL LIGATURE TE TSE>
+ { 0x004b6 , 0x004b7 }, // <CYRILLIC CAPITAL LETTER CHE WITH DESCENDER> => <CYRILLIC SMALL LETTER CHE WITH DESCENDER>
+ { 0x004b8 , 0x004b9 }, // <CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE> => <CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE>
+ { 0x004ba , 0x004bb }, // <CYRILLIC CAPITAL LETTER SHHA> => <CYRILLIC SMALL LETTER SHHA>
+ { 0x004bc , 0x004bd }, // <CYRILLIC CAPITAL LETTER ABKHASIAN CHE> => <CYRILLIC SMALL LETTER ABKHASIAN CHE>
+ { 0x004be , 0x004bf }, // <CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER> => <CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER>
+ { 0x004c0 , 0x004cf }, // <CYRILLIC LETTER PALOCHKA> => <CYRILLIC SMALL LETTER PALOCHKA>
+ { 0x004c1 , 0x00436 }, // <CYRILLIC CAPITAL LETTER ZHE WITH BREVE> => <CYRILLIC SMALL LETTER ZHE>
+ { 0x004c2 , 0x00436 }, // <CYRILLIC SMALL LETTER ZHE WITH BREVE> => <CYRILLIC SMALL LETTER ZHE>
+ { 0x004c3 , 0x004c4 }, // <CYRILLIC CAPITAL LETTER KA WITH HOOK> => <CYRILLIC SMALL LETTER KA WITH HOOK>
+ { 0x004c5 , 0x004c6 }, // <CYRILLIC CAPITAL LETTER EL WITH TAIL> => <CYRILLIC SMALL LETTER EL WITH TAIL>
+ { 0x004c7 , 0x004c8 }, // <CYRILLIC CAPITAL LETTER EN WITH HOOK> => <CYRILLIC SMALL LETTER EN WITH HOOK>
+ { 0x004c9 , 0x004ca }, // <CYRILLIC CAPITAL LETTER EN WITH TAIL> => <CYRILLIC SMALL LETTER EN WITH TAIL>
+ { 0x004cb , 0x004cc }, // <CYRILLIC CAPITAL LETTER KHAKASSIAN CHE> => <CYRILLIC SMALL LETTER KHAKASSIAN CHE>
+ { 0x004cd , 0x004ce }, // <CYRILLIC CAPITAL LETTER EM WITH TAIL> => <CYRILLIC SMALL LETTER EM WITH TAIL>
+ { 0x004d0 , 0x00430 }, // <CYRILLIC CAPITAL LETTER A WITH BREVE> => <CYRILLIC SMALL LETTER A>
+ { 0x004d1 , 0x00430 }, // <CYRILLIC SMALL LETTER A WITH BREVE> => <CYRILLIC SMALL LETTER A>
+ { 0x004d2 , 0x00430 }, // <CYRILLIC CAPITAL LETTER A WITH DIAERESIS> => <CYRILLIC SMALL LETTER A>
+ { 0x004d3 , 0x00430 }, // <CYRILLIC SMALL LETTER A WITH DIAERESIS> => <CYRILLIC SMALL LETTER A>
+ { 0x004d4 , 0x004d5 }, // <CYRILLIC CAPITAL LIGATURE A IE> => <CYRILLIC SMALL LIGATURE A IE>
+ { 0x004d6 , 0x00435 }, // <CYRILLIC CAPITAL LETTER IE WITH BREVE> => <CYRILLIC SMALL LETTER IE>
+ { 0x004d7 , 0x00435 }, // <CYRILLIC SMALL LETTER IE WITH BREVE> => <CYRILLIC SMALL LETTER IE>
+ { 0x004d8 , 0x004d9 }, // <CYRILLIC CAPITAL LETTER SCHWA> => <CYRILLIC SMALL LETTER SCHWA>
+ { 0x004da , 0x004d9 }, // <CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS> => <CYRILLIC SMALL LETTER SCHWA>
+ { 0x004db , 0x004d9 }, // <CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS> => <CYRILLIC SMALL LETTER SCHWA>
+ { 0x004dc , 0x00436 }, // <CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS> => <CYRILLIC SMALL LETTER ZHE>
+ { 0x004dd , 0x00436 }, // <CYRILLIC SMALL LETTER ZHE WITH DIAERESIS> => <CYRILLIC SMALL LETTER ZHE>
+ { 0x004de , 0x00437 }, // <CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS> => <CYRILLIC SMALL LETTER ZE>
+ { 0x004df , 0x00437 }, // <CYRILLIC SMALL LETTER ZE WITH DIAERESIS> => <CYRILLIC SMALL LETTER ZE>
+ { 0x004e0 , 0x004e1 }, // <CYRILLIC CAPITAL LETTER ABKHASIAN DZE> => <CYRILLIC SMALL LETTER ABKHASIAN DZE>
+ { 0x004e2 , 0x00438 }, // <CYRILLIC CAPITAL LETTER I WITH MACRON> => <CYRILLIC SMALL LETTER I>
+ { 0x004e3 , 0x00438 }, // <CYRILLIC SMALL LETTER I WITH MACRON> => <CYRILLIC SMALL LETTER I>
+ { 0x004e4 , 0x00438 }, // <CYRILLIC CAPITAL LETTER I WITH DIAERESIS> => <CYRILLIC SMALL LETTER I>
+ { 0x004e5 , 0x00438 }, // <CYRILLIC SMALL LETTER I WITH DIAERESIS> => <CYRILLIC SMALL LETTER I>
+ { 0x004e6 , 0x0043e }, // <CYRILLIC CAPITAL LETTER O WITH DIAERESIS> => <CYRILLIC SMALL LETTER O>
+ { 0x004e7 , 0x0043e }, // <CYRILLIC SMALL LETTER O WITH DIAERESIS> => <CYRILLIC SMALL LETTER O>
+ { 0x004e8 , 0x004e9 }, // <CYRILLIC CAPITAL LETTER BARRED O> => <CYRILLIC SMALL LETTER BARRED O>
+ { 0x004ea , 0x004e9 }, // <CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS> => <CYRILLIC SMALL LETTER BARRED O>
+ { 0x004eb , 0x004e9 }, // <CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS> => <CYRILLIC SMALL LETTER BARRED O>
+ { 0x004ec , 0x0044d }, // <CYRILLIC CAPITAL LETTER E WITH DIAERESIS> => <CYRILLIC SMALL LETTER E>
+ { 0x004ed , 0x0044d }, // <CYRILLIC SMALL LETTER E WITH DIAERESIS> => <CYRILLIC SMALL LETTER E>
+ { 0x004ee , 0x00443 }, // <CYRILLIC CAPITAL LETTER U WITH MACRON> => <CYRILLIC SMALL LETTER U>
+ { 0x004ef , 0x00443 }, // <CYRILLIC SMALL LETTER U WITH MACRON> => <CYRILLIC SMALL LETTER U>
+ { 0x004f0 , 0x00443 }, // <CYRILLIC CAPITAL LETTER U WITH DIAERESIS> => <CYRILLIC SMALL LETTER U>
+ { 0x004f1 , 0x00443 }, // <CYRILLIC SMALL LETTER U WITH DIAERESIS> => <CYRILLIC SMALL LETTER U>
+ { 0x004f2 , 0x00443 }, // <CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE> => <CYRILLIC SMALL LETTER U>
+ { 0x004f3 , 0x00443 }, // <CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE> => <CYRILLIC SMALL LETTER U>
+ { 0x004f4 , 0x00447 }, // <CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS> => <CYRILLIC SMALL LETTER CHE>
+ { 0x004f5 , 0x00447 }, // <CYRILLIC SMALL LETTER CHE WITH DIAERESIS> => <CYRILLIC SMALL LETTER CHE>
+ { 0x004f6 , 0x004f7 }, // <CYRILLIC CAPITAL LETTER GHE WITH DESCENDER> => <CYRILLIC SMALL LETTER GHE WITH DESCENDER>
+ { 0x004f8 , 0x0044b }, // <CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS> => <CYRILLIC SMALL LETTER YERU>
+ { 0x004f9 , 0x0044b }, // <CYRILLIC SMALL LETTER YERU WITH DIAERESIS> => <CYRILLIC SMALL LETTER YERU>
+ { 0x004fa , 0x004fb }, // <CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK> => <CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK>
+ { 0x004fc , 0x004fd }, // <CYRILLIC CAPITAL LETTER HA WITH HOOK> => <CYRILLIC SMALL LETTER HA WITH HOOK>
+ { 0x004fe , 0x004ff }, // <CYRILLIC CAPITAL LETTER HA WITH STROKE> => <CYRILLIC SMALL LETTER HA WITH STROKE>
+ { 0x00500 , 0x00501 }, // <CYRILLIC CAPITAL LETTER KOMI DE> => <CYRILLIC SMALL LETTER KOMI DE>
+ { 0x00502 , 0x00503 }, // <CYRILLIC CAPITAL LETTER KOMI DJE> => <CYRILLIC SMALL LETTER KOMI DJE>
+ { 0x00504 , 0x00505 }, // <CYRILLIC CAPITAL LETTER KOMI ZJE> => <CYRILLIC SMALL LETTER KOMI ZJE>
+ { 0x00506 , 0x00507 }, // <CYRILLIC CAPITAL LETTER KOMI DZJE> => <CYRILLIC SMALL LETTER KOMI DZJE>
+ { 0x00508 , 0x00509 }, // <CYRILLIC CAPITAL LETTER KOMI LJE> => <CYRILLIC SMALL LETTER KOMI LJE>
+ { 0x0050a , 0x0050b }, // <CYRILLIC CAPITAL LETTER KOMI NJE> => <CYRILLIC SMALL LETTER KOMI NJE>
+ { 0x0050c , 0x0050d }, // <CYRILLIC CAPITAL LETTER KOMI SJE> => <CYRILLIC SMALL LETTER KOMI SJE>
+ { 0x0050e , 0x0050f }, // <CYRILLIC CAPITAL LETTER KOMI TJE> => <CYRILLIC SMALL LETTER KOMI TJE>
+ { 0x00510 , 0x00511 }, // <CYRILLIC CAPITAL LETTER REVERSED ZE> => <CYRILLIC SMALL LETTER REVERSED ZE>
+ { 0x00512 , 0x00513 }, // <CYRILLIC CAPITAL LETTER EL WITH HOOK> => <CYRILLIC SMALL LETTER EL WITH HOOK>
+ { 0x00514 , 0x00515 }, // <CYRILLIC CAPITAL LETTER LHA> => <CYRILLIC SMALL LETTER LHA>
+ { 0x00516 , 0x00517 }, // <CYRILLIC CAPITAL LETTER RHA> => <CYRILLIC SMALL LETTER RHA>
+ { 0x00518 , 0x00519 }, // <CYRILLIC CAPITAL LETTER YAE> => <CYRILLIC SMALL LETTER YAE>
+ { 0x0051a , 0x0051b }, // <CYRILLIC CAPITAL LETTER QA> => <CYRILLIC SMALL LETTER QA>
+ { 0x0051c , 0x0051d }, // <CYRILLIC CAPITAL LETTER WE> => <CYRILLIC SMALL LETTER WE>
+ { 0x0051e , 0x0051f }, // <CYRILLIC CAPITAL LETTER ALEUT KA> => <CYRILLIC SMALL LETTER ALEUT KA>
+ { 0x00520 , 0x00521 }, // <CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK> => <CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK>
+ { 0x00522 , 0x00523 }, // <CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK> => <CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK>
+ { 0x00524 , 0x00525 }, // <CYRILLIC CAPITAL LETTER PE WITH DESCENDER> => <CYRILLIC SMALL LETTER PE WITH DESCENDER>
+ { 0x00526 , 0x00527 }, // <CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER> => <CYRILLIC SMALL LETTER SHHA WITH DESCENDER>
+ { 0x00528 , 0x00529 }, // <CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK> => <CYRILLIC SMALL LETTER EN WITH LEFT HOOK>
+ { 0x0052a , 0x0052b }, // <CYRILLIC CAPITAL LETTER DZZHE> => <CYRILLIC SMALL LETTER DZZHE>
+ { 0x0052c , 0x0052d }, // <CYRILLIC CAPITAL LETTER DCHE> => <CYRILLIC SMALL LETTER DCHE>
+ { 0x0052e , 0x0052f }, // <CYRILLIC CAPITAL LETTER EL WITH DESCENDER> => <CYRILLIC SMALL LETTER EL WITH DESCENDER>
+ { 0x00531 , 0x00561 }, // <ARMENIAN CAPITAL LETTER AYB> => <ARMENIAN SMALL LETTER AYB>
+ { 0x00532 , 0x00562 }, // <ARMENIAN CAPITAL LETTER BEN> => <ARMENIAN SMALL LETTER BEN>
+ { 0x00533 , 0x00563 }, // <ARMENIAN CAPITAL LETTER GIM> => <ARMENIAN SMALL LETTER GIM>
+ { 0x00534 , 0x00564 }, // <ARMENIAN CAPITAL LETTER DA> => <ARMENIAN SMALL LETTER DA>
+ { 0x00535 , 0x00565 }, // <ARMENIAN CAPITAL LETTER ECH> => <ARMENIAN SMALL LETTER ECH>
+ { 0x00536 , 0x00566 }, // <ARMENIAN CAPITAL LETTER ZA> => <ARMENIAN SMALL LETTER ZA>
+ { 0x00537 , 0x00567 }, // <ARMENIAN CAPITAL LETTER EH> => <ARMENIAN SMALL LETTER EH>
+ { 0x00538 , 0x00568 }, // <ARMENIAN CAPITAL LETTER ET> => <ARMENIAN SMALL LETTER ET>
+ { 0x00539 , 0x00569 }, // <ARMENIAN CAPITAL LETTER TO> => <ARMENIAN SMALL LETTER TO>
+ { 0x0053a , 0x0056a }, // <ARMENIAN CAPITAL LETTER ZHE> => <ARMENIAN SMALL LETTER ZHE>
+ { 0x0053b , 0x0056b }, // <ARMENIAN CAPITAL LETTER INI> => <ARMENIAN SMALL LETTER INI>
+ { 0x0053c , 0x0056c }, // <ARMENIAN CAPITAL LETTER LIWN> => <ARMENIAN SMALL LETTER LIWN>
+ { 0x0053d , 0x0056d }, // <ARMENIAN CAPITAL LETTER XEH> => <ARMENIAN SMALL LETTER XEH>
+ { 0x0053e , 0x0056e }, // <ARMENIAN CAPITAL LETTER CA> => <ARMENIAN SMALL LETTER CA>
+ { 0x0053f , 0x0056f }, // <ARMENIAN CAPITAL LETTER KEN> => <ARMENIAN SMALL LETTER KEN>
+ { 0x00540 , 0x00570 }, // <ARMENIAN CAPITAL LETTER HO> => <ARMENIAN SMALL LETTER HO>
+ { 0x00541 , 0x00571 }, // <ARMENIAN CAPITAL LETTER JA> => <ARMENIAN SMALL LETTER JA>
+ { 0x00542 , 0x00572 }, // <ARMENIAN CAPITAL LETTER GHAD> => <ARMENIAN SMALL LETTER GHAD>
+ { 0x00543 , 0x00573 }, // <ARMENIAN CAPITAL LETTER CHEH> => <ARMENIAN SMALL LETTER CHEH>
+ { 0x00544 , 0x00574 }, // <ARMENIAN CAPITAL LETTER MEN> => <ARMENIAN SMALL LETTER MEN>
+ { 0x00545 , 0x00575 }, // <ARMENIAN CAPITAL LETTER YI> => <ARMENIAN SMALL LETTER YI>
+ { 0x00546 , 0x00576 }, // <ARMENIAN CAPITAL LETTER NOW> => <ARMENIAN SMALL LETTER NOW>
+ { 0x00547 , 0x00577 }, // <ARMENIAN CAPITAL LETTER SHA> => <ARMENIAN SMALL LETTER SHA>
+ { 0x00548 , 0x00578 }, // <ARMENIAN CAPITAL LETTER VO> => <ARMENIAN SMALL LETTER VO>
+ { 0x00549 , 0x00579 }, // <ARMENIAN CAPITAL LETTER CHA> => <ARMENIAN SMALL LETTER CHA>
+ { 0x0054a , 0x0057a }, // <ARMENIAN CAPITAL LETTER PEH> => <ARMENIAN SMALL LETTER PEH>
+ { 0x0054b , 0x0057b }, // <ARMENIAN CAPITAL LETTER JHEH> => <ARMENIAN SMALL LETTER JHEH>
+ { 0x0054c , 0x0057c }, // <ARMENIAN CAPITAL LETTER RA> => <ARMENIAN SMALL LETTER RA>
+ { 0x0054d , 0x0057d }, // <ARMENIAN CAPITAL LETTER SEH> => <ARMENIAN SMALL LETTER SEH>
+ { 0x0054e , 0x0057e }, // <ARMENIAN CAPITAL LETTER VEW> => <ARMENIAN SMALL LETTER VEW>
+ { 0x0054f , 0x0057f }, // <ARMENIAN CAPITAL LETTER TIWN> => <ARMENIAN SMALL LETTER TIWN>
+ { 0x00550 , 0x00580 }, // <ARMENIAN CAPITAL LETTER REH> => <ARMENIAN SMALL LETTER REH>
+ { 0x00551 , 0x00581 }, // <ARMENIAN CAPITAL LETTER CO> => <ARMENIAN SMALL LETTER CO>
+ { 0x00552 , 0x00582 }, // <ARMENIAN CAPITAL LETTER YIWN> => <ARMENIAN SMALL LETTER YIWN>
+ { 0x00553 , 0x00583 }, // <ARMENIAN CAPITAL LETTER PIWR> => <ARMENIAN SMALL LETTER PIWR>
+ { 0x00554 , 0x00584 }, // <ARMENIAN CAPITAL LETTER KEH> => <ARMENIAN SMALL LETTER KEH>
+ { 0x00555 , 0x00585 }, // <ARMENIAN CAPITAL LETTER OH> => <ARMENIAN SMALL LETTER OH>
+ { 0x00556 , 0x00586 }, // <ARMENIAN CAPITAL LETTER FEH> => <ARMENIAN SMALL LETTER FEH>
+ { 0x005da , 0x005db }, // <HEBREW LETTER FINAL KAF> => <HEBREW LETTER KAF>
+ { 0x005dd , 0x005de }, // <HEBREW LETTER FINAL MEM> => <HEBREW LETTER MEM>
+ { 0x005df , 0x005e0 }, // <HEBREW LETTER FINAL NUN> => <HEBREW LETTER NUN>
+ { 0x005e3 , 0x005e4 }, // <HEBREW LETTER FINAL PE> => <HEBREW LETTER PE>
+ { 0x005e5 , 0x005e6 }, // <HEBREW LETTER FINAL TSADI> => <HEBREW LETTER TSADI>
+ { 0x00660 , 0x00030 }, // <ARABIC-INDIC DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00661 , 0x00031 }, // <ARABIC-INDIC DIGIT ONE> => <DIGIT ONE>
+ { 0x00662 , 0x00032 }, // <ARABIC-INDIC DIGIT TWO> => <DIGIT TWO>
+ { 0x00663 , 0x00033 }, // <ARABIC-INDIC DIGIT THREE> => <DIGIT THREE>
+ { 0x00664 , 0x00034 }, // <ARABIC-INDIC DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00665 , 0x00035 }, // <ARABIC-INDIC DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00666 , 0x00036 }, // <ARABIC-INDIC DIGIT SIX> => <DIGIT SIX>
+ { 0x00667 , 0x00037 }, // <ARABIC-INDIC DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00668 , 0x00038 }, // <ARABIC-INDIC DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00669 , 0x00039 }, // <ARABIC-INDIC DIGIT NINE> => <DIGIT NINE>
+ { 0x00674 , 0x00621 }, // <ARABIC LETTER HIGH HAMZA> => <ARABIC LETTER HAMZA>
+ { 0x006c0 , 0x006d5 }, // <ARABIC LETTER HEH WITH YEH ABOVE> => <ARABIC LETTER AE>
+ { 0x006c2 , 0x006c1 }, // <ARABIC LETTER HEH GOAL WITH HAMZA ABOVE> => <ARABIC LETTER HEH GOAL>
+ { 0x006d3 , 0x006d2 }, // <ARABIC LETTER YEH BARREE WITH HAMZA ABOVE> => <ARABIC LETTER YEH BARREE>
+ { 0x006e5 , 0x00648 }, // <ARABIC SMALL WAW> => <ARABIC LETTER WAW>
+ { 0x006e6 , 0x0064a }, // <ARABIC SMALL YEH> => <ARABIC LETTER YEH>
+ { 0x006f0 , 0x00030 }, // <EXTENDED ARABIC-INDIC DIGIT ZERO> => <DIGIT ZERO>
+ { 0x006f1 , 0x00031 }, // <EXTENDED ARABIC-INDIC DIGIT ONE> => <DIGIT ONE>
+ { 0x006f2 , 0x00032 }, // <EXTENDED ARABIC-INDIC DIGIT TWO> => <DIGIT TWO>
+ { 0x006f3 , 0x00033 }, // <EXTENDED ARABIC-INDIC DIGIT THREE> => <DIGIT THREE>
+ { 0x006f4 , 0x00034 }, // <EXTENDED ARABIC-INDIC DIGIT FOUR> => <DIGIT FOUR>
+ { 0x006f5 , 0x00035 }, // <EXTENDED ARABIC-INDIC DIGIT FIVE> => <DIGIT FIVE>
+ { 0x006f6 , 0x00036 }, // <EXTENDED ARABIC-INDIC DIGIT SIX> => <DIGIT SIX>
+ { 0x006f7 , 0x00037 }, // <EXTENDED ARABIC-INDIC DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x006f8 , 0x00038 }, // <EXTENDED ARABIC-INDIC DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x006f9 , 0x00039 }, // <EXTENDED ARABIC-INDIC DIGIT NINE> => <DIGIT NINE>
+ { 0x00714 , 0x00713 }, // <SYRIAC LETTER GAMAL GARSHUNI> => <SYRIAC LETTER GAMAL>
+ { 0x0071c , 0x0071b }, // <SYRIAC LETTER TETH GARSHUNI> => <SYRIAC LETTER TETH>
+ { 0x00724 , 0x00723 }, // <SYRIAC LETTER FINAL SEMKATH> => <SYRIAC LETTER SEMKATH>
+ { 0x00727 , 0x00726 }, // <SYRIAC LETTER REVERSED PE> => <SYRIAC LETTER PE>
+ { 0x0072d , 0x00712 }, // <SYRIAC LETTER PERSIAN BHETH> => <SYRIAC LETTER BETH>
+ { 0x0072e , 0x00713 }, // <SYRIAC LETTER PERSIAN GHAMAL> => <SYRIAC LETTER GAMAL>
+ { 0x0072f , 0x00715 }, // <SYRIAC LETTER PERSIAN DHALATH> => <SYRIAC LETTER DALATH>
+ { 0x007c0 , 0x00030 }, // <NKO DIGIT ZERO> => <DIGIT ZERO>
+ { 0x007c1 , 0x00031 }, // <NKO DIGIT ONE> => <DIGIT ONE>
+ { 0x007c2 , 0x00032 }, // <NKO DIGIT TWO> => <DIGIT TWO>
+ { 0x007c3 , 0x00033 }, // <NKO DIGIT THREE> => <DIGIT THREE>
+ { 0x007c4 , 0x00034 }, // <NKO DIGIT FOUR> => <DIGIT FOUR>
+ { 0x007c5 , 0x00035 }, // <NKO DIGIT FIVE> => <DIGIT FIVE>
+ { 0x007c6 , 0x00036 }, // <NKO DIGIT SIX> => <DIGIT SIX>
+ { 0x007c7 , 0x00037 }, // <NKO DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x007c8 , 0x00038 }, // <NKO DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x007c9 , 0x00039 }, // <NKO DIGIT NINE> => <DIGIT NINE>
+ { 0x007e8 , 0x007d6 }, // <NKO LETTER JONA JA> => <NKO LETTER JA>
+ { 0x007e9 , 0x007d7 }, // <NKO LETTER JONA CHA> => <NKO LETTER CHA>
+ { 0x007ea , 0x007d9 }, // <NKO LETTER JONA RA> => <NKO LETTER RA>
+ { 0x008ad , 0x00627 }, // <ARABIC LETTER LOW ALEF> => <ARABIC LETTER ALEF>
+ { 0x00929 , 0x00928 }, // <DEVANAGARI LETTER NNNA> => <DEVANAGARI LETTER NA>
+ { 0x00931 , 0x00930 }, // <DEVANAGARI LETTER RRA> => <DEVANAGARI LETTER RA>
+ { 0x00934 , 0x00933 }, // <DEVANAGARI LETTER LLLA> => <DEVANAGARI LETTER LLA>
+ { 0x00958 , 0x00915 }, // <DEVANAGARI LETTER QA> => <DEVANAGARI LETTER KA>
+ { 0x00959 , 0x00916 }, // <DEVANAGARI LETTER KHHA> => <DEVANAGARI LETTER KHA>
+ { 0x0095a , 0x00917 }, // <DEVANAGARI LETTER GHHA> => <DEVANAGARI LETTER GA>
+ { 0x0095b , 0x0091c }, // <DEVANAGARI LETTER ZA> => <DEVANAGARI LETTER JA>
+ { 0x0095c , 0x00921 }, // <DEVANAGARI LETTER DDDHA> => <DEVANAGARI LETTER DDA>
+ { 0x0095d , 0x00922 }, // <DEVANAGARI LETTER RHA> => <DEVANAGARI LETTER DDHA>
+ { 0x0095e , 0x0092b }, // <DEVANAGARI LETTER FA> => <DEVANAGARI LETTER PHA>
+ { 0x0095f , 0x0092f }, // <DEVANAGARI LETTER YYA> => <DEVANAGARI LETTER YA>
+ { 0x00966 , 0x00030 }, // <DEVANAGARI DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00967 , 0x00031 }, // <DEVANAGARI DIGIT ONE> => <DIGIT ONE>
+ { 0x00968 , 0x00032 }, // <DEVANAGARI DIGIT TWO> => <DIGIT TWO>
+ { 0x00969 , 0x00033 }, // <DEVANAGARI DIGIT THREE> => <DIGIT THREE>
+ { 0x0096a , 0x00034 }, // <DEVANAGARI DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0096b , 0x00035 }, // <DEVANAGARI DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0096c , 0x00036 }, // <DEVANAGARI DIGIT SIX> => <DIGIT SIX>
+ { 0x0096d , 0x00037 }, // <DEVANAGARI DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0096e , 0x00038 }, // <DEVANAGARI DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0096f , 0x00039 }, // <DEVANAGARI DIGIT NINE> => <DIGIT NINE>
+ { 0x009dc , 0x009a1 }, // <BENGALI LETTER RRA> => <BENGALI LETTER DDA>
+ { 0x009dd , 0x009a2 }, // <BENGALI LETTER RHA> => <BENGALI LETTER DDHA>
+ { 0x009df , 0x009af }, // <BENGALI LETTER YYA> => <BENGALI LETTER YA>
+ { 0x009e6 , 0x00030 }, // <BENGALI DIGIT ZERO> => <DIGIT ZERO>
+ { 0x009e7 , 0x00031 }, // <BENGALI DIGIT ONE> => <DIGIT ONE>
+ { 0x009e8 , 0x00032 }, // <BENGALI DIGIT TWO> => <DIGIT TWO>
+ { 0x009e9 , 0x00033 }, // <BENGALI DIGIT THREE> => <DIGIT THREE>
+ { 0x009ea , 0x00034 }, // <BENGALI DIGIT FOUR> => <DIGIT FOUR>
+ { 0x009eb , 0x00035 }, // <BENGALI DIGIT FIVE> => <DIGIT FIVE>
+ { 0x009ec , 0x00036 }, // <BENGALI DIGIT SIX> => <DIGIT SIX>
+ { 0x009ed , 0x00037 }, // <BENGALI DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x009ee , 0x00038 }, // <BENGALI DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x009ef , 0x00039 }, // <BENGALI DIGIT NINE> => <DIGIT NINE>
+ { 0x00a33 , 0x00a32 }, // <GURMUKHI LETTER LLA> => <GURMUKHI LETTER LA>
+ { 0x00a36 , 0x00a38 }, // <GURMUKHI LETTER SHA> => <GURMUKHI LETTER SA>
+ { 0x00a59 , 0x00a16 }, // <GURMUKHI LETTER KHHA> => <GURMUKHI LETTER KHA>
+ { 0x00a5a , 0x00a17 }, // <GURMUKHI LETTER GHHA> => <GURMUKHI LETTER GA>
+ { 0x00a5b , 0x00a1c }, // <GURMUKHI LETTER ZA> => <GURMUKHI LETTER JA>
+ { 0x00a5e , 0x00a2b }, // <GURMUKHI LETTER FA> => <GURMUKHI LETTER PHA>
+ { 0x00a66 , 0x00030 }, // <GURMUKHI DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00a67 , 0x00031 }, // <GURMUKHI DIGIT ONE> => <DIGIT ONE>
+ { 0x00a68 , 0x00032 }, // <GURMUKHI DIGIT TWO> => <DIGIT TWO>
+ { 0x00a69 , 0x00033 }, // <GURMUKHI DIGIT THREE> => <DIGIT THREE>
+ { 0x00a6a , 0x00034 }, // <GURMUKHI DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00a6b , 0x00035 }, // <GURMUKHI DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00a6c , 0x00036 }, // <GURMUKHI DIGIT SIX> => <DIGIT SIX>
+ { 0x00a6d , 0x00037 }, // <GURMUKHI DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00a6e , 0x00038 }, // <GURMUKHI DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00a6f , 0x00039 }, // <GURMUKHI DIGIT NINE> => <DIGIT NINE>
+ { 0x00ae6 , 0x00030 }, // <GUJARATI DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00ae7 , 0x00031 }, // <GUJARATI DIGIT ONE> => <DIGIT ONE>
+ { 0x00ae8 , 0x00032 }, // <GUJARATI DIGIT TWO> => <DIGIT TWO>
+ { 0x00ae9 , 0x00033 }, // <GUJARATI DIGIT THREE> => <DIGIT THREE>
+ { 0x00aea , 0x00034 }, // <GUJARATI DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00aeb , 0x00035 }, // <GUJARATI DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00aec , 0x00036 }, // <GUJARATI DIGIT SIX> => <DIGIT SIX>
+ { 0x00aed , 0x00037 }, // <GUJARATI DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00aee , 0x00038 }, // <GUJARATI DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00aef , 0x00039 }, // <GUJARATI DIGIT NINE> => <DIGIT NINE>
+ { 0x00b5c , 0x00b21 }, // <ORIYA LETTER RRA> => <ORIYA LETTER DDA>
+ { 0x00b5d , 0x00b22 }, // <ORIYA LETTER RHA> => <ORIYA LETTER DDHA>
+ { 0x00b66 , 0x00030 }, // <ORIYA DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00b67 , 0x00031 }, // <ORIYA DIGIT ONE> => <DIGIT ONE>
+ { 0x00b68 , 0x00032 }, // <ORIYA DIGIT TWO> => <DIGIT TWO>
+ { 0x00b69 , 0x00033 }, // <ORIYA DIGIT THREE> => <DIGIT THREE>
+ { 0x00b6a , 0x00034 }, // <ORIYA DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00b6b , 0x00035 }, // <ORIYA DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00b6c , 0x00036 }, // <ORIYA DIGIT SIX> => <DIGIT SIX>
+ { 0x00b6d , 0x00037 }, // <ORIYA DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00b6e , 0x00038 }, // <ORIYA DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00b6f , 0x00039 }, // <ORIYA DIGIT NINE> => <DIGIT NINE>
+ { 0x00be6 , 0x00030 }, // <TAMIL DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00be7 , 0x00031 }, // <TAMIL DIGIT ONE> => <DIGIT ONE>
+ { 0x00be8 , 0x00032 }, // <TAMIL DIGIT TWO> => <DIGIT TWO>
+ { 0x00be9 , 0x00033 }, // <TAMIL DIGIT THREE> => <DIGIT THREE>
+ { 0x00bea , 0x00034 }, // <TAMIL DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00beb , 0x00035 }, // <TAMIL DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00bec , 0x00036 }, // <TAMIL DIGIT SIX> => <DIGIT SIX>
+ { 0x00bed , 0x00037 }, // <TAMIL DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00bee , 0x00038 }, // <TAMIL DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00bef , 0x00039 }, // <TAMIL DIGIT NINE> => <DIGIT NINE>
+ { 0x00c66 , 0x00030 }, // <TELUGU DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00c67 , 0x00031 }, // <TELUGU DIGIT ONE> => <DIGIT ONE>
+ { 0x00c68 , 0x00032 }, // <TELUGU DIGIT TWO> => <DIGIT TWO>
+ { 0x00c69 , 0x00033 }, // <TELUGU DIGIT THREE> => <DIGIT THREE>
+ { 0x00c6a , 0x00034 }, // <TELUGU DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00c6b , 0x00035 }, // <TELUGU DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00c6c , 0x00036 }, // <TELUGU DIGIT SIX> => <DIGIT SIX>
+ { 0x00c6d , 0x00037 }, // <TELUGU DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00c6e , 0x00038 }, // <TELUGU DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00c6f , 0x00039 }, // <TELUGU DIGIT NINE> => <DIGIT NINE>
+ { 0x00c78 , 0x00030 }, // <TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR> => <DIGIT ZERO>
+ { 0x00c79 , 0x00031 }, // <TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR> => <DIGIT ONE>
+ { 0x00c7a , 0x00032 }, // <TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR> => <DIGIT TWO>
+ { 0x00c7b , 0x00033 }, // <TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR> => <DIGIT THREE>
+ { 0x00c7c , 0x00031 }, // <TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR> => <DIGIT ONE>
+ { 0x00c7d , 0x00032 }, // <TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR> => <DIGIT TWO>
+ { 0x00c7e , 0x00033 }, // <TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR> => <DIGIT THREE>
+ { 0x00ce6 , 0x00030 }, // <KANNADA DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00ce7 , 0x00031 }, // <KANNADA DIGIT ONE> => <DIGIT ONE>
+ { 0x00ce8 , 0x00032 }, // <KANNADA DIGIT TWO> => <DIGIT TWO>
+ { 0x00ce9 , 0x00033 }, // <KANNADA DIGIT THREE> => <DIGIT THREE>
+ { 0x00cea , 0x00034 }, // <KANNADA DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00ceb , 0x00035 }, // <KANNADA DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00cec , 0x00036 }, // <KANNADA DIGIT SIX> => <DIGIT SIX>
+ { 0x00ced , 0x00037 }, // <KANNADA DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00cee , 0x00038 }, // <KANNADA DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00cef , 0x00039 }, // <KANNADA DIGIT NINE> => <DIGIT NINE>
+ { 0x00d66 , 0x00030 }, // <MALAYALAM DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00d67 , 0x00031 }, // <MALAYALAM DIGIT ONE> => <DIGIT ONE>
+ { 0x00d68 , 0x00032 }, // <MALAYALAM DIGIT TWO> => <DIGIT TWO>
+ { 0x00d69 , 0x00033 }, // <MALAYALAM DIGIT THREE> => <DIGIT THREE>
+ { 0x00d6a , 0x00034 }, // <MALAYALAM DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00d6b , 0x00035 }, // <MALAYALAM DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00d6c , 0x00036 }, // <MALAYALAM DIGIT SIX> => <DIGIT SIX>
+ { 0x00d6d , 0x00037 }, // <MALAYALAM DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00d6e , 0x00038 }, // <MALAYALAM DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00d6f , 0x00039 }, // <MALAYALAM DIGIT NINE> => <DIGIT NINE>
+ { 0x00de6 , 0x00030 }, // <SINHALA LITH DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00de7 , 0x00031 }, // <SINHALA LITH DIGIT ONE> => <DIGIT ONE>
+ { 0x00de8 , 0x00032 }, // <SINHALA LITH DIGIT TWO> => <DIGIT TWO>
+ { 0x00de9 , 0x00033 }, // <SINHALA LITH DIGIT THREE> => <DIGIT THREE>
+ { 0x00dea , 0x00034 }, // <SINHALA LITH DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00deb , 0x00035 }, // <SINHALA LITH DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00dec , 0x00036 }, // <SINHALA LITH DIGIT SIX> => <DIGIT SIX>
+ { 0x00ded , 0x00037 }, // <SINHALA LITH DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00dee , 0x00038 }, // <SINHALA LITH DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00def , 0x00039 }, // <SINHALA LITH DIGIT NINE> => <DIGIT NINE>
+ { 0x00e50 , 0x00030 }, // <THAI DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00e51 , 0x00031 }, // <THAI DIGIT ONE> => <DIGIT ONE>
+ { 0x00e52 , 0x00032 }, // <THAI DIGIT TWO> => <DIGIT TWO>
+ { 0x00e53 , 0x00033 }, // <THAI DIGIT THREE> => <DIGIT THREE>
+ { 0x00e54 , 0x00034 }, // <THAI DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00e55 , 0x00035 }, // <THAI DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00e56 , 0x00036 }, // <THAI DIGIT SIX> => <DIGIT SIX>
+ { 0x00e57 , 0x00037 }, // <THAI DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00e58 , 0x00038 }, // <THAI DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00e59 , 0x00039 }, // <THAI DIGIT NINE> => <DIGIT NINE>
+ { 0x00ed0 , 0x00030 }, // <LAO DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00ed1 , 0x00031 }, // <LAO DIGIT ONE> => <DIGIT ONE>
+ { 0x00ed2 , 0x00032 }, // <LAO DIGIT TWO> => <DIGIT TWO>
+ { 0x00ed3 , 0x00033 }, // <LAO DIGIT THREE> => <DIGIT THREE>
+ { 0x00ed4 , 0x00034 }, // <LAO DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00ed5 , 0x00035 }, // <LAO DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00ed6 , 0x00036 }, // <LAO DIGIT SIX> => <DIGIT SIX>
+ { 0x00ed7 , 0x00037 }, // <LAO DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00ed8 , 0x00038 }, // <LAO DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00ed9 , 0x00039 }, // <LAO DIGIT NINE> => <DIGIT NINE>
+ { 0x00f20 , 0x00030 }, // <TIBETAN DIGIT ZERO> => <DIGIT ZERO>
+ { 0x00f21 , 0x00031 }, // <TIBETAN DIGIT ONE> => <DIGIT ONE>
+ { 0x00f22 , 0x00032 }, // <TIBETAN DIGIT TWO> => <DIGIT TWO>
+ { 0x00f23 , 0x00033 }, // <TIBETAN DIGIT THREE> => <DIGIT THREE>
+ { 0x00f24 , 0x00034 }, // <TIBETAN DIGIT FOUR> => <DIGIT FOUR>
+ { 0x00f25 , 0x00035 }, // <TIBETAN DIGIT FIVE> => <DIGIT FIVE>
+ { 0x00f26 , 0x00036 }, // <TIBETAN DIGIT SIX> => <DIGIT SIX>
+ { 0x00f27 , 0x00037 }, // <TIBETAN DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x00f28 , 0x00038 }, // <TIBETAN DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x00f29 , 0x00039 }, // <TIBETAN DIGIT NINE> => <DIGIT NINE>
+ { 0x00f2a , 0x00031 }, // <TIBETAN DIGIT HALF ONE> => <DIGIT ONE>
+ { 0x00f2b , 0x00032 }, // <TIBETAN DIGIT HALF TWO> => <DIGIT TWO>
+ { 0x00f2c , 0x00033 }, // <TIBETAN DIGIT HALF THREE> => <DIGIT THREE>
+ { 0x00f2d , 0x00034 }, // <TIBETAN DIGIT HALF FOUR> => <DIGIT FOUR>
+ { 0x00f2e , 0x00035 }, // <TIBETAN DIGIT HALF FIVE> => <DIGIT FIVE>
+ { 0x00f2f , 0x00036 }, // <TIBETAN DIGIT HALF SIX> => <DIGIT SIX>
+ { 0x00f30 , 0x00037 }, // <TIBETAN DIGIT HALF SEVEN> => <DIGIT SEVEN>
+ { 0x00f31 , 0x00038 }, // <TIBETAN DIGIT HALF EIGHT> => <DIGIT EIGHT>
+ { 0x00f32 , 0x00039 }, // <TIBETAN DIGIT HALF NINE> => <DIGIT NINE>
+ { 0x00f33 , 0x00030 }, // <TIBETAN DIGIT HALF ZERO> => <DIGIT ZERO>
+ { 0x00f6a , 0x00f62 }, // <TIBETAN LETTER FIXED-FORM RA> => <TIBETAN LETTER RA>
+ { 0x01040 , 0x00030 }, // <MYANMAR DIGIT ZERO> => <DIGIT ZERO>
+ { 0x01041 , 0x00031 }, // <MYANMAR DIGIT ONE> => <DIGIT ONE>
+ { 0x01042 , 0x00032 }, // <MYANMAR DIGIT TWO> => <DIGIT TWO>
+ { 0x01043 , 0x00033 }, // <MYANMAR DIGIT THREE> => <DIGIT THREE>
+ { 0x01044 , 0x00034 }, // <MYANMAR DIGIT FOUR> => <DIGIT FOUR>
+ { 0x01045 , 0x00035 }, // <MYANMAR DIGIT FIVE> => <DIGIT FIVE>
+ { 0x01046 , 0x00036 }, // <MYANMAR DIGIT SIX> => <DIGIT SIX>
+ { 0x01047 , 0x00037 }, // <MYANMAR DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x01048 , 0x00038 }, // <MYANMAR DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x01049 , 0x00039 }, // <MYANMAR DIGIT NINE> => <DIGIT NINE>
+ { 0x01090 , 0x00030 }, // <MYANMAR SHAN DIGIT ZERO> => <DIGIT ZERO>
+ { 0x01091 , 0x00031 }, // <MYANMAR SHAN DIGIT ONE> => <DIGIT ONE>
+ { 0x01092 , 0x00032 }, // <MYANMAR SHAN DIGIT TWO> => <DIGIT TWO>
+ { 0x01093 , 0x00033 }, // <MYANMAR SHAN DIGIT THREE> => <DIGIT THREE>
+ { 0x01094 , 0x00034 }, // <MYANMAR SHAN DIGIT FOUR> => <DIGIT FOUR>
+ { 0x01095 , 0x00035 }, // <MYANMAR SHAN DIGIT FIVE> => <DIGIT FIVE>
+ { 0x01096 , 0x00036 }, // <MYANMAR SHAN DIGIT SIX> => <DIGIT SIX>
+ { 0x01097 , 0x00037 }, // <MYANMAR SHAN DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x01098 , 0x00038 }, // <MYANMAR SHAN DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x01099 , 0x00039 }, // <MYANMAR SHAN DIGIT NINE> => <DIGIT NINE>
+ { 0x010a0 , 0x02d00 }, // <GEORGIAN CAPITAL LETTER AN> => <GEORGIAN SMALL LETTER AN>
+ { 0x010a1 , 0x02d01 }, // <GEORGIAN CAPITAL LETTER BAN> => <GEORGIAN SMALL LETTER BAN>
+ { 0x010a2 , 0x02d02 }, // <GEORGIAN CAPITAL LETTER GAN> => <GEORGIAN SMALL LETTER GAN>
+ { 0x010a3 , 0x02d03 }, // <GEORGIAN CAPITAL LETTER DON> => <GEORGIAN SMALL LETTER DON>
+ { 0x010a4 , 0x02d04 }, // <GEORGIAN CAPITAL LETTER EN> => <GEORGIAN SMALL LETTER EN>
+ { 0x010a5 , 0x02d05 }, // <GEORGIAN CAPITAL LETTER VIN> => <GEORGIAN SMALL LETTER VIN>
+ { 0x010a6 , 0x02d06 }, // <GEORGIAN CAPITAL LETTER ZEN> => <GEORGIAN SMALL LETTER ZEN>
+ { 0x010a7 , 0x02d07 }, // <GEORGIAN CAPITAL LETTER TAN> => <GEORGIAN SMALL LETTER TAN>
+ { 0x010a8 , 0x02d08 }, // <GEORGIAN CAPITAL LETTER IN> => <GEORGIAN SMALL LETTER IN>
+ { 0x010a9 , 0x02d09 }, // <GEORGIAN CAPITAL LETTER KAN> => <GEORGIAN SMALL LETTER KAN>
+ { 0x010aa , 0x02d0a }, // <GEORGIAN CAPITAL LETTER LAS> => <GEORGIAN SMALL LETTER LAS>
+ { 0x010ab , 0x02d0b }, // <GEORGIAN CAPITAL LETTER MAN> => <GEORGIAN SMALL LETTER MAN>
+ { 0x010ac , 0x02d0c }, // <GEORGIAN CAPITAL LETTER NAR> => <GEORGIAN SMALL LETTER NAR>
+ { 0x010ad , 0x02d0d }, // <GEORGIAN CAPITAL LETTER ON> => <GEORGIAN SMALL LETTER ON>
+ { 0x010ae , 0x02d0e }, // <GEORGIAN CAPITAL LETTER PAR> => <GEORGIAN SMALL LETTER PAR>
+ { 0x010af , 0x02d0f }, // <GEORGIAN CAPITAL LETTER ZHAR> => <GEORGIAN SMALL LETTER ZHAR>
+ { 0x010b0 , 0x02d10 }, // <GEORGIAN CAPITAL LETTER RAE> => <GEORGIAN SMALL LETTER RAE>
+ { 0x010b1 , 0x02d11 }, // <GEORGIAN CAPITAL LETTER SAN> => <GEORGIAN SMALL LETTER SAN>
+ { 0x010b2 , 0x02d12 }, // <GEORGIAN CAPITAL LETTER TAR> => <GEORGIAN SMALL LETTER TAR>
+ { 0x010b3 , 0x02d13 }, // <GEORGIAN CAPITAL LETTER UN> => <GEORGIAN SMALL LETTER UN>
+ { 0x010b4 , 0x02d14 }, // <GEORGIAN CAPITAL LETTER PHAR> => <GEORGIAN SMALL LETTER PHAR>
+ { 0x010b5 , 0x02d15 }, // <GEORGIAN CAPITAL LETTER KHAR> => <GEORGIAN SMALL LETTER KHAR>
+ { 0x010b6 , 0x02d16 }, // <GEORGIAN CAPITAL LETTER GHAN> => <GEORGIAN SMALL LETTER GHAN>
+ { 0x010b7 , 0x02d17 }, // <GEORGIAN CAPITAL LETTER QAR> => <GEORGIAN SMALL LETTER QAR>
+ { 0x010b8 , 0x02d18 }, // <GEORGIAN CAPITAL LETTER SHIN> => <GEORGIAN SMALL LETTER SHIN>
+ { 0x010b9 , 0x02d19 }, // <GEORGIAN CAPITAL LETTER CHIN> => <GEORGIAN SMALL LETTER CHIN>
+ { 0x010ba , 0x02d1a }, // <GEORGIAN CAPITAL LETTER CAN> => <GEORGIAN SMALL LETTER CAN>
+ { 0x010bb , 0x02d1b }, // <GEORGIAN CAPITAL LETTER JIL> => <GEORGIAN SMALL LETTER JIL>
+ { 0x010bc , 0x02d1c }, // <GEORGIAN CAPITAL LETTER CIL> => <GEORGIAN SMALL LETTER CIL>
+ { 0x010bd , 0x02d1d }, // <GEORGIAN CAPITAL LETTER CHAR> => <GEORGIAN SMALL LETTER CHAR>
+ { 0x010be , 0x02d1e }, // <GEORGIAN CAPITAL LETTER XAN> => <GEORGIAN SMALL LETTER XAN>
+ { 0x010bf , 0x02d1f }, // <GEORGIAN CAPITAL LETTER JHAN> => <GEORGIAN SMALL LETTER JHAN>
+ { 0x010c0 , 0x02d20 }, // <GEORGIAN CAPITAL LETTER HAE> => <GEORGIAN SMALL LETTER HAE>
+ { 0x010c1 , 0x02d21 }, // <GEORGIAN CAPITAL LETTER HE> => <GEORGIAN SMALL LETTER HE>
+ { 0x010c2 , 0x02d22 }, // <GEORGIAN CAPITAL LETTER HIE> => <GEORGIAN SMALL LETTER HIE>
+ { 0x010c3 , 0x02d23 }, // <GEORGIAN CAPITAL LETTER WE> => <GEORGIAN SMALL LETTER WE>
+ { 0x010c4 , 0x02d24 }, // <GEORGIAN CAPITAL LETTER HAR> => <GEORGIAN SMALL LETTER HAR>
+ { 0x010c5 , 0x02d25 }, // <GEORGIAN CAPITAL LETTER HOE> => <GEORGIAN SMALL LETTER HOE>
+ { 0x010c7 , 0x02d27 }, // <GEORGIAN CAPITAL LETTER YN> => <GEORGIAN SMALL LETTER YN>
+ { 0x010cd , 0x02d2d }, // <GEORGIAN CAPITAL LETTER AEN> => <GEORGIAN SMALL LETTER AEN>
+ { 0x010fc , 0x010dc }, // <MODIFIER LETTER GEORGIAN NAR> => <GEORGIAN LETTER NAR>
+ { 0x01369 , 0x00031 }, // <ETHIOPIC DIGIT ONE> => <DIGIT ONE>
+ { 0x0136a , 0x00032 }, // <ETHIOPIC DIGIT TWO> => <DIGIT TWO>
+ { 0x0136b , 0x00033 }, // <ETHIOPIC DIGIT THREE> => <DIGIT THREE>
+ { 0x0136c , 0x00034 }, // <ETHIOPIC DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0136d , 0x00035 }, // <ETHIOPIC DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0136e , 0x00036 }, // <ETHIOPIC DIGIT SIX> => <DIGIT SIX>
+ { 0x0136f , 0x00037 }, // <ETHIOPIC DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x01370 , 0x00038 }, // <ETHIOPIC DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x01371 , 0x00039 }, // <ETHIOPIC DIGIT NINE> => <DIGIT NINE>
+ { 0x013a0 , 0x0ab70 }, // <CHEROKEE LETTER A> => <CHEROKEE SMALL LETTER A>
+ { 0x013a1 , 0x0ab71 }, // <CHEROKEE LETTER E> => <CHEROKEE SMALL LETTER E>
+ { 0x013a2 , 0x0ab72 }, // <CHEROKEE LETTER I> => <CHEROKEE SMALL LETTER I>
+ { 0x013a3 , 0x0ab73 }, // <CHEROKEE LETTER O> => <CHEROKEE SMALL LETTER O>
+ { 0x013a4 , 0x0ab74 }, // <CHEROKEE LETTER U> => <CHEROKEE SMALL LETTER U>
+ { 0x013a5 , 0x0ab75 }, // <CHEROKEE LETTER V> => <CHEROKEE SMALL LETTER V>
+ { 0x013a6 , 0x0ab76 }, // <CHEROKEE LETTER GA> => <CHEROKEE SMALL LETTER GA>
+ { 0x013a7 , 0x0ab77 }, // <CHEROKEE LETTER KA> => <CHEROKEE SMALL LETTER KA>
+ { 0x013a8 , 0x0ab78 }, // <CHEROKEE LETTER GE> => <CHEROKEE SMALL LETTER GE>
+ { 0x013a9 , 0x0ab79 }, // <CHEROKEE LETTER GI> => <CHEROKEE SMALL LETTER GI>
+ { 0x013aa , 0x0ab7a }, // <CHEROKEE LETTER GO> => <CHEROKEE SMALL LETTER GO>
+ { 0x013ab , 0x0ab7b }, // <CHEROKEE LETTER GU> => <CHEROKEE SMALL LETTER GU>
+ { 0x013ac , 0x0ab7c }, // <CHEROKEE LETTER GV> => <CHEROKEE SMALL LETTER GV>
+ { 0x013ad , 0x0ab7d }, // <CHEROKEE LETTER HA> => <CHEROKEE SMALL LETTER HA>
+ { 0x013ae , 0x0ab7e }, // <CHEROKEE LETTER HE> => <CHEROKEE SMALL LETTER HE>
+ { 0x013af , 0x0ab7f }, // <CHEROKEE LETTER HI> => <CHEROKEE SMALL LETTER HI>
+ { 0x013b0 , 0x0ab80 }, // <CHEROKEE LETTER HO> => <CHEROKEE SMALL LETTER HO>
+ { 0x013b1 , 0x0ab81 }, // <CHEROKEE LETTER HU> => <CHEROKEE SMALL LETTER HU>
+ { 0x013b2 , 0x0ab82 }, // <CHEROKEE LETTER HV> => <CHEROKEE SMALL LETTER HV>
+ { 0x013b3 , 0x0ab83 }, // <CHEROKEE LETTER LA> => <CHEROKEE SMALL LETTER LA>
+ { 0x013b4 , 0x0ab84 }, // <CHEROKEE LETTER LE> => <CHEROKEE SMALL LETTER LE>
+ { 0x013b5 , 0x0ab85 }, // <CHEROKEE LETTER LI> => <CHEROKEE SMALL LETTER LI>
+ { 0x013b6 , 0x0ab86 }, // <CHEROKEE LETTER LO> => <CHEROKEE SMALL LETTER LO>
+ { 0x013b7 , 0x0ab87 }, // <CHEROKEE LETTER LU> => <CHEROKEE SMALL LETTER LU>
+ { 0x013b8 , 0x0ab88 }, // <CHEROKEE LETTER LV> => <CHEROKEE SMALL LETTER LV>
+ { 0x013b9 , 0x0ab89 }, // <CHEROKEE LETTER MA> => <CHEROKEE SMALL LETTER MA>
+ { 0x013ba , 0x0ab8a }, // <CHEROKEE LETTER ME> => <CHEROKEE SMALL LETTER ME>
+ { 0x013bb , 0x0ab8b }, // <CHEROKEE LETTER MI> => <CHEROKEE SMALL LETTER MI>
+ { 0x013bc , 0x0ab8c }, // <CHEROKEE LETTER MO> => <CHEROKEE SMALL LETTER MO>
+ { 0x013bd , 0x0ab8d }, // <CHEROKEE LETTER MU> => <CHEROKEE SMALL LETTER MU>
+ { 0x013be , 0x0ab8e }, // <CHEROKEE LETTER NA> => <CHEROKEE SMALL LETTER NA>
+ { 0x013bf , 0x0ab8f }, // <CHEROKEE LETTER HNA> => <CHEROKEE SMALL LETTER HNA>
+ { 0x013c0 , 0x0ab90 }, // <CHEROKEE LETTER NAH> => <CHEROKEE SMALL LETTER NAH>
+ { 0x013c1 , 0x0ab91 }, // <CHEROKEE LETTER NE> => <CHEROKEE SMALL LETTER NE>
+ { 0x013c2 , 0x0ab92 }, // <CHEROKEE LETTER NI> => <CHEROKEE SMALL LETTER NI>
+ { 0x013c3 , 0x0ab93 }, // <CHEROKEE LETTER NO> => <CHEROKEE SMALL LETTER NO>
+ { 0x013c4 , 0x0ab94 }, // <CHEROKEE LETTER NU> => <CHEROKEE SMALL LETTER NU>
+ { 0x013c5 , 0x0ab95 }, // <CHEROKEE LETTER NV> => <CHEROKEE SMALL LETTER NV>
+ { 0x013c6 , 0x0ab96 }, // <CHEROKEE LETTER QUA> => <CHEROKEE SMALL LETTER QUA>
+ { 0x013c7 , 0x0ab97 }, // <CHEROKEE LETTER QUE> => <CHEROKEE SMALL LETTER QUE>
+ { 0x013c8 , 0x0ab98 }, // <CHEROKEE LETTER QUI> => <CHEROKEE SMALL LETTER QUI>
+ { 0x013c9 , 0x0ab99 }, // <CHEROKEE LETTER QUO> => <CHEROKEE SMALL LETTER QUO>
+ { 0x013ca , 0x0ab9a }, // <CHEROKEE LETTER QUU> => <CHEROKEE SMALL LETTER QUU>
+ { 0x013cb , 0x0ab9b }, // <CHEROKEE LETTER QUV> => <CHEROKEE SMALL LETTER QUV>
+ { 0x013cc , 0x0ab9c }, // <CHEROKEE LETTER SA> => <CHEROKEE SMALL LETTER SA>
+ { 0x013cd , 0x0ab9d }, // <CHEROKEE LETTER S> => <CHEROKEE SMALL LETTER S>
+ { 0x013ce , 0x0ab9e }, // <CHEROKEE LETTER SE> => <CHEROKEE SMALL LETTER SE>
+ { 0x013cf , 0x0ab9f }, // <CHEROKEE LETTER SI> => <CHEROKEE SMALL LETTER SI>
+ { 0x013d0 , 0x0aba0 }, // <CHEROKEE LETTER SO> => <CHEROKEE SMALL LETTER SO>
+ { 0x013d1 , 0x0aba1 }, // <CHEROKEE LETTER SU> => <CHEROKEE SMALL LETTER SU>
+ { 0x013d2 , 0x0aba2 }, // <CHEROKEE LETTER SV> => <CHEROKEE SMALL LETTER SV>
+ { 0x013d3 , 0x0aba3 }, // <CHEROKEE LETTER DA> => <CHEROKEE SMALL LETTER DA>
+ { 0x013d4 , 0x0aba4 }, // <CHEROKEE LETTER TA> => <CHEROKEE SMALL LETTER TA>
+ { 0x013d5 , 0x0aba5 }, // <CHEROKEE LETTER DE> => <CHEROKEE SMALL LETTER DE>
+ { 0x013d6 , 0x0aba6 }, // <CHEROKEE LETTER TE> => <CHEROKEE SMALL LETTER TE>
+ { 0x013d7 , 0x0aba7 }, // <CHEROKEE LETTER DI> => <CHEROKEE SMALL LETTER DI>
+ { 0x013d8 , 0x0aba8 }, // <CHEROKEE LETTER TI> => <CHEROKEE SMALL LETTER TI>
+ { 0x013d9 , 0x0aba9 }, // <CHEROKEE LETTER DO> => <CHEROKEE SMALL LETTER DO>
+ { 0x013da , 0x0abaa }, // <CHEROKEE LETTER DU> => <CHEROKEE SMALL LETTER DU>
+ { 0x013db , 0x0abab }, // <CHEROKEE LETTER DV> => <CHEROKEE SMALL LETTER DV>
+ { 0x013dc , 0x0abac }, // <CHEROKEE LETTER DLA> => <CHEROKEE SMALL LETTER DLA>
+ { 0x013dd , 0x0abad }, // <CHEROKEE LETTER TLA> => <CHEROKEE SMALL LETTER TLA>
+ { 0x013de , 0x0abae }, // <CHEROKEE LETTER TLE> => <CHEROKEE SMALL LETTER TLE>
+ { 0x013df , 0x0abaf }, // <CHEROKEE LETTER TLI> => <CHEROKEE SMALL LETTER TLI>
+ { 0x013e0 , 0x0abb0 }, // <CHEROKEE LETTER TLO> => <CHEROKEE SMALL LETTER TLO>
+ { 0x013e1 , 0x0abb1 }, // <CHEROKEE LETTER TLU> => <CHEROKEE SMALL LETTER TLU>
+ { 0x013e2 , 0x0abb2 }, // <CHEROKEE LETTER TLV> => <CHEROKEE SMALL LETTER TLV>
+ { 0x013e3 , 0x0abb3 }, // <CHEROKEE LETTER TSA> => <CHEROKEE SMALL LETTER TSA>
+ { 0x013e4 , 0x0abb4 }, // <CHEROKEE LETTER TSE> => <CHEROKEE SMALL LETTER TSE>
+ { 0x013e5 , 0x0abb5 }, // <CHEROKEE LETTER TSI> => <CHEROKEE SMALL LETTER TSI>
+ { 0x013e6 , 0x0abb6 }, // <CHEROKEE LETTER TSO> => <CHEROKEE SMALL LETTER TSO>
+ { 0x013e7 , 0x0abb7 }, // <CHEROKEE LETTER TSU> => <CHEROKEE SMALL LETTER TSU>
+ { 0x013e8 , 0x0abb8 }, // <CHEROKEE LETTER TSV> => <CHEROKEE SMALL LETTER TSV>
+ { 0x013e9 , 0x0abb9 }, // <CHEROKEE LETTER WA> => <CHEROKEE SMALL LETTER WA>
+ { 0x013ea , 0x0abba }, // <CHEROKEE LETTER WE> => <CHEROKEE SMALL LETTER WE>
+ { 0x013eb , 0x0abbb }, // <CHEROKEE LETTER WI> => <CHEROKEE SMALL LETTER WI>
+ { 0x013ec , 0x0abbc }, // <CHEROKEE LETTER WO> => <CHEROKEE SMALL LETTER WO>
+ { 0x013ed , 0x0abbd }, // <CHEROKEE LETTER WU> => <CHEROKEE SMALL LETTER WU>
+ { 0x013ee , 0x0abbe }, // <CHEROKEE LETTER WV> => <CHEROKEE SMALL LETTER WV>
+ { 0x013ef , 0x0abbf }, // <CHEROKEE LETTER YA> => <CHEROKEE SMALL LETTER YA>
+ { 0x013f0 , 0x013f8 }, // <CHEROKEE LETTER YE> => <CHEROKEE SMALL LETTER YE>
+ { 0x013f1 , 0x013f9 }, // <CHEROKEE LETTER YI> => <CHEROKEE SMALL LETTER YI>
+ { 0x013f2 , 0x013fa }, // <CHEROKEE LETTER YO> => <CHEROKEE SMALL LETTER YO>
+ { 0x013f3 , 0x013fb }, // <CHEROKEE LETTER YU> => <CHEROKEE SMALL LETTER YU>
+ { 0x013f4 , 0x013fc }, // <CHEROKEE LETTER YV> => <CHEROKEE SMALL LETTER YV>
+ { 0x013f5 , 0x013fd }, // <CHEROKEE LETTER MV> => <CHEROKEE SMALL LETTER MV>
+ { 0x016a1 , 0x016a0 }, // <RUNIC LETTER V> => <RUNIC LETTER FEHU FEOH FE F>
+ { 0x016a4 , 0x016a2 }, // <RUNIC LETTER Y> => <RUNIC LETTER URUZ UR U>
+ { 0x016a5 , 0x016a2 }, // <RUNIC LETTER W> => <RUNIC LETTER URUZ UR U>
+ { 0x016a7 , 0x016a6 }, // <RUNIC LETTER ETH> => <RUNIC LETTER THURISAZ THURS THORN>
+ { 0x016a9 , 0x016a8 }, // <RUNIC LETTER OS O> => <RUNIC LETTER ANSUZ A>
+ { 0x016ac , 0x016a8 }, // <RUNIC LETTER LONG-BRANCH-OSS O> => <RUNIC LETTER ANSUZ A>
+ { 0x016ad , 0x016a8 }, // <RUNIC LETTER SHORT-TWIG-OSS O> => <RUNIC LETTER ANSUZ A>
+ { 0x016ae , 0x016a8 }, // <RUNIC LETTER O> => <RUNIC LETTER ANSUZ A>
+ { 0x016b3 , 0x016b2 }, // <RUNIC LETTER CEN> => <RUNIC LETTER KAUNA>
+ { 0x016b4 , 0x016b2 }, // <RUNIC LETTER KAUN K> => <RUNIC LETTER KAUNA>
+ { 0x016b5 , 0x016b2 }, // <RUNIC LETTER G> => <RUNIC LETTER KAUNA>
+ { 0x016b6 , 0x016b2 }, // <RUNIC LETTER ENG> => <RUNIC LETTER KAUNA>
+ { 0x016bb , 0x016ba }, // <RUNIC LETTER HAEGL H> => <RUNIC LETTER HAGLAZ H>
+ { 0x016bc , 0x016ba }, // <RUNIC LETTER LONG-BRANCH-HAGALL H> => <RUNIC LETTER HAGLAZ H>
+ { 0x016bd , 0x016ba }, // <RUNIC LETTER SHORT-TWIG-HAGALL H> => <RUNIC LETTER HAGLAZ H>
+ { 0x016bf , 0x016be }, // <RUNIC LETTER SHORT-TWIG-NAUD N> => <RUNIC LETTER NAUDIZ NYD NAUD N>
+ { 0x016c0 , 0x016be }, // <RUNIC LETTER DOTTED-N> => <RUNIC LETTER NAUDIZ NYD NAUD N>
+ { 0x016c2 , 0x016c1 }, // <RUNIC LETTER E> => <RUNIC LETTER ISAZ IS ISS I>
+ { 0x016c4 , 0x016c3 }, // <RUNIC LETTER GER> => <RUNIC LETTER JERAN J>
+ { 0x016c6 , 0x016c5 }, // <RUNIC LETTER SHORT-TWIG-AR A> => <RUNIC LETTER LONG-BRANCH-AR AE>
+ { 0x016cb , 0x016ca }, // <RUNIC LETTER SIGEL LONG-BRANCH-SOL S> => <RUNIC LETTER SOWILO S>
+ { 0x016cc , 0x016ca }, // <RUNIC LETTER SHORT-TWIG-SOL S> => <RUNIC LETTER SOWILO S>
+ { 0x016cd , 0x016ca }, // <RUNIC LETTER C> => <RUNIC LETTER SOWILO S>
+ { 0x016ce , 0x016ca }, // <RUNIC LETTER Z> => <RUNIC LETTER SOWILO S>
+ { 0x016d0 , 0x016cf }, // <RUNIC LETTER SHORT-TWIG-TYR T> => <RUNIC LETTER TIWAZ TIR TYR T>
+ { 0x016d1 , 0x016cf }, // <RUNIC LETTER D> => <RUNIC LETTER TIWAZ TIR TYR T>
+ { 0x016d3 , 0x016d2 }, // <RUNIC LETTER SHORT-TWIG-BJARKAN B> => <RUNIC LETTER BERKANAN BEORC BJARKAN B>
+ { 0x016d4 , 0x016d2 }, // <RUNIC LETTER DOTTED-P> => <RUNIC LETTER BERKANAN BEORC BJARKAN B>
+ { 0x016d5 , 0x016c8 }, // <RUNIC LETTER OPEN-P> => <RUNIC LETTER PERTHO PEORTH P>
+ { 0x016d8 , 0x016d7 }, // <RUNIC LETTER LONG-BRANCH-MADR M> => <RUNIC LETTER MANNAZ MAN M>
+ { 0x016d9 , 0x016d7 }, // <RUNIC LETTER SHORT-TWIG-MADR M> => <RUNIC LETTER MANNAZ MAN M>
+ { 0x016db , 0x016da }, // <RUNIC LETTER DOTTED-L> => <RUNIC LETTER LAUKAZ LAGU LOGR L>
+ { 0x016dd , 0x016dc }, // <RUNIC LETTER ING> => <RUNIC LETTER INGWAZ>
+ { 0x016e7 , 0x016e6 }, // <RUNIC LETTER SHORT-TWIG-YR> => <RUNIC LETTER LONG-BRANCH-YR>
+ { 0x016e8 , 0x016e6 }, // <RUNIC LETTER ICELANDIC-YR> => <RUNIC LETTER LONG-BRANCH-YR>
+ { 0x016e9 , 0x016b9 }, // <RUNIC LETTER Q> => <RUNIC LETTER WUNJO WYNN W>
+ { 0x016ea , 0x016ca }, // <RUNIC LETTER X> => <RUNIC LETTER SOWILO S>
+ { 0x017e0 , 0x00030 }, // <KHMER DIGIT ZERO> => <DIGIT ZERO>
+ { 0x017e1 , 0x00031 }, // <KHMER DIGIT ONE> => <DIGIT ONE>
+ { 0x017e2 , 0x00032 }, // <KHMER DIGIT TWO> => <DIGIT TWO>
+ { 0x017e3 , 0x00033 }, // <KHMER DIGIT THREE> => <DIGIT THREE>
+ { 0x017e4 , 0x00034 }, // <KHMER DIGIT FOUR> => <DIGIT FOUR>
+ { 0x017e5 , 0x00035 }, // <KHMER DIGIT FIVE> => <DIGIT FIVE>
+ { 0x017e6 , 0x00036 }, // <KHMER DIGIT SIX> => <DIGIT SIX>
+ { 0x017e7 , 0x00037 }, // <KHMER DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x017e8 , 0x00038 }, // <KHMER DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x017e9 , 0x00039 }, // <KHMER DIGIT NINE> => <DIGIT NINE>
+ { 0x017f0 , 0x00030 }, // <KHMER SYMBOL LEK ATTAK SON> => <DIGIT ZERO>
+ { 0x017f1 , 0x00031 }, // <KHMER SYMBOL LEK ATTAK MUOY> => <DIGIT ONE>
+ { 0x017f2 , 0x00032 }, // <KHMER SYMBOL LEK ATTAK PII> => <DIGIT TWO>
+ { 0x017f3 , 0x00033 }, // <KHMER SYMBOL LEK ATTAK BEI> => <DIGIT THREE>
+ { 0x017f4 , 0x00034 }, // <KHMER SYMBOL LEK ATTAK BUON> => <DIGIT FOUR>
+ { 0x017f5 , 0x00035 }, // <KHMER SYMBOL LEK ATTAK PRAM> => <DIGIT FIVE>
+ { 0x017f6 , 0x00036 }, // <KHMER SYMBOL LEK ATTAK PRAM-MUOY> => <DIGIT SIX>
+ { 0x017f7 , 0x00037 }, // <KHMER SYMBOL LEK ATTAK PRAM-PII> => <DIGIT SEVEN>
+ { 0x017f8 , 0x00038 }, // <KHMER SYMBOL LEK ATTAK PRAM-BEI> => <DIGIT EIGHT>
+ { 0x017f9 , 0x00039 }, // <KHMER SYMBOL LEK ATTAK PRAM-BUON> => <DIGIT NINE>
+ { 0x01810 , 0x00030 }, // <MONGOLIAN DIGIT ZERO> => <DIGIT ZERO>
+ { 0x01811 , 0x00031 }, // <MONGOLIAN DIGIT ONE> => <DIGIT ONE>
+ { 0x01812 , 0x00032 }, // <MONGOLIAN DIGIT TWO> => <DIGIT TWO>
+ { 0x01813 , 0x00033 }, // <MONGOLIAN DIGIT THREE> => <DIGIT THREE>
+ { 0x01814 , 0x00034 }, // <MONGOLIAN DIGIT FOUR> => <DIGIT FOUR>
+ { 0x01815 , 0x00035 }, // <MONGOLIAN DIGIT FIVE> => <DIGIT FIVE>
+ { 0x01816 , 0x00036 }, // <MONGOLIAN DIGIT SIX> => <DIGIT SIX>
+ { 0x01817 , 0x00037 }, // <MONGOLIAN DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x01818 , 0x00038 }, // <MONGOLIAN DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x01819 , 0x00039 }, // <MONGOLIAN DIGIT NINE> => <DIGIT NINE>
+ { 0x01946 , 0x00030 }, // <LIMBU DIGIT ZERO> => <DIGIT ZERO>
+ { 0x01947 , 0x00031 }, // <LIMBU DIGIT ONE> => <DIGIT ONE>
+ { 0x01948 , 0x00032 }, // <LIMBU DIGIT TWO> => <DIGIT TWO>
+ { 0x01949 , 0x00033 }, // <LIMBU DIGIT THREE> => <DIGIT THREE>
+ { 0x0194a , 0x00034 }, // <LIMBU DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0194b , 0x00035 }, // <LIMBU DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0194c , 0x00036 }, // <LIMBU DIGIT SIX> => <DIGIT SIX>
+ { 0x0194d , 0x00037 }, // <LIMBU DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0194e , 0x00038 }, // <LIMBU DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0194f , 0x00039 }, // <LIMBU DIGIT NINE> => <DIGIT NINE>
+ { 0x019d0 , 0x00030 }, // <NEW TAI LUE DIGIT ZERO> => <DIGIT ZERO>
+ { 0x019d1 , 0x00031 }, // <NEW TAI LUE DIGIT ONE> => <DIGIT ONE>
+ { 0x019d2 , 0x00032 }, // <NEW TAI LUE DIGIT TWO> => <DIGIT TWO>
+ { 0x019d3 , 0x00033 }, // <NEW TAI LUE DIGIT THREE> => <DIGIT THREE>
+ { 0x019d4 , 0x00034 }, // <NEW TAI LUE DIGIT FOUR> => <DIGIT FOUR>
+ { 0x019d5 , 0x00035 }, // <NEW TAI LUE DIGIT FIVE> => <DIGIT FIVE>
+ { 0x019d6 , 0x00036 }, // <NEW TAI LUE DIGIT SIX> => <DIGIT SIX>
+ { 0x019d7 , 0x00037 }, // <NEW TAI LUE DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x019d8 , 0x00038 }, // <NEW TAI LUE DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x019d9 , 0x00039 }, // <NEW TAI LUE DIGIT NINE> => <DIGIT NINE>
+ { 0x019da , 0x00031 }, // <NEW TAI LUE THAM DIGIT ONE> => <DIGIT ONE>
+ { 0x01a80 , 0x00030 }, // <TAI THAM HORA DIGIT ZERO> => <DIGIT ZERO>
+ { 0x01a81 , 0x00031 }, // <TAI THAM HORA DIGIT ONE> => <DIGIT ONE>
+ { 0x01a82 , 0x00032 }, // <TAI THAM HORA DIGIT TWO> => <DIGIT TWO>
+ { 0x01a83 , 0x00033 }, // <TAI THAM HORA DIGIT THREE> => <DIGIT THREE>
+ { 0x01a84 , 0x00034 }, // <TAI THAM HORA DIGIT FOUR> => <DIGIT FOUR>
+ { 0x01a85 , 0x00035 }, // <TAI THAM HORA DIGIT FIVE> => <DIGIT FIVE>
+ { 0x01a86 , 0x00036 }, // <TAI THAM HORA DIGIT SIX> => <DIGIT SIX>
+ { 0x01a87 , 0x00037 }, // <TAI THAM HORA DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x01a88 , 0x00038 }, // <TAI THAM HORA DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x01a89 , 0x00039 }, // <TAI THAM HORA DIGIT NINE> => <DIGIT NINE>
+ { 0x01a90 , 0x00030 }, // <TAI THAM THAM DIGIT ZERO> => <DIGIT ZERO>
+ { 0x01a91 , 0x00031 }, // <TAI THAM THAM DIGIT ONE> => <DIGIT ONE>
+ { 0x01a92 , 0x00032 }, // <TAI THAM THAM DIGIT TWO> => <DIGIT TWO>
+ { 0x01a93 , 0x00033 }, // <TAI THAM THAM DIGIT THREE> => <DIGIT THREE>
+ { 0x01a94 , 0x00034 }, // <TAI THAM THAM DIGIT FOUR> => <DIGIT FOUR>
+ { 0x01a95 , 0x00035 }, // <TAI THAM THAM DIGIT FIVE> => <DIGIT FIVE>
+ { 0x01a96 , 0x00036 }, // <TAI THAM THAM DIGIT SIX> => <DIGIT SIX>
+ { 0x01a97 , 0x00037 }, // <TAI THAM THAM DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x01a98 , 0x00038 }, // <TAI THAM THAM DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x01a99 , 0x00039 }, // <TAI THAM THAM DIGIT NINE> => <DIGIT NINE>
+ { 0x01b50 , 0x00030 }, // <BALINESE DIGIT ZERO> => <DIGIT ZERO>
+ { 0x01b51 , 0x00031 }, // <BALINESE DIGIT ONE> => <DIGIT ONE>
+ { 0x01b52 , 0x00032 }, // <BALINESE DIGIT TWO> => <DIGIT TWO>
+ { 0x01b53 , 0x00033 }, // <BALINESE DIGIT THREE> => <DIGIT THREE>
+ { 0x01b54 , 0x00034 }, // <BALINESE DIGIT FOUR> => <DIGIT FOUR>
+ { 0x01b55 , 0x00035 }, // <BALINESE DIGIT FIVE> => <DIGIT FIVE>
+ { 0x01b56 , 0x00036 }, // <BALINESE DIGIT SIX> => <DIGIT SIX>
+ { 0x01b57 , 0x00037 }, // <BALINESE DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x01b58 , 0x00038 }, // <BALINESE DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x01b59 , 0x00039 }, // <BALINESE DIGIT NINE> => <DIGIT NINE>
+ { 0x01bb0 , 0x00030 }, // <SUNDANESE DIGIT ZERO> => <DIGIT ZERO>
+ { 0x01bb1 , 0x00031 }, // <SUNDANESE DIGIT ONE> => <DIGIT ONE>
+ { 0x01bb2 , 0x00032 }, // <SUNDANESE DIGIT TWO> => <DIGIT TWO>
+ { 0x01bb3 , 0x00033 }, // <SUNDANESE DIGIT THREE> => <DIGIT THREE>
+ { 0x01bb4 , 0x00034 }, // <SUNDANESE DIGIT FOUR> => <DIGIT FOUR>
+ { 0x01bb5 , 0x00035 }, // <SUNDANESE DIGIT FIVE> => <DIGIT FIVE>
+ { 0x01bb6 , 0x00036 }, // <SUNDANESE DIGIT SIX> => <DIGIT SIX>
+ { 0x01bb7 , 0x00037 }, // <SUNDANESE DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x01bb8 , 0x00038 }, // <SUNDANESE DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x01bb9 , 0x00039 }, // <SUNDANESE DIGIT NINE> => <DIGIT NINE>
+ { 0x01bba , 0x01b83 }, // <SUNDANESE AVAGRAHA> => <SUNDANESE LETTER A>
+ { 0x01bbe , 0x01b8a }, // <SUNDANESE LETTER FINAL K> => <SUNDANESE LETTER KA>
+ { 0x01bbf , 0x01b99 }, // <SUNDANESE LETTER FINAL M> => <SUNDANESE LETTER MA>
+ { 0x01bc1 , 0x01bc0 }, // <BATAK LETTER SIMALUNGUN A> => <BATAK LETTER A>
+ { 0x01bc3 , 0x01bc2 }, // <BATAK LETTER SIMALUNGUN HA> => <BATAK LETTER HA>
+ { 0x01bc4 , 0x01bc2 }, // <BATAK LETTER MANDAILING HA> => <BATAK LETTER HA>
+ { 0x01bc6 , 0x01bc5 }, // <BATAK LETTER KARO BA> => <BATAK LETTER BA>
+ { 0x01bc8 , 0x01bc7 }, // <BATAK LETTER SIMALUNGUN PA> => <BATAK LETTER PA>
+ { 0x01bca , 0x01bc9 }, // <BATAK LETTER MANDAILING NA> => <BATAK LETTER NA>
+ { 0x01bcc , 0x01bcb }, // <BATAK LETTER SIMALUNGUN WA> => <BATAK LETTER WA>
+ { 0x01bcd , 0x01bcb }, // <BATAK LETTER PAKPAK WA> => <BATAK LETTER WA>
+ { 0x01bcf , 0x01bce }, // <BATAK LETTER SIMALUNGUN GA> => <BATAK LETTER GA>
+ { 0x01bd3 , 0x01bd2 }, // <BATAK LETTER SIMALUNGUN RA> => <BATAK LETTER RA>
+ { 0x01bd5 , 0x01bd4 }, // <BATAK LETTER SIMALUNGUN MA> => <BATAK LETTER MA>
+ { 0x01bd7 , 0x01bd6 }, // <BATAK LETTER NORTHERN TA> => <BATAK LETTER SOUTHERN TA>
+ { 0x01bd9 , 0x01bd8 }, // <BATAK LETTER SIMALUNGUN SA> => <BATAK LETTER SA>
+ { 0x01bda , 0x01bd8 }, // <BATAK LETTER MANDAILING SA> => <BATAK LETTER SA>
+ { 0x01bdc , 0x01bdb }, // <BATAK LETTER SIMALUNGUN YA> => <BATAK LETTER YA>
+ { 0x01bdf , 0x01bde }, // <BATAK LETTER SIMALUNGUN LA> => <BATAK LETTER LA>
+ { 0x01c40 , 0x00030 }, // <LEPCHA DIGIT ZERO> => <DIGIT ZERO>
+ { 0x01c41 , 0x00031 }, // <LEPCHA DIGIT ONE> => <DIGIT ONE>
+ { 0x01c42 , 0x00032 }, // <LEPCHA DIGIT TWO> => <DIGIT TWO>
+ { 0x01c43 , 0x00033 }, // <LEPCHA DIGIT THREE> => <DIGIT THREE>
+ { 0x01c44 , 0x00034 }, // <LEPCHA DIGIT FOUR> => <DIGIT FOUR>
+ { 0x01c45 , 0x00035 }, // <LEPCHA DIGIT FIVE> => <DIGIT FIVE>
+ { 0x01c46 , 0x00036 }, // <LEPCHA DIGIT SIX> => <DIGIT SIX>
+ { 0x01c47 , 0x00037 }, // <LEPCHA DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x01c48 , 0x00038 }, // <LEPCHA DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x01c49 , 0x00039 }, // <LEPCHA DIGIT NINE> => <DIGIT NINE>
+ { 0x01c50 , 0x00030 }, // <OL CHIKI DIGIT ZERO> => <DIGIT ZERO>
+ { 0x01c51 , 0x00031 }, // <OL CHIKI DIGIT ONE> => <DIGIT ONE>
+ { 0x01c52 , 0x00032 }, // <OL CHIKI DIGIT TWO> => <DIGIT TWO>
+ { 0x01c53 , 0x00033 }, // <OL CHIKI DIGIT THREE> => <DIGIT THREE>
+ { 0x01c54 , 0x00034 }, // <OL CHIKI DIGIT FOUR> => <DIGIT FOUR>
+ { 0x01c55 , 0x00035 }, // <OL CHIKI DIGIT FIVE> => <DIGIT FIVE>
+ { 0x01c56 , 0x00036 }, // <OL CHIKI DIGIT SIX> => <DIGIT SIX>
+ { 0x01c57 , 0x00037 }, // <OL CHIKI DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x01c58 , 0x00038 }, // <OL CHIKI DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x01c59 , 0x00039 }, // <OL CHIKI DIGIT NINE> => <DIGIT NINE>
+ { 0x01c80 , 0x00432 }, // <CYRILLIC SMALL LETTER ROUNDED VE> => <CYRILLIC SMALL LETTER VE>
+ { 0x01c81 , 0x00434 }, // <CYRILLIC SMALL LETTER LONG-LEGGED DE> => <CYRILLIC SMALL LETTER DE>
+ { 0x01c82 , 0x0043e }, // <CYRILLIC SMALL LETTER NARROW O> => <CYRILLIC SMALL LETTER O>
+ { 0x01c83 , 0x00441 }, // <CYRILLIC SMALL LETTER WIDE ES> => <CYRILLIC SMALL LETTER ES>
+ { 0x01c84 , 0x00442 }, // <CYRILLIC SMALL LETTER TALL TE> => <CYRILLIC SMALL LETTER TE>
+ { 0x01c85 , 0x00442 }, // <CYRILLIC SMALL LETTER THREE-LEGGED TE> => <CYRILLIC SMALL LETTER TE>
+ { 0x01c86 , 0x0044a }, // <CYRILLIC SMALL LETTER TALL HARD SIGN> => <CYRILLIC SMALL LETTER HARD SIGN>
+ { 0x01c87 , 0x00463 }, // <CYRILLIC SMALL LETTER TALL YAT> => <CYRILLIC SMALL LETTER YAT>
+ { 0x01c88 , 0x0a64b }, // <CYRILLIC SMALL LETTER UNBLENDED UK> => <CYRILLIC SMALL LETTER MONOGRAPH UK>
+ { 0x01cea , 0x01ce9 }, // <VEDIC SIGN ANUSVARA BAHIRGOMUKHA> => <VEDIC SIGN ANUSVARA ANTARGOMUKHA>
+ { 0x01ceb , 0x01ce9 }, // <VEDIC SIGN ANUSVARA VAMAGOMUKHA> => <VEDIC SIGN ANUSVARA ANTARGOMUKHA>
+ { 0x01cec , 0x01ce9 }, // <VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL> => <VEDIC SIGN ANUSVARA ANTARGOMUKHA>
+ { 0x01cee , 0x01ce9 }, // <VEDIC SIGN HEXIFORM LONG ANUSVARA> => <VEDIC SIGN ANUSVARA ANTARGOMUKHA>
+ { 0x01cef , 0x01ce9 }, // <VEDIC SIGN LONG ANUSVARA> => <VEDIC SIGN ANUSVARA ANTARGOMUKHA>
+ { 0x01cf0 , 0x01ce9 }, // <VEDIC SIGN RTHANG LONG ANUSVARA> => <VEDIC SIGN ANUSVARA ANTARGOMUKHA>
+ { 0x01cf1 , 0x01ce9 }, // <VEDIC SIGN ANUSVARA UBHAYATO MUKHA> => <VEDIC SIGN ANUSVARA ANTARGOMUKHA>
+ { 0x01d2c , 0x00061 }, // <MODIFIER LETTER CAPITAL A> => <LATIN SMALL LETTER A>
+ { 0x01d2e , 0x00062 }, // <MODIFIER LETTER CAPITAL B> => <LATIN SMALL LETTER B>
+ { 0x01d30 , 0x00064 }, // <MODIFIER LETTER CAPITAL D> => <LATIN SMALL LETTER D>
+ { 0x01d31 , 0x00065 }, // <MODIFIER LETTER CAPITAL E> => <LATIN SMALL LETTER E>
+ { 0x01d32 , 0x001dd }, // <MODIFIER LETTER CAPITAL REVERSED E> => <LATIN SMALL LETTER TURNED E>
+ { 0x01d33 , 0x00067 }, // <MODIFIER LETTER CAPITAL G> => <LATIN SMALL LETTER G>
+ { 0x01d34 , 0x00068 }, // <MODIFIER LETTER CAPITAL H> => <LATIN SMALL LETTER H>
+ { 0x01d35 , 0x00069 }, // <MODIFIER LETTER CAPITAL I> => <LATIN SMALL LETTER I>
+ { 0x01d36 , 0x0006a }, // <MODIFIER LETTER CAPITAL J> => <LATIN SMALL LETTER J>
+ { 0x01d37 , 0x0006b }, // <MODIFIER LETTER CAPITAL K> => <LATIN SMALL LETTER K>
+ { 0x01d38 , 0x0006c }, // <MODIFIER LETTER CAPITAL L> => <LATIN SMALL LETTER L>
+ { 0x01d39 , 0x0006d }, // <MODIFIER LETTER CAPITAL M> => <LATIN SMALL LETTER M>
+ { 0x01d3a , 0x0006e }, // <MODIFIER LETTER CAPITAL N> => <LATIN SMALL LETTER N>
+ { 0x01d3c , 0x0006f }, // <MODIFIER LETTER CAPITAL O> => <LATIN SMALL LETTER O>
+ { 0x01d3d , 0x00223 }, // <MODIFIER LETTER CAPITAL OU> => <LATIN SMALL LETTER OU>
+ { 0x01d3e , 0x00070 }, // <MODIFIER LETTER CAPITAL P> => <LATIN SMALL LETTER P>
+ { 0x01d3f , 0x00072 }, // <MODIFIER LETTER CAPITAL R> => <LATIN SMALL LETTER R>
+ { 0x01d40 , 0x00074 }, // <MODIFIER LETTER CAPITAL T> => <LATIN SMALL LETTER T>
+ { 0x01d41 , 0x00075 }, // <MODIFIER LETTER CAPITAL U> => <LATIN SMALL LETTER U>
+ { 0x01d42 , 0x00077 }, // <MODIFIER LETTER CAPITAL W> => <LATIN SMALL LETTER W>
+ { 0x01d43 , 0x00061 }, // <MODIFIER LETTER SMALL A> => <LATIN SMALL LETTER A>
+ { 0x01d44 , 0x00250 }, // <MODIFIER LETTER SMALL TURNED A> => <LATIN SMALL LETTER TURNED A>
+ { 0x01d45 , 0x00251 }, // <MODIFIER LETTER SMALL ALPHA> => <LATIN SMALL LETTER ALPHA>
+ { 0x01d46 , 0x01d02 }, // <MODIFIER LETTER SMALL TURNED AE> => <LATIN SMALL LETTER TURNED AE>
+ { 0x01d47 , 0x00062 }, // <MODIFIER LETTER SMALL B> => <LATIN SMALL LETTER B>
+ { 0x01d48 , 0x00064 }, // <MODIFIER LETTER SMALL D> => <LATIN SMALL LETTER D>
+ { 0x01d49 , 0x00065 }, // <MODIFIER LETTER SMALL E> => <LATIN SMALL LETTER E>
+ { 0x01d4a , 0x00259 }, // <MODIFIER LETTER SMALL SCHWA> => <LATIN SMALL LETTER SCHWA>
+ { 0x01d4b , 0x0025b }, // <MODIFIER LETTER SMALL OPEN E> => <LATIN SMALL LETTER OPEN E>
+ { 0x01d4c , 0x01d08 }, // <MODIFIER LETTER SMALL TURNED OPEN E> => <LATIN SMALL LETTER TURNED OPEN E>
+ { 0x01d4d , 0x00067 }, // <MODIFIER LETTER SMALL G> => <LATIN SMALL LETTER G>
+ { 0x01d4e , 0x01d09 }, // <MODIFIER LETTER SMALL TURNED I> => <LATIN SMALL LETTER TURNED I>
+ { 0x01d4f , 0x0006b }, // <MODIFIER LETTER SMALL K> => <LATIN SMALL LETTER K>
+ { 0x01d50 , 0x0006d }, // <MODIFIER LETTER SMALL M> => <LATIN SMALL LETTER M>
+ { 0x01d51 , 0x0014b }, // <MODIFIER LETTER SMALL ENG> => <LATIN SMALL LETTER ENG>
+ { 0x01d52 , 0x0006f }, // <MODIFIER LETTER SMALL O> => <LATIN SMALL LETTER O>
+ { 0x01d53 , 0x00254 }, // <MODIFIER LETTER SMALL OPEN O> => <LATIN SMALL LETTER OPEN O>
+ { 0x01d54 , 0x01d16 }, // <MODIFIER LETTER SMALL TOP HALF O> => <LATIN SMALL LETTER TOP HALF O>
+ { 0x01d55 , 0x01d17 }, // <MODIFIER LETTER SMALL BOTTOM HALF O> => <LATIN SMALL LETTER BOTTOM HALF O>
+ { 0x01d56 , 0x00070 }, // <MODIFIER LETTER SMALL P> => <LATIN SMALL LETTER P>
+ { 0x01d57 , 0x00074 }, // <MODIFIER LETTER SMALL T> => <LATIN SMALL LETTER T>
+ { 0x01d58 , 0x00075 }, // <MODIFIER LETTER SMALL U> => <LATIN SMALL LETTER U>
+ { 0x01d59 , 0x01d1d }, // <MODIFIER LETTER SMALL SIDEWAYS U> => <LATIN SMALL LETTER SIDEWAYS U>
+ { 0x01d5a , 0x0026f }, // <MODIFIER LETTER SMALL TURNED M> => <LATIN SMALL LETTER TURNED M>
+ { 0x01d5b , 0x00076 }, // <MODIFIER LETTER SMALL V> => <LATIN SMALL LETTER V>
+ { 0x01d5c , 0x01d25 }, // <MODIFIER LETTER SMALL AIN> => <LATIN LETTER AIN>
+ { 0x01d5d , 0x003b2 }, // <MODIFIER LETTER SMALL BETA> => <GREEK SMALL LETTER BETA>
+ { 0x01d5e , 0x003b3 }, // <MODIFIER LETTER SMALL GREEK GAMMA> => <GREEK SMALL LETTER GAMMA>
+ { 0x01d5f , 0x003b4 }, // <MODIFIER LETTER SMALL DELTA> => <GREEK SMALL LETTER DELTA>
+ { 0x01d60 , 0x003c6 }, // <MODIFIER LETTER SMALL GREEK PHI> => <GREEK SMALL LETTER PHI>
+ { 0x01d61 , 0x003c7 }, // <MODIFIER LETTER SMALL CHI> => <GREEK SMALL LETTER CHI>
+ { 0x01d62 , 0x00069 }, // <LATIN SUBSCRIPT SMALL LETTER I> => <LATIN SMALL LETTER I>
+ { 0x01d63 , 0x00072 }, // <LATIN SUBSCRIPT SMALL LETTER R> => <LATIN SMALL LETTER R>
+ { 0x01d64 , 0x00075 }, // <LATIN SUBSCRIPT SMALL LETTER U> => <LATIN SMALL LETTER U>
+ { 0x01d65 , 0x00076 }, // <LATIN SUBSCRIPT SMALL LETTER V> => <LATIN SMALL LETTER V>
+ { 0x01d66 , 0x003b2 }, // <GREEK SUBSCRIPT SMALL LETTER BETA> => <GREEK SMALL LETTER BETA>
+ { 0x01d67 , 0x003b3 }, // <GREEK SUBSCRIPT SMALL LETTER GAMMA> => <GREEK SMALL LETTER GAMMA>
+ { 0x01d68 , 0x003c1 }, // <GREEK SUBSCRIPT SMALL LETTER RHO> => <GREEK SMALL LETTER RHO>
+ { 0x01d69 , 0x003c6 }, // <GREEK SUBSCRIPT SMALL LETTER PHI> => <GREEK SMALL LETTER PHI>
+ { 0x01d6a , 0x003c7 }, // <GREEK SUBSCRIPT SMALL LETTER CHI> => <GREEK SMALL LETTER CHI>
+ { 0x01d78 , 0x0043d }, // <MODIFIER LETTER CYRILLIC EN> => <CYRILLIC SMALL LETTER EN>
+ { 0x01d79 , 0x00067 }, // <LATIN SMALL LETTER INSULAR G> => <LATIN SMALL LETTER G>
+ { 0x01d9b , 0x00252 }, // <MODIFIER LETTER SMALL TURNED ALPHA> => <LATIN SMALL LETTER TURNED ALPHA>
+ { 0x01d9c , 0x00063 }, // <MODIFIER LETTER SMALL C> => <LATIN SMALL LETTER C>
+ { 0x01d9d , 0x00255 }, // <MODIFIER LETTER SMALL C WITH CURL> => <LATIN SMALL LETTER C WITH CURL>
+ { 0x01d9e , 0x00064 }, // <MODIFIER LETTER SMALL ETH> => <LATIN SMALL LETTER D>
+ { 0x01d9f , 0x0025c }, // <MODIFIER LETTER SMALL REVERSED OPEN E> => <LATIN SMALL LETTER REVERSED OPEN E>
+ { 0x01da0 , 0x00066 }, // <MODIFIER LETTER SMALL F> => <LATIN SMALL LETTER F>
+ { 0x01da1 , 0x0025f }, // <MODIFIER LETTER SMALL DOTLESS J WITH STROKE> => <LATIN SMALL LETTER DOTLESS J WITH STROKE>
+ { 0x01da2 , 0x00261 }, // <MODIFIER LETTER SMALL SCRIPT G> => <LATIN SMALL LETTER SCRIPT G>
+ { 0x01da3 , 0x00265 }, // <MODIFIER LETTER SMALL TURNED H> => <LATIN SMALL LETTER TURNED H>
+ { 0x01da4 , 0x00268 }, // <MODIFIER LETTER SMALL I WITH STROKE> => <LATIN SMALL LETTER I WITH STROKE>
+ { 0x01da5 , 0x00269 }, // <MODIFIER LETTER SMALL IOTA> => <LATIN SMALL LETTER IOTA>
+ { 0x01da6 , 0x0026a }, // <MODIFIER LETTER SMALL CAPITAL I> => <LATIN LETTER SMALL CAPITAL I>
+ { 0x01da7 , 0x01d7b }, // <MODIFIER LETTER SMALL CAPITAL I WITH STROKE> => <LATIN SMALL CAPITAL LETTER I WITH STROKE>
+ { 0x01da8 , 0x0029d }, // <MODIFIER LETTER SMALL J WITH CROSSED-TAIL> => <LATIN SMALL LETTER J WITH CROSSED-TAIL>
+ { 0x01da9 , 0x0026d }, // <MODIFIER LETTER SMALL L WITH RETROFLEX HOOK> => <LATIN SMALL LETTER L WITH RETROFLEX HOOK>
+ { 0x01daa , 0x01d85 }, // <MODIFIER LETTER SMALL L WITH PALATAL HOOK> => <LATIN SMALL LETTER L WITH PALATAL HOOK>
+ { 0x01dab , 0x0029f }, // <MODIFIER LETTER SMALL CAPITAL L> => <LATIN LETTER SMALL CAPITAL L>
+ { 0x01dac , 0x00271 }, // <MODIFIER LETTER SMALL M WITH HOOK> => <LATIN SMALL LETTER M WITH HOOK>
+ { 0x01dad , 0x00270 }, // <MODIFIER LETTER SMALL TURNED M WITH LONG LEG> => <LATIN SMALL LETTER TURNED M WITH LONG LEG>
+ { 0x01dae , 0x00272 }, // <MODIFIER LETTER SMALL N WITH LEFT HOOK> => <LATIN SMALL LETTER N WITH LEFT HOOK>
+ { 0x01daf , 0x00273 }, // <MODIFIER LETTER SMALL N WITH RETROFLEX HOOK> => <LATIN SMALL LETTER N WITH RETROFLEX HOOK>
+ { 0x01db0 , 0x00274 }, // <MODIFIER LETTER SMALL CAPITAL N> => <LATIN LETTER SMALL CAPITAL N>
+ { 0x01db1 , 0x00275 }, // <MODIFIER LETTER SMALL BARRED O> => <LATIN SMALL LETTER BARRED O>
+ { 0x01db2 , 0x00278 }, // <MODIFIER LETTER SMALL PHI> => <LATIN SMALL LETTER PHI>
+ { 0x01db3 , 0x00282 }, // <MODIFIER LETTER SMALL S WITH HOOK> => <LATIN SMALL LETTER S WITH HOOK>
+ { 0x01db4 , 0x00283 }, // <MODIFIER LETTER SMALL ESH> => <LATIN SMALL LETTER ESH>
+ { 0x01db5 , 0x001ab }, // <MODIFIER LETTER SMALL T WITH PALATAL HOOK> => <LATIN SMALL LETTER T WITH PALATAL HOOK>
+ { 0x01db6 , 0x00289 }, // <MODIFIER LETTER SMALL U BAR> => <LATIN SMALL LETTER U BAR>
+ { 0x01db7 , 0x0028a }, // <MODIFIER LETTER SMALL UPSILON> => <LATIN SMALL LETTER UPSILON>
+ { 0x01db8 , 0x01d1c }, // <MODIFIER LETTER SMALL CAPITAL U> => <LATIN LETTER SMALL CAPITAL U>
+ { 0x01db9 , 0x0028b }, // <MODIFIER LETTER SMALL V WITH HOOK> => <LATIN SMALL LETTER V WITH HOOK>
+ { 0x01dba , 0x0028c }, // <MODIFIER LETTER SMALL TURNED V> => <LATIN SMALL LETTER TURNED V>
+ { 0x01dbb , 0x0007a }, // <MODIFIER LETTER SMALL Z> => <LATIN SMALL LETTER Z>
+ { 0x01dbc , 0x00290 }, // <MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK> => <LATIN SMALL LETTER Z WITH RETROFLEX HOOK>
+ { 0x01dbd , 0x00291 }, // <MODIFIER LETTER SMALL Z WITH CURL> => <LATIN SMALL LETTER Z WITH CURL>
+ { 0x01dbe , 0x00292 }, // <MODIFIER LETTER SMALL EZH> => <LATIN SMALL LETTER EZH>
+ { 0x01dbf , 0x003b8 }, // <MODIFIER LETTER SMALL THETA> => <GREEK SMALL LETTER THETA>
+ { 0x01e00 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH RING BELOW> => <LATIN SMALL LETTER A>
+ { 0x01e01 , 0x00061 }, // <LATIN SMALL LETTER A WITH RING BELOW> => <LATIN SMALL LETTER A>
+ { 0x01e02 , 0x00062 }, // <LATIN CAPITAL LETTER B WITH DOT ABOVE> => <LATIN SMALL LETTER B>
+ { 0x01e03 , 0x00062 }, // <LATIN SMALL LETTER B WITH DOT ABOVE> => <LATIN SMALL LETTER B>
+ { 0x01e04 , 0x00062 }, // <LATIN CAPITAL LETTER B WITH DOT BELOW> => <LATIN SMALL LETTER B>
+ { 0x01e05 , 0x00062 }, // <LATIN SMALL LETTER B WITH DOT BELOW> => <LATIN SMALL LETTER B>
+ { 0x01e06 , 0x00062 }, // <LATIN CAPITAL LETTER B WITH LINE BELOW> => <LATIN SMALL LETTER B>
+ { 0x01e07 , 0x00062 }, // <LATIN SMALL LETTER B WITH LINE BELOW> => <LATIN SMALL LETTER B>
+ { 0x01e08 , 0x00063 }, // <LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE> => <LATIN SMALL LETTER C>
+ { 0x01e09 , 0x00063 }, // <LATIN SMALL LETTER C WITH CEDILLA AND ACUTE> => <LATIN SMALL LETTER C>
+ { 0x01e0a , 0x00064 }, // <LATIN CAPITAL LETTER D WITH DOT ABOVE> => <LATIN SMALL LETTER D>
+ { 0x01e0b , 0x00064 }, // <LATIN SMALL LETTER D WITH DOT ABOVE> => <LATIN SMALL LETTER D>
+ { 0x01e0c , 0x00064 }, // <LATIN CAPITAL LETTER D WITH DOT BELOW> => <LATIN SMALL LETTER D>
+ { 0x01e0d , 0x00064 }, // <LATIN SMALL LETTER D WITH DOT BELOW> => <LATIN SMALL LETTER D>
+ { 0x01e0e , 0x00064 }, // <LATIN CAPITAL LETTER D WITH LINE BELOW> => <LATIN SMALL LETTER D>
+ { 0x01e0f , 0x00064 }, // <LATIN SMALL LETTER D WITH LINE BELOW> => <LATIN SMALL LETTER D>
+ { 0x01e10 , 0x00064 }, // <LATIN CAPITAL LETTER D WITH CEDILLA> => <LATIN SMALL LETTER D>
+ { 0x01e11 , 0x00064 }, // <LATIN SMALL LETTER D WITH CEDILLA> => <LATIN SMALL LETTER D>
+ { 0x01e12 , 0x00064 }, // <LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER D>
+ { 0x01e13 , 0x00064 }, // <LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER D>
+ { 0x01e14 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH MACRON AND GRAVE> => <LATIN SMALL LETTER E>
+ { 0x01e15 , 0x00065 }, // <LATIN SMALL LETTER E WITH MACRON AND GRAVE> => <LATIN SMALL LETTER E>
+ { 0x01e16 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH MACRON AND ACUTE> => <LATIN SMALL LETTER E>
+ { 0x01e17 , 0x00065 }, // <LATIN SMALL LETTER E WITH MACRON AND ACUTE> => <LATIN SMALL LETTER E>
+ { 0x01e18 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER E>
+ { 0x01e19 , 0x00065 }, // <LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER E>
+ { 0x01e1a , 0x00065 }, // <LATIN CAPITAL LETTER E WITH TILDE BELOW> => <LATIN SMALL LETTER E>
+ { 0x01e1b , 0x00065 }, // <LATIN SMALL LETTER E WITH TILDE BELOW> => <LATIN SMALL LETTER E>
+ { 0x01e1c , 0x00065 }, // <LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE> => <LATIN SMALL LETTER E>
+ { 0x01e1d , 0x00065 }, // <LATIN SMALL LETTER E WITH CEDILLA AND BREVE> => <LATIN SMALL LETTER E>
+ { 0x01e1e , 0x00066 }, // <LATIN CAPITAL LETTER F WITH DOT ABOVE> => <LATIN SMALL LETTER F>
+ { 0x01e1f , 0x00066 }, // <LATIN SMALL LETTER F WITH DOT ABOVE> => <LATIN SMALL LETTER F>
+ { 0x01e20 , 0x00067 }, // <LATIN CAPITAL LETTER G WITH MACRON> => <LATIN SMALL LETTER G>
+ { 0x01e21 , 0x00067 }, // <LATIN SMALL LETTER G WITH MACRON> => <LATIN SMALL LETTER G>
+ { 0x01e22 , 0x00068 }, // <LATIN CAPITAL LETTER H WITH DOT ABOVE> => <LATIN SMALL LETTER H>
+ { 0x01e23 , 0x00068 }, // <LATIN SMALL LETTER H WITH DOT ABOVE> => <LATIN SMALL LETTER H>
+ { 0x01e24 , 0x00068 }, // <LATIN CAPITAL LETTER H WITH DOT BELOW> => <LATIN SMALL LETTER H>
+ { 0x01e25 , 0x00068 }, // <LATIN SMALL LETTER H WITH DOT BELOW> => <LATIN SMALL LETTER H>
+ { 0x01e26 , 0x00068 }, // <LATIN CAPITAL LETTER H WITH DIAERESIS> => <LATIN SMALL LETTER H>
+ { 0x01e27 , 0x00068 }, // <LATIN SMALL LETTER H WITH DIAERESIS> => <LATIN SMALL LETTER H>
+ { 0x01e28 , 0x00068 }, // <LATIN CAPITAL LETTER H WITH CEDILLA> => <LATIN SMALL LETTER H>
+ { 0x01e29 , 0x00068 }, // <LATIN SMALL LETTER H WITH CEDILLA> => <LATIN SMALL LETTER H>
+ { 0x01e2a , 0x00068 }, // <LATIN CAPITAL LETTER H WITH BREVE BELOW> => <LATIN SMALL LETTER H>
+ { 0x01e2b , 0x00068 }, // <LATIN SMALL LETTER H WITH BREVE BELOW> => <LATIN SMALL LETTER H>
+ { 0x01e2c , 0x00069 }, // <LATIN CAPITAL LETTER I WITH TILDE BELOW> => <LATIN SMALL LETTER I>
+ { 0x01e2d , 0x00069 }, // <LATIN SMALL LETTER I WITH TILDE BELOW> => <LATIN SMALL LETTER I>
+ { 0x01e2e , 0x00069 }, // <LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE> => <LATIN SMALL LETTER I>
+ { 0x01e2f , 0x00069 }, // <LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE> => <LATIN SMALL LETTER I>
+ { 0x01e30 , 0x0006b }, // <LATIN CAPITAL LETTER K WITH ACUTE> => <LATIN SMALL LETTER K>
+ { 0x01e31 , 0x0006b }, // <LATIN SMALL LETTER K WITH ACUTE> => <LATIN SMALL LETTER K>
+ { 0x01e32 , 0x0006b }, // <LATIN CAPITAL LETTER K WITH DOT BELOW> => <LATIN SMALL LETTER K>
+ { 0x01e33 , 0x0006b }, // <LATIN SMALL LETTER K WITH DOT BELOW> => <LATIN SMALL LETTER K>
+ { 0x01e34 , 0x0006b }, // <LATIN CAPITAL LETTER K WITH LINE BELOW> => <LATIN SMALL LETTER K>
+ { 0x01e35 , 0x0006b }, // <LATIN SMALL LETTER K WITH LINE BELOW> => <LATIN SMALL LETTER K>
+ { 0x01e36 , 0x0006c }, // <LATIN CAPITAL LETTER L WITH DOT BELOW> => <LATIN SMALL LETTER L>
+ { 0x01e37 , 0x0006c }, // <LATIN SMALL LETTER L WITH DOT BELOW> => <LATIN SMALL LETTER L>
+ { 0x01e38 , 0x0006c }, // <LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON> => <LATIN SMALL LETTER L>
+ { 0x01e39 , 0x0006c }, // <LATIN SMALL LETTER L WITH DOT BELOW AND MACRON> => <LATIN SMALL LETTER L>
+ { 0x01e3a , 0x0006c }, // <LATIN CAPITAL LETTER L WITH LINE BELOW> => <LATIN SMALL LETTER L>
+ { 0x01e3b , 0x0006c }, // <LATIN SMALL LETTER L WITH LINE BELOW> => <LATIN SMALL LETTER L>
+ { 0x01e3c , 0x0006c }, // <LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER L>
+ { 0x01e3d , 0x0006c }, // <LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER L>
+ { 0x01e3e , 0x0006d }, // <LATIN CAPITAL LETTER M WITH ACUTE> => <LATIN SMALL LETTER M>
+ { 0x01e3f , 0x0006d }, // <LATIN SMALL LETTER M WITH ACUTE> => <LATIN SMALL LETTER M>
+ { 0x01e40 , 0x0006d }, // <LATIN CAPITAL LETTER M WITH DOT ABOVE> => <LATIN SMALL LETTER M>
+ { 0x01e41 , 0x0006d }, // <LATIN SMALL LETTER M WITH DOT ABOVE> => <LATIN SMALL LETTER M>
+ { 0x01e42 , 0x0006d }, // <LATIN CAPITAL LETTER M WITH DOT BELOW> => <LATIN SMALL LETTER M>
+ { 0x01e43 , 0x0006d }, // <LATIN SMALL LETTER M WITH DOT BELOW> => <LATIN SMALL LETTER M>
+ { 0x01e44 , 0x0006e }, // <LATIN CAPITAL LETTER N WITH DOT ABOVE> => <LATIN SMALL LETTER N>
+ { 0x01e45 , 0x0006e }, // <LATIN SMALL LETTER N WITH DOT ABOVE> => <LATIN SMALL LETTER N>
+ { 0x01e46 , 0x0006e }, // <LATIN CAPITAL LETTER N WITH DOT BELOW> => <LATIN SMALL LETTER N>
+ { 0x01e47 , 0x0006e }, // <LATIN SMALL LETTER N WITH DOT BELOW> => <LATIN SMALL LETTER N>
+ { 0x01e48 , 0x0006e }, // <LATIN CAPITAL LETTER N WITH LINE BELOW> => <LATIN SMALL LETTER N>
+ { 0x01e49 , 0x0006e }, // <LATIN SMALL LETTER N WITH LINE BELOW> => <LATIN SMALL LETTER N>
+ { 0x01e4a , 0x0006e }, // <LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER N>
+ { 0x01e4b , 0x0006e }, // <LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER N>
+ { 0x01e4c , 0x0006f }, // <LATIN CAPITAL LETTER O WITH TILDE AND ACUTE> => <LATIN SMALL LETTER O>
+ { 0x01e4d , 0x0006f }, // <LATIN SMALL LETTER O WITH TILDE AND ACUTE> => <LATIN SMALL LETTER O>
+ { 0x01e4e , 0x0006f }, // <LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS> => <LATIN SMALL LETTER O>
+ { 0x01e4f , 0x0006f }, // <LATIN SMALL LETTER O WITH TILDE AND DIAERESIS> => <LATIN SMALL LETTER O>
+ { 0x01e50 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH MACRON AND GRAVE> => <LATIN SMALL LETTER O>
+ { 0x01e51 , 0x0006f }, // <LATIN SMALL LETTER O WITH MACRON AND GRAVE> => <LATIN SMALL LETTER O>
+ { 0x01e52 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH MACRON AND ACUTE> => <LATIN SMALL LETTER O>
+ { 0x01e53 , 0x0006f }, // <LATIN SMALL LETTER O WITH MACRON AND ACUTE> => <LATIN SMALL LETTER O>
+ { 0x01e54 , 0x00070 }, // <LATIN CAPITAL LETTER P WITH ACUTE> => <LATIN SMALL LETTER P>
+ { 0x01e55 , 0x00070 }, // <LATIN SMALL LETTER P WITH ACUTE> => <LATIN SMALL LETTER P>
+ { 0x01e56 , 0x00070 }, // <LATIN CAPITAL LETTER P WITH DOT ABOVE> => <LATIN SMALL LETTER P>
+ { 0x01e57 , 0x00070 }, // <LATIN SMALL LETTER P WITH DOT ABOVE> => <LATIN SMALL LETTER P>
+ { 0x01e58 , 0x00072 }, // <LATIN CAPITAL LETTER R WITH DOT ABOVE> => <LATIN SMALL LETTER R>
+ { 0x01e59 , 0x00072 }, // <LATIN SMALL LETTER R WITH DOT ABOVE> => <LATIN SMALL LETTER R>
+ { 0x01e5a , 0x00072 }, // <LATIN CAPITAL LETTER R WITH DOT BELOW> => <LATIN SMALL LETTER R>
+ { 0x01e5b , 0x00072 }, // <LATIN SMALL LETTER R WITH DOT BELOW> => <LATIN SMALL LETTER R>
+ { 0x01e5c , 0x00072 }, // <LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON> => <LATIN SMALL LETTER R>
+ { 0x01e5d , 0x00072 }, // <LATIN SMALL LETTER R WITH DOT BELOW AND MACRON> => <LATIN SMALL LETTER R>
+ { 0x01e5e , 0x00072 }, // <LATIN CAPITAL LETTER R WITH LINE BELOW> => <LATIN SMALL LETTER R>
+ { 0x01e5f , 0x00072 }, // <LATIN SMALL LETTER R WITH LINE BELOW> => <LATIN SMALL LETTER R>
+ { 0x01e60 , 0x00073 }, // <LATIN CAPITAL LETTER S WITH DOT ABOVE> => <LATIN SMALL LETTER S>
+ { 0x01e61 , 0x00073 }, // <LATIN SMALL LETTER S WITH DOT ABOVE> => <LATIN SMALL LETTER S>
+ { 0x01e62 , 0x00073 }, // <LATIN CAPITAL LETTER S WITH DOT BELOW> => <LATIN SMALL LETTER S>
+ { 0x01e63 , 0x00073 }, // <LATIN SMALL LETTER S WITH DOT BELOW> => <LATIN SMALL LETTER S>
+ { 0x01e64 , 0x00073 }, // <LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE> => <LATIN SMALL LETTER S>
+ { 0x01e65 , 0x00073 }, // <LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE> => <LATIN SMALL LETTER S>
+ { 0x01e66 , 0x00073 }, // <LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE> => <LATIN SMALL LETTER S>
+ { 0x01e67 , 0x00073 }, // <LATIN SMALL LETTER S WITH CARON AND DOT ABOVE> => <LATIN SMALL LETTER S>
+ { 0x01e68 , 0x00073 }, // <LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE> => <LATIN SMALL LETTER S>
+ { 0x01e69 , 0x00073 }, // <LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE> => <LATIN SMALL LETTER S>
+ { 0x01e6a , 0x00074 }, // <LATIN CAPITAL LETTER T WITH DOT ABOVE> => <LATIN SMALL LETTER T>
+ { 0x01e6b , 0x00074 }, // <LATIN SMALL LETTER T WITH DOT ABOVE> => <LATIN SMALL LETTER T>
+ { 0x01e6c , 0x00074 }, // <LATIN CAPITAL LETTER T WITH DOT BELOW> => <LATIN SMALL LETTER T>
+ { 0x01e6d , 0x00074 }, // <LATIN SMALL LETTER T WITH DOT BELOW> => <LATIN SMALL LETTER T>
+ { 0x01e6e , 0x00074 }, // <LATIN CAPITAL LETTER T WITH LINE BELOW> => <LATIN SMALL LETTER T>
+ { 0x01e6f , 0x00074 }, // <LATIN SMALL LETTER T WITH LINE BELOW> => <LATIN SMALL LETTER T>
+ { 0x01e70 , 0x00074 }, // <LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER T>
+ { 0x01e71 , 0x00074 }, // <LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER T>
+ { 0x01e72 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH DIAERESIS BELOW> => <LATIN SMALL LETTER U>
+ { 0x01e73 , 0x00075 }, // <LATIN SMALL LETTER U WITH DIAERESIS BELOW> => <LATIN SMALL LETTER U>
+ { 0x01e74 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH TILDE BELOW> => <LATIN SMALL LETTER U>
+ { 0x01e75 , 0x00075 }, // <LATIN SMALL LETTER U WITH TILDE BELOW> => <LATIN SMALL LETTER U>
+ { 0x01e76 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER U>
+ { 0x01e77 , 0x00075 }, // <LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW> => <LATIN SMALL LETTER U>
+ { 0x01e78 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH TILDE AND ACUTE> => <LATIN SMALL LETTER U>
+ { 0x01e79 , 0x00075 }, // <LATIN SMALL LETTER U WITH TILDE AND ACUTE> => <LATIN SMALL LETTER U>
+ { 0x01e7a , 0x00075 }, // <LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS> => <LATIN SMALL LETTER U>
+ { 0x01e7b , 0x00075 }, // <LATIN SMALL LETTER U WITH MACRON AND DIAERESIS> => <LATIN SMALL LETTER U>
+ { 0x01e7c , 0x00076 }, // <LATIN CAPITAL LETTER V WITH TILDE> => <LATIN SMALL LETTER V>
+ { 0x01e7d , 0x00076 }, // <LATIN SMALL LETTER V WITH TILDE> => <LATIN SMALL LETTER V>
+ { 0x01e7e , 0x00076 }, // <LATIN CAPITAL LETTER V WITH DOT BELOW> => <LATIN SMALL LETTER V>
+ { 0x01e7f , 0x00076 }, // <LATIN SMALL LETTER V WITH DOT BELOW> => <LATIN SMALL LETTER V>
+ { 0x01e80 , 0x00077 }, // <LATIN CAPITAL LETTER W WITH GRAVE> => <LATIN SMALL LETTER W>
+ { 0x01e81 , 0x00077 }, // <LATIN SMALL LETTER W WITH GRAVE> => <LATIN SMALL LETTER W>
+ { 0x01e82 , 0x00077 }, // <LATIN CAPITAL LETTER W WITH ACUTE> => <LATIN SMALL LETTER W>
+ { 0x01e83 , 0x00077 }, // <LATIN SMALL LETTER W WITH ACUTE> => <LATIN SMALL LETTER W>
+ { 0x01e84 , 0x00077 }, // <LATIN CAPITAL LETTER W WITH DIAERESIS> => <LATIN SMALL LETTER W>
+ { 0x01e85 , 0x00077 }, // <LATIN SMALL LETTER W WITH DIAERESIS> => <LATIN SMALL LETTER W>
+ { 0x01e86 , 0x00077 }, // <LATIN CAPITAL LETTER W WITH DOT ABOVE> => <LATIN SMALL LETTER W>
+ { 0x01e87 , 0x00077 }, // <LATIN SMALL LETTER W WITH DOT ABOVE> => <LATIN SMALL LETTER W>
+ { 0x01e88 , 0x00077 }, // <LATIN CAPITAL LETTER W WITH DOT BELOW> => <LATIN SMALL LETTER W>
+ { 0x01e89 , 0x00077 }, // <LATIN SMALL LETTER W WITH DOT BELOW> => <LATIN SMALL LETTER W>
+ { 0x01e8a , 0x00078 }, // <LATIN CAPITAL LETTER X WITH DOT ABOVE> => <LATIN SMALL LETTER X>
+ { 0x01e8b , 0x00078 }, // <LATIN SMALL LETTER X WITH DOT ABOVE> => <LATIN SMALL LETTER X>
+ { 0x01e8c , 0x00078 }, // <LATIN CAPITAL LETTER X WITH DIAERESIS> => <LATIN SMALL LETTER X>
+ { 0x01e8d , 0x00078 }, // <LATIN SMALL LETTER X WITH DIAERESIS> => <LATIN SMALL LETTER X>
+ { 0x01e8e , 0x00079 }, // <LATIN CAPITAL LETTER Y WITH DOT ABOVE> => <LATIN SMALL LETTER Y>
+ { 0x01e8f , 0x00079 }, // <LATIN SMALL LETTER Y WITH DOT ABOVE> => <LATIN SMALL LETTER Y>
+ { 0x01e90 , 0x0007a }, // <LATIN CAPITAL LETTER Z WITH CIRCUMFLEX> => <LATIN SMALL LETTER Z>
+ { 0x01e91 , 0x0007a }, // <LATIN SMALL LETTER Z WITH CIRCUMFLEX> => <LATIN SMALL LETTER Z>
+ { 0x01e92 , 0x0007a }, // <LATIN CAPITAL LETTER Z WITH DOT BELOW> => <LATIN SMALL LETTER Z>
+ { 0x01e93 , 0x0007a }, // <LATIN SMALL LETTER Z WITH DOT BELOW> => <LATIN SMALL LETTER Z>
+ { 0x01e94 , 0x0007a }, // <LATIN CAPITAL LETTER Z WITH LINE BELOW> => <LATIN SMALL LETTER Z>
+ { 0x01e95 , 0x0007a }, // <LATIN SMALL LETTER Z WITH LINE BELOW> => <LATIN SMALL LETTER Z>
+ { 0x01e96 , 0x00068 }, // <LATIN SMALL LETTER H WITH LINE BELOW> => <LATIN SMALL LETTER H>
+ { 0x01e97 , 0x00074 }, // <LATIN SMALL LETTER T WITH DIAERESIS> => <LATIN SMALL LETTER T>
+ { 0x01e98 , 0x00077 }, // <LATIN SMALL LETTER W WITH RING ABOVE> => <LATIN SMALL LETTER W>
+ { 0x01e99 , 0x00079 }, // <LATIN SMALL LETTER Y WITH RING ABOVE> => <LATIN SMALL LETTER Y>
+ { 0x01e9b , 0x00073 }, // <LATIN SMALL LETTER LONG S WITH DOT ABOVE> => <LATIN SMALL LETTER S>
+ { 0x01ea0 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH DOT BELOW> => <LATIN SMALL LETTER A>
+ { 0x01ea1 , 0x00061 }, // <LATIN SMALL LETTER A WITH DOT BELOW> => <LATIN SMALL LETTER A>
+ { 0x01ea2 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH HOOK ABOVE> => <LATIN SMALL LETTER A>
+ { 0x01ea3 , 0x00061 }, // <LATIN SMALL LETTER A WITH HOOK ABOVE> => <LATIN SMALL LETTER A>
+ { 0x01ea4 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE> => <LATIN SMALL LETTER A>
+ { 0x01ea5 , 0x00061 }, // <LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE> => <LATIN SMALL LETTER A>
+ { 0x01ea6 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE> => <LATIN SMALL LETTER A>
+ { 0x01ea7 , 0x00061 }, // <LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE> => <LATIN SMALL LETTER A>
+ { 0x01ea8 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE> => <LATIN SMALL LETTER A>
+ { 0x01ea9 , 0x00061 }, // <LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE> => <LATIN SMALL LETTER A>
+ { 0x01eaa , 0x00061 }, // <LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE> => <LATIN SMALL LETTER A>
+ { 0x01eab , 0x00061 }, // <LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE> => <LATIN SMALL LETTER A>
+ { 0x01eac , 0x00061 }, // <LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW> => <LATIN SMALL LETTER A>
+ { 0x01ead , 0x00061 }, // <LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW> => <LATIN SMALL LETTER A>
+ { 0x01eae , 0x00061 }, // <LATIN CAPITAL LETTER A WITH BREVE AND ACUTE> => <LATIN SMALL LETTER A>
+ { 0x01eaf , 0x00061 }, // <LATIN SMALL LETTER A WITH BREVE AND ACUTE> => <LATIN SMALL LETTER A>
+ { 0x01eb0 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH BREVE AND GRAVE> => <LATIN SMALL LETTER A>
+ { 0x01eb1 , 0x00061 }, // <LATIN SMALL LETTER A WITH BREVE AND GRAVE> => <LATIN SMALL LETTER A>
+ { 0x01eb2 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE> => <LATIN SMALL LETTER A>
+ { 0x01eb3 , 0x00061 }, // <LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE> => <LATIN SMALL LETTER A>
+ { 0x01eb4 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH BREVE AND TILDE> => <LATIN SMALL LETTER A>
+ { 0x01eb5 , 0x00061 }, // <LATIN SMALL LETTER A WITH BREVE AND TILDE> => <LATIN SMALL LETTER A>
+ { 0x01eb6 , 0x00061 }, // <LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW> => <LATIN SMALL LETTER A>
+ { 0x01eb7 , 0x00061 }, // <LATIN SMALL LETTER A WITH BREVE AND DOT BELOW> => <LATIN SMALL LETTER A>
+ { 0x01eb8 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH DOT BELOW> => <LATIN SMALL LETTER E>
+ { 0x01eb9 , 0x00065 }, // <LATIN SMALL LETTER E WITH DOT BELOW> => <LATIN SMALL LETTER E>
+ { 0x01eba , 0x00065 }, // <LATIN CAPITAL LETTER E WITH HOOK ABOVE> => <LATIN SMALL LETTER E>
+ { 0x01ebb , 0x00065 }, // <LATIN SMALL LETTER E WITH HOOK ABOVE> => <LATIN SMALL LETTER E>
+ { 0x01ebc , 0x00065 }, // <LATIN CAPITAL LETTER E WITH TILDE> => <LATIN SMALL LETTER E>
+ { 0x01ebd , 0x00065 }, // <LATIN SMALL LETTER E WITH TILDE> => <LATIN SMALL LETTER E>
+ { 0x01ebe , 0x00065 }, // <LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE> => <LATIN SMALL LETTER E>
+ { 0x01ebf , 0x00065 }, // <LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE> => <LATIN SMALL LETTER E>
+ { 0x01ec0 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE> => <LATIN SMALL LETTER E>
+ { 0x01ec1 , 0x00065 }, // <LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE> => <LATIN SMALL LETTER E>
+ { 0x01ec2 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE> => <LATIN SMALL LETTER E>
+ { 0x01ec3 , 0x00065 }, // <LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE> => <LATIN SMALL LETTER E>
+ { 0x01ec4 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE> => <LATIN SMALL LETTER E>
+ { 0x01ec5 , 0x00065 }, // <LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE> => <LATIN SMALL LETTER E>
+ { 0x01ec6 , 0x00065 }, // <LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW> => <LATIN SMALL LETTER E>
+ { 0x01ec7 , 0x00065 }, // <LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW> => <LATIN SMALL LETTER E>
+ { 0x01ec8 , 0x00069 }, // <LATIN CAPITAL LETTER I WITH HOOK ABOVE> => <LATIN SMALL LETTER I>
+ { 0x01ec9 , 0x00069 }, // <LATIN SMALL LETTER I WITH HOOK ABOVE> => <LATIN SMALL LETTER I>
+ { 0x01eca , 0x00069 }, // <LATIN CAPITAL LETTER I WITH DOT BELOW> => <LATIN SMALL LETTER I>
+ { 0x01ecb , 0x00069 }, // <LATIN SMALL LETTER I WITH DOT BELOW> => <LATIN SMALL LETTER I>
+ { 0x01ecc , 0x0006f }, // <LATIN CAPITAL LETTER O WITH DOT BELOW> => <LATIN SMALL LETTER O>
+ { 0x01ecd , 0x0006f }, // <LATIN SMALL LETTER O WITH DOT BELOW> => <LATIN SMALL LETTER O>
+ { 0x01ece , 0x0006f }, // <LATIN CAPITAL LETTER O WITH HOOK ABOVE> => <LATIN SMALL LETTER O>
+ { 0x01ecf , 0x0006f }, // <LATIN SMALL LETTER O WITH HOOK ABOVE> => <LATIN SMALL LETTER O>
+ { 0x01ed0 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE> => <LATIN SMALL LETTER O>
+ { 0x01ed1 , 0x0006f }, // <LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE> => <LATIN SMALL LETTER O>
+ { 0x01ed2 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE> => <LATIN SMALL LETTER O>
+ { 0x01ed3 , 0x0006f }, // <LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE> => <LATIN SMALL LETTER O>
+ { 0x01ed4 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE> => <LATIN SMALL LETTER O>
+ { 0x01ed5 , 0x0006f }, // <LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE> => <LATIN SMALL LETTER O>
+ { 0x01ed6 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE> => <LATIN SMALL LETTER O>
+ { 0x01ed7 , 0x0006f }, // <LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE> => <LATIN SMALL LETTER O>
+ { 0x01ed8 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW> => <LATIN SMALL LETTER O>
+ { 0x01ed9 , 0x0006f }, // <LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW> => <LATIN SMALL LETTER O>
+ { 0x01eda , 0x0006f }, // <LATIN CAPITAL LETTER O WITH HORN AND ACUTE> => <LATIN SMALL LETTER O>
+ { 0x01edb , 0x0006f }, // <LATIN SMALL LETTER O WITH HORN AND ACUTE> => <LATIN SMALL LETTER O>
+ { 0x01edc , 0x0006f }, // <LATIN CAPITAL LETTER O WITH HORN AND GRAVE> => <LATIN SMALL LETTER O>
+ { 0x01edd , 0x0006f }, // <LATIN SMALL LETTER O WITH HORN AND GRAVE> => <LATIN SMALL LETTER O>
+ { 0x01ede , 0x0006f }, // <LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE> => <LATIN SMALL LETTER O>
+ { 0x01edf , 0x0006f }, // <LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE> => <LATIN SMALL LETTER O>
+ { 0x01ee0 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH HORN AND TILDE> => <LATIN SMALL LETTER O>
+ { 0x01ee1 , 0x0006f }, // <LATIN SMALL LETTER O WITH HORN AND TILDE> => <LATIN SMALL LETTER O>
+ { 0x01ee2 , 0x0006f }, // <LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW> => <LATIN SMALL LETTER O>
+ { 0x01ee3 , 0x0006f }, // <LATIN SMALL LETTER O WITH HORN AND DOT BELOW> => <LATIN SMALL LETTER O>
+ { 0x01ee4 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH DOT BELOW> => <LATIN SMALL LETTER U>
+ { 0x01ee5 , 0x00075 }, // <LATIN SMALL LETTER U WITH DOT BELOW> => <LATIN SMALL LETTER U>
+ { 0x01ee6 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH HOOK ABOVE> => <LATIN SMALL LETTER U>
+ { 0x01ee7 , 0x00075 }, // <LATIN SMALL LETTER U WITH HOOK ABOVE> => <LATIN SMALL LETTER U>
+ { 0x01ee8 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH HORN AND ACUTE> => <LATIN SMALL LETTER U>
+ { 0x01ee9 , 0x00075 }, // <LATIN SMALL LETTER U WITH HORN AND ACUTE> => <LATIN SMALL LETTER U>
+ { 0x01eea , 0x00075 }, // <LATIN CAPITAL LETTER U WITH HORN AND GRAVE> => <LATIN SMALL LETTER U>
+ { 0x01eeb , 0x00075 }, // <LATIN SMALL LETTER U WITH HORN AND GRAVE> => <LATIN SMALL LETTER U>
+ { 0x01eec , 0x00075 }, // <LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE> => <LATIN SMALL LETTER U>
+ { 0x01eed , 0x00075 }, // <LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE> => <LATIN SMALL LETTER U>
+ { 0x01eee , 0x00075 }, // <LATIN CAPITAL LETTER U WITH HORN AND TILDE> => <LATIN SMALL LETTER U>
+ { 0x01eef , 0x00075 }, // <LATIN SMALL LETTER U WITH HORN AND TILDE> => <LATIN SMALL LETTER U>
+ { 0x01ef0 , 0x00075 }, // <LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW> => <LATIN SMALL LETTER U>
+ { 0x01ef1 , 0x00075 }, // <LATIN SMALL LETTER U WITH HORN AND DOT BELOW> => <LATIN SMALL LETTER U>
+ { 0x01ef2 , 0x00079 }, // <LATIN CAPITAL LETTER Y WITH GRAVE> => <LATIN SMALL LETTER Y>
+ { 0x01ef3 , 0x00079 }, // <LATIN SMALL LETTER Y WITH GRAVE> => <LATIN SMALL LETTER Y>
+ { 0x01ef4 , 0x00079 }, // <LATIN CAPITAL LETTER Y WITH DOT BELOW> => <LATIN SMALL LETTER Y>
+ { 0x01ef5 , 0x00079 }, // <LATIN SMALL LETTER Y WITH DOT BELOW> => <LATIN SMALL LETTER Y>
+ { 0x01ef6 , 0x00079 }, // <LATIN CAPITAL LETTER Y WITH HOOK ABOVE> => <LATIN SMALL LETTER Y>
+ { 0x01ef7 , 0x00079 }, // <LATIN SMALL LETTER Y WITH HOOK ABOVE> => <LATIN SMALL LETTER Y>
+ { 0x01ef8 , 0x00079 }, // <LATIN CAPITAL LETTER Y WITH TILDE> => <LATIN SMALL LETTER Y>
+ { 0x01ef9 , 0x00079 }, // <LATIN SMALL LETTER Y WITH TILDE> => <LATIN SMALL LETTER Y>
+ { 0x01efc , 0x01efd }, // <LATIN CAPITAL LETTER MIDDLE-WELSH V> => <LATIN SMALL LETTER MIDDLE-WELSH V>
+ { 0x01efe , 0x01eff }, // <LATIN CAPITAL LETTER Y WITH LOOP> => <LATIN SMALL LETTER Y WITH LOOP>
+ { 0x01f00 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH PSILI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f01 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH DASIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f02 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f03 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f04 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f05 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f06 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f07 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f08 , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH PSILI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f09 , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH DASIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f0a , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f0b , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f0c , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f0d , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f0e , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f0f , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f10 , 0x003b5 }, // <GREEK SMALL LETTER EPSILON WITH PSILI> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f11 , 0x003b5 }, // <GREEK SMALL LETTER EPSILON WITH DASIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f12 , 0x003b5 }, // <GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f13 , 0x003b5 }, // <GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f14 , 0x003b5 }, // <GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f15 , 0x003b5 }, // <GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f18 , 0x003b5 }, // <GREEK CAPITAL LETTER EPSILON WITH PSILI> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f19 , 0x003b5 }, // <GREEK CAPITAL LETTER EPSILON WITH DASIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f1a , 0x003b5 }, // <GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f1b , 0x003b5 }, // <GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f1c , 0x003b5 }, // <GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f1d , 0x003b5 }, // <GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f20 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH PSILI> => <GREEK SMALL LETTER ETA>
+ { 0x01f21 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH DASIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f22 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH PSILI AND VARIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f23 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH DASIA AND VARIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f24 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH PSILI AND OXIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f25 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH DASIA AND OXIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f26 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f27 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f28 , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH PSILI> => <GREEK SMALL LETTER ETA>
+ { 0x01f29 , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH DASIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f2a , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f2b , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f2c , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f2d , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f2e , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f2f , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f30 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH PSILI> => <GREEK SMALL LETTER IOTA>
+ { 0x01f31 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH DASIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f32 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH PSILI AND VARIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f33 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH DASIA AND VARIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f34 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH PSILI AND OXIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f35 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH DASIA AND OXIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f36 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI> => <GREEK SMALL LETTER IOTA>
+ { 0x01f37 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI> => <GREEK SMALL LETTER IOTA>
+ { 0x01f38 , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH PSILI> => <GREEK SMALL LETTER IOTA>
+ { 0x01f39 , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH DASIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f3a , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f3b , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f3c , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f3d , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f3e , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI> => <GREEK SMALL LETTER IOTA>
+ { 0x01f3f , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI> => <GREEK SMALL LETTER IOTA>
+ { 0x01f40 , 0x003bf }, // <GREEK SMALL LETTER OMICRON WITH PSILI> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f41 , 0x003bf }, // <GREEK SMALL LETTER OMICRON WITH DASIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f42 , 0x003bf }, // <GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f43 , 0x003bf }, // <GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f44 , 0x003bf }, // <GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f45 , 0x003bf }, // <GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f48 , 0x003bf }, // <GREEK CAPITAL LETTER OMICRON WITH PSILI> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f49 , 0x003bf }, // <GREEK CAPITAL LETTER OMICRON WITH DASIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f4a , 0x003bf }, // <GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f4b , 0x003bf }, // <GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f4c , 0x003bf }, // <GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f4d , 0x003bf }, // <GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f50 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH PSILI> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f51 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH DASIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f52 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f53 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f54 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f55 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f56 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f57 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f59 , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON WITH DASIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f5b , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f5d , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f5f , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f60 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH PSILI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f61 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH DASIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f62 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f63 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f64 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f65 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f66 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f67 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f68 , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH PSILI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f69 , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH DASIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f6a , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f6b , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f6c , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f6d , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f6e , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f6f , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f70 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH VARIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f71 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH OXIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f72 , 0x003b5 }, // <GREEK SMALL LETTER EPSILON WITH VARIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f73 , 0x003b5 }, // <GREEK SMALL LETTER EPSILON WITH OXIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01f74 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH VARIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f75 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH OXIA> => <GREEK SMALL LETTER ETA>
+ { 0x01f76 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH VARIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f77 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH OXIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01f78 , 0x003bf }, // <GREEK SMALL LETTER OMICRON WITH VARIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f79 , 0x003bf }, // <GREEK SMALL LETTER OMICRON WITH OXIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01f7a , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH VARIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f7b , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH OXIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01f7c , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH VARIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f7d , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH OXIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01f80 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f81 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f82 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f83 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f84 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f85 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f86 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f87 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f88 , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f89 , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f8a , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f8b , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f8c , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f8d , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f8e , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f8f , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01f90 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f91 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f92 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f93 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f94 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f95 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f96 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f97 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f98 , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f99 , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f9a , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f9b , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f9c , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f9d , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f9e , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01f9f , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01fa0 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fa1 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fa2 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fa3 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fa4 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fa5 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fa6 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fa7 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fa8 , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fa9 , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01faa , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fab , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fac , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fad , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fae , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01faf , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01fb0 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH VRACHY> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fb1 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH MACRON> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fb2 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fb3 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fb4 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fb6 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH PERISPOMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fb7 , 0x003b1 }, // <GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fb8 , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH VRACHY> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fb9 , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH MACRON> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fba , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH VARIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fbb , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH OXIA> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fbc , 0x003b1 }, // <GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI> => <GREEK SMALL LETTER ALPHA>
+ { 0x01fbe , 0x003b9 }, // <GREEK PROSGEGRAMMENI> => <GREEK SMALL LETTER IOTA>
+ { 0x01fc2 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01fc3 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01fc4 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01fc6 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH PERISPOMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01fc7 , 0x003b7 }, // <GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01fc8 , 0x003b5 }, // <GREEK CAPITAL LETTER EPSILON WITH VARIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01fc9 , 0x003b5 }, // <GREEK CAPITAL LETTER EPSILON WITH OXIA> => <GREEK SMALL LETTER EPSILON>
+ { 0x01fca , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH VARIA> => <GREEK SMALL LETTER ETA>
+ { 0x01fcb , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH OXIA> => <GREEK SMALL LETTER ETA>
+ { 0x01fcc , 0x003b7 }, // <GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI> => <GREEK SMALL LETTER ETA>
+ { 0x01fd0 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH VRACHY> => <GREEK SMALL LETTER IOTA>
+ { 0x01fd1 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH MACRON> => <GREEK SMALL LETTER IOTA>
+ { 0x01fd2 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01fd3 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01fd6 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH PERISPOMENI> => <GREEK SMALL LETTER IOTA>
+ { 0x01fd7 , 0x003b9 }, // <GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI> => <GREEK SMALL LETTER IOTA>
+ { 0x01fd8 , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH VRACHY> => <GREEK SMALL LETTER IOTA>
+ { 0x01fd9 , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH MACRON> => <GREEK SMALL LETTER IOTA>
+ { 0x01fda , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH VARIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01fdb , 0x003b9 }, // <GREEK CAPITAL LETTER IOTA WITH OXIA> => <GREEK SMALL LETTER IOTA>
+ { 0x01fe0 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH VRACHY> => <GREEK SMALL LETTER UPSILON>
+ { 0x01fe1 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH MACRON> => <GREEK SMALL LETTER UPSILON>
+ { 0x01fe2 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01fe3 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01fe4 , 0x003c1 }, // <GREEK SMALL LETTER RHO WITH PSILI> => <GREEK SMALL LETTER RHO>
+ { 0x01fe5 , 0x003c1 }, // <GREEK SMALL LETTER RHO WITH DASIA> => <GREEK SMALL LETTER RHO>
+ { 0x01fe6 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH PERISPOMENI> => <GREEK SMALL LETTER UPSILON>
+ { 0x01fe7 , 0x003c5 }, // <GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI> => <GREEK SMALL LETTER UPSILON>
+ { 0x01fe8 , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON WITH VRACHY> => <GREEK SMALL LETTER UPSILON>
+ { 0x01fe9 , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON WITH MACRON> => <GREEK SMALL LETTER UPSILON>
+ { 0x01fea , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON WITH VARIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01feb , 0x003c5 }, // <GREEK CAPITAL LETTER UPSILON WITH OXIA> => <GREEK SMALL LETTER UPSILON>
+ { 0x01fec , 0x003c1 }, // <GREEK CAPITAL LETTER RHO WITH DASIA> => <GREEK SMALL LETTER RHO>
+ { 0x01ff2 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01ff3 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01ff4 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01ff6 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH PERISPOMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01ff7 , 0x003c9 }, // <GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x01ff8 , 0x003bf }, // <GREEK CAPITAL LETTER OMICRON WITH VARIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01ff9 , 0x003bf }, // <GREEK CAPITAL LETTER OMICRON WITH OXIA> => <GREEK SMALL LETTER OMICRON>
+ { 0x01ffa , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH VARIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01ffb , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH OXIA> => <GREEK SMALL LETTER OMEGA>
+ { 0x01ffc , 0x003c9 }, // <GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI> => <GREEK SMALL LETTER OMEGA>
+ { 0x02070 , 0x00030 }, // <SUPERSCRIPT ZERO> => <DIGIT ZERO>
+ { 0x02071 , 0x00069 }, // <SUPERSCRIPT LATIN SMALL LETTER I> => <LATIN SMALL LETTER I>
+ { 0x02074 , 0x00034 }, // <SUPERSCRIPT FOUR> => <DIGIT FOUR>
+ { 0x02075 , 0x00035 }, // <SUPERSCRIPT FIVE> => <DIGIT FIVE>
+ { 0x02076 , 0x00036 }, // <SUPERSCRIPT SIX> => <DIGIT SIX>
+ { 0x02077 , 0x00037 }, // <SUPERSCRIPT SEVEN> => <DIGIT SEVEN>
+ { 0x02078 , 0x00038 }, // <SUPERSCRIPT EIGHT> => <DIGIT EIGHT>
+ { 0x02079 , 0x00039 }, // <SUPERSCRIPT NINE> => <DIGIT NINE>
+ { 0x0207f , 0x0006e }, // <SUPERSCRIPT LATIN SMALL LETTER N> => <LATIN SMALL LETTER N>
+ { 0x02080 , 0x00030 }, // <SUBSCRIPT ZERO> => <DIGIT ZERO>
+ { 0x02081 , 0x00031 }, // <SUBSCRIPT ONE> => <DIGIT ONE>
+ { 0x02082 , 0x00032 }, // <SUBSCRIPT TWO> => <DIGIT TWO>
+ { 0x02083 , 0x00033 }, // <SUBSCRIPT THREE> => <DIGIT THREE>
+ { 0x02084 , 0x00034 }, // <SUBSCRIPT FOUR> => <DIGIT FOUR>
+ { 0x02085 , 0x00035 }, // <SUBSCRIPT FIVE> => <DIGIT FIVE>
+ { 0x02086 , 0x00036 }, // <SUBSCRIPT SIX> => <DIGIT SIX>
+ { 0x02087 , 0x00037 }, // <SUBSCRIPT SEVEN> => <DIGIT SEVEN>
+ { 0x02088 , 0x00038 }, // <SUBSCRIPT EIGHT> => <DIGIT EIGHT>
+ { 0x02089 , 0x00039 }, // <SUBSCRIPT NINE> => <DIGIT NINE>
+ { 0x02090 , 0x00061 }, // <LATIN SUBSCRIPT SMALL LETTER A> => <LATIN SMALL LETTER A>
+ { 0x02091 , 0x00065 }, // <LATIN SUBSCRIPT SMALL LETTER E> => <LATIN SMALL LETTER E>
+ { 0x02092 , 0x0006f }, // <LATIN SUBSCRIPT SMALL LETTER O> => <LATIN SMALL LETTER O>
+ { 0x02093 , 0x00078 }, // <LATIN SUBSCRIPT SMALL LETTER X> => <LATIN SMALL LETTER X>
+ { 0x02094 , 0x00259 }, // <LATIN SUBSCRIPT SMALL LETTER SCHWA> => <LATIN SMALL LETTER SCHWA>
+ { 0x02095 , 0x00068 }, // <LATIN SUBSCRIPT SMALL LETTER H> => <LATIN SMALL LETTER H>
+ { 0x02096 , 0x0006b }, // <LATIN SUBSCRIPT SMALL LETTER K> => <LATIN SMALL LETTER K>
+ { 0x02097 , 0x0006c }, // <LATIN SUBSCRIPT SMALL LETTER L> => <LATIN SMALL LETTER L>
+ { 0x02098 , 0x0006d }, // <LATIN SUBSCRIPT SMALL LETTER M> => <LATIN SMALL LETTER M>
+ { 0x02099 , 0x0006e }, // <LATIN SUBSCRIPT SMALL LETTER N> => <LATIN SMALL LETTER N>
+ { 0x0209a , 0x00070 }, // <LATIN SUBSCRIPT SMALL LETTER P> => <LATIN SMALL LETTER P>
+ { 0x0209b , 0x00073 }, // <LATIN SUBSCRIPT SMALL LETTER S> => <LATIN SMALL LETTER S>
+ { 0x0209c , 0x00074 }, // <LATIN SUBSCRIPT SMALL LETTER T> => <LATIN SMALL LETTER T>
+ { 0x02102 , 0x00063 }, // <DOUBLE-STRUCK CAPITAL C> => <LATIN SMALL LETTER C>
+ { 0x02107 , 0x0025b }, // <EULER CONSTANT> => <LATIN SMALL LETTER OPEN E>
+ { 0x0210a , 0x00067 }, // <SCRIPT SMALL G> => <LATIN SMALL LETTER G>
+ { 0x0210b , 0x00068 }, // <SCRIPT CAPITAL H> => <LATIN SMALL LETTER H>
+ { 0x0210c , 0x00068 }, // <BLACK-LETTER CAPITAL H> => <LATIN SMALL LETTER H>
+ { 0x0210d , 0x00068 }, // <DOUBLE-STRUCK CAPITAL H> => <LATIN SMALL LETTER H>
+ { 0x0210e , 0x00068 }, // <PLANCK CONSTANT> => <LATIN SMALL LETTER H>
+ { 0x0210f , 0x00068 }, // <PLANCK CONSTANT OVER TWO PI> => <LATIN SMALL LETTER H>
+ { 0x02110 , 0x00069 }, // <SCRIPT CAPITAL I> => <LATIN SMALL LETTER I>
+ { 0x02111 , 0x00069 }, // <BLACK-LETTER CAPITAL I> => <LATIN SMALL LETTER I>
+ { 0x02112 , 0x0006c }, // <SCRIPT CAPITAL L> => <LATIN SMALL LETTER L>
+ { 0x02113 , 0x0006c }, // <SCRIPT SMALL L> => <LATIN SMALL LETTER L>
+ { 0x02115 , 0x0006e }, // <DOUBLE-STRUCK CAPITAL N> => <LATIN SMALL LETTER N>
+ { 0x02119 , 0x00070 }, // <DOUBLE-STRUCK CAPITAL P> => <LATIN SMALL LETTER P>
+ { 0x0211a , 0x00071 }, // <DOUBLE-STRUCK CAPITAL Q> => <LATIN SMALL LETTER Q>
+ { 0x0211b , 0x00072 }, // <SCRIPT CAPITAL R> => <LATIN SMALL LETTER R>
+ { 0x0211c , 0x00072 }, // <BLACK-LETTER CAPITAL R> => <LATIN SMALL LETTER R>
+ { 0x0211d , 0x00072 }, // <DOUBLE-STRUCK CAPITAL R> => <LATIN SMALL LETTER R>
+ { 0x02124 , 0x0007a }, // <DOUBLE-STRUCK CAPITAL Z> => <LATIN SMALL LETTER Z>
+ { 0x02126 , 0x003c9 }, // <OHM SIGN> => <GREEK SMALL LETTER OMEGA>
+ { 0x02128 , 0x0007a }, // <BLACK-LETTER CAPITAL Z> => <LATIN SMALL LETTER Z>
+ { 0x0212a , 0x0006b }, // <KELVIN SIGN> => <LATIN SMALL LETTER K>
+ { 0x0212b , 0x00061 }, // <ANGSTROM SIGN> => <LATIN SMALL LETTER A>
+ { 0x0212c , 0x00062 }, // <SCRIPT CAPITAL B> => <LATIN SMALL LETTER B>
+ { 0x0212d , 0x00063 }, // <BLACK-LETTER CAPITAL C> => <LATIN SMALL LETTER C>
+ { 0x0212f , 0x00065 }, // <SCRIPT SMALL E> => <LATIN SMALL LETTER E>
+ { 0x02130 , 0x00065 }, // <SCRIPT CAPITAL E> => <LATIN SMALL LETTER E>
+ { 0x02131 , 0x00066 }, // <SCRIPT CAPITAL F> => <LATIN SMALL LETTER F>
+ { 0x02132 , 0x0214e }, // <TURNED CAPITAL F> => <TURNED SMALL F>
+ { 0x02133 , 0x0006d }, // <SCRIPT CAPITAL M> => <LATIN SMALL LETTER M>
+ { 0x02134 , 0x0006f }, // <SCRIPT SMALL O> => <LATIN SMALL LETTER O>
+ { 0x02135 , 0x005d0 }, // <ALEF SYMBOL> => <HEBREW LETTER ALEF>
+ { 0x02136 , 0x005d1 }, // <BET SYMBOL> => <HEBREW LETTER BET>
+ { 0x02137 , 0x005d2 }, // <GIMEL SYMBOL> => <HEBREW LETTER GIMEL>
+ { 0x02138 , 0x005d3 }, // <DALET SYMBOL> => <HEBREW LETTER DALET>
+ { 0x02139 , 0x00069 }, // <INFORMATION SOURCE> => <LATIN SMALL LETTER I>
+ { 0x0213c , 0x003c0 }, // <DOUBLE-STRUCK SMALL PI> => <GREEK SMALL LETTER PI>
+ { 0x0213d , 0x003b3 }, // <DOUBLE-STRUCK SMALL GAMMA> => <GREEK SMALL LETTER GAMMA>
+ { 0x0213e , 0x003b3 }, // <DOUBLE-STRUCK CAPITAL GAMMA> => <GREEK SMALL LETTER GAMMA>
+ { 0x0213f , 0x003c0 }, // <DOUBLE-STRUCK CAPITAL PI> => <GREEK SMALL LETTER PI>
+ { 0x02145 , 0x00064 }, // <DOUBLE-STRUCK ITALIC CAPITAL D> => <LATIN SMALL LETTER D>
+ { 0x02146 , 0x00064 }, // <DOUBLE-STRUCK ITALIC SMALL D> => <LATIN SMALL LETTER D>
+ { 0x02147 , 0x00065 }, // <DOUBLE-STRUCK ITALIC SMALL E> => <LATIN SMALL LETTER E>
+ { 0x02148 , 0x00069 }, // <DOUBLE-STRUCK ITALIC SMALL I> => <LATIN SMALL LETTER I>
+ { 0x02149 , 0x0006a }, // <DOUBLE-STRUCK ITALIC SMALL J> => <LATIN SMALL LETTER J>
+ { 0x0215f , 0x00031 }, // <FRACTION NUMERATOR ONE> => <DIGIT ONE>
+ { 0x02160 , 0x00069 }, // <ROMAN NUMERAL ONE> => <LATIN SMALL LETTER I>
+ { 0x02164 , 0x00076 }, // <ROMAN NUMERAL FIVE> => <LATIN SMALL LETTER V>
+ { 0x02169 , 0x00078 }, // <ROMAN NUMERAL TEN> => <LATIN SMALL LETTER X>
+ { 0x0216c , 0x0006c }, // <ROMAN NUMERAL FIFTY> => <LATIN SMALL LETTER L>
+ { 0x0216d , 0x00063 }, // <ROMAN NUMERAL ONE HUNDRED> => <LATIN SMALL LETTER C>
+ { 0x0216e , 0x00064 }, // <ROMAN NUMERAL FIVE HUNDRED> => <LATIN SMALL LETTER D>
+ { 0x0216f , 0x0006d }, // <ROMAN NUMERAL ONE THOUSAND> => <LATIN SMALL LETTER M>
+ { 0x02170 , 0x00069 }, // <SMALL ROMAN NUMERAL ONE> => <LATIN SMALL LETTER I>
+ { 0x02174 , 0x00076 }, // <SMALL ROMAN NUMERAL FIVE> => <LATIN SMALL LETTER V>
+ { 0x02179 , 0x00078 }, // <SMALL ROMAN NUMERAL TEN> => <LATIN SMALL LETTER X>
+ { 0x0217c , 0x0006c }, // <SMALL ROMAN NUMERAL FIFTY> => <LATIN SMALL LETTER L>
+ { 0x0217d , 0x00063 }, // <SMALL ROMAN NUMERAL ONE HUNDRED> => <LATIN SMALL LETTER C>
+ { 0x0217e , 0x00064 }, // <SMALL ROMAN NUMERAL FIVE HUNDRED> => <LATIN SMALL LETTER D>
+ { 0x0217f , 0x0006d }, // <SMALL ROMAN NUMERAL ONE THOUSAND> => <LATIN SMALL LETTER M>
+ { 0x02183 , 0x02184 }, // <ROMAN NUMERAL REVERSED ONE HUNDRED> => <LATIN SMALL LETTER REVERSED C>
+ { 0x02185 , 0x00036 }, // <ROMAN NUMERAL SIX LATE FORM> => <DIGIT SIX>
+ { 0x02460 , 0x00031 }, // <CIRCLED DIGIT ONE> => <DIGIT ONE>
+ { 0x02461 , 0x00032 }, // <CIRCLED DIGIT TWO> => <DIGIT TWO>
+ { 0x02462 , 0x00033 }, // <CIRCLED DIGIT THREE> => <DIGIT THREE>
+ { 0x02463 , 0x00034 }, // <CIRCLED DIGIT FOUR> => <DIGIT FOUR>
+ { 0x02464 , 0x00035 }, // <CIRCLED DIGIT FIVE> => <DIGIT FIVE>
+ { 0x02465 , 0x00036 }, // <CIRCLED DIGIT SIX> => <DIGIT SIX>
+ { 0x02466 , 0x00037 }, // <CIRCLED DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x02467 , 0x00038 }, // <CIRCLED DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x02468 , 0x00039 }, // <CIRCLED DIGIT NINE> => <DIGIT NINE>
+ { 0x02474 , 0x00031 }, // <PARENTHESIZED DIGIT ONE> => <DIGIT ONE>
+ { 0x02475 , 0x00032 }, // <PARENTHESIZED DIGIT TWO> => <DIGIT TWO>
+ { 0x02476 , 0x00033 }, // <PARENTHESIZED DIGIT THREE> => <DIGIT THREE>
+ { 0x02477 , 0x00034 }, // <PARENTHESIZED DIGIT FOUR> => <DIGIT FOUR>
+ { 0x02478 , 0x00035 }, // <PARENTHESIZED DIGIT FIVE> => <DIGIT FIVE>
+ { 0x02479 , 0x00036 }, // <PARENTHESIZED DIGIT SIX> => <DIGIT SIX>
+ { 0x0247a , 0x00037 }, // <PARENTHESIZED DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0247b , 0x00038 }, // <PARENTHESIZED DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0247c , 0x00039 }, // <PARENTHESIZED DIGIT NINE> => <DIGIT NINE>
+ { 0x02488 , 0x00031 }, // <DIGIT ONE FULL STOP> => <DIGIT ONE>
+ { 0x02489 , 0x00032 }, // <DIGIT TWO FULL STOP> => <DIGIT TWO>
+ { 0x0248a , 0x00033 }, // <DIGIT THREE FULL STOP> => <DIGIT THREE>
+ { 0x0248b , 0x00034 }, // <DIGIT FOUR FULL STOP> => <DIGIT FOUR>
+ { 0x0248c , 0x00035 }, // <DIGIT FIVE FULL STOP> => <DIGIT FIVE>
+ { 0x0248d , 0x00036 }, // <DIGIT SIX FULL STOP> => <DIGIT SIX>
+ { 0x0248e , 0x00037 }, // <DIGIT SEVEN FULL STOP> => <DIGIT SEVEN>
+ { 0x0248f , 0x00038 }, // <DIGIT EIGHT FULL STOP> => <DIGIT EIGHT>
+ { 0x02490 , 0x00039 }, // <DIGIT NINE FULL STOP> => <DIGIT NINE>
+ { 0x024ea , 0x00030 }, // <CIRCLED DIGIT ZERO> => <DIGIT ZERO>
+ { 0x024f5 , 0x00031 }, // <DOUBLE CIRCLED DIGIT ONE> => <DIGIT ONE>
+ { 0x024f6 , 0x00032 }, // <DOUBLE CIRCLED DIGIT TWO> => <DIGIT TWO>
+ { 0x024f7 , 0x00033 }, // <DOUBLE CIRCLED DIGIT THREE> => <DIGIT THREE>
+ { 0x024f8 , 0x00034 }, // <DOUBLE CIRCLED DIGIT FOUR> => <DIGIT FOUR>
+ { 0x024f9 , 0x00035 }, // <DOUBLE CIRCLED DIGIT FIVE> => <DIGIT FIVE>
+ { 0x024fa , 0x00036 }, // <DOUBLE CIRCLED DIGIT SIX> => <DIGIT SIX>
+ { 0x024fb , 0x00037 }, // <DOUBLE CIRCLED DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x024fc , 0x00038 }, // <DOUBLE CIRCLED DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x024fd , 0x00039 }, // <DOUBLE CIRCLED DIGIT NINE> => <DIGIT NINE>
+ { 0x024ff , 0x00030 }, // <NEGATIVE CIRCLED DIGIT ZERO> => <DIGIT ZERO>
+ { 0x02776 , 0x00031 }, // <DINGBAT NEGATIVE CIRCLED DIGIT ONE> => <DIGIT ONE>
+ { 0x02777 , 0x00032 }, // <DINGBAT NEGATIVE CIRCLED DIGIT TWO> => <DIGIT TWO>
+ { 0x02778 , 0x00033 }, // <DINGBAT NEGATIVE CIRCLED DIGIT THREE> => <DIGIT THREE>
+ { 0x02779 , 0x00034 }, // <DINGBAT NEGATIVE CIRCLED DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0277a , 0x00035 }, // <DINGBAT NEGATIVE CIRCLED DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0277b , 0x00036 }, // <DINGBAT NEGATIVE CIRCLED DIGIT SIX> => <DIGIT SIX>
+ { 0x0277c , 0x00037 }, // <DINGBAT NEGATIVE CIRCLED DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0277d , 0x00038 }, // <DINGBAT NEGATIVE CIRCLED DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0277e , 0x00039 }, // <DINGBAT NEGATIVE CIRCLED DIGIT NINE> => <DIGIT NINE>
+ { 0x02780 , 0x00031 }, // <DINGBAT CIRCLED SANS-SERIF DIGIT ONE> => <DIGIT ONE>
+ { 0x02781 , 0x00032 }, // <DINGBAT CIRCLED SANS-SERIF DIGIT TWO> => <DIGIT TWO>
+ { 0x02782 , 0x00033 }, // <DINGBAT CIRCLED SANS-SERIF DIGIT THREE> => <DIGIT THREE>
+ { 0x02783 , 0x00034 }, // <DINGBAT CIRCLED SANS-SERIF DIGIT FOUR> => <DIGIT FOUR>
+ { 0x02784 , 0x00035 }, // <DINGBAT CIRCLED SANS-SERIF DIGIT FIVE> => <DIGIT FIVE>
+ { 0x02785 , 0x00036 }, // <DINGBAT CIRCLED SANS-SERIF DIGIT SIX> => <DIGIT SIX>
+ { 0x02786 , 0x00037 }, // <DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x02787 , 0x00038 }, // <DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x02788 , 0x00039 }, // <DINGBAT CIRCLED SANS-SERIF DIGIT NINE> => <DIGIT NINE>
+ { 0x0278a , 0x00031 }, // <DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE> => <DIGIT ONE>
+ { 0x0278b , 0x00032 }, // <DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO> => <DIGIT TWO>
+ { 0x0278c , 0x00033 }, // <DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE> => <DIGIT THREE>
+ { 0x0278d , 0x00034 }, // <DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0278e , 0x00035 }, // <DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0278f , 0x00036 }, // <DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX> => <DIGIT SIX>
+ { 0x02790 , 0x00037 }, // <DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x02791 , 0x00038 }, // <DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x02792 , 0x00039 }, // <DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE> => <DIGIT NINE>
+ { 0x02c00 , 0x02c30 }, // <GLAGOLITIC CAPITAL LETTER AZU> => <GLAGOLITIC SMALL LETTER AZU>
+ { 0x02c01 , 0x02c31 }, // <GLAGOLITIC CAPITAL LETTER BUKY> => <GLAGOLITIC SMALL LETTER BUKY>
+ { 0x02c02 , 0x02c32 }, // <GLAGOLITIC CAPITAL LETTER VEDE> => <GLAGOLITIC SMALL LETTER VEDE>
+ { 0x02c03 , 0x02c33 }, // <GLAGOLITIC CAPITAL LETTER GLAGOLI> => <GLAGOLITIC SMALL LETTER GLAGOLI>
+ { 0x02c04 , 0x02c34 }, // <GLAGOLITIC CAPITAL LETTER DOBRO> => <GLAGOLITIC SMALL LETTER DOBRO>
+ { 0x02c05 , 0x02c35 }, // <GLAGOLITIC CAPITAL LETTER YESTU> => <GLAGOLITIC SMALL LETTER YESTU>
+ { 0x02c06 , 0x02c36 }, // <GLAGOLITIC CAPITAL LETTER ZHIVETE> => <GLAGOLITIC SMALL LETTER ZHIVETE>
+ { 0x02c07 , 0x02c37 }, // <GLAGOLITIC CAPITAL LETTER DZELO> => <GLAGOLITIC SMALL LETTER DZELO>
+ { 0x02c08 , 0x02c38 }, // <GLAGOLITIC CAPITAL LETTER ZEMLJA> => <GLAGOLITIC SMALL LETTER ZEMLJA>
+ { 0x02c09 , 0x02c39 }, // <GLAGOLITIC CAPITAL LETTER IZHE> => <GLAGOLITIC SMALL LETTER IZHE>
+ { 0x02c0a , 0x02c3a }, // <GLAGOLITIC CAPITAL LETTER INITIAL IZHE> => <GLAGOLITIC SMALL LETTER INITIAL IZHE>
+ { 0x02c0b , 0x02c3b }, // <GLAGOLITIC CAPITAL LETTER I> => <GLAGOLITIC SMALL LETTER I>
+ { 0x02c0c , 0x02c3c }, // <GLAGOLITIC CAPITAL LETTER DJERVI> => <GLAGOLITIC SMALL LETTER DJERVI>
+ { 0x02c0d , 0x02c3d }, // <GLAGOLITIC CAPITAL LETTER KAKO> => <GLAGOLITIC SMALL LETTER KAKO>
+ { 0x02c0e , 0x02c3e }, // <GLAGOLITIC CAPITAL LETTER LJUDIJE> => <GLAGOLITIC SMALL LETTER LJUDIJE>
+ { 0x02c0f , 0x02c3f }, // <GLAGOLITIC CAPITAL LETTER MYSLITE> => <GLAGOLITIC SMALL LETTER MYSLITE>
+ { 0x02c10 , 0x02c40 }, // <GLAGOLITIC CAPITAL LETTER NASHI> => <GLAGOLITIC SMALL LETTER NASHI>
+ { 0x02c11 , 0x02c41 }, // <GLAGOLITIC CAPITAL LETTER ONU> => <GLAGOLITIC SMALL LETTER ONU>
+ { 0x02c12 , 0x02c42 }, // <GLAGOLITIC CAPITAL LETTER POKOJI> => <GLAGOLITIC SMALL LETTER POKOJI>
+ { 0x02c13 , 0x02c43 }, // <GLAGOLITIC CAPITAL LETTER RITSI> => <GLAGOLITIC SMALL LETTER RITSI>
+ { 0x02c14 , 0x02c44 }, // <GLAGOLITIC CAPITAL LETTER SLOVO> => <GLAGOLITIC SMALL LETTER SLOVO>
+ { 0x02c15 , 0x02c45 }, // <GLAGOLITIC CAPITAL LETTER TVRIDO> => <GLAGOLITIC SMALL LETTER TVRIDO>
+ { 0x02c16 , 0x02c46 }, // <GLAGOLITIC CAPITAL LETTER UKU> => <GLAGOLITIC SMALL LETTER UKU>
+ { 0x02c17 , 0x02c47 }, // <GLAGOLITIC CAPITAL LETTER FRITU> => <GLAGOLITIC SMALL LETTER FRITU>
+ { 0x02c18 , 0x02c48 }, // <GLAGOLITIC CAPITAL LETTER HERU> => <GLAGOLITIC SMALL LETTER HERU>
+ { 0x02c19 , 0x02c49 }, // <GLAGOLITIC CAPITAL LETTER OTU> => <GLAGOLITIC SMALL LETTER OTU>
+ { 0x02c1a , 0x02c4a }, // <GLAGOLITIC CAPITAL LETTER PE> => <GLAGOLITIC SMALL LETTER PE>
+ { 0x02c1b , 0x02c4b }, // <GLAGOLITIC CAPITAL LETTER SHTA> => <GLAGOLITIC SMALL LETTER SHTA>
+ { 0x02c1c , 0x02c4c }, // <GLAGOLITIC CAPITAL LETTER TSI> => <GLAGOLITIC SMALL LETTER TSI>
+ { 0x02c1d , 0x02c4d }, // <GLAGOLITIC CAPITAL LETTER CHRIVI> => <GLAGOLITIC SMALL LETTER CHRIVI>
+ { 0x02c1e , 0x02c4e }, // <GLAGOLITIC CAPITAL LETTER SHA> => <GLAGOLITIC SMALL LETTER SHA>
+ { 0x02c1f , 0x02c4f }, // <GLAGOLITIC CAPITAL LETTER YERU> => <GLAGOLITIC SMALL LETTER YERU>
+ { 0x02c20 , 0x02c50 }, // <GLAGOLITIC CAPITAL LETTER YERI> => <GLAGOLITIC SMALL LETTER YERI>
+ { 0x02c21 , 0x02c51 }, // <GLAGOLITIC CAPITAL LETTER YATI> => <GLAGOLITIC SMALL LETTER YATI>
+ { 0x02c22 , 0x02c52 }, // <GLAGOLITIC CAPITAL LETTER SPIDERY HA> => <GLAGOLITIC SMALL LETTER SPIDERY HA>
+ { 0x02c23 , 0x02c53 }, // <GLAGOLITIC CAPITAL LETTER YU> => <GLAGOLITIC SMALL LETTER YU>
+ { 0x02c24 , 0x02c54 }, // <GLAGOLITIC CAPITAL LETTER SMALL YUS> => <GLAGOLITIC SMALL LETTER SMALL YUS>
+ { 0x02c25 , 0x02c55 }, // <GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL> => <GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL>
+ { 0x02c26 , 0x02c56 }, // <GLAGOLITIC CAPITAL LETTER YO> => <GLAGOLITIC SMALL LETTER YO>
+ { 0x02c27 , 0x02c57 }, // <GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS> => <GLAGOLITIC SMALL LETTER IOTATED SMALL YUS>
+ { 0x02c28 , 0x02c58 }, // <GLAGOLITIC CAPITAL LETTER BIG YUS> => <GLAGOLITIC SMALL LETTER BIG YUS>
+ { 0x02c29 , 0x02c59 }, // <GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS> => <GLAGOLITIC SMALL LETTER IOTATED BIG YUS>
+ { 0x02c2a , 0x02c5a }, // <GLAGOLITIC CAPITAL LETTER FITA> => <GLAGOLITIC SMALL LETTER FITA>
+ { 0x02c2b , 0x02c5b }, // <GLAGOLITIC CAPITAL LETTER IZHITSA> => <GLAGOLITIC SMALL LETTER IZHITSA>
+ { 0x02c2c , 0x02c5c }, // <GLAGOLITIC CAPITAL LETTER SHTAPIC> => <GLAGOLITIC SMALL LETTER SHTAPIC>
+ { 0x02c2d , 0x02c5d }, // <GLAGOLITIC CAPITAL LETTER TROKUTASTI A> => <GLAGOLITIC SMALL LETTER TROKUTASTI A>
+ { 0x02c2e , 0x02c5e }, // <GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE> => <GLAGOLITIC SMALL LETTER LATINATE MYSLITE>
+ { 0x02c60 , 0x02c61 }, // <LATIN CAPITAL LETTER L WITH DOUBLE BAR> => <LATIN SMALL LETTER L WITH DOUBLE BAR>
+ { 0x02c62 , 0x0026b }, // <LATIN CAPITAL LETTER L WITH MIDDLE TILDE> => <LATIN SMALL LETTER L WITH MIDDLE TILDE>
+ { 0x02c63 , 0x01d7d }, // <LATIN CAPITAL LETTER P WITH STROKE> => <LATIN SMALL LETTER P WITH STROKE>
+ { 0x02c64 , 0x0027d }, // <LATIN CAPITAL LETTER R WITH TAIL> => <LATIN SMALL LETTER R WITH TAIL>
+ { 0x02c67 , 0x02c68 }, // <LATIN CAPITAL LETTER H WITH DESCENDER> => <LATIN SMALL LETTER H WITH DESCENDER>
+ { 0x02c69 , 0x02c6a }, // <LATIN CAPITAL LETTER K WITH DESCENDER> => <LATIN SMALL LETTER K WITH DESCENDER>
+ { 0x02c6b , 0x02c6c }, // <LATIN CAPITAL LETTER Z WITH DESCENDER> => <LATIN SMALL LETTER Z WITH DESCENDER>
+ { 0x02c6d , 0x00251 }, // <LATIN CAPITAL LETTER ALPHA> => <LATIN SMALL LETTER ALPHA>
+ { 0x02c6e , 0x00271 }, // <LATIN CAPITAL LETTER M WITH HOOK> => <LATIN SMALL LETTER M WITH HOOK>
+ { 0x02c6f , 0x00250 }, // <LATIN CAPITAL LETTER TURNED A> => <LATIN SMALL LETTER TURNED A>
+ { 0x02c70 , 0x00252 }, // <LATIN CAPITAL LETTER TURNED ALPHA> => <LATIN SMALL LETTER TURNED ALPHA>
+ { 0x02c72 , 0x02c73 }, // <LATIN CAPITAL LETTER W WITH HOOK> => <LATIN SMALL LETTER W WITH HOOK>
+ { 0x02c75 , 0x02c76 }, // <LATIN CAPITAL LETTER HALF H> => <LATIN SMALL LETTER HALF H>
+ { 0x02c7c , 0x0006a }, // <LATIN SUBSCRIPT SMALL LETTER J> => <LATIN SMALL LETTER J>
+ { 0x02c7d , 0x00076 }, // <MODIFIER LETTER CAPITAL V> => <LATIN SMALL LETTER V>
+ { 0x02c7e , 0x0023f }, // <LATIN CAPITAL LETTER S WITH SWASH TAIL> => <LATIN SMALL LETTER S WITH SWASH TAIL>
+ { 0x02c7f , 0x00240 }, // <LATIN CAPITAL LETTER Z WITH SWASH TAIL> => <LATIN SMALL LETTER Z WITH SWASH TAIL>
+ { 0x02c80 , 0x02c81 }, // <COPTIC CAPITAL LETTER ALFA> => <COPTIC SMALL LETTER ALFA>
+ { 0x02c82 , 0x02c83 }, // <COPTIC CAPITAL LETTER VIDA> => <COPTIC SMALL LETTER VIDA>
+ { 0x02c84 , 0x02c85 }, // <COPTIC CAPITAL LETTER GAMMA> => <COPTIC SMALL LETTER GAMMA>
+ { 0x02c86 , 0x02c87 }, // <COPTIC CAPITAL LETTER DALDA> => <COPTIC SMALL LETTER DALDA>
+ { 0x02c88 , 0x02c89 }, // <COPTIC CAPITAL LETTER EIE> => <COPTIC SMALL LETTER EIE>
+ { 0x02c8a , 0x02c8b }, // <COPTIC CAPITAL LETTER SOU> => <COPTIC SMALL LETTER SOU>
+ { 0x02c8c , 0x02c8d }, // <COPTIC CAPITAL LETTER ZATA> => <COPTIC SMALL LETTER ZATA>
+ { 0x02c8e , 0x02c8f }, // <COPTIC CAPITAL LETTER HATE> => <COPTIC SMALL LETTER HATE>
+ { 0x02c90 , 0x02c91 }, // <COPTIC CAPITAL LETTER THETHE> => <COPTIC SMALL LETTER THETHE>
+ { 0x02c92 , 0x02c93 }, // <COPTIC CAPITAL LETTER IAUDA> => <COPTIC SMALL LETTER IAUDA>
+ { 0x02c94 , 0x02c95 }, // <COPTIC CAPITAL LETTER KAPA> => <COPTIC SMALL LETTER KAPA>
+ { 0x02c96 , 0x02c97 }, // <COPTIC CAPITAL LETTER LAULA> => <COPTIC SMALL LETTER LAULA>
+ { 0x02c98 , 0x02c99 }, // <COPTIC CAPITAL LETTER MI> => <COPTIC SMALL LETTER MI>
+ { 0x02c9a , 0x02c9b }, // <COPTIC CAPITAL LETTER NI> => <COPTIC SMALL LETTER NI>
+ { 0x02c9c , 0x02c9d }, // <COPTIC CAPITAL LETTER KSI> => <COPTIC SMALL LETTER KSI>
+ { 0x02c9e , 0x02c9f }, // <COPTIC CAPITAL LETTER O> => <COPTIC SMALL LETTER O>
+ { 0x02ca0 , 0x02ca1 }, // <COPTIC CAPITAL LETTER PI> => <COPTIC SMALL LETTER PI>
+ { 0x02ca2 , 0x02ca3 }, // <COPTIC CAPITAL LETTER RO> => <COPTIC SMALL LETTER RO>
+ { 0x02ca4 , 0x02ca5 }, // <COPTIC CAPITAL LETTER SIMA> => <COPTIC SMALL LETTER SIMA>
+ { 0x02ca6 , 0x02ca7 }, // <COPTIC CAPITAL LETTER TAU> => <COPTIC SMALL LETTER TAU>
+ { 0x02ca8 , 0x02ca9 }, // <COPTIC CAPITAL LETTER UA> => <COPTIC SMALL LETTER UA>
+ { 0x02caa , 0x02cab }, // <COPTIC CAPITAL LETTER FI> => <COPTIC SMALL LETTER FI>
+ { 0x02cac , 0x02cad }, // <COPTIC CAPITAL LETTER KHI> => <COPTIC SMALL LETTER KHI>
+ { 0x02cae , 0x02caf }, // <COPTIC CAPITAL LETTER PSI> => <COPTIC SMALL LETTER PSI>
+ { 0x02cb0 , 0x02cb1 }, // <COPTIC CAPITAL LETTER OOU> => <COPTIC SMALL LETTER OOU>
+ { 0x02cb2 , 0x02cb3 }, // <COPTIC CAPITAL LETTER DIALECT-P ALEF> => <COPTIC SMALL LETTER DIALECT-P ALEF>
+ { 0x02cb4 , 0x02cb5 }, // <COPTIC CAPITAL LETTER OLD COPTIC AIN> => <COPTIC SMALL LETTER OLD COPTIC AIN>
+ { 0x02cb6 , 0x02cb7 }, // <COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE> => <COPTIC SMALL LETTER CRYPTOGRAMMIC EIE>
+ { 0x02cb8 , 0x02cb9 }, // <COPTIC CAPITAL LETTER DIALECT-P KAPA> => <COPTIC SMALL LETTER DIALECT-P KAPA>
+ { 0x02cba , 0x02cbb }, // <COPTIC CAPITAL LETTER DIALECT-P NI> => <COPTIC SMALL LETTER DIALECT-P NI>
+ { 0x02cbc , 0x02cbd }, // <COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI> => <COPTIC SMALL LETTER CRYPTOGRAMMIC NI>
+ { 0x02cbe , 0x02cbf }, // <COPTIC CAPITAL LETTER OLD COPTIC OOU> => <COPTIC SMALL LETTER OLD COPTIC OOU>
+ { 0x02cc0 , 0x02cc1 }, // <COPTIC CAPITAL LETTER SAMPI> => <COPTIC SMALL LETTER SAMPI>
+ { 0x02cc2 , 0x02cc3 }, // <COPTIC CAPITAL LETTER CROSSED SHEI> => <COPTIC SMALL LETTER CROSSED SHEI>
+ { 0x02cc4 , 0x02cc5 }, // <COPTIC CAPITAL LETTER OLD COPTIC SHEI> => <COPTIC SMALL LETTER OLD COPTIC SHEI>
+ { 0x02cc6 , 0x02cc7 }, // <COPTIC CAPITAL LETTER OLD COPTIC ESH> => <COPTIC SMALL LETTER OLD COPTIC ESH>
+ { 0x02cc8 , 0x02cc9 }, // <COPTIC CAPITAL LETTER AKHMIMIC KHEI> => <COPTIC SMALL LETTER AKHMIMIC KHEI>
+ { 0x02cca , 0x02ccb }, // <COPTIC CAPITAL LETTER DIALECT-P HORI> => <COPTIC SMALL LETTER DIALECT-P HORI>
+ { 0x02ccc , 0x02ccd }, // <COPTIC CAPITAL LETTER OLD COPTIC HORI> => <COPTIC SMALL LETTER OLD COPTIC HORI>
+ { 0x02cce , 0x02ccf }, // <COPTIC CAPITAL LETTER OLD COPTIC HA> => <COPTIC SMALL LETTER OLD COPTIC HA>
+ { 0x02cd0 , 0x02cd1 }, // <COPTIC CAPITAL LETTER L-SHAPED HA> => <COPTIC SMALL LETTER L-SHAPED HA>
+ { 0x02cd2 , 0x02cd3 }, // <COPTIC CAPITAL LETTER OLD COPTIC HEI> => <COPTIC SMALL LETTER OLD COPTIC HEI>
+ { 0x02cd4 , 0x02cd5 }, // <COPTIC CAPITAL LETTER OLD COPTIC HAT> => <COPTIC SMALL LETTER OLD COPTIC HAT>
+ { 0x02cd6 , 0x02cd7 }, // <COPTIC CAPITAL LETTER OLD COPTIC GANGIA> => <COPTIC SMALL LETTER OLD COPTIC GANGIA>
+ { 0x02cd8 , 0x02cd9 }, // <COPTIC CAPITAL LETTER OLD COPTIC DJA> => <COPTIC SMALL LETTER OLD COPTIC DJA>
+ { 0x02cda , 0x02cdb }, // <COPTIC CAPITAL LETTER OLD COPTIC SHIMA> => <COPTIC SMALL LETTER OLD COPTIC SHIMA>
+ { 0x02cdc , 0x02cdd }, // <COPTIC CAPITAL LETTER OLD NUBIAN SHIMA> => <COPTIC SMALL LETTER OLD NUBIAN SHIMA>
+ { 0x02cde , 0x02cdf }, // <COPTIC CAPITAL LETTER OLD NUBIAN NGI> => <COPTIC SMALL LETTER OLD NUBIAN NGI>
+ { 0x02ce0 , 0x02ce1 }, // <COPTIC CAPITAL LETTER OLD NUBIAN NYI> => <COPTIC SMALL LETTER OLD NUBIAN NYI>
+ { 0x02ce2 , 0x02ce3 }, // <COPTIC CAPITAL LETTER OLD NUBIAN WAU> => <COPTIC SMALL LETTER OLD NUBIAN WAU>
+ { 0x02ceb , 0x02cec }, // <COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI> => <COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI>
+ { 0x02ced , 0x02cee }, // <COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA> => <COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA>
+ { 0x02cf2 , 0x02cf3 }, // <COPTIC CAPITAL LETTER BOHAIRIC KHEI> => <COPTIC SMALL LETTER BOHAIRIC KHEI>
+ { 0x03007 , 0x00030 }, // <IDEOGRAPHIC NUMBER ZERO> => <DIGIT ZERO>
+ { 0x03021 , 0x00031 }, // <HANGZHOU NUMERAL ONE> => <DIGIT ONE>
+ { 0x03022 , 0x00032 }, // <HANGZHOU NUMERAL TWO> => <DIGIT TWO>
+ { 0x03023 , 0x00033 }, // <HANGZHOU NUMERAL THREE> => <DIGIT THREE>
+ { 0x03024 , 0x00034 }, // <HANGZHOU NUMERAL FOUR> => <DIGIT FOUR>
+ { 0x03025 , 0x00035 }, // <HANGZHOU NUMERAL FIVE> => <DIGIT FIVE>
+ { 0x03026 , 0x00036 }, // <HANGZHOU NUMERAL SIX> => <DIGIT SIX>
+ { 0x03027 , 0x00037 }, // <HANGZHOU NUMERAL SEVEN> => <DIGIT SEVEN>
+ { 0x03028 , 0x00038 }, // <HANGZHOU NUMERAL EIGHT> => <DIGIT EIGHT>
+ { 0x03029 , 0x00039 }, // <HANGZHOU NUMERAL NINE> => <DIGIT NINE>
+ { 0x03032 , 0x03031 }, // <VERTICAL KANA REPEAT WITH VOICED SOUND MARK> => <VERTICAL KANA REPEAT MARK>
+ { 0x03034 , 0x03033 }, // <VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF> => <VERTICAL KANA REPEAT MARK UPPER HALF>
+ { 0x03041 , 0x030a2 }, // <HIRAGANA LETTER SMALL A> => <KATAKANA LETTER A>
+ { 0x03042 , 0x030a2 }, // <HIRAGANA LETTER A> => <KATAKANA LETTER A>
+ { 0x03043 , 0x030a4 }, // <HIRAGANA LETTER SMALL I> => <KATAKANA LETTER I>
+ { 0x03044 , 0x030a4 }, // <HIRAGANA LETTER I> => <KATAKANA LETTER I>
+ { 0x03045 , 0x030a6 }, // <HIRAGANA LETTER SMALL U> => <KATAKANA LETTER U>
+ { 0x03046 , 0x030a6 }, // <HIRAGANA LETTER U> => <KATAKANA LETTER U>
+ { 0x03047 , 0x030a8 }, // <HIRAGANA LETTER SMALL E> => <KATAKANA LETTER E>
+ { 0x03048 , 0x030a8 }, // <HIRAGANA LETTER E> => <KATAKANA LETTER E>
+ { 0x03049 , 0x030aa }, // <HIRAGANA LETTER SMALL O> => <KATAKANA LETTER O>
+ { 0x0304a , 0x030aa }, // <HIRAGANA LETTER O> => <KATAKANA LETTER O>
+ { 0x0304b , 0x030ab }, // <HIRAGANA LETTER KA> => <KATAKANA LETTER KA>
+ { 0x0304c , 0x030ab }, // <HIRAGANA LETTER GA> => <KATAKANA LETTER KA>
+ { 0x0304d , 0x030ad }, // <HIRAGANA LETTER KI> => <KATAKANA LETTER KI>
+ { 0x0304e , 0x030ad }, // <HIRAGANA LETTER GI> => <KATAKANA LETTER KI>
+ { 0x0304f , 0x030af }, // <HIRAGANA LETTER KU> => <KATAKANA LETTER KU>
+ { 0x03050 , 0x030af }, // <HIRAGANA LETTER GU> => <KATAKANA LETTER KU>
+ { 0x03051 , 0x030b1 }, // <HIRAGANA LETTER KE> => <KATAKANA LETTER KE>
+ { 0x03052 , 0x030b1 }, // <HIRAGANA LETTER GE> => <KATAKANA LETTER KE>
+ { 0x03053 , 0x030b3 }, // <HIRAGANA LETTER KO> => <KATAKANA LETTER KO>
+ { 0x03054 , 0x030b3 }, // <HIRAGANA LETTER GO> => <KATAKANA LETTER KO>
+ { 0x03055 , 0x030b5 }, // <HIRAGANA LETTER SA> => <KATAKANA LETTER SA>
+ { 0x03056 , 0x030b5 }, // <HIRAGANA LETTER ZA> => <KATAKANA LETTER SA>
+ { 0x03057 , 0x030b7 }, // <HIRAGANA LETTER SI> => <KATAKANA LETTER SI>
+ { 0x03058 , 0x030b7 }, // <HIRAGANA LETTER ZI> => <KATAKANA LETTER SI>
+ { 0x03059 , 0x030b9 }, // <HIRAGANA LETTER SU> => <KATAKANA LETTER SU>
+ { 0x0305a , 0x030b9 }, // <HIRAGANA LETTER ZU> => <KATAKANA LETTER SU>
+ { 0x0305b , 0x030bb }, // <HIRAGANA LETTER SE> => <KATAKANA LETTER SE>
+ { 0x0305c , 0x030bb }, // <HIRAGANA LETTER ZE> => <KATAKANA LETTER SE>
+ { 0x0305d , 0x030bd }, // <HIRAGANA LETTER SO> => <KATAKANA LETTER SO>
+ { 0x0305e , 0x030bd }, // <HIRAGANA LETTER ZO> => <KATAKANA LETTER SO>
+ { 0x0305f , 0x030bf }, // <HIRAGANA LETTER TA> => <KATAKANA LETTER TA>
+ { 0x03060 , 0x030bf }, // <HIRAGANA LETTER DA> => <KATAKANA LETTER TA>
+ { 0x03061 , 0x030c1 }, // <HIRAGANA LETTER TI> => <KATAKANA LETTER TI>
+ { 0x03062 , 0x030c1 }, // <HIRAGANA LETTER DI> => <KATAKANA LETTER TI>
+ { 0x03063 , 0x030c4 }, // <HIRAGANA LETTER SMALL TU> => <KATAKANA LETTER TU>
+ { 0x03064 , 0x030c4 }, // <HIRAGANA LETTER TU> => <KATAKANA LETTER TU>
+ { 0x03065 , 0x030c4 }, // <HIRAGANA LETTER DU> => <KATAKANA LETTER TU>
+ { 0x03066 , 0x030c6 }, // <HIRAGANA LETTER TE> => <KATAKANA LETTER TE>
+ { 0x03067 , 0x030c6 }, // <HIRAGANA LETTER DE> => <KATAKANA LETTER TE>
+ { 0x03068 , 0x030c8 }, // <HIRAGANA LETTER TO> => <KATAKANA LETTER TO>
+ { 0x03069 , 0x030c8 }, // <HIRAGANA LETTER DO> => <KATAKANA LETTER TO>
+ { 0x0306a , 0x030ca }, // <HIRAGANA LETTER NA> => <KATAKANA LETTER NA>
+ { 0x0306b , 0x030cb }, // <HIRAGANA LETTER NI> => <KATAKANA LETTER NI>
+ { 0x0306c , 0x030cc }, // <HIRAGANA LETTER NU> => <KATAKANA LETTER NU>
+ { 0x0306d , 0x030cd }, // <HIRAGANA LETTER NE> => <KATAKANA LETTER NE>
+ { 0x0306e , 0x030ce }, // <HIRAGANA LETTER NO> => <KATAKANA LETTER NO>
+ { 0x0306f , 0x030cf }, // <HIRAGANA LETTER HA> => <KATAKANA LETTER HA>
+ { 0x03070 , 0x030cf }, // <HIRAGANA LETTER BA> => <KATAKANA LETTER HA>
+ { 0x03071 , 0x030cf }, // <HIRAGANA LETTER PA> => <KATAKANA LETTER HA>
+ { 0x03072 , 0x030d2 }, // <HIRAGANA LETTER HI> => <KATAKANA LETTER HI>
+ { 0x03073 , 0x030d2 }, // <HIRAGANA LETTER BI> => <KATAKANA LETTER HI>
+ { 0x03074 , 0x030d2 }, // <HIRAGANA LETTER PI> => <KATAKANA LETTER HI>
+ { 0x03075 , 0x030d5 }, // <HIRAGANA LETTER HU> => <KATAKANA LETTER HU>
+ { 0x03076 , 0x030d5 }, // <HIRAGANA LETTER BU> => <KATAKANA LETTER HU>
+ { 0x03077 , 0x030d5 }, // <HIRAGANA LETTER PU> => <KATAKANA LETTER HU>
+ { 0x03078 , 0x030d8 }, // <HIRAGANA LETTER HE> => <KATAKANA LETTER HE>
+ { 0x03079 , 0x030d8 }, // <HIRAGANA LETTER BE> => <KATAKANA LETTER HE>
+ { 0x0307a , 0x030d8 }, // <HIRAGANA LETTER PE> => <KATAKANA LETTER HE>
+ { 0x0307b , 0x030db }, // <HIRAGANA LETTER HO> => <KATAKANA LETTER HO>
+ { 0x0307c , 0x030db }, // <HIRAGANA LETTER BO> => <KATAKANA LETTER HO>
+ { 0x0307d , 0x030db }, // <HIRAGANA LETTER PO> => <KATAKANA LETTER HO>
+ { 0x0307e , 0x030de }, // <HIRAGANA LETTER MA> => <KATAKANA LETTER MA>
+ { 0x0307f , 0x030df }, // <HIRAGANA LETTER MI> => <KATAKANA LETTER MI>
+ { 0x03080 , 0x030e0 }, // <HIRAGANA LETTER MU> => <KATAKANA LETTER MU>
+ { 0x03081 , 0x030e1 }, // <HIRAGANA LETTER ME> => <KATAKANA LETTER ME>
+ { 0x03082 , 0x030e2 }, // <HIRAGANA LETTER MO> => <KATAKANA LETTER MO>
+ { 0x03083 , 0x030e4 }, // <HIRAGANA LETTER SMALL YA> => <KATAKANA LETTER YA>
+ { 0x03084 , 0x030e4 }, // <HIRAGANA LETTER YA> => <KATAKANA LETTER YA>
+ { 0x03085 , 0x030e6 }, // <HIRAGANA LETTER SMALL YU> => <KATAKANA LETTER YU>
+ { 0x03086 , 0x030e6 }, // <HIRAGANA LETTER YU> => <KATAKANA LETTER YU>
+ { 0x03087 , 0x030e8 }, // <HIRAGANA LETTER SMALL YO> => <KATAKANA LETTER YO>
+ { 0x03088 , 0x030e8 }, // <HIRAGANA LETTER YO> => <KATAKANA LETTER YO>
+ { 0x03089 , 0x030e9 }, // <HIRAGANA LETTER RA> => <KATAKANA LETTER RA>
+ { 0x0308a , 0x030ea }, // <HIRAGANA LETTER RI> => <KATAKANA LETTER RI>
+ { 0x0308b , 0x030eb }, // <HIRAGANA LETTER RU> => <KATAKANA LETTER RU>
+ { 0x0308c , 0x030ec }, // <HIRAGANA LETTER RE> => <KATAKANA LETTER RE>
+ { 0x0308d , 0x030ed }, // <HIRAGANA LETTER RO> => <KATAKANA LETTER RO>
+ { 0x0308e , 0x030ef }, // <HIRAGANA LETTER SMALL WA> => <KATAKANA LETTER WA>
+ { 0x0308f , 0x030ef }, // <HIRAGANA LETTER WA> => <KATAKANA LETTER WA>
+ { 0x03090 , 0x030f0 }, // <HIRAGANA LETTER WI> => <KATAKANA LETTER WI>
+ { 0x03091 , 0x030f1 }, // <HIRAGANA LETTER WE> => <KATAKANA LETTER WE>
+ { 0x03092 , 0x030f2 }, // <HIRAGANA LETTER WO> => <KATAKANA LETTER WO>
+ { 0x03093 , 0x030f3 }, // <HIRAGANA LETTER N> => <KATAKANA LETTER N>
+ { 0x03094 , 0x030a6 }, // <HIRAGANA LETTER VU> => <KATAKANA LETTER U>
+ { 0x03095 , 0x030ab }, // <HIRAGANA LETTER SMALL KA> => <KATAKANA LETTER KA>
+ { 0x03096 , 0x030b1 }, // <HIRAGANA LETTER SMALL KE> => <KATAKANA LETTER KE>
+ { 0x0309e , 0x0309d }, // <HIRAGANA VOICED ITERATION MARK> => <HIRAGANA ITERATION MARK>
+ { 0x030a1 , 0x030a2 }, // <KATAKANA LETTER SMALL A> => <KATAKANA LETTER A>
+ { 0x030a3 , 0x030a4 }, // <KATAKANA LETTER SMALL I> => <KATAKANA LETTER I>
+ { 0x030a5 , 0x030a6 }, // <KATAKANA LETTER SMALL U> => <KATAKANA LETTER U>
+ { 0x030a7 , 0x030a8 }, // <KATAKANA LETTER SMALL E> => <KATAKANA LETTER E>
+ { 0x030a9 , 0x030aa }, // <KATAKANA LETTER SMALL O> => <KATAKANA LETTER O>
+ { 0x030ac , 0x030ab }, // <KATAKANA LETTER GA> => <KATAKANA LETTER KA>
+ { 0x030ae , 0x030ad }, // <KATAKANA LETTER GI> => <KATAKANA LETTER KI>
+ { 0x030b0 , 0x030af }, // <KATAKANA LETTER GU> => <KATAKANA LETTER KU>
+ { 0x030b2 , 0x030b1 }, // <KATAKANA LETTER GE> => <KATAKANA LETTER KE>
+ { 0x030b4 , 0x030b3 }, // <KATAKANA LETTER GO> => <KATAKANA LETTER KO>
+ { 0x030b6 , 0x030b5 }, // <KATAKANA LETTER ZA> => <KATAKANA LETTER SA>
+ { 0x030b8 , 0x030b7 }, // <KATAKANA LETTER ZI> => <KATAKANA LETTER SI>
+ { 0x030ba , 0x030b9 }, // <KATAKANA LETTER ZU> => <KATAKANA LETTER SU>
+ { 0x030bc , 0x030bb }, // <KATAKANA LETTER ZE> => <KATAKANA LETTER SE>
+ { 0x030be , 0x030bd }, // <KATAKANA LETTER ZO> => <KATAKANA LETTER SO>
+ { 0x030c0 , 0x030bf }, // <KATAKANA LETTER DA> => <KATAKANA LETTER TA>
+ { 0x030c2 , 0x030c1 }, // <KATAKANA LETTER DI> => <KATAKANA LETTER TI>
+ { 0x030c3 , 0x030c4 }, // <KATAKANA LETTER SMALL TU> => <KATAKANA LETTER TU>
+ { 0x030c5 , 0x030c4 }, // <KATAKANA LETTER DU> => <KATAKANA LETTER TU>
+ { 0x030c7 , 0x030c6 }, // <KATAKANA LETTER DE> => <KATAKANA LETTER TE>
+ { 0x030c9 , 0x030c8 }, // <KATAKANA LETTER DO> => <KATAKANA LETTER TO>
+ { 0x030d0 , 0x030cf }, // <KATAKANA LETTER BA> => <KATAKANA LETTER HA>
+ { 0x030d1 , 0x030cf }, // <KATAKANA LETTER PA> => <KATAKANA LETTER HA>
+ { 0x030d3 , 0x030d2 }, // <KATAKANA LETTER BI> => <KATAKANA LETTER HI>
+ { 0x030d4 , 0x030d2 }, // <KATAKANA LETTER PI> => <KATAKANA LETTER HI>
+ { 0x030d6 , 0x030d5 }, // <KATAKANA LETTER BU> => <KATAKANA LETTER HU>
+ { 0x030d7 , 0x030d5 }, // <KATAKANA LETTER PU> => <KATAKANA LETTER HU>
+ { 0x030d9 , 0x030d8 }, // <KATAKANA LETTER BE> => <KATAKANA LETTER HE>
+ { 0x030da , 0x030d8 }, // <KATAKANA LETTER PE> => <KATAKANA LETTER HE>
+ { 0x030dc , 0x030db }, // <KATAKANA LETTER BO> => <KATAKANA LETTER HO>
+ { 0x030dd , 0x030db }, // <KATAKANA LETTER PO> => <KATAKANA LETTER HO>
+ { 0x030e3 , 0x030e4 }, // <KATAKANA LETTER SMALL YA> => <KATAKANA LETTER YA>
+ { 0x030e5 , 0x030e6 }, // <KATAKANA LETTER SMALL YU> => <KATAKANA LETTER YU>
+ { 0x030e7 , 0x030e8 }, // <KATAKANA LETTER SMALL YO> => <KATAKANA LETTER YO>
+ { 0x030ee , 0x030ef }, // <KATAKANA LETTER SMALL WA> => <KATAKANA LETTER WA>
+ { 0x030f4 , 0x030a6 }, // <KATAKANA LETTER VU> => <KATAKANA LETTER U>
+ { 0x030f5 , 0x030ab }, // <KATAKANA LETTER SMALL KA> => <KATAKANA LETTER KA>
+ { 0x030f6 , 0x030b1 }, // <KATAKANA LETTER SMALL KE> => <KATAKANA LETTER KE>
+ { 0x030f7 , 0x030ef }, // <KATAKANA LETTER VA> => <KATAKANA LETTER WA>
+ { 0x030f8 , 0x030f0 }, // <KATAKANA LETTER VI> => <KATAKANA LETTER WI>
+ { 0x030f9 , 0x030f1 }, // <KATAKANA LETTER VE> => <KATAKANA LETTER WE>
+ { 0x030fa , 0x030f2 }, // <KATAKANA LETTER VO> => <KATAKANA LETTER WO>
+ { 0x030fe , 0x030fd }, // <KATAKANA VOICED ITERATION MARK> => <KATAKANA ITERATION MARK>
+ { 0x03131 , 0x01100 }, // <HANGUL LETTER KIYEOK> => <HANGUL CHOSEONG KIYEOK>
+ { 0x03132 , 0x01101 }, // <HANGUL LETTER SSANGKIYEOK> => <HANGUL CHOSEONG SSANGKIYEOK>
+ { 0x03133 , 0x011aa }, // <HANGUL LETTER KIYEOK-SIOS> => <HANGUL JONGSEONG KIYEOK-SIOS>
+ { 0x03134 , 0x01102 }, // <HANGUL LETTER NIEUN> => <HANGUL CHOSEONG NIEUN>
+ { 0x03135 , 0x011ac }, // <HANGUL LETTER NIEUN-CIEUC> => <HANGUL JONGSEONG NIEUN-CIEUC>
+ { 0x03136 , 0x011ad }, // <HANGUL LETTER NIEUN-HIEUH> => <HANGUL JONGSEONG NIEUN-HIEUH>
+ { 0x03137 , 0x01103 }, // <HANGUL LETTER TIKEUT> => <HANGUL CHOSEONG TIKEUT>
+ { 0x03138 , 0x01104 }, // <HANGUL LETTER SSANGTIKEUT> => <HANGUL CHOSEONG SSANGTIKEUT>
+ { 0x03139 , 0x01105 }, // <HANGUL LETTER RIEUL> => <HANGUL CHOSEONG RIEUL>
+ { 0x0313a , 0x011b0 }, // <HANGUL LETTER RIEUL-KIYEOK> => <HANGUL JONGSEONG RIEUL-KIYEOK>
+ { 0x0313b , 0x011b1 }, // <HANGUL LETTER RIEUL-MIEUM> => <HANGUL JONGSEONG RIEUL-MIEUM>
+ { 0x0313c , 0x011b2 }, // <HANGUL LETTER RIEUL-PIEUP> => <HANGUL JONGSEONG RIEUL-PIEUP>
+ { 0x0313d , 0x011b3 }, // <HANGUL LETTER RIEUL-SIOS> => <HANGUL JONGSEONG RIEUL-SIOS>
+ { 0x0313e , 0x011b4 }, // <HANGUL LETTER RIEUL-THIEUTH> => <HANGUL JONGSEONG RIEUL-THIEUTH>
+ { 0x0313f , 0x011b5 }, // <HANGUL LETTER RIEUL-PHIEUPH> => <HANGUL JONGSEONG RIEUL-PHIEUPH>
+ { 0x03140 , 0x0111a }, // <HANGUL LETTER RIEUL-HIEUH> => <HANGUL CHOSEONG RIEUL-HIEUH>
+ { 0x03141 , 0x01106 }, // <HANGUL LETTER MIEUM> => <HANGUL CHOSEONG MIEUM>
+ { 0x03142 , 0x01107 }, // <HANGUL LETTER PIEUP> => <HANGUL CHOSEONG PIEUP>
+ { 0x03143 , 0x01108 }, // <HANGUL LETTER SSANGPIEUP> => <HANGUL CHOSEONG SSANGPIEUP>
+ { 0x03144 , 0x01121 }, // <HANGUL LETTER PIEUP-SIOS> => <HANGUL CHOSEONG PIEUP-SIOS>
+ { 0x03145 , 0x01109 }, // <HANGUL LETTER SIOS> => <HANGUL CHOSEONG SIOS>
+ { 0x03146 , 0x0110a }, // <HANGUL LETTER SSANGSIOS> => <HANGUL CHOSEONG SSANGSIOS>
+ { 0x03147 , 0x0110b }, // <HANGUL LETTER IEUNG> => <HANGUL CHOSEONG IEUNG>
+ { 0x03148 , 0x0110c }, // <HANGUL LETTER CIEUC> => <HANGUL CHOSEONG CIEUC>
+ { 0x03149 , 0x0110d }, // <HANGUL LETTER SSANGCIEUC> => <HANGUL CHOSEONG SSANGCIEUC>
+ { 0x0314a , 0x0110e }, // <HANGUL LETTER CHIEUCH> => <HANGUL CHOSEONG CHIEUCH>
+ { 0x0314b , 0x0110f }, // <HANGUL LETTER KHIEUKH> => <HANGUL CHOSEONG KHIEUKH>
+ { 0x0314c , 0x01110 }, // <HANGUL LETTER THIEUTH> => <HANGUL CHOSEONG THIEUTH>
+ { 0x0314d , 0x01111 }, // <HANGUL LETTER PHIEUPH> => <HANGUL CHOSEONG PHIEUPH>
+ { 0x0314e , 0x01112 }, // <HANGUL LETTER HIEUH> => <HANGUL CHOSEONG HIEUH>
+ { 0x0314f , 0x01161 }, // <HANGUL LETTER A> => <HANGUL JUNGSEONG A>
+ { 0x03150 , 0x01162 }, // <HANGUL LETTER AE> => <HANGUL JUNGSEONG AE>
+ { 0x03151 , 0x01163 }, // <HANGUL LETTER YA> => <HANGUL JUNGSEONG YA>
+ { 0x03152 , 0x01164 }, // <HANGUL LETTER YAE> => <HANGUL JUNGSEONG YAE>
+ { 0x03153 , 0x01165 }, // <HANGUL LETTER EO> => <HANGUL JUNGSEONG EO>
+ { 0x03154 , 0x01166 }, // <HANGUL LETTER E> => <HANGUL JUNGSEONG E>
+ { 0x03155 , 0x01167 }, // <HANGUL LETTER YEO> => <HANGUL JUNGSEONG YEO>
+ { 0x03156 , 0x01168 }, // <HANGUL LETTER YE> => <HANGUL JUNGSEONG YE>
+ { 0x03157 , 0x01169 }, // <HANGUL LETTER O> => <HANGUL JUNGSEONG O>
+ { 0x03158 , 0x0116a }, // <HANGUL LETTER WA> => <HANGUL JUNGSEONG WA>
+ { 0x03159 , 0x0116b }, // <HANGUL LETTER WAE> => <HANGUL JUNGSEONG WAE>
+ { 0x0315a , 0x0116c }, // <HANGUL LETTER OE> => <HANGUL JUNGSEONG OE>
+ { 0x0315b , 0x0116d }, // <HANGUL LETTER YO> => <HANGUL JUNGSEONG YO>
+ { 0x0315c , 0x0116e }, // <HANGUL LETTER U> => <HANGUL JUNGSEONG U>
+ { 0x0315d , 0x0116f }, // <HANGUL LETTER WEO> => <HANGUL JUNGSEONG WEO>
+ { 0x0315e , 0x01170 }, // <HANGUL LETTER WE> => <HANGUL JUNGSEONG WE>
+ { 0x0315f , 0x01171 }, // <HANGUL LETTER WI> => <HANGUL JUNGSEONG WI>
+ { 0x03160 , 0x01172 }, // <HANGUL LETTER YU> => <HANGUL JUNGSEONG YU>
+ { 0x03161 , 0x01173 }, // <HANGUL LETTER EU> => <HANGUL JUNGSEONG EU>
+ { 0x03162 , 0x01174 }, // <HANGUL LETTER YI> => <HANGUL JUNGSEONG YI>
+ { 0x03163 , 0x01175 }, // <HANGUL LETTER I> => <HANGUL JUNGSEONG I>
+ { 0x03164 , 0x01160 }, // <HANGUL FILLER> => <HANGUL JUNGSEONG FILLER>
+ { 0x03165 , 0x01114 }, // <HANGUL LETTER SSANGNIEUN> => <HANGUL CHOSEONG SSANGNIEUN>
+ { 0x03166 , 0x01115 }, // <HANGUL LETTER NIEUN-TIKEUT> => <HANGUL CHOSEONG NIEUN-TIKEUT>
+ { 0x03167 , 0x011c7 }, // <HANGUL LETTER NIEUN-SIOS> => <HANGUL JONGSEONG NIEUN-SIOS>
+ { 0x03168 , 0x011c8 }, // <HANGUL LETTER NIEUN-PANSIOS> => <HANGUL JONGSEONG NIEUN-PANSIOS>
+ { 0x03169 , 0x011cc }, // <HANGUL LETTER RIEUL-KIYEOK-SIOS> => <HANGUL JONGSEONG RIEUL-KIYEOK-SIOS>
+ { 0x0316a , 0x011ce }, // <HANGUL LETTER RIEUL-TIKEUT> => <HANGUL JONGSEONG RIEUL-TIKEUT>
+ { 0x0316b , 0x011d3 }, // <HANGUL LETTER RIEUL-PIEUP-SIOS> => <HANGUL JONGSEONG RIEUL-PIEUP-SIOS>
+ { 0x0316c , 0x011d7 }, // <HANGUL LETTER RIEUL-PANSIOS> => <HANGUL JONGSEONG RIEUL-PANSIOS>
+ { 0x0316d , 0x011d9 }, // <HANGUL LETTER RIEUL-YEORINHIEUH> => <HANGUL JONGSEONG RIEUL-YEORINHIEUH>
+ { 0x0316e , 0x0111c }, // <HANGUL LETTER MIEUM-PIEUP> => <HANGUL CHOSEONG MIEUM-PIEUP>
+ { 0x0316f , 0x011dd }, // <HANGUL LETTER MIEUM-SIOS> => <HANGUL JONGSEONG MIEUM-SIOS>
+ { 0x03170 , 0x011df }, // <HANGUL LETTER MIEUM-PANSIOS> => <HANGUL JONGSEONG MIEUM-PANSIOS>
+ { 0x03171 , 0x0111d }, // <HANGUL LETTER KAPYEOUNMIEUM> => <HANGUL CHOSEONG KAPYEOUNMIEUM>
+ { 0x03172 , 0x0111e }, // <HANGUL LETTER PIEUP-KIYEOK> => <HANGUL CHOSEONG PIEUP-KIYEOK>
+ { 0x03173 , 0x01120 }, // <HANGUL LETTER PIEUP-TIKEUT> => <HANGUL CHOSEONG PIEUP-TIKEUT>
+ { 0x03174 , 0x01122 }, // <HANGUL LETTER PIEUP-SIOS-KIYEOK> => <HANGUL CHOSEONG PIEUP-SIOS-KIYEOK>
+ { 0x03175 , 0x01123 }, // <HANGUL LETTER PIEUP-SIOS-TIKEUT> => <HANGUL CHOSEONG PIEUP-SIOS-TIKEUT>
+ { 0x03176 , 0x01127 }, // <HANGUL LETTER PIEUP-CIEUC> => <HANGUL CHOSEONG PIEUP-CIEUC>
+ { 0x03177 , 0x01129 }, // <HANGUL LETTER PIEUP-THIEUTH> => <HANGUL CHOSEONG PIEUP-THIEUTH>
+ { 0x03178 , 0x0112b }, // <HANGUL LETTER KAPYEOUNPIEUP> => <HANGUL CHOSEONG KAPYEOUNPIEUP>
+ { 0x03179 , 0x0112c }, // <HANGUL LETTER KAPYEOUNSSANGPIEUP> => <HANGUL CHOSEONG KAPYEOUNSSANGPIEUP>
+ { 0x0317a , 0x0112d }, // <HANGUL LETTER SIOS-KIYEOK> => <HANGUL CHOSEONG SIOS-KIYEOK>
+ { 0x0317b , 0x0112e }, // <HANGUL LETTER SIOS-NIEUN> => <HANGUL CHOSEONG SIOS-NIEUN>
+ { 0x0317c , 0x0112f }, // <HANGUL LETTER SIOS-TIKEUT> => <HANGUL CHOSEONG SIOS-TIKEUT>
+ { 0x0317d , 0x01132 }, // <HANGUL LETTER SIOS-PIEUP> => <HANGUL CHOSEONG SIOS-PIEUP>
+ { 0x0317e , 0x01136 }, // <HANGUL LETTER SIOS-CIEUC> => <HANGUL CHOSEONG SIOS-CIEUC>
+ { 0x0317f , 0x01140 }, // <HANGUL LETTER PANSIOS> => <HANGUL CHOSEONG PANSIOS>
+ { 0x03180 , 0x01147 }, // <HANGUL LETTER SSANGIEUNG> => <HANGUL CHOSEONG SSANGIEUNG>
+ { 0x03181 , 0x0114c }, // <HANGUL LETTER YESIEUNG> => <HANGUL CHOSEONG YESIEUNG>
+ { 0x03182 , 0x011f1 }, // <HANGUL LETTER YESIEUNG-SIOS> => <HANGUL JONGSEONG YESIEUNG-SIOS>
+ { 0x03183 , 0x011f2 }, // <HANGUL LETTER YESIEUNG-PANSIOS> => <HANGUL JONGSEONG YESIEUNG-PANSIOS>
+ { 0x03184 , 0x01157 }, // <HANGUL LETTER KAPYEOUNPHIEUPH> => <HANGUL CHOSEONG KAPYEOUNPHIEUPH>
+ { 0x03185 , 0x01158 }, // <HANGUL LETTER SSANGHIEUH> => <HANGUL CHOSEONG SSANGHIEUH>
+ { 0x03186 , 0x01159 }, // <HANGUL LETTER YEORINHIEUH> => <HANGUL CHOSEONG YEORINHIEUH>
+ { 0x03187 , 0x01184 }, // <HANGUL LETTER YO-YA> => <HANGUL JUNGSEONG YO-YA>
+ { 0x03188 , 0x01185 }, // <HANGUL LETTER YO-YAE> => <HANGUL JUNGSEONG YO-YAE>
+ { 0x03189 , 0x01188 }, // <HANGUL LETTER YO-I> => <HANGUL JUNGSEONG YO-I>
+ { 0x0318a , 0x01191 }, // <HANGUL LETTER YU-YEO> => <HANGUL JUNGSEONG YU-YEO>
+ { 0x0318b , 0x01192 }, // <HANGUL LETTER YU-YE> => <HANGUL JUNGSEONG YU-YE>
+ { 0x0318c , 0x01194 }, // <HANGUL LETTER YU-I> => <HANGUL JUNGSEONG YU-I>
+ { 0x0318d , 0x0119e }, // <HANGUL LETTER ARAEA> => <HANGUL JUNGSEONG ARAEA>
+ { 0x0318e , 0x011a1 }, // <HANGUL LETTER ARAEAE> => <HANGUL JUNGSEONG ARAEA-I>
+ { 0x031a0 , 0x03105 }, // <BOPOMOFO LETTER BU> => <BOPOMOFO LETTER B>
+ { 0x031a1 , 0x03117 }, // <BOPOMOFO LETTER ZI> => <BOPOMOFO LETTER Z>
+ { 0x031a2 , 0x03110 }, // <BOPOMOFO LETTER JI> => <BOPOMOFO LETTER J>
+ { 0x031a3 , 0x0310d }, // <BOPOMOFO LETTER GU> => <BOPOMOFO LETTER G>
+ { 0x031a5 , 0x031a4 }, // <BOPOMOFO LETTER ENN> => <BOPOMOFO LETTER EE>
+ { 0x031a7 , 0x0311b }, // <BOPOMOFO LETTER ONN> => <BOPOMOFO LETTER O>
+ { 0x031a8 , 0x03128 }, // <BOPOMOFO LETTER IR> => <BOPOMOFO LETTER U>
+ { 0x031a9 , 0x0311a }, // <BOPOMOFO LETTER ANN> => <BOPOMOFO LETTER A>
+ { 0x031aa , 0x03127 }, // <BOPOMOFO LETTER INN> => <BOPOMOFO LETTER I>
+ { 0x031ab , 0x03128 }, // <BOPOMOFO LETTER UNN> => <BOPOMOFO LETTER U>
+ { 0x031ae , 0x0311e }, // <BOPOMOFO LETTER AINN> => <BOPOMOFO LETTER AI>
+ { 0x031af , 0x03120 }, // <BOPOMOFO LETTER AUNN> => <BOPOMOFO LETTER AU>
+ { 0x031b3 , 0x03127 }, // <BOPOMOFO LETTER INNN> => <BOPOMOFO LETTER I>
+ { 0x031b4 , 0x03106 }, // <BOPOMOFO FINAL LETTER P> => <BOPOMOFO LETTER P>
+ { 0x031b5 , 0x0310a }, // <BOPOMOFO FINAL LETTER T> => <BOPOMOFO LETTER T>
+ { 0x031b6 , 0x0310e }, // <BOPOMOFO FINAL LETTER K> => <BOPOMOFO LETTER K>
+ { 0x031b7 , 0x0310f }, // <BOPOMOFO FINAL LETTER H> => <BOPOMOFO LETTER H>
+ { 0x031f0 , 0x030af }, // <KATAKANA LETTER SMALL KU> => <KATAKANA LETTER KU>
+ { 0x031f1 , 0x030b7 }, // <KATAKANA LETTER SMALL SI> => <KATAKANA LETTER SI>
+ { 0x031f2 , 0x030b9 }, // <KATAKANA LETTER SMALL SU> => <KATAKANA LETTER SU>
+ { 0x031f3 , 0x030c8 }, // <KATAKANA LETTER SMALL TO> => <KATAKANA LETTER TO>
+ { 0x031f4 , 0x030cc }, // <KATAKANA LETTER SMALL NU> => <KATAKANA LETTER NU>
+ { 0x031f5 , 0x030cf }, // <KATAKANA LETTER SMALL HA> => <KATAKANA LETTER HA>
+ { 0x031f6 , 0x030d2 }, // <KATAKANA LETTER SMALL HI> => <KATAKANA LETTER HI>
+ { 0x031f7 , 0x030d5 }, // <KATAKANA LETTER SMALL HU> => <KATAKANA LETTER HU>
+ { 0x031f8 , 0x030d8 }, // <KATAKANA LETTER SMALL HE> => <KATAKANA LETTER HE>
+ { 0x031f9 , 0x030db }, // <KATAKANA LETTER SMALL HO> => <KATAKANA LETTER HO>
+ { 0x031fa , 0x030e0 }, // <KATAKANA LETTER SMALL MU> => <KATAKANA LETTER MU>
+ { 0x031fb , 0x030e9 }, // <KATAKANA LETTER SMALL RA> => <KATAKANA LETTER RA>
+ { 0x031fc , 0x030ea }, // <KATAKANA LETTER SMALL RI> => <KATAKANA LETTER RI>
+ { 0x031fd , 0x030eb }, // <KATAKANA LETTER SMALL RU> => <KATAKANA LETTER RU>
+ { 0x031fe , 0x030ec }, // <KATAKANA LETTER SMALL RE> => <KATAKANA LETTER RE>
+ { 0x031ff , 0x030ed }, // <KATAKANA LETTER SMALL RO> => <KATAKANA LETTER RO>
+ { 0x0a610 , 0x0a558 }, // <VAI SYLLABLE NDOLE FA> => <VAI SYLLABLE FA>
+ { 0x0a611 , 0x0a56a }, // <VAI SYLLABLE NDOLE KA> => <VAI SYLLABLE KA>
+ { 0x0a612 , 0x0a587 }, // <VAI SYLLABLE NDOLE SOO> => <VAI SYLLABLE SOO>
+ { 0x0a620 , 0x00030 }, // <VAI DIGIT ZERO> => <DIGIT ZERO>
+ { 0x0a621 , 0x00031 }, // <VAI DIGIT ONE> => <DIGIT ONE>
+ { 0x0a622 , 0x00032 }, // <VAI DIGIT TWO> => <DIGIT TWO>
+ { 0x0a623 , 0x00033 }, // <VAI DIGIT THREE> => <DIGIT THREE>
+ { 0x0a624 , 0x00034 }, // <VAI DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0a625 , 0x00035 }, // <VAI DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0a626 , 0x00036 }, // <VAI DIGIT SIX> => <DIGIT SIX>
+ { 0x0a627 , 0x00037 }, // <VAI DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0a628 , 0x00038 }, // <VAI DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0a629 , 0x00039 }, // <VAI DIGIT NINE> => <DIGIT NINE>
+ { 0x0a62a , 0x0a56e }, // <VAI SYLLABLE NDOLE MA> => <VAI SYLLABLE MA>
+ { 0x0a62b , 0x0a5d1 }, // <VAI SYLLABLE NDOLE DO> => <VAI SYLLABLE DO>
+ { 0x0a640 , 0x0a641 }, // <CYRILLIC CAPITAL LETTER ZEMLYA> => <CYRILLIC SMALL LETTER ZEMLYA>
+ { 0x0a642 , 0x0a643 }, // <CYRILLIC CAPITAL LETTER DZELO> => <CYRILLIC SMALL LETTER DZELO>
+ { 0x0a644 , 0x0a645 }, // <CYRILLIC CAPITAL LETTER REVERSED DZE> => <CYRILLIC SMALL LETTER REVERSED DZE>
+ { 0x0a646 , 0x0a647 }, // <CYRILLIC CAPITAL LETTER IOTA> => <CYRILLIC SMALL LETTER IOTA>
+ { 0x0a648 , 0x0a649 }, // <CYRILLIC CAPITAL LETTER DJERV> => <CYRILLIC SMALL LETTER DJERV>
+ { 0x0a64a , 0x0a64b }, // <CYRILLIC CAPITAL LETTER MONOGRAPH UK> => <CYRILLIC SMALL LETTER MONOGRAPH UK>
+ { 0x0a64c , 0x0a64d }, // <CYRILLIC CAPITAL LETTER BROAD OMEGA> => <CYRILLIC SMALL LETTER BROAD OMEGA>
+ { 0x0a64e , 0x0a64f }, // <CYRILLIC CAPITAL LETTER NEUTRAL YER> => <CYRILLIC SMALL LETTER NEUTRAL YER>
+ { 0x0a650 , 0x0a651 }, // <CYRILLIC CAPITAL LETTER YERU WITH BACK YER> => <CYRILLIC SMALL LETTER YERU WITH BACK YER>
+ { 0x0a652 , 0x0a653 }, // <CYRILLIC CAPITAL LETTER IOTIFIED YAT> => <CYRILLIC SMALL LETTER IOTIFIED YAT>
+ { 0x0a654 , 0x0a655 }, // <CYRILLIC CAPITAL LETTER REVERSED YU> => <CYRILLIC SMALL LETTER REVERSED YU>
+ { 0x0a656 , 0x0a657 }, // <CYRILLIC CAPITAL LETTER IOTIFIED A> => <CYRILLIC SMALL LETTER IOTIFIED A>
+ { 0x0a658 , 0x0a659 }, // <CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS> => <CYRILLIC SMALL LETTER CLOSED LITTLE YUS>
+ { 0x0a65a , 0x0a65b }, // <CYRILLIC CAPITAL LETTER BLENDED YUS> => <CYRILLIC SMALL LETTER BLENDED YUS>
+ { 0x0a65c , 0x0a65d }, // <CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS> => <CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS>
+ { 0x0a65e , 0x0a65f }, // <CYRILLIC CAPITAL LETTER YN> => <CYRILLIC SMALL LETTER YN>
+ { 0x0a660 , 0x0a661 }, // <CYRILLIC CAPITAL LETTER REVERSED TSE> => <CYRILLIC SMALL LETTER REVERSED TSE>
+ { 0x0a662 , 0x0a663 }, // <CYRILLIC CAPITAL LETTER SOFT DE> => <CYRILLIC SMALL LETTER SOFT DE>
+ { 0x0a664 , 0x0a665 }, // <CYRILLIC CAPITAL LETTER SOFT EL> => <CYRILLIC SMALL LETTER SOFT EL>
+ { 0x0a666 , 0x0a667 }, // <CYRILLIC CAPITAL LETTER SOFT EM> => <CYRILLIC SMALL LETTER SOFT EM>
+ { 0x0a668 , 0x0043e }, // <CYRILLIC CAPITAL LETTER MONOCULAR O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a669 , 0x0043e }, // <CYRILLIC SMALL LETTER MONOCULAR O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a66a , 0x0043e }, // <CYRILLIC CAPITAL LETTER BINOCULAR O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a66b , 0x0043e }, // <CYRILLIC SMALL LETTER BINOCULAR O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a66c , 0x0043e }, // <CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a66d , 0x0043e }, // <CYRILLIC SMALL LETTER DOUBLE MONOCULAR O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a66e , 0x0043e }, // <CYRILLIC LETTER MULTIOCULAR O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a680 , 0x0a681 }, // <CYRILLIC CAPITAL LETTER DWE> => <CYRILLIC SMALL LETTER DWE>
+ { 0x0a682 , 0x0a683 }, // <CYRILLIC CAPITAL LETTER DZWE> => <CYRILLIC SMALL LETTER DZWE>
+ { 0x0a684 , 0x0a685 }, // <CYRILLIC CAPITAL LETTER ZHWE> => <CYRILLIC SMALL LETTER ZHWE>
+ { 0x0a686 , 0x0a687 }, // <CYRILLIC CAPITAL LETTER CCHE> => <CYRILLIC SMALL LETTER CCHE>
+ { 0x0a688 , 0x0a689 }, // <CYRILLIC CAPITAL LETTER DZZE> => <CYRILLIC SMALL LETTER DZZE>
+ { 0x0a68a , 0x0a68b }, // <CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK> => <CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK>
+ { 0x0a68c , 0x0a68d }, // <CYRILLIC CAPITAL LETTER TWE> => <CYRILLIC SMALL LETTER TWE>
+ { 0x0a68e , 0x0a68f }, // <CYRILLIC CAPITAL LETTER TSWE> => <CYRILLIC SMALL LETTER TSWE>
+ { 0x0a690 , 0x0a691 }, // <CYRILLIC CAPITAL LETTER TSSE> => <CYRILLIC SMALL LETTER TSSE>
+ { 0x0a692 , 0x0a693 }, // <CYRILLIC CAPITAL LETTER TCHE> => <CYRILLIC SMALL LETTER TCHE>
+ { 0x0a694 , 0x0a695 }, // <CYRILLIC CAPITAL LETTER HWE> => <CYRILLIC SMALL LETTER HWE>
+ { 0x0a696 , 0x0a697 }, // <CYRILLIC CAPITAL LETTER SHWE> => <CYRILLIC SMALL LETTER SHWE>
+ { 0x0a698 , 0x0043e }, // <CYRILLIC CAPITAL LETTER DOUBLE O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a699 , 0x0043e }, // <CYRILLIC SMALL LETTER DOUBLE O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a69a , 0x0043e }, // <CYRILLIC CAPITAL LETTER CROSSED O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a69b , 0x0043e }, // <CYRILLIC SMALL LETTER CROSSED O> => <CYRILLIC SMALL LETTER O>
+ { 0x0a69c , 0x0044a }, // <MODIFIER LETTER CYRILLIC HARD SIGN> => <CYRILLIC SMALL LETTER HARD SIGN>
+ { 0x0a69d , 0x0044c }, // <MODIFIER LETTER CYRILLIC SOFT SIGN> => <CYRILLIC SMALL LETTER SOFT SIGN>
+ { 0x0a722 , 0x0a723 }, // <LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF> => <LATIN SMALL LETTER EGYPTOLOGICAL ALEF>
+ { 0x0a724 , 0x0a725 }, // <LATIN CAPITAL LETTER EGYPTOLOGICAL AIN> => <LATIN SMALL LETTER EGYPTOLOGICAL AIN>
+ { 0x0a726 , 0x0a727 }, // <LATIN CAPITAL LETTER HENG> => <LATIN SMALL LETTER HENG>
+ { 0x0a72a , 0x0a72b }, // <LATIN CAPITAL LETTER TRESILLO> => <LATIN SMALL LETTER TRESILLO>
+ { 0x0a72c , 0x0a72d }, // <LATIN CAPITAL LETTER CUATRILLO> => <LATIN SMALL LETTER CUATRILLO>
+ { 0x0a72e , 0x0a72f }, // <LATIN CAPITAL LETTER CUATRILLO WITH COMMA> => <LATIN SMALL LETTER CUATRILLO WITH COMMA>
+ { 0x0a73e , 0x0a73f }, // <LATIN CAPITAL LETTER REVERSED C WITH DOT> => <LATIN SMALL LETTER REVERSED C WITH DOT>
+ { 0x0a740 , 0x0a741 }, // <LATIN CAPITAL LETTER K WITH STROKE> => <LATIN SMALL LETTER K WITH STROKE>
+ { 0x0a742 , 0x0a743 }, // <LATIN CAPITAL LETTER K WITH DIAGONAL STROKE> => <LATIN SMALL LETTER K WITH DIAGONAL STROKE>
+ { 0x0a744 , 0x0a745 }, // <LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE> => <LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE>
+ { 0x0a746 , 0x0a747 }, // <LATIN CAPITAL LETTER BROKEN L> => <LATIN SMALL LETTER BROKEN L>
+ { 0x0a748 , 0x0a749 }, // <LATIN CAPITAL LETTER L WITH HIGH STROKE> => <LATIN SMALL LETTER L WITH HIGH STROKE>
+ { 0x0a74a , 0x0a74b }, // <LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY> => <LATIN SMALL LETTER O WITH LONG STROKE OVERLAY>
+ { 0x0a74c , 0x0a74d }, // <LATIN CAPITAL LETTER O WITH LOOP> => <LATIN SMALL LETTER O WITH LOOP>
+ { 0x0a750 , 0x0a751 }, // <LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER> => <LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER>
+ { 0x0a752 , 0x0a753 }, // <LATIN CAPITAL LETTER P WITH FLOURISH> => <LATIN SMALL LETTER P WITH FLOURISH>
+ { 0x0a754 , 0x0a755 }, // <LATIN CAPITAL LETTER P WITH SQUIRREL TAIL> => <LATIN SMALL LETTER P WITH SQUIRREL TAIL>
+ { 0x0a756 , 0x0a757 }, // <LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER> => <LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER>
+ { 0x0a758 , 0x0a759 }, // <LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE> => <LATIN SMALL LETTER Q WITH DIAGONAL STROKE>
+ { 0x0a75a , 0x0a75b }, // <LATIN CAPITAL LETTER R ROTUNDA> => <LATIN SMALL LETTER R ROTUNDA>
+ { 0x0a75c , 0x0a75d }, // <LATIN CAPITAL LETTER RUM ROTUNDA> => <LATIN SMALL LETTER RUM ROTUNDA>
+ { 0x0a75e , 0x0a75f }, // <LATIN CAPITAL LETTER V WITH DIAGONAL STROKE> => <LATIN SMALL LETTER V WITH DIAGONAL STROKE>
+ { 0x0a762 , 0x0a763 }, // <LATIN CAPITAL LETTER VISIGOTHIC Z> => <LATIN SMALL LETTER VISIGOTHIC Z>
+ { 0x0a764 , 0x0a765 }, // <LATIN CAPITAL LETTER THORN WITH STROKE> => <LATIN SMALL LETTER THORN WITH STROKE>
+ { 0x0a766 , 0x0a767 }, // <LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER> => <LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER>
+ { 0x0a768 , 0x0a769 }, // <LATIN CAPITAL LETTER VEND> => <LATIN SMALL LETTER VEND>
+ { 0x0a76a , 0x0a76b }, // <LATIN CAPITAL LETTER ET> => <LATIN SMALL LETTER ET>
+ { 0x0a76c , 0x0a76d }, // <LATIN CAPITAL LETTER IS> => <LATIN SMALL LETTER IS>
+ { 0x0a76e , 0x0a76f }, // <LATIN CAPITAL LETTER CON> => <LATIN SMALL LETTER CON>
+ { 0x0a770 , 0x0a76f }, // <MODIFIER LETTER US> => <LATIN SMALL LETTER CON>
+ { 0x0a779 , 0x00064 }, // <LATIN CAPITAL LETTER INSULAR D> => <LATIN SMALL LETTER D>
+ { 0x0a77a , 0x00064 }, // <LATIN SMALL LETTER INSULAR D> => <LATIN SMALL LETTER D>
+ { 0x0a77b , 0x00066 }, // <LATIN CAPITAL LETTER INSULAR F> => <LATIN SMALL LETTER F>
+ { 0x0a77c , 0x00066 }, // <LATIN SMALL LETTER INSULAR F> => <LATIN SMALL LETTER F>
+ { 0x0a77d , 0x00067 }, // <LATIN CAPITAL LETTER INSULAR G> => <LATIN SMALL LETTER G>
+ { 0x0a77e , 0x0a77f }, // <LATIN CAPITAL LETTER TURNED INSULAR G> => <LATIN SMALL LETTER TURNED INSULAR G>
+ { 0x0a780 , 0x0a781 }, // <LATIN CAPITAL LETTER TURNED L> => <LATIN SMALL LETTER TURNED L>
+ { 0x0a782 , 0x00072 }, // <LATIN CAPITAL LETTER INSULAR R> => <LATIN SMALL LETTER R>
+ { 0x0a783 , 0x00072 }, // <LATIN SMALL LETTER INSULAR R> => <LATIN SMALL LETTER R>
+ { 0x0a784 , 0x00073 }, // <LATIN CAPITAL LETTER INSULAR S> => <LATIN SMALL LETTER S>
+ { 0x0a785 , 0x00073 }, // <LATIN SMALL LETTER INSULAR S> => <LATIN SMALL LETTER S>
+ { 0x0a786 , 0x00074 }, // <LATIN CAPITAL LETTER INSULAR T> => <LATIN SMALL LETTER T>
+ { 0x0a787 , 0x00074 }, // <LATIN SMALL LETTER INSULAR T> => <LATIN SMALL LETTER T>
+ { 0x0a78b , 0x0a78c }, // <LATIN CAPITAL LETTER SALTILLO> => <LATIN SMALL LETTER SALTILLO>
+ { 0x0a78d , 0x00265 }, // <LATIN CAPITAL LETTER TURNED H> => <LATIN SMALL LETTER TURNED H>
+ { 0x0a790 , 0x0a791 }, // <LATIN CAPITAL LETTER N WITH DESCENDER> => <LATIN SMALL LETTER N WITH DESCENDER>
+ { 0x0a792 , 0x0a793 }, // <LATIN CAPITAL LETTER C WITH BAR> => <LATIN SMALL LETTER C WITH BAR>
+ { 0x0a796 , 0x0a797 }, // <LATIN CAPITAL LETTER B WITH FLOURISH> => <LATIN SMALL LETTER B WITH FLOURISH>
+ { 0x0a798 , 0x0a799 }, // <LATIN CAPITAL LETTER F WITH STROKE> => <LATIN SMALL LETTER F WITH STROKE>
+ { 0x0a79a , 0x00061 }, // <LATIN CAPITAL LETTER VOLAPUK AE> => <LATIN SMALL LETTER A>
+ { 0x0a79b , 0x00061 }, // <LATIN SMALL LETTER VOLAPUK AE> => <LATIN SMALL LETTER A>
+ { 0x0a79c , 0x0006f }, // <LATIN CAPITAL LETTER VOLAPUK OE> => <LATIN SMALL LETTER O>
+ { 0x0a79d , 0x0006f }, // <LATIN SMALL LETTER VOLAPUK OE> => <LATIN SMALL LETTER O>
+ { 0x0a79e , 0x00075 }, // <LATIN CAPITAL LETTER VOLAPUK UE> => <LATIN SMALL LETTER U>
+ { 0x0a79f , 0x00075 }, // <LATIN SMALL LETTER VOLAPUK UE> => <LATIN SMALL LETTER U>
+ { 0x0a7a0 , 0x00067 }, // <LATIN CAPITAL LETTER G WITH OBLIQUE STROKE> => <LATIN SMALL LETTER G>
+ { 0x0a7a1 , 0x00067 }, // <LATIN SMALL LETTER G WITH OBLIQUE STROKE> => <LATIN SMALL LETTER G>
+ { 0x0a7a2 , 0x0006b }, // <LATIN CAPITAL LETTER K WITH OBLIQUE STROKE> => <LATIN SMALL LETTER K>
+ { 0x0a7a3 , 0x0006b }, // <LATIN SMALL LETTER K WITH OBLIQUE STROKE> => <LATIN SMALL LETTER K>
+ { 0x0a7a4 , 0x0006e }, // <LATIN CAPITAL LETTER N WITH OBLIQUE STROKE> => <LATIN SMALL LETTER N>
+ { 0x0a7a5 , 0x0006e }, // <LATIN SMALL LETTER N WITH OBLIQUE STROKE> => <LATIN SMALL LETTER N>
+ { 0x0a7a6 , 0x00072 }, // <LATIN CAPITAL LETTER R WITH OBLIQUE STROKE> => <LATIN SMALL LETTER R>
+ { 0x0a7a7 , 0x00072 }, // <LATIN SMALL LETTER R WITH OBLIQUE STROKE> => <LATIN SMALL LETTER R>
+ { 0x0a7a8 , 0x00073 }, // <LATIN CAPITAL LETTER S WITH OBLIQUE STROKE> => <LATIN SMALL LETTER S>
+ { 0x0a7a9 , 0x00073 }, // <LATIN SMALL LETTER S WITH OBLIQUE STROKE> => <LATIN SMALL LETTER S>
+ { 0x0a7aa , 0x00266 }, // <LATIN CAPITAL LETTER H WITH HOOK> => <LATIN SMALL LETTER H WITH HOOK>
+ { 0x0a7ab , 0x0025c }, // <LATIN CAPITAL LETTER REVERSED OPEN E> => <LATIN SMALL LETTER REVERSED OPEN E>
+ { 0x0a7ac , 0x00261 }, // <LATIN CAPITAL LETTER SCRIPT G> => <LATIN SMALL LETTER SCRIPT G>
+ { 0x0a7ad , 0x0026c }, // <LATIN CAPITAL LETTER L WITH BELT> => <LATIN SMALL LETTER L WITH BELT>
+ { 0x0a7ae , 0x0026a }, // <LATIN CAPITAL LETTER SMALL CAPITAL I> => <LATIN LETTER SMALL CAPITAL I>
+ { 0x0a7b0 , 0x0029e }, // <LATIN CAPITAL LETTER TURNED K> => <LATIN SMALL LETTER TURNED K>
+ { 0x0a7b1 , 0x00287 }, // <LATIN CAPITAL LETTER TURNED T> => <LATIN SMALL LETTER TURNED T>
+ { 0x0a7b2 , 0x0029d }, // <LATIN CAPITAL LETTER J WITH CROSSED-TAIL> => <LATIN SMALL LETTER J WITH CROSSED-TAIL>
+ { 0x0a7b3 , 0x0ab53 }, // <LATIN CAPITAL LETTER CHI> => <LATIN SMALL LETTER CHI>
+ { 0x0a7b4 , 0x0a7b5 }, // <LATIN CAPITAL LETTER BETA> => <LATIN SMALL LETTER BETA>
+ { 0x0a7b6 , 0x0a7b7 }, // <LATIN CAPITAL LETTER OMEGA> => <LATIN SMALL LETTER OMEGA>
+ { 0x0a7f8 , 0x00068 }, // <MODIFIER LETTER CAPITAL H WITH STROKE> => <LATIN SMALL LETTER H>
+ { 0x0a8d0 , 0x00030 }, // <SAURASHTRA DIGIT ZERO> => <DIGIT ZERO>
+ { 0x0a8d1 , 0x00031 }, // <SAURASHTRA DIGIT ONE> => <DIGIT ONE>
+ { 0x0a8d2 , 0x00032 }, // <SAURASHTRA DIGIT TWO> => <DIGIT TWO>
+ { 0x0a8d3 , 0x00033 }, // <SAURASHTRA DIGIT THREE> => <DIGIT THREE>
+ { 0x0a8d4 , 0x00034 }, // <SAURASHTRA DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0a8d5 , 0x00035 }, // <SAURASHTRA DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0a8d6 , 0x00036 }, // <SAURASHTRA DIGIT SIX> => <DIGIT SIX>
+ { 0x0a8d7 , 0x00037 }, // <SAURASHTRA DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0a8d8 , 0x00038 }, // <SAURASHTRA DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0a8d9 , 0x00039 }, // <SAURASHTRA DIGIT NINE> => <DIGIT NINE>
+ { 0x0a8f3 , 0x0a8f2 }, // <DEVANAGARI SIGN CANDRABINDU VIRAMA> => <DEVANAGARI SIGN SPACING CANDRABINDU>
+ { 0x0a8f4 , 0x0a8f2 }, // <DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA> => <DEVANAGARI SIGN SPACING CANDRABINDU>
+ { 0x0a8f5 , 0x0a8f2 }, // <DEVANAGARI SIGN CANDRABINDU TWO> => <DEVANAGARI SIGN SPACING CANDRABINDU>
+ { 0x0a8f6 , 0x0a8f2 }, // <DEVANAGARI SIGN CANDRABINDU THREE> => <DEVANAGARI SIGN SPACING CANDRABINDU>
+ { 0x0a8f7 , 0x0a8f2 }, // <DEVANAGARI SIGN CANDRABINDU AVAGRAHA> => <DEVANAGARI SIGN SPACING CANDRABINDU>
+ { 0x0a900 , 0x00030 }, // <KAYAH LI DIGIT ZERO> => <DIGIT ZERO>
+ { 0x0a901 , 0x00031 }, // <KAYAH LI DIGIT ONE> => <DIGIT ONE>
+ { 0x0a902 , 0x00032 }, // <KAYAH LI DIGIT TWO> => <DIGIT TWO>
+ { 0x0a903 , 0x00033 }, // <KAYAH LI DIGIT THREE> => <DIGIT THREE>
+ { 0x0a904 , 0x00034 }, // <KAYAH LI DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0a905 , 0x00035 }, // <KAYAH LI DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0a906 , 0x00036 }, // <KAYAH LI DIGIT SIX> => <DIGIT SIX>
+ { 0x0a907 , 0x00037 }, // <KAYAH LI DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0a908 , 0x00038 }, // <KAYAH LI DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0a909 , 0x00039 }, // <KAYAH LI DIGIT NINE> => <DIGIT NINE>
+ { 0x0a9ac , 0x0a9ab }, // <JAVANESE LETTER RA AGUNG> => <JAVANESE LETTER RA>
+ { 0x0a9d0 , 0x00030 }, // <JAVANESE DIGIT ZERO> => <DIGIT ZERO>
+ { 0x0a9d1 , 0x00031 }, // <JAVANESE DIGIT ONE> => <DIGIT ONE>
+ { 0x0a9d2 , 0x00032 }, // <JAVANESE DIGIT TWO> => <DIGIT TWO>
+ { 0x0a9d3 , 0x00033 }, // <JAVANESE DIGIT THREE> => <DIGIT THREE>
+ { 0x0a9d4 , 0x00034 }, // <JAVANESE DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0a9d5 , 0x00035 }, // <JAVANESE DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0a9d6 , 0x00036 }, // <JAVANESE DIGIT SIX> => <DIGIT SIX>
+ { 0x0a9d7 , 0x00037 }, // <JAVANESE DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0a9d8 , 0x00038 }, // <JAVANESE DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0a9d9 , 0x00039 }, // <JAVANESE DIGIT NINE> => <DIGIT NINE>
+ { 0x0a9f0 , 0x00030 }, // <MYANMAR TAI LAING DIGIT ZERO> => <DIGIT ZERO>
+ { 0x0a9f1 , 0x00031 }, // <MYANMAR TAI LAING DIGIT ONE> => <DIGIT ONE>
+ { 0x0a9f2 , 0x00032 }, // <MYANMAR TAI LAING DIGIT TWO> => <DIGIT TWO>
+ { 0x0a9f3 , 0x00033 }, // <MYANMAR TAI LAING DIGIT THREE> => <DIGIT THREE>
+ { 0x0a9f4 , 0x00034 }, // <MYANMAR TAI LAING DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0a9f5 , 0x00035 }, // <MYANMAR TAI LAING DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0a9f6 , 0x00036 }, // <MYANMAR TAI LAING DIGIT SIX> => <DIGIT SIX>
+ { 0x0a9f7 , 0x00037 }, // <MYANMAR TAI LAING DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0a9f8 , 0x00038 }, // <MYANMAR TAI LAING DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0a9f9 , 0x00039 }, // <MYANMAR TAI LAING DIGIT NINE> => <DIGIT NINE>
+ { 0x0aa50 , 0x00030 }, // <CHAM DIGIT ZERO> => <DIGIT ZERO>
+ { 0x0aa51 , 0x00031 }, // <CHAM DIGIT ONE> => <DIGIT ONE>
+ { 0x0aa52 , 0x00032 }, // <CHAM DIGIT TWO> => <DIGIT TWO>
+ { 0x0aa53 , 0x00033 }, // <CHAM DIGIT THREE> => <DIGIT THREE>
+ { 0x0aa54 , 0x00034 }, // <CHAM DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0aa55 , 0x00035 }, // <CHAM DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0aa56 , 0x00036 }, // <CHAM DIGIT SIX> => <DIGIT SIX>
+ { 0x0aa57 , 0x00037 }, // <CHAM DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0aa58 , 0x00038 }, // <CHAM DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0aa59 , 0x00039 }, // <CHAM DIGIT NINE> => <DIGIT NINE>
+ { 0x0ab5c , 0x0a727 }, // <MODIFIER LETTER SMALL HENG> => <LATIN SMALL LETTER HENG>
+ { 0x0ab5d , 0x0ab37 }, // <MODIFIER LETTER SMALL L WITH INVERTED LAZY S> => <LATIN SMALL LETTER L WITH INVERTED LAZY S>
+ { 0x0ab5e , 0x0026b }, // <MODIFIER LETTER SMALL L WITH MIDDLE TILDE> => <LATIN SMALL LETTER L WITH MIDDLE TILDE>
+ { 0x0ab5f , 0x0ab52 }, // <MODIFIER LETTER SMALL U WITH LEFT HOOK> => <LATIN SMALL LETTER U WITH LEFT HOOK>
+ { 0x0abf0 , 0x00030 }, // <MEETEI MAYEK DIGIT ZERO> => <DIGIT ZERO>
+ { 0x0abf1 , 0x00031 }, // <MEETEI MAYEK DIGIT ONE> => <DIGIT ONE>
+ { 0x0abf2 , 0x00032 }, // <MEETEI MAYEK DIGIT TWO> => <DIGIT TWO>
+ { 0x0abf3 , 0x00033 }, // <MEETEI MAYEK DIGIT THREE> => <DIGIT THREE>
+ { 0x0abf4 , 0x00034 }, // <MEETEI MAYEK DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0abf5 , 0x00035 }, // <MEETEI MAYEK DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0abf6 , 0x00036 }, // <MEETEI MAYEK DIGIT SIX> => <DIGIT SIX>
+ { 0x0abf7 , 0x00037 }, // <MEETEI MAYEK DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0abf8 , 0x00038 }, // <MEETEI MAYEK DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0abf9 , 0x00039 }, // <MEETEI MAYEK DIGIT NINE> => <DIGIT NINE>
+ { 0x0fb1d , 0x005d9 }, // <HEBREW LETTER YOD WITH HIRIQ> => <HEBREW LETTER YOD>
+ { 0x0fb20 , 0x005e2 }, // <HEBREW LETTER ALTERNATIVE AYIN> => <HEBREW LETTER AYIN>
+ { 0x0fb21 , 0x005d0 }, // <HEBREW LETTER WIDE ALEF> => <HEBREW LETTER ALEF>
+ { 0x0fb22 , 0x005d3 }, // <HEBREW LETTER WIDE DALET> => <HEBREW LETTER DALET>
+ { 0x0fb23 , 0x005d4 }, // <HEBREW LETTER WIDE HE> => <HEBREW LETTER HE>
+ { 0x0fb24 , 0x005db }, // <HEBREW LETTER WIDE KAF> => <HEBREW LETTER KAF>
+ { 0x0fb25 , 0x005dc }, // <HEBREW LETTER WIDE LAMED> => <HEBREW LETTER LAMED>
+ { 0x0fb26 , 0x005de }, // <HEBREW LETTER WIDE FINAL MEM> => <HEBREW LETTER MEM>
+ { 0x0fb27 , 0x005e8 }, // <HEBREW LETTER WIDE RESH> => <HEBREW LETTER RESH>
+ { 0x0fb28 , 0x005ea }, // <HEBREW LETTER WIDE TAV> => <HEBREW LETTER TAV>
+ { 0x0fb2a , 0x005e9 }, // <HEBREW LETTER SHIN WITH SHIN DOT> => <HEBREW LETTER SHIN>
+ { 0x0fb2b , 0x005e9 }, // <HEBREW LETTER SHIN WITH SIN DOT> => <HEBREW LETTER SHIN>
+ { 0x0fb2c , 0x005e9 }, // <HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT> => <HEBREW LETTER SHIN>
+ { 0x0fb2d , 0x005e9 }, // <HEBREW LETTER SHIN WITH DAGESH AND SIN DOT> => <HEBREW LETTER SHIN>
+ { 0x0fb2e , 0x005d0 }, // <HEBREW LETTER ALEF WITH PATAH> => <HEBREW LETTER ALEF>
+ { 0x0fb2f , 0x005d0 }, // <HEBREW LETTER ALEF WITH QAMATS> => <HEBREW LETTER ALEF>
+ { 0x0fb30 , 0x005d0 }, // <HEBREW LETTER ALEF WITH MAPIQ> => <HEBREW LETTER ALEF>
+ { 0x0fb31 , 0x005d1 }, // <HEBREW LETTER BET WITH DAGESH> => <HEBREW LETTER BET>
+ { 0x0fb32 , 0x005d2 }, // <HEBREW LETTER GIMEL WITH DAGESH> => <HEBREW LETTER GIMEL>
+ { 0x0fb33 , 0x005d3 }, // <HEBREW LETTER DALET WITH DAGESH> => <HEBREW LETTER DALET>
+ { 0x0fb34 , 0x005d4 }, // <HEBREW LETTER HE WITH MAPIQ> => <HEBREW LETTER HE>
+ { 0x0fb35 , 0x005d5 }, // <HEBREW LETTER VAV WITH DAGESH> => <HEBREW LETTER VAV>
+ { 0x0fb36 , 0x005d6 }, // <HEBREW LETTER ZAYIN WITH DAGESH> => <HEBREW LETTER ZAYIN>
+ { 0x0fb38 , 0x005d8 }, // <HEBREW LETTER TET WITH DAGESH> => <HEBREW LETTER TET>
+ { 0x0fb39 , 0x005d9 }, // <HEBREW LETTER YOD WITH DAGESH> => <HEBREW LETTER YOD>
+ { 0x0fb3a , 0x005db }, // <HEBREW LETTER FINAL KAF WITH DAGESH> => <HEBREW LETTER KAF>
+ { 0x0fb3b , 0x005db }, // <HEBREW LETTER KAF WITH DAGESH> => <HEBREW LETTER KAF>
+ { 0x0fb3c , 0x005dc }, // <HEBREW LETTER LAMED WITH DAGESH> => <HEBREW LETTER LAMED>
+ { 0x0fb3e , 0x005de }, // <HEBREW LETTER MEM WITH DAGESH> => <HEBREW LETTER MEM>
+ { 0x0fb40 , 0x005e0 }, // <HEBREW LETTER NUN WITH DAGESH> => <HEBREW LETTER NUN>
+ { 0x0fb41 , 0x005e1 }, // <HEBREW LETTER SAMEKH WITH DAGESH> => <HEBREW LETTER SAMEKH>
+ { 0x0fb43 , 0x005e4 }, // <HEBREW LETTER FINAL PE WITH DAGESH> => <HEBREW LETTER PE>
+ { 0x0fb44 , 0x005e4 }, // <HEBREW LETTER PE WITH DAGESH> => <HEBREW LETTER PE>
+ { 0x0fb46 , 0x005e6 }, // <HEBREW LETTER TSADI WITH DAGESH> => <HEBREW LETTER TSADI>
+ { 0x0fb47 , 0x005e7 }, // <HEBREW LETTER QOF WITH DAGESH> => <HEBREW LETTER QOF>
+ { 0x0fb48 , 0x005e8 }, // <HEBREW LETTER RESH WITH DAGESH> => <HEBREW LETTER RESH>
+ { 0x0fb49 , 0x005e9 }, // <HEBREW LETTER SHIN WITH DAGESH> => <HEBREW LETTER SHIN>
+ { 0x0fb4a , 0x005ea }, // <HEBREW LETTER TAV WITH DAGESH> => <HEBREW LETTER TAV>
+ { 0x0fb4b , 0x005d5 }, // <HEBREW LETTER VAV WITH HOLAM> => <HEBREW LETTER VAV>
+ { 0x0fb4c , 0x005d1 }, // <HEBREW LETTER BET WITH RAFE> => <HEBREW LETTER BET>
+ { 0x0fb4d , 0x005db }, // <HEBREW LETTER KAF WITH RAFE> => <HEBREW LETTER KAF>
+ { 0x0fb4e , 0x005e4 }, // <HEBREW LETTER PE WITH RAFE> => <HEBREW LETTER PE>
+ { 0x0fb50 , 0x00671 }, // <ARABIC LETTER ALEF WASLA ISOLATED FORM> => <ARABIC LETTER ALEF WASLA>
+ { 0x0fb51 , 0x00671 }, // <ARABIC LETTER ALEF WASLA FINAL FORM> => <ARABIC LETTER ALEF WASLA>
+ { 0x0fb52 , 0x0067b }, // <ARABIC LETTER BEEH ISOLATED FORM> => <ARABIC LETTER BEEH>
+ { 0x0fb53 , 0x0067b }, // <ARABIC LETTER BEEH FINAL FORM> => <ARABIC LETTER BEEH>
+ { 0x0fb54 , 0x0067b }, // <ARABIC LETTER BEEH INITIAL FORM> => <ARABIC LETTER BEEH>
+ { 0x0fb55 , 0x0067b }, // <ARABIC LETTER BEEH MEDIAL FORM> => <ARABIC LETTER BEEH>
+ { 0x0fb56 , 0x0067e }, // <ARABIC LETTER PEH ISOLATED FORM> => <ARABIC LETTER PEH>
+ { 0x0fb57 , 0x0067e }, // <ARABIC LETTER PEH FINAL FORM> => <ARABIC LETTER PEH>
+ { 0x0fb58 , 0x0067e }, // <ARABIC LETTER PEH INITIAL FORM> => <ARABIC LETTER PEH>
+ { 0x0fb59 , 0x0067e }, // <ARABIC LETTER PEH MEDIAL FORM> => <ARABIC LETTER PEH>
+ { 0x0fb5a , 0x00680 }, // <ARABIC LETTER BEHEH ISOLATED FORM> => <ARABIC LETTER BEHEH>
+ { 0x0fb5b , 0x00680 }, // <ARABIC LETTER BEHEH FINAL FORM> => <ARABIC LETTER BEHEH>
+ { 0x0fb5c , 0x00680 }, // <ARABIC LETTER BEHEH INITIAL FORM> => <ARABIC LETTER BEHEH>
+ { 0x0fb5d , 0x00680 }, // <ARABIC LETTER BEHEH MEDIAL FORM> => <ARABIC LETTER BEHEH>
+ { 0x0fb5e , 0x0067a }, // <ARABIC LETTER TTEHEH ISOLATED FORM> => <ARABIC LETTER TTEHEH>
+ { 0x0fb5f , 0x0067a }, // <ARABIC LETTER TTEHEH FINAL FORM> => <ARABIC LETTER TTEHEH>
+ { 0x0fb60 , 0x0067a }, // <ARABIC LETTER TTEHEH INITIAL FORM> => <ARABIC LETTER TTEHEH>
+ { 0x0fb61 , 0x0067a }, // <ARABIC LETTER TTEHEH MEDIAL FORM> => <ARABIC LETTER TTEHEH>
+ { 0x0fb62 , 0x0067f }, // <ARABIC LETTER TEHEH ISOLATED FORM> => <ARABIC LETTER TEHEH>
+ { 0x0fb63 , 0x0067f }, // <ARABIC LETTER TEHEH FINAL FORM> => <ARABIC LETTER TEHEH>
+ { 0x0fb64 , 0x0067f }, // <ARABIC LETTER TEHEH INITIAL FORM> => <ARABIC LETTER TEHEH>
+ { 0x0fb65 , 0x0067f }, // <ARABIC LETTER TEHEH MEDIAL FORM> => <ARABIC LETTER TEHEH>
+ { 0x0fb66 , 0x00679 }, // <ARABIC LETTER TTEH ISOLATED FORM> => <ARABIC LETTER TTEH>
+ { 0x0fb67 , 0x00679 }, // <ARABIC LETTER TTEH FINAL FORM> => <ARABIC LETTER TTEH>
+ { 0x0fb68 , 0x00679 }, // <ARABIC LETTER TTEH INITIAL FORM> => <ARABIC LETTER TTEH>
+ { 0x0fb69 , 0x00679 }, // <ARABIC LETTER TTEH MEDIAL FORM> => <ARABIC LETTER TTEH>
+ { 0x0fb6a , 0x006a4 }, // <ARABIC LETTER VEH ISOLATED FORM> => <ARABIC LETTER VEH>
+ { 0x0fb6b , 0x006a4 }, // <ARABIC LETTER VEH FINAL FORM> => <ARABIC LETTER VEH>
+ { 0x0fb6c , 0x006a4 }, // <ARABIC LETTER VEH INITIAL FORM> => <ARABIC LETTER VEH>
+ { 0x0fb6d , 0x006a4 }, // <ARABIC LETTER VEH MEDIAL FORM> => <ARABIC LETTER VEH>
+ { 0x0fb6e , 0x006a6 }, // <ARABIC LETTER PEHEH ISOLATED FORM> => <ARABIC LETTER PEHEH>
+ { 0x0fb6f , 0x006a6 }, // <ARABIC LETTER PEHEH FINAL FORM> => <ARABIC LETTER PEHEH>
+ { 0x0fb70 , 0x006a6 }, // <ARABIC LETTER PEHEH INITIAL FORM> => <ARABIC LETTER PEHEH>
+ { 0x0fb71 , 0x006a6 }, // <ARABIC LETTER PEHEH MEDIAL FORM> => <ARABIC LETTER PEHEH>
+ { 0x0fb72 , 0x00684 }, // <ARABIC LETTER DYEH ISOLATED FORM> => <ARABIC LETTER DYEH>
+ { 0x0fb73 , 0x00684 }, // <ARABIC LETTER DYEH FINAL FORM> => <ARABIC LETTER DYEH>
+ { 0x0fb74 , 0x00684 }, // <ARABIC LETTER DYEH INITIAL FORM> => <ARABIC LETTER DYEH>
+ { 0x0fb75 , 0x00684 }, // <ARABIC LETTER DYEH MEDIAL FORM> => <ARABIC LETTER DYEH>
+ { 0x0fb76 , 0x00683 }, // <ARABIC LETTER NYEH ISOLATED FORM> => <ARABIC LETTER NYEH>
+ { 0x0fb77 , 0x00683 }, // <ARABIC LETTER NYEH FINAL FORM> => <ARABIC LETTER NYEH>
+ { 0x0fb78 , 0x00683 }, // <ARABIC LETTER NYEH INITIAL FORM> => <ARABIC LETTER NYEH>
+ { 0x0fb79 , 0x00683 }, // <ARABIC LETTER NYEH MEDIAL FORM> => <ARABIC LETTER NYEH>
+ { 0x0fb7a , 0x00686 }, // <ARABIC LETTER TCHEH ISOLATED FORM> => <ARABIC LETTER TCHEH>
+ { 0x0fb7b , 0x00686 }, // <ARABIC LETTER TCHEH FINAL FORM> => <ARABIC LETTER TCHEH>
+ { 0x0fb7c , 0x00686 }, // <ARABIC LETTER TCHEH INITIAL FORM> => <ARABIC LETTER TCHEH>
+ { 0x0fb7d , 0x00686 }, // <ARABIC LETTER TCHEH MEDIAL FORM> => <ARABIC LETTER TCHEH>
+ { 0x0fb7e , 0x00687 }, // <ARABIC LETTER TCHEHEH ISOLATED FORM> => <ARABIC LETTER TCHEHEH>
+ { 0x0fb7f , 0x00687 }, // <ARABIC LETTER TCHEHEH FINAL FORM> => <ARABIC LETTER TCHEHEH>
+ { 0x0fb80 , 0x00687 }, // <ARABIC LETTER TCHEHEH INITIAL FORM> => <ARABIC LETTER TCHEHEH>
+ { 0x0fb81 , 0x00687 }, // <ARABIC LETTER TCHEHEH MEDIAL FORM> => <ARABIC LETTER TCHEHEH>
+ { 0x0fb82 , 0x0068d }, // <ARABIC LETTER DDAHAL ISOLATED FORM> => <ARABIC LETTER DDAHAL>
+ { 0x0fb83 , 0x0068d }, // <ARABIC LETTER DDAHAL FINAL FORM> => <ARABIC LETTER DDAHAL>
+ { 0x0fb84 , 0x0068c }, // <ARABIC LETTER DAHAL ISOLATED FORM> => <ARABIC LETTER DAHAL>
+ { 0x0fb85 , 0x0068c }, // <ARABIC LETTER DAHAL FINAL FORM> => <ARABIC LETTER DAHAL>
+ { 0x0fb86 , 0x0068e }, // <ARABIC LETTER DUL ISOLATED FORM> => <ARABIC LETTER DUL>
+ { 0x0fb87 , 0x0068e }, // <ARABIC LETTER DUL FINAL FORM> => <ARABIC LETTER DUL>
+ { 0x0fb88 , 0x00688 }, // <ARABIC LETTER DDAL ISOLATED FORM> => <ARABIC LETTER DDAL>
+ { 0x0fb89 , 0x00688 }, // <ARABIC LETTER DDAL FINAL FORM> => <ARABIC LETTER DDAL>
+ { 0x0fb8a , 0x00698 }, // <ARABIC LETTER JEH ISOLATED FORM> => <ARABIC LETTER JEH>
+ { 0x0fb8b , 0x00698 }, // <ARABIC LETTER JEH FINAL FORM> => <ARABIC LETTER JEH>
+ { 0x0fb8c , 0x00691 }, // <ARABIC LETTER RREH ISOLATED FORM> => <ARABIC LETTER RREH>
+ { 0x0fb8d , 0x00691 }, // <ARABIC LETTER RREH FINAL FORM> => <ARABIC LETTER RREH>
+ { 0x0fb8e , 0x006a9 }, // <ARABIC LETTER KEHEH ISOLATED FORM> => <ARABIC LETTER KEHEH>
+ { 0x0fb8f , 0x006a9 }, // <ARABIC LETTER KEHEH FINAL FORM> => <ARABIC LETTER KEHEH>
+ { 0x0fb90 , 0x006a9 }, // <ARABIC LETTER KEHEH INITIAL FORM> => <ARABIC LETTER KEHEH>
+ { 0x0fb91 , 0x006a9 }, // <ARABIC LETTER KEHEH MEDIAL FORM> => <ARABIC LETTER KEHEH>
+ { 0x0fb92 , 0x006af }, // <ARABIC LETTER GAF ISOLATED FORM> => <ARABIC LETTER GAF>
+ { 0x0fb93 , 0x006af }, // <ARABIC LETTER GAF FINAL FORM> => <ARABIC LETTER GAF>
+ { 0x0fb94 , 0x006af }, // <ARABIC LETTER GAF INITIAL FORM> => <ARABIC LETTER GAF>
+ { 0x0fb95 , 0x006af }, // <ARABIC LETTER GAF MEDIAL FORM> => <ARABIC LETTER GAF>
+ { 0x0fb96 , 0x006b3 }, // <ARABIC LETTER GUEH ISOLATED FORM> => <ARABIC LETTER GUEH>
+ { 0x0fb97 , 0x006b3 }, // <ARABIC LETTER GUEH FINAL FORM> => <ARABIC LETTER GUEH>
+ { 0x0fb98 , 0x006b3 }, // <ARABIC LETTER GUEH INITIAL FORM> => <ARABIC LETTER GUEH>
+ { 0x0fb99 , 0x006b3 }, // <ARABIC LETTER GUEH MEDIAL FORM> => <ARABIC LETTER GUEH>
+ { 0x0fb9a , 0x006b1 }, // <ARABIC LETTER NGOEH ISOLATED FORM> => <ARABIC LETTER NGOEH>
+ { 0x0fb9b , 0x006b1 }, // <ARABIC LETTER NGOEH FINAL FORM> => <ARABIC LETTER NGOEH>
+ { 0x0fb9c , 0x006b1 }, // <ARABIC LETTER NGOEH INITIAL FORM> => <ARABIC LETTER NGOEH>
+ { 0x0fb9d , 0x006b1 }, // <ARABIC LETTER NGOEH MEDIAL FORM> => <ARABIC LETTER NGOEH>
+ { 0x0fb9e , 0x006ba }, // <ARABIC LETTER NOON GHUNNA ISOLATED FORM> => <ARABIC LETTER NOON GHUNNA>
+ { 0x0fb9f , 0x006ba }, // <ARABIC LETTER NOON GHUNNA FINAL FORM> => <ARABIC LETTER NOON GHUNNA>
+ { 0x0fba0 , 0x006bb }, // <ARABIC LETTER RNOON ISOLATED FORM> => <ARABIC LETTER RNOON>
+ { 0x0fba1 , 0x006bb }, // <ARABIC LETTER RNOON FINAL FORM> => <ARABIC LETTER RNOON>
+ { 0x0fba2 , 0x006bb }, // <ARABIC LETTER RNOON INITIAL FORM> => <ARABIC LETTER RNOON>
+ { 0x0fba3 , 0x006bb }, // <ARABIC LETTER RNOON MEDIAL FORM> => <ARABIC LETTER RNOON>
+ { 0x0fba4 , 0x006d5 }, // <ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM> => <ARABIC LETTER AE>
+ { 0x0fba5 , 0x006d5 }, // <ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM> => <ARABIC LETTER AE>
+ { 0x0fba6 , 0x006c1 }, // <ARABIC LETTER HEH GOAL ISOLATED FORM> => <ARABIC LETTER HEH GOAL>
+ { 0x0fba7 , 0x006c1 }, // <ARABIC LETTER HEH GOAL FINAL FORM> => <ARABIC LETTER HEH GOAL>
+ { 0x0fba8 , 0x006c1 }, // <ARABIC LETTER HEH GOAL INITIAL FORM> => <ARABIC LETTER HEH GOAL>
+ { 0x0fba9 , 0x006c1 }, // <ARABIC LETTER HEH GOAL MEDIAL FORM> => <ARABIC LETTER HEH GOAL>
+ { 0x0fbaa , 0x006be }, // <ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM> => <ARABIC LETTER HEH DOACHASHMEE>
+ { 0x0fbab , 0x006be }, // <ARABIC LETTER HEH DOACHASHMEE FINAL FORM> => <ARABIC LETTER HEH DOACHASHMEE>
+ { 0x0fbac , 0x006be }, // <ARABIC LETTER HEH DOACHASHMEE INITIAL FORM> => <ARABIC LETTER HEH DOACHASHMEE>
+ { 0x0fbad , 0x006be }, // <ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM> => <ARABIC LETTER HEH DOACHASHMEE>
+ { 0x0fbae , 0x006d2 }, // <ARABIC LETTER YEH BARREE ISOLATED FORM> => <ARABIC LETTER YEH BARREE>
+ { 0x0fbaf , 0x006d2 }, // <ARABIC LETTER YEH BARREE FINAL FORM> => <ARABIC LETTER YEH BARREE>
+ { 0x0fbb0 , 0x006d2 }, // <ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM> => <ARABIC LETTER YEH BARREE>
+ { 0x0fbb1 , 0x006d2 }, // <ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM> => <ARABIC LETTER YEH BARREE>
+ { 0x0fbd3 , 0x006ad }, // <ARABIC LETTER NG ISOLATED FORM> => <ARABIC LETTER NG>
+ { 0x0fbd4 , 0x006ad }, // <ARABIC LETTER NG FINAL FORM> => <ARABIC LETTER NG>
+ { 0x0fbd5 , 0x006ad }, // <ARABIC LETTER NG INITIAL FORM> => <ARABIC LETTER NG>
+ { 0x0fbd6 , 0x006ad }, // <ARABIC LETTER NG MEDIAL FORM> => <ARABIC LETTER NG>
+ { 0x0fbd7 , 0x006c7 }, // <ARABIC LETTER U ISOLATED FORM> => <ARABIC LETTER U>
+ { 0x0fbd8 , 0x006c7 }, // <ARABIC LETTER U FINAL FORM> => <ARABIC LETTER U>
+ { 0x0fbd9 , 0x006c6 }, // <ARABIC LETTER OE ISOLATED FORM> => <ARABIC LETTER OE>
+ { 0x0fbda , 0x006c6 }, // <ARABIC LETTER OE FINAL FORM> => <ARABIC LETTER OE>
+ { 0x0fbdb , 0x006c8 }, // <ARABIC LETTER YU ISOLATED FORM> => <ARABIC LETTER YU>
+ { 0x0fbdc , 0x006c8 }, // <ARABIC LETTER YU FINAL FORM> => <ARABIC LETTER YU>
+ { 0x0fbde , 0x006cb }, // <ARABIC LETTER VE ISOLATED FORM> => <ARABIC LETTER VE>
+ { 0x0fbdf , 0x006cb }, // <ARABIC LETTER VE FINAL FORM> => <ARABIC LETTER VE>
+ { 0x0fbe0 , 0x006c5 }, // <ARABIC LETTER KIRGHIZ OE ISOLATED FORM> => <ARABIC LETTER KIRGHIZ OE>
+ { 0x0fbe1 , 0x006c5 }, // <ARABIC LETTER KIRGHIZ OE FINAL FORM> => <ARABIC LETTER KIRGHIZ OE>
+ { 0x0fbe2 , 0x006c9 }, // <ARABIC LETTER KIRGHIZ YU ISOLATED FORM> => <ARABIC LETTER KIRGHIZ YU>
+ { 0x0fbe3 , 0x006c9 }, // <ARABIC LETTER KIRGHIZ YU FINAL FORM> => <ARABIC LETTER KIRGHIZ YU>
+ { 0x0fbe4 , 0x006d0 }, // <ARABIC LETTER E ISOLATED FORM> => <ARABIC LETTER E>
+ { 0x0fbe5 , 0x006d0 }, // <ARABIC LETTER E FINAL FORM> => <ARABIC LETTER E>
+ { 0x0fbe6 , 0x006d0 }, // <ARABIC LETTER E INITIAL FORM> => <ARABIC LETTER E>
+ { 0x0fbe7 , 0x006d0 }, // <ARABIC LETTER E MEDIAL FORM> => <ARABIC LETTER E>
+ { 0x0fbe8 , 0x00649 }, // <ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM> => <ARABIC LETTER ALEF MAKSURA>
+ { 0x0fbe9 , 0x00649 }, // <ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM> => <ARABIC LETTER ALEF MAKSURA>
+ { 0x0fbfc , 0x006cc }, // <ARABIC LETTER FARSI YEH ISOLATED FORM> => <ARABIC LETTER FARSI YEH>
+ { 0x0fbfd , 0x006cc }, // <ARABIC LETTER FARSI YEH FINAL FORM> => <ARABIC LETTER FARSI YEH>
+ { 0x0fbfe , 0x006cc }, // <ARABIC LETTER FARSI YEH INITIAL FORM> => <ARABIC LETTER FARSI YEH>
+ { 0x0fbff , 0x006cc }, // <ARABIC LETTER FARSI YEH MEDIAL FORM> => <ARABIC LETTER FARSI YEH>
+ { 0x0fc5b , 0x00630 }, // <ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM> => <ARABIC LETTER THAL>
+ { 0x0fc5c , 0x00631 }, // <ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM> => <ARABIC LETTER REH>
+ { 0x0fc5d , 0x00649 }, // <ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM> => <ARABIC LETTER ALEF MAKSURA>
+ { 0x0fc90 , 0x00649 }, // <ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM> => <ARABIC LETTER ALEF MAKSURA>
+ { 0x0fcd9 , 0x00647 }, // <ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM> => <ARABIC LETTER HEH>
+ { 0x0fd3c , 0x00627 }, // <ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM> => <ARABIC LETTER ALEF>
+ { 0x0fd3d , 0x00627 }, // <ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM> => <ARABIC LETTER ALEF>
+ { 0x0fe80 , 0x00621 }, // <ARABIC LETTER HAMZA ISOLATED FORM> => <ARABIC LETTER HAMZA>
+ { 0x0fe81 , 0x00622 }, // <ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM> => <ARABIC LETTER ALEF WITH MADDA ABOVE>
+ { 0x0fe82 , 0x00622 }, // <ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM> => <ARABIC LETTER ALEF WITH MADDA ABOVE>
+ { 0x0fe83 , 0x00623 }, // <ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM> => <ARABIC LETTER ALEF WITH HAMZA ABOVE>
+ { 0x0fe84 , 0x00623 }, // <ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM> => <ARABIC LETTER ALEF WITH HAMZA ABOVE>
+ { 0x0fe85 , 0x00624 }, // <ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM> => <ARABIC LETTER WAW WITH HAMZA ABOVE>
+ { 0x0fe86 , 0x00624 }, // <ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM> => <ARABIC LETTER WAW WITH HAMZA ABOVE>
+ { 0x0fe87 , 0x00625 }, // <ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM> => <ARABIC LETTER ALEF WITH HAMZA BELOW>
+ { 0x0fe88 , 0x00625 }, // <ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM> => <ARABIC LETTER ALEF WITH HAMZA BELOW>
+ { 0x0fe89 , 0x00626 }, // <ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM> => <ARABIC LETTER YEH WITH HAMZA ABOVE>
+ { 0x0fe8a , 0x00626 }, // <ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM> => <ARABIC LETTER YEH WITH HAMZA ABOVE>
+ { 0x0fe8b , 0x00626 }, // <ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM> => <ARABIC LETTER YEH WITH HAMZA ABOVE>
+ { 0x0fe8c , 0x00626 }, // <ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM> => <ARABIC LETTER YEH WITH HAMZA ABOVE>
+ { 0x0fe8d , 0x00627 }, // <ARABIC LETTER ALEF ISOLATED FORM> => <ARABIC LETTER ALEF>
+ { 0x0fe8e , 0x00627 }, // <ARABIC LETTER ALEF FINAL FORM> => <ARABIC LETTER ALEF>
+ { 0x0fe8f , 0x00628 }, // <ARABIC LETTER BEH ISOLATED FORM> => <ARABIC LETTER BEH>
+ { 0x0fe90 , 0x00628 }, // <ARABIC LETTER BEH FINAL FORM> => <ARABIC LETTER BEH>
+ { 0x0fe91 , 0x00628 }, // <ARABIC LETTER BEH INITIAL FORM> => <ARABIC LETTER BEH>
+ { 0x0fe92 , 0x00628 }, // <ARABIC LETTER BEH MEDIAL FORM> => <ARABIC LETTER BEH>
+ { 0x0fe93 , 0x00629 }, // <ARABIC LETTER TEH MARBUTA ISOLATED FORM> => <ARABIC LETTER TEH MARBUTA>
+ { 0x0fe94 , 0x00629 }, // <ARABIC LETTER TEH MARBUTA FINAL FORM> => <ARABIC LETTER TEH MARBUTA>
+ { 0x0fe95 , 0x0062a }, // <ARABIC LETTER TEH ISOLATED FORM> => <ARABIC LETTER TEH>
+ { 0x0fe96 , 0x0062a }, // <ARABIC LETTER TEH FINAL FORM> => <ARABIC LETTER TEH>
+ { 0x0fe97 , 0x0062a }, // <ARABIC LETTER TEH INITIAL FORM> => <ARABIC LETTER TEH>
+ { 0x0fe98 , 0x0062a }, // <ARABIC LETTER TEH MEDIAL FORM> => <ARABIC LETTER TEH>
+ { 0x0fe99 , 0x0062b }, // <ARABIC LETTER THEH ISOLATED FORM> => <ARABIC LETTER THEH>
+ { 0x0fe9a , 0x0062b }, // <ARABIC LETTER THEH FINAL FORM> => <ARABIC LETTER THEH>
+ { 0x0fe9b , 0x0062b }, // <ARABIC LETTER THEH INITIAL FORM> => <ARABIC LETTER THEH>
+ { 0x0fe9c , 0x0062b }, // <ARABIC LETTER THEH MEDIAL FORM> => <ARABIC LETTER THEH>
+ { 0x0fe9d , 0x0062c }, // <ARABIC LETTER JEEM ISOLATED FORM> => <ARABIC LETTER JEEM>
+ { 0x0fe9e , 0x0062c }, // <ARABIC LETTER JEEM FINAL FORM> => <ARABIC LETTER JEEM>
+ { 0x0fe9f , 0x0062c }, // <ARABIC LETTER JEEM INITIAL FORM> => <ARABIC LETTER JEEM>
+ { 0x0fea0 , 0x0062c }, // <ARABIC LETTER JEEM MEDIAL FORM> => <ARABIC LETTER JEEM>
+ { 0x0fea1 , 0x0062d }, // <ARABIC LETTER HAH ISOLATED FORM> => <ARABIC LETTER HAH>
+ { 0x0fea2 , 0x0062d }, // <ARABIC LETTER HAH FINAL FORM> => <ARABIC LETTER HAH>
+ { 0x0fea3 , 0x0062d }, // <ARABIC LETTER HAH INITIAL FORM> => <ARABIC LETTER HAH>
+ { 0x0fea4 , 0x0062d }, // <ARABIC LETTER HAH MEDIAL FORM> => <ARABIC LETTER HAH>
+ { 0x0fea5 , 0x0062e }, // <ARABIC LETTER KHAH ISOLATED FORM> => <ARABIC LETTER KHAH>
+ { 0x0fea6 , 0x0062e }, // <ARABIC LETTER KHAH FINAL FORM> => <ARABIC LETTER KHAH>
+ { 0x0fea7 , 0x0062e }, // <ARABIC LETTER KHAH INITIAL FORM> => <ARABIC LETTER KHAH>
+ { 0x0fea8 , 0x0062e }, // <ARABIC LETTER KHAH MEDIAL FORM> => <ARABIC LETTER KHAH>
+ { 0x0fea9 , 0x0062f }, // <ARABIC LETTER DAL ISOLATED FORM> => <ARABIC LETTER DAL>
+ { 0x0feaa , 0x0062f }, // <ARABIC LETTER DAL FINAL FORM> => <ARABIC LETTER DAL>
+ { 0x0feab , 0x00630 }, // <ARABIC LETTER THAL ISOLATED FORM> => <ARABIC LETTER THAL>
+ { 0x0feac , 0x00630 }, // <ARABIC LETTER THAL FINAL FORM> => <ARABIC LETTER THAL>
+ { 0x0fead , 0x00631 }, // <ARABIC LETTER REH ISOLATED FORM> => <ARABIC LETTER REH>
+ { 0x0feae , 0x00631 }, // <ARABIC LETTER REH FINAL FORM> => <ARABIC LETTER REH>
+ { 0x0feaf , 0x00632 }, // <ARABIC LETTER ZAIN ISOLATED FORM> => <ARABIC LETTER ZAIN>
+ { 0x0feb0 , 0x00632 }, // <ARABIC LETTER ZAIN FINAL FORM> => <ARABIC LETTER ZAIN>
+ { 0x0feb1 , 0x00633 }, // <ARABIC LETTER SEEN ISOLATED FORM> => <ARABIC LETTER SEEN>
+ { 0x0feb2 , 0x00633 }, // <ARABIC LETTER SEEN FINAL FORM> => <ARABIC LETTER SEEN>
+ { 0x0feb3 , 0x00633 }, // <ARABIC LETTER SEEN INITIAL FORM> => <ARABIC LETTER SEEN>
+ { 0x0feb4 , 0x00633 }, // <ARABIC LETTER SEEN MEDIAL FORM> => <ARABIC LETTER SEEN>
+ { 0x0feb5 , 0x00634 }, // <ARABIC LETTER SHEEN ISOLATED FORM> => <ARABIC LETTER SHEEN>
+ { 0x0feb6 , 0x00634 }, // <ARABIC LETTER SHEEN FINAL FORM> => <ARABIC LETTER SHEEN>
+ { 0x0feb7 , 0x00634 }, // <ARABIC LETTER SHEEN INITIAL FORM> => <ARABIC LETTER SHEEN>
+ { 0x0feb8 , 0x00634 }, // <ARABIC LETTER SHEEN MEDIAL FORM> => <ARABIC LETTER SHEEN>
+ { 0x0feb9 , 0x00635 }, // <ARABIC LETTER SAD ISOLATED FORM> => <ARABIC LETTER SAD>
+ { 0x0feba , 0x00635 }, // <ARABIC LETTER SAD FINAL FORM> => <ARABIC LETTER SAD>
+ { 0x0febb , 0x00635 }, // <ARABIC LETTER SAD INITIAL FORM> => <ARABIC LETTER SAD>
+ { 0x0febc , 0x00635 }, // <ARABIC LETTER SAD MEDIAL FORM> => <ARABIC LETTER SAD>
+ { 0x0febd , 0x00636 }, // <ARABIC LETTER DAD ISOLATED FORM> => <ARABIC LETTER DAD>
+ { 0x0febe , 0x00636 }, // <ARABIC LETTER DAD FINAL FORM> => <ARABIC LETTER DAD>
+ { 0x0febf , 0x00636 }, // <ARABIC LETTER DAD INITIAL FORM> => <ARABIC LETTER DAD>
+ { 0x0fec0 , 0x00636 }, // <ARABIC LETTER DAD MEDIAL FORM> => <ARABIC LETTER DAD>
+ { 0x0fec1 , 0x00637 }, // <ARABIC LETTER TAH ISOLATED FORM> => <ARABIC LETTER TAH>
+ { 0x0fec2 , 0x00637 }, // <ARABIC LETTER TAH FINAL FORM> => <ARABIC LETTER TAH>
+ { 0x0fec3 , 0x00637 }, // <ARABIC LETTER TAH INITIAL FORM> => <ARABIC LETTER TAH>
+ { 0x0fec4 , 0x00637 }, // <ARABIC LETTER TAH MEDIAL FORM> => <ARABIC LETTER TAH>
+ { 0x0fec5 , 0x00638 }, // <ARABIC LETTER ZAH ISOLATED FORM> => <ARABIC LETTER ZAH>
+ { 0x0fec6 , 0x00638 }, // <ARABIC LETTER ZAH FINAL FORM> => <ARABIC LETTER ZAH>
+ { 0x0fec7 , 0x00638 }, // <ARABIC LETTER ZAH INITIAL FORM> => <ARABIC LETTER ZAH>
+ { 0x0fec8 , 0x00638 }, // <ARABIC LETTER ZAH MEDIAL FORM> => <ARABIC LETTER ZAH>
+ { 0x0fec9 , 0x00639 }, // <ARABIC LETTER AIN ISOLATED FORM> => <ARABIC LETTER AIN>
+ { 0x0feca , 0x00639 }, // <ARABIC LETTER AIN FINAL FORM> => <ARABIC LETTER AIN>
+ { 0x0fecb , 0x00639 }, // <ARABIC LETTER AIN INITIAL FORM> => <ARABIC LETTER AIN>
+ { 0x0fecc , 0x00639 }, // <ARABIC LETTER AIN MEDIAL FORM> => <ARABIC LETTER AIN>
+ { 0x0fecd , 0x0063a }, // <ARABIC LETTER GHAIN ISOLATED FORM> => <ARABIC LETTER GHAIN>
+ { 0x0fece , 0x0063a }, // <ARABIC LETTER GHAIN FINAL FORM> => <ARABIC LETTER GHAIN>
+ { 0x0fecf , 0x0063a }, // <ARABIC LETTER GHAIN INITIAL FORM> => <ARABIC LETTER GHAIN>
+ { 0x0fed0 , 0x0063a }, // <ARABIC LETTER GHAIN MEDIAL FORM> => <ARABIC LETTER GHAIN>
+ { 0x0fed1 , 0x00641 }, // <ARABIC LETTER FEH ISOLATED FORM> => <ARABIC LETTER FEH>
+ { 0x0fed2 , 0x00641 }, // <ARABIC LETTER FEH FINAL FORM> => <ARABIC LETTER FEH>
+ { 0x0fed3 , 0x00641 }, // <ARABIC LETTER FEH INITIAL FORM> => <ARABIC LETTER FEH>
+ { 0x0fed4 , 0x00641 }, // <ARABIC LETTER FEH MEDIAL FORM> => <ARABIC LETTER FEH>
+ { 0x0fed5 , 0x00642 }, // <ARABIC LETTER QAF ISOLATED FORM> => <ARABIC LETTER QAF>
+ { 0x0fed6 , 0x00642 }, // <ARABIC LETTER QAF FINAL FORM> => <ARABIC LETTER QAF>
+ { 0x0fed7 , 0x00642 }, // <ARABIC LETTER QAF INITIAL FORM> => <ARABIC LETTER QAF>
+ { 0x0fed8 , 0x00642 }, // <ARABIC LETTER QAF MEDIAL FORM> => <ARABIC LETTER QAF>
+ { 0x0fed9 , 0x00643 }, // <ARABIC LETTER KAF ISOLATED FORM> => <ARABIC LETTER KAF>
+ { 0x0feda , 0x00643 }, // <ARABIC LETTER KAF FINAL FORM> => <ARABIC LETTER KAF>
+ { 0x0fedb , 0x00643 }, // <ARABIC LETTER KAF INITIAL FORM> => <ARABIC LETTER KAF>
+ { 0x0fedc , 0x00643 }, // <ARABIC LETTER KAF MEDIAL FORM> => <ARABIC LETTER KAF>
+ { 0x0fedd , 0x00644 }, // <ARABIC LETTER LAM ISOLATED FORM> => <ARABIC LETTER LAM>
+ { 0x0fede , 0x00644 }, // <ARABIC LETTER LAM FINAL FORM> => <ARABIC LETTER LAM>
+ { 0x0fedf , 0x00644 }, // <ARABIC LETTER LAM INITIAL FORM> => <ARABIC LETTER LAM>
+ { 0x0fee0 , 0x00644 }, // <ARABIC LETTER LAM MEDIAL FORM> => <ARABIC LETTER LAM>
+ { 0x0fee1 , 0x00645 }, // <ARABIC LETTER MEEM ISOLATED FORM> => <ARABIC LETTER MEEM>
+ { 0x0fee2 , 0x00645 }, // <ARABIC LETTER MEEM FINAL FORM> => <ARABIC LETTER MEEM>
+ { 0x0fee3 , 0x00645 }, // <ARABIC LETTER MEEM INITIAL FORM> => <ARABIC LETTER MEEM>
+ { 0x0fee4 , 0x00645 }, // <ARABIC LETTER MEEM MEDIAL FORM> => <ARABIC LETTER MEEM>
+ { 0x0fee5 , 0x00646 }, // <ARABIC LETTER NOON ISOLATED FORM> => <ARABIC LETTER NOON>
+ { 0x0fee6 , 0x00646 }, // <ARABIC LETTER NOON FINAL FORM> => <ARABIC LETTER NOON>
+ { 0x0fee7 , 0x00646 }, // <ARABIC LETTER NOON INITIAL FORM> => <ARABIC LETTER NOON>
+ { 0x0fee8 , 0x00646 }, // <ARABIC LETTER NOON MEDIAL FORM> => <ARABIC LETTER NOON>
+ { 0x0fee9 , 0x00647 }, // <ARABIC LETTER HEH ISOLATED FORM> => <ARABIC LETTER HEH>
+ { 0x0feea , 0x00647 }, // <ARABIC LETTER HEH FINAL FORM> => <ARABIC LETTER HEH>
+ { 0x0feeb , 0x00647 }, // <ARABIC LETTER HEH INITIAL FORM> => <ARABIC LETTER HEH>
+ { 0x0feec , 0x00647 }, // <ARABIC LETTER HEH MEDIAL FORM> => <ARABIC LETTER HEH>
+ { 0x0feed , 0x00648 }, // <ARABIC LETTER WAW ISOLATED FORM> => <ARABIC LETTER WAW>
+ { 0x0feee , 0x00648 }, // <ARABIC LETTER WAW FINAL FORM> => <ARABIC LETTER WAW>
+ { 0x0feef , 0x00649 }, // <ARABIC LETTER ALEF MAKSURA ISOLATED FORM> => <ARABIC LETTER ALEF MAKSURA>
+ { 0x0fef0 , 0x00649 }, // <ARABIC LETTER ALEF MAKSURA FINAL FORM> => <ARABIC LETTER ALEF MAKSURA>
+ { 0x0fef1 , 0x0064a }, // <ARABIC LETTER YEH ISOLATED FORM> => <ARABIC LETTER YEH>
+ { 0x0fef2 , 0x0064a }, // <ARABIC LETTER YEH FINAL FORM> => <ARABIC LETTER YEH>
+ { 0x0fef3 , 0x0064a }, // <ARABIC LETTER YEH INITIAL FORM> => <ARABIC LETTER YEH>
+ { 0x0fef4 , 0x0064a }, // <ARABIC LETTER YEH MEDIAL FORM> => <ARABIC LETTER YEH>
+ { 0x0ff10 , 0x00030 }, // <FULLWIDTH DIGIT ZERO> => <DIGIT ZERO>
+ { 0x0ff11 , 0x00031 }, // <FULLWIDTH DIGIT ONE> => <DIGIT ONE>
+ { 0x0ff12 , 0x00032 }, // <FULLWIDTH DIGIT TWO> => <DIGIT TWO>
+ { 0x0ff13 , 0x00033 }, // <FULLWIDTH DIGIT THREE> => <DIGIT THREE>
+ { 0x0ff14 , 0x00034 }, // <FULLWIDTH DIGIT FOUR> => <DIGIT FOUR>
+ { 0x0ff15 , 0x00035 }, // <FULLWIDTH DIGIT FIVE> => <DIGIT FIVE>
+ { 0x0ff16 , 0x00036 }, // <FULLWIDTH DIGIT SIX> => <DIGIT SIX>
+ { 0x0ff17 , 0x00037 }, // <FULLWIDTH DIGIT SEVEN> => <DIGIT SEVEN>
+ { 0x0ff18 , 0x00038 }, // <FULLWIDTH DIGIT EIGHT> => <DIGIT EIGHT>
+ { 0x0ff19 , 0x00039 }, // <FULLWIDTH DIGIT NINE> => <DIGIT NINE>
+ { 0x0ff21 , 0x00061 }, // <FULLWIDTH LATIN CAPITAL LETTER A> => <LATIN SMALL LETTER A>
+ { 0x0ff22 , 0x00062 }, // <FULLWIDTH LATIN CAPITAL LETTER B> => <LATIN SMALL LETTER B>
+ { 0x0ff23 , 0x00063 }, // <FULLWIDTH LATIN CAPITAL LETTER C> => <LATIN SMALL LETTER C>
+ { 0x0ff24 , 0x00064 }, // <FULLWIDTH LATIN CAPITAL LETTER D> => <LATIN SMALL LETTER D>
+ { 0x0ff25 , 0x00065 }, // <FULLWIDTH LATIN CAPITAL LETTER E> => <LATIN SMALL LETTER E>
+ { 0x0ff26 , 0x00066 }, // <FULLWIDTH LATIN CAPITAL LETTER F> => <LATIN SMALL LETTER F>
+ { 0x0ff27 , 0x00067 }, // <FULLWIDTH LATIN CAPITAL LETTER G> => <LATIN SMALL LETTER G>
+ { 0x0ff28 , 0x00068 }, // <FULLWIDTH LATIN CAPITAL LETTER H> => <LATIN SMALL LETTER H>
+ { 0x0ff29 , 0x00069 }, // <FULLWIDTH LATIN CAPITAL LETTER I> => <LATIN SMALL LETTER I>
+ { 0x0ff2a , 0x0006a }, // <FULLWIDTH LATIN CAPITAL LETTER J> => <LATIN SMALL LETTER J>
+ { 0x0ff2b , 0x0006b }, // <FULLWIDTH LATIN CAPITAL LETTER K> => <LATIN SMALL LETTER K>
+ { 0x0ff2c , 0x0006c }, // <FULLWIDTH LATIN CAPITAL LETTER L> => <LATIN SMALL LETTER L>
+ { 0x0ff2d , 0x0006d }, // <FULLWIDTH LATIN CAPITAL LETTER M> => <LATIN SMALL LETTER M>
+ { 0x0ff2e , 0x0006e }, // <FULLWIDTH LATIN CAPITAL LETTER N> => <LATIN SMALL LETTER N>
+ { 0x0ff2f , 0x0006f }, // <FULLWIDTH LATIN CAPITAL LETTER O> => <LATIN SMALL LETTER O>
+ { 0x0ff30 , 0x00070 }, // <FULLWIDTH LATIN CAPITAL LETTER P> => <LATIN SMALL LETTER P>
+ { 0x0ff31 , 0x00071 }, // <FULLWIDTH LATIN CAPITAL LETTER Q> => <LATIN SMALL LETTER Q>
+ { 0x0ff32 , 0x00072 }, // <FULLWIDTH LATIN CAPITAL LETTER R> => <LATIN SMALL LETTER R>
+ { 0x0ff33 , 0x00073 }, // <FULLWIDTH LATIN CAPITAL LETTER S> => <LATIN SMALL LETTER S>
+ { 0x0ff34 , 0x00074 }, // <FULLWIDTH LATIN CAPITAL LETTER T> => <LATIN SMALL LETTER T>
+ { 0x0ff35 , 0x00075 }, // <FULLWIDTH LATIN CAPITAL LETTER U> => <LATIN SMALL LETTER U>
+ { 0x0ff36 , 0x00076 }, // <FULLWIDTH LATIN CAPITAL LETTER V> => <LATIN SMALL LETTER V>
+ { 0x0ff37 , 0x00077 }, // <FULLWIDTH LATIN CAPITAL LETTER W> => <LATIN SMALL LETTER W>
+ { 0x0ff38 , 0x00078 }, // <FULLWIDTH LATIN CAPITAL LETTER X> => <LATIN SMALL LETTER X>
+ { 0x0ff39 , 0x00079 }, // <FULLWIDTH LATIN CAPITAL LETTER Y> => <LATIN SMALL LETTER Y>
+ { 0x0ff3a , 0x0007a }, // <FULLWIDTH LATIN CAPITAL LETTER Z> => <LATIN SMALL LETTER Z>
+ { 0x0ff41 , 0x00061 }, // <FULLWIDTH LATIN SMALL LETTER A> => <LATIN SMALL LETTER A>
+ { 0x0ff42 , 0x00062 }, // <FULLWIDTH LATIN SMALL LETTER B> => <LATIN SMALL LETTER B>
+ { 0x0ff43 , 0x00063 }, // <FULLWIDTH LATIN SMALL LETTER C> => <LATIN SMALL LETTER C>
+ { 0x0ff44 , 0x00064 }, // <FULLWIDTH LATIN SMALL LETTER D> => <LATIN SMALL LETTER D>
+ { 0x0ff45 , 0x00065 }, // <FULLWIDTH LATIN SMALL LETTER E> => <LATIN SMALL LETTER E>
+ { 0x0ff46 , 0x00066 }, // <FULLWIDTH LATIN SMALL LETTER F> => <LATIN SMALL LETTER F>
+ { 0x0ff47 , 0x00067 }, // <FULLWIDTH LATIN SMALL LETTER G> => <LATIN SMALL LETTER G>
+ { 0x0ff48 , 0x00068 }, // <FULLWIDTH LATIN SMALL LETTER H> => <LATIN SMALL LETTER H>
+ { 0x0ff49 , 0x00069 }, // <FULLWIDTH LATIN SMALL LETTER I> => <LATIN SMALL LETTER I>
+ { 0x0ff4a , 0x0006a }, // <FULLWIDTH LATIN SMALL LETTER J> => <LATIN SMALL LETTER J>
+ { 0x0ff4b , 0x0006b }, // <FULLWIDTH LATIN SMALL LETTER K> => <LATIN SMALL LETTER K>
+ { 0x0ff4c , 0x0006c }, // <FULLWIDTH LATIN SMALL LETTER L> => <LATIN SMALL LETTER L>
+ { 0x0ff4d , 0x0006d }, // <FULLWIDTH LATIN SMALL LETTER M> => <LATIN SMALL LETTER M>
+ { 0x0ff4e , 0x0006e }, // <FULLWIDTH LATIN SMALL LETTER N> => <LATIN SMALL LETTER N>
+ { 0x0ff4f , 0x0006f }, // <FULLWIDTH LATIN SMALL LETTER O> => <LATIN SMALL LETTER O>
+ { 0x0ff50 , 0x00070 }, // <FULLWIDTH LATIN SMALL LETTER P> => <LATIN SMALL LETTER P>
+ { 0x0ff51 , 0x00071 }, // <FULLWIDTH LATIN SMALL LETTER Q> => <LATIN SMALL LETTER Q>
+ { 0x0ff52 , 0x00072 }, // <FULLWIDTH LATIN SMALL LETTER R> => <LATIN SMALL LETTER R>
+ { 0x0ff53 , 0x00073 }, // <FULLWIDTH LATIN SMALL LETTER S> => <LATIN SMALL LETTER S>
+ { 0x0ff54 , 0x00074 }, // <FULLWIDTH LATIN SMALL LETTER T> => <LATIN SMALL LETTER T>
+ { 0x0ff55 , 0x00075 }, // <FULLWIDTH LATIN SMALL LETTER U> => <LATIN SMALL LETTER U>
+ { 0x0ff56 , 0x00076 }, // <FULLWIDTH LATIN SMALL LETTER V> => <LATIN SMALL LETTER V>
+ { 0x0ff57 , 0x00077 }, // <FULLWIDTH LATIN SMALL LETTER W> => <LATIN SMALL LETTER W>
+ { 0x0ff58 , 0x00078 }, // <FULLWIDTH LATIN SMALL LETTER X> => <LATIN SMALL LETTER X>
+ { 0x0ff59 , 0x00079 }, // <FULLWIDTH LATIN SMALL LETTER Y> => <LATIN SMALL LETTER Y>
+ { 0x0ff5a , 0x0007a }, // <FULLWIDTH LATIN SMALL LETTER Z> => <LATIN SMALL LETTER Z>
+ { 0x0ff66 , 0x030f2 }, // <HALFWIDTH KATAKANA LETTER WO> => <KATAKANA LETTER WO>
+ { 0x0ff67 , 0x030a2 }, // <HALFWIDTH KATAKANA LETTER SMALL A> => <KATAKANA LETTER A>
+ { 0x0ff68 , 0x030a4 }, // <HALFWIDTH KATAKANA LETTER SMALL I> => <KATAKANA LETTER I>
+ { 0x0ff69 , 0x030a6 }, // <HALFWIDTH KATAKANA LETTER SMALL U> => <KATAKANA LETTER U>
+ { 0x0ff6a , 0x030a8 }, // <HALFWIDTH KATAKANA LETTER SMALL E> => <KATAKANA LETTER E>
+ { 0x0ff6b , 0x030aa }, // <HALFWIDTH KATAKANA LETTER SMALL O> => <KATAKANA LETTER O>
+ { 0x0ff6c , 0x030e4 }, // <HALFWIDTH KATAKANA LETTER SMALL YA> => <KATAKANA LETTER YA>
+ { 0x0ff6d , 0x030e6 }, // <HALFWIDTH KATAKANA LETTER SMALL YU> => <KATAKANA LETTER YU>
+ { 0x0ff6e , 0x030e8 }, // <HALFWIDTH KATAKANA LETTER SMALL YO> => <KATAKANA LETTER YO>
+ { 0x0ff6f , 0x030c4 }, // <HALFWIDTH KATAKANA LETTER SMALL TU> => <KATAKANA LETTER TU>
+ { 0x0ff70 , 0x030fc }, // <HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK> => <KATAKANA-HIRAGANA PROLONGED SOUND MARK>
+ { 0x0ff71 , 0x030a2 }, // <HALFWIDTH KATAKANA LETTER A> => <KATAKANA LETTER A>
+ { 0x0ff72 , 0x030a4 }, // <HALFWIDTH KATAKANA LETTER I> => <KATAKANA LETTER I>
+ { 0x0ff73 , 0x030a6 }, // <HALFWIDTH KATAKANA LETTER U> => <KATAKANA LETTER U>
+ { 0x0ff74 , 0x030a8 }, // <HALFWIDTH KATAKANA LETTER E> => <KATAKANA LETTER E>
+ { 0x0ff75 , 0x030aa }, // <HALFWIDTH KATAKANA LETTER O> => <KATAKANA LETTER O>
+ { 0x0ff76 , 0x030ab }, // <HALFWIDTH KATAKANA LETTER KA> => <KATAKANA LETTER KA>
+ { 0x0ff77 , 0x030ad }, // <HALFWIDTH KATAKANA LETTER KI> => <KATAKANA LETTER KI>
+ { 0x0ff78 , 0x030af }, // <HALFWIDTH KATAKANA LETTER KU> => <KATAKANA LETTER KU>
+ { 0x0ff79 , 0x030b1 }, // <HALFWIDTH KATAKANA LETTER KE> => <KATAKANA LETTER KE>
+ { 0x0ff7a , 0x030b3 }, // <HALFWIDTH KATAKANA LETTER KO> => <KATAKANA LETTER KO>
+ { 0x0ff7b , 0x030b5 }, // <HALFWIDTH KATAKANA LETTER SA> => <KATAKANA LETTER SA>
+ { 0x0ff7c , 0x030b7 }, // <HALFWIDTH KATAKANA LETTER SI> => <KATAKANA LETTER SI>
+ { 0x0ff7d , 0x030b9 }, // <HALFWIDTH KATAKANA LETTER SU> => <KATAKANA LETTER SU>
+ { 0x0ff7e , 0x030bb }, // <HALFWIDTH KATAKANA LETTER SE> => <KATAKANA LETTER SE>
+ { 0x0ff7f , 0x030bd }, // <HALFWIDTH KATAKANA LETTER SO> => <KATAKANA LETTER SO>
+ { 0x0ff80 , 0x030bf }, // <HALFWIDTH KATAKANA LETTER TA> => <KATAKANA LETTER TA>
+ { 0x0ff81 , 0x030c1 }, // <HALFWIDTH KATAKANA LETTER TI> => <KATAKANA LETTER TI>
+ { 0x0ff82 , 0x030c4 }, // <HALFWIDTH KATAKANA LETTER TU> => <KATAKANA LETTER TU>
+ { 0x0ff83 , 0x030c6 }, // <HALFWIDTH KATAKANA LETTER TE> => <KATAKANA LETTER TE>
+ { 0x0ff84 , 0x030c8 }, // <HALFWIDTH KATAKANA LETTER TO> => <KATAKANA LETTER TO>
+ { 0x0ff85 , 0x030ca }, // <HALFWIDTH KATAKANA LETTER NA> => <KATAKANA LETTER NA>
+ { 0x0ff86 , 0x030cb }, // <HALFWIDTH KATAKANA LETTER NI> => <KATAKANA LETTER NI>
+ { 0x0ff87 , 0x030cc }, // <HALFWIDTH KATAKANA LETTER NU> => <KATAKANA LETTER NU>
+ { 0x0ff88 , 0x030cd }, // <HALFWIDTH KATAKANA LETTER NE> => <KATAKANA LETTER NE>
+ { 0x0ff89 , 0x030ce }, // <HALFWIDTH KATAKANA LETTER NO> => <KATAKANA LETTER NO>
+ { 0x0ff8a , 0x030cf }, // <HALFWIDTH KATAKANA LETTER HA> => <KATAKANA LETTER HA>
+ { 0x0ff8b , 0x030d2 }, // <HALFWIDTH KATAKANA LETTER HI> => <KATAKANA LETTER HI>
+ { 0x0ff8c , 0x030d5 }, // <HALFWIDTH KATAKANA LETTER HU> => <KATAKANA LETTER HU>
+ { 0x0ff8d , 0x030d8 }, // <HALFWIDTH KATAKANA LETTER HE> => <KATAKANA LETTER HE>
+ { 0x0ff8e , 0x030db }, // <HALFWIDTH KATAKANA LETTER HO> => <KATAKANA LETTER HO>
+ { 0x0ff8f , 0x030de }, // <HALFWIDTH KATAKANA LETTER MA> => <KATAKANA LETTER MA>
+ { 0x0ff90 , 0x030df }, // <HALFWIDTH KATAKANA LETTER MI> => <KATAKANA LETTER MI>
+ { 0x0ff91 , 0x030e0 }, // <HALFWIDTH KATAKANA LETTER MU> => <KATAKANA LETTER MU>
+ { 0x0ff92 , 0x030e1 }, // <HALFWIDTH KATAKANA LETTER ME> => <KATAKANA LETTER ME>
+ { 0x0ff93 , 0x030e2 }, // <HALFWIDTH KATAKANA LETTER MO> => <KATAKANA LETTER MO>
+ { 0x0ff94 , 0x030e4 }, // <HALFWIDTH KATAKANA LETTER YA> => <KATAKANA LETTER YA>
+ { 0x0ff95 , 0x030e6 }, // <HALFWIDTH KATAKANA LETTER YU> => <KATAKANA LETTER YU>
+ { 0x0ff96 , 0x030e8 }, // <HALFWIDTH KATAKANA LETTER YO> => <KATAKANA LETTER YO>
+ { 0x0ff97 , 0x030e9 }, // <HALFWIDTH KATAKANA LETTER RA> => <KATAKANA LETTER RA>
+ { 0x0ff98 , 0x030ea }, // <HALFWIDTH KATAKANA LETTER RI> => <KATAKANA LETTER RI>
+ { 0x0ff99 , 0x030eb }, // <HALFWIDTH KATAKANA LETTER RU> => <KATAKANA LETTER RU>
+ { 0x0ff9a , 0x030ec }, // <HALFWIDTH KATAKANA LETTER RE> => <KATAKANA LETTER RE>
+ { 0x0ff9b , 0x030ed }, // <HALFWIDTH KATAKANA LETTER RO> => <KATAKANA LETTER RO>
+ { 0x0ff9c , 0x030ef }, // <HALFWIDTH KATAKANA LETTER WA> => <KATAKANA LETTER WA>
+ { 0x0ff9d , 0x030f3 }, // <HALFWIDTH KATAKANA LETTER N> => <KATAKANA LETTER N>
+ { 0x0ffa0 , 0x01160 }, // <HALFWIDTH HANGUL FILLER> => <HANGUL JUNGSEONG FILLER>
+ { 0x0ffa1 , 0x01100 }, // <HALFWIDTH HANGUL LETTER KIYEOK> => <HANGUL CHOSEONG KIYEOK>
+ { 0x0ffa2 , 0x01101 }, // <HALFWIDTH HANGUL LETTER SSANGKIYEOK> => <HANGUL CHOSEONG SSANGKIYEOK>
+ { 0x0ffa3 , 0x011aa }, // <HALFWIDTH HANGUL LETTER KIYEOK-SIOS> => <HANGUL JONGSEONG KIYEOK-SIOS>
+ { 0x0ffa4 , 0x01102 }, // <HALFWIDTH HANGUL LETTER NIEUN> => <HANGUL CHOSEONG NIEUN>
+ { 0x0ffa5 , 0x011ac }, // <HALFWIDTH HANGUL LETTER NIEUN-CIEUC> => <HANGUL JONGSEONG NIEUN-CIEUC>
+ { 0x0ffa6 , 0x011ad }, // <HALFWIDTH HANGUL LETTER NIEUN-HIEUH> => <HANGUL JONGSEONG NIEUN-HIEUH>
+ { 0x0ffa7 , 0x01103 }, // <HALFWIDTH HANGUL LETTER TIKEUT> => <HANGUL CHOSEONG TIKEUT>
+ { 0x0ffa8 , 0x01104 }, // <HALFWIDTH HANGUL LETTER SSANGTIKEUT> => <HANGUL CHOSEONG SSANGTIKEUT>
+ { 0x0ffa9 , 0x01105 }, // <HALFWIDTH HANGUL LETTER RIEUL> => <HANGUL CHOSEONG RIEUL>
+ { 0x0ffaa , 0x011b0 }, // <HALFWIDTH HANGUL LETTER RIEUL-KIYEOK> => <HANGUL JONGSEONG RIEUL-KIYEOK>
+ { 0x0ffab , 0x011b1 }, // <HALFWIDTH HANGUL LETTER RIEUL-MIEUM> => <HANGUL JONGSEONG RIEUL-MIEUM>
+ { 0x0ffac , 0x011b2 }, // <HALFWIDTH HANGUL LETTER RIEUL-PIEUP> => <HANGUL JONGSEONG RIEUL-PIEUP>
+ { 0x0ffad , 0x011b3 }, // <HALFWIDTH HANGUL LETTER RIEUL-SIOS> => <HANGUL JONGSEONG RIEUL-SIOS>
+ { 0x0ffae , 0x011b4 }, // <HALFWIDTH HANGUL LETTER RIEUL-THIEUTH> => <HANGUL JONGSEONG RIEUL-THIEUTH>
+ { 0x0ffaf , 0x011b5 }, // <HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH> => <HANGUL JONGSEONG RIEUL-PHIEUPH>
+ { 0x0ffb0 , 0x0111a }, // <HALFWIDTH HANGUL LETTER RIEUL-HIEUH> => <HANGUL CHOSEONG RIEUL-HIEUH>
+ { 0x0ffb1 , 0x01106 }, // <HALFWIDTH HANGUL LETTER MIEUM> => <HANGUL CHOSEONG MIEUM>
+ { 0x0ffb2 , 0x01107 }, // <HALFWIDTH HANGUL LETTER PIEUP> => <HANGUL CHOSEONG PIEUP>
+ { 0x0ffb3 , 0x01108 }, // <HALFWIDTH HANGUL LETTER SSANGPIEUP> => <HANGUL CHOSEONG SSANGPIEUP>
+ { 0x0ffb4 , 0x01121 }, // <HALFWIDTH HANGUL LETTER PIEUP-SIOS> => <HANGUL CHOSEONG PIEUP-SIOS>
+ { 0x0ffb5 , 0x01109 }, // <HALFWIDTH HANGUL LETTER SIOS> => <HANGUL CHOSEONG SIOS>
+ { 0x0ffb6 , 0x0110a }, // <HALFWIDTH HANGUL LETTER SSANGSIOS> => <HANGUL CHOSEONG SSANGSIOS>
+ { 0x0ffb7 , 0x0110b }, // <HALFWIDTH HANGUL LETTER IEUNG> => <HANGUL CHOSEONG IEUNG>
+ { 0x0ffb8 , 0x0110c }, // <HALFWIDTH HANGUL LETTER CIEUC> => <HANGUL CHOSEONG CIEUC>
+ { 0x0ffb9 , 0x0110d }, // <HALFWIDTH HANGUL LETTER SSANGCIEUC> => <HANGUL CHOSEONG SSANGCIEUC>
+ { 0x0ffba , 0x0110e }, // <HALFWIDTH HANGUL LETTER CHIEUCH> => <HANGUL CHOSEONG CHIEUCH>
+ { 0x0ffbb , 0x0110f }, // <HALFWIDTH HANGUL LETTER KHIEUKH> => <HANGUL CHOSEONG KHIEUKH>
+ { 0x0ffbc , 0x01110 }, // <HALFWIDTH HANGUL LETTER THIEUTH> => <HANGUL CHOSEONG THIEUTH>
+ { 0x0ffbd , 0x01111 }, // <HALFWIDTH HANGUL LETTER PHIEUPH> => <HANGUL CHOSEONG PHIEUPH>
+ { 0x0ffbe , 0x01112 }, // <HALFWIDTH HANGUL LETTER HIEUH> => <HANGUL CHOSEONG HIEUH>
+ { 0x0ffc2 , 0x01161 }, // <HALFWIDTH HANGUL LETTER A> => <HANGUL JUNGSEONG A>
+ { 0x0ffc3 , 0x01162 }, // <HALFWIDTH HANGUL LETTER AE> => <HANGUL JUNGSEONG AE>
+ { 0x0ffc4 , 0x01163 }, // <HALFWIDTH HANGUL LETTER YA> => <HANGUL JUNGSEONG YA>
+ { 0x0ffc5 , 0x01164 }, // <HALFWIDTH HANGUL LETTER YAE> => <HANGUL JUNGSEONG YAE>
+ { 0x0ffc6 , 0x01165 }, // <HALFWIDTH HANGUL LETTER EO> => <HANGUL JUNGSEONG EO>
+ { 0x0ffc7 , 0x01166 }, // <HALFWIDTH HANGUL LETTER E> => <HANGUL JUNGSEONG E>
+ { 0x0ffca , 0x01167 }, // <HALFWIDTH HANGUL LETTER YEO> => <HANGUL JUNGSEONG YEO>
+ { 0x0ffcb , 0x01168 }, // <HALFWIDTH HANGUL LETTER YE> => <HANGUL JUNGSEONG YE>
+ { 0x0ffcc , 0x01169 }, // <HALFWIDTH HANGUL LETTER O> => <HANGUL JUNGSEONG O>
+ { 0x0ffcd , 0x0116a }, // <HALFWIDTH HANGUL LETTER WA> => <HANGUL JUNGSEONG WA>
+ { 0x0ffce , 0x0116b }, // <HALFWIDTH HANGUL LETTER WAE> => <HANGUL JUNGSEONG WAE>
+ { 0x0ffcf , 0x0116c }, // <HALFWIDTH HANGUL LETTER OE> => <HANGUL JUNGSEONG OE>
+ { 0x0ffd2 , 0x0116d }, // <HALFWIDTH HANGUL LETTER YO> => <HANGUL JUNGSEONG YO>
+ { 0x0ffd3 , 0x0116e }, // <HALFWIDTH HANGUL LETTER U> => <HANGUL JUNGSEONG U>
+ { 0x0ffd4 , 0x0116f }, // <HALFWIDTH HANGUL LETTER WEO> => <HANGUL JUNGSEONG WEO>
+ { 0x0ffd5 , 0x01170 }, // <HALFWIDTH HANGUL LETTER WE> => <HANGUL JUNGSEONG WE>
+ { 0x0ffd6 , 0x01171 }, // <HALFWIDTH HANGUL LETTER WI> => <HANGUL JUNGSEONG WI>
+ { 0x0ffd7 , 0x01172 }, // <HALFWIDTH HANGUL LETTER YU> => <HANGUL JUNGSEONG YU>
+ { 0x0ffda , 0x01173 }, // <HALFWIDTH HANGUL LETTER EU> => <HANGUL JUNGSEONG EU>
+ { 0x0ffdb , 0x01174 }, // <HALFWIDTH HANGUL LETTER YI> => <HANGUL JUNGSEONG YI>
+ { 0x0ffdc , 0x01175 } // <HALFWIDTH HANGUL LETTER I> => <HANGUL JUNGSEONG I>
+};
+
+#endif
+
+// Above table generated by the following script:
+
+/*
+
+#!/usr/bin/perl
+
+my %alphaNumerics; # codepoint => character description
+my %equivChar; # codepoint => equivalent codepoint
+my %equivCharCount; # equivalent codepoint => count of N associated codepoints
+
+sub Build_Unicode_Tables;
+
+Build_Unicode_Tables;
+foreach my $charCode ( sort keys %alphaNumerics ) {
+ next unless exists $equivChar{ $charCode };
+ my $equivCode = $equivChar{$charCode};
+ printf(
+ " { 0x%05x , 0x%05x }, // <%s> => <%s>\n",
+ hex( $charCode ),
+ hex( $equivCode ),
+ $alphaNumerics{$charCode},
+ $alphaNumerics{$equivCode}
+ );
+}
+
+sub Build_Unicode_Tables
+{
+ open( UNICHARS, "/usr/share/unicode-data/UnicodeData.txt" ) ;
+ binmode UNICHARS, ":utf8";
+ while ( my $line = <UNICHARS> )
+ {
+ # 34,924 entries so far
+ chop $line;
+ my @charinfo = split( ";", $line);
+ my $charCode = $charinfo[0];
+ next if hex( $charCode ) > 65535 ;
+ # 16,892 entries so far
+ my $type = $charinfo[2];
+ next unless $type =~ /^(L|N)/; # must be a letter or number
+ # 10,950 entries so far
+ #$alphaNumerics{$charCode} = 1;
+ $alphaNumerics{$charCode} = $charinfo[1];
+ # printf("%s\n", $charinfo[1]);
+ }
+ # UnicodeData File Format:
+ # https://www.unicode.org/L2/L1999/UnicodeData.html
+
+ open( COLLINFO, "/usr/share/i18n/locales/iso14651_t1_common" ) ;
+ while ( my $line = <COLLINFO> )
+ {
+ chop $line;
+ # 85,612 entries so far
+ my ( $charCode, $collInfo, %description ) = $line
+ =~ /^<U([0-9A-F]+)> (\S+) % (.+)$/;
+ next unless $collInfo;
+ # 29,809 entries so far
+ next if hex( $charCode ) > 65535 ;
+ # 16,533 entries so far
+ next unless exists $alphaNumerics{$charCode} ;
+ # 10,771 entries so far
+ my ( $pkey, $skey, $tkey, $qkey ) = split(";" , $collInfo );
+ my ( $equivCode ) = $pkey =~ /^<S([0-9A-F]+)>/ ;
+ next unless $equivCode ;
+ # 9,449 entries so far
+ next if hex( $equivCode ) > 65535 ;
+ # 9,449 entries so far
+ next unless exists $alphaNumerics{$equivCode} ;
+ # 9,449 entries so far
+ next if $charCode eq $equivCode;
+ # 2,993 entries so far
+ $equivChar{ $charCode } = $equivCode; # mapping
+ $equivCharCount{ $equivCode } += 1; # statistics
+ # printf("%s\t%s\n", $charCode, $equivCode );
+ }
+ # Unicode Collation Algorithm:
+ # https://www.unicode.org/reports/tr10/
+}
+
+*/ \ No newline at end of file
diff --git a/tdecore/tequivchars.cpp b/tdecore/tequivchars.cpp
new file mode 100755
index 000000000..d259946b2
--- /dev/null
+++ b/tdecore/tequivchars.cpp
@@ -0,0 +1,241 @@
+#undef REGEX_IS_PCRE2
+#define OPTIMIZE_ASCII_LOOKUP
+
+#ifdef REGEXP_IS_PCRE2
+#pragma message "############ Assuming regular expressions are PCRE2 ############"
+#endif
+
+#ifdef OPTIMIZE_ASCII_LOOKUP
+#pragma message "############ ASCII characters will be processed separately ############"
+#endif
+
+#include "tequivchars.h"
+
+//typedef wchar_t CHAR16;
+//typedef unsigned short CHAR16;
+typedef TQChar CHAR16;
+
+class TEquivChars_Private
+{
+public:
+
+ struct defaultCollation {
+ CHAR16 character;
+ CHAR16 collatesTo;
+ };
+
+ const defaultCollation EquivalentsTable // terminating ';' is provided in include file
+ #include "tequivchars-mapping.h"
+ uint EquivTableROWS = sizeof(EquivalentsTable)/sizeof(EquivalentsTable[0]);
+};
+
+TEquivChars::TEquivChars()
+{
+ p = new TEquivChars_Private;
+}
+
+TEquivChars::~TEquivChars()
+{
+ delete p;
+}
+
+TQString TEquivChars::replaceChars( const TQString &inputString, bool isRegex )
+{
+ int inStrLen = inputString.length();
+ TQString outString = TQString::fromLatin1( "" );
+ outString.reserve( inStrLen );
+ const TQChar *char16 = inputString.unicode();
+
+ bool backSlashed = false; // \_
+ bool startedCharClass = false; // Previous character was starting '[' of character class
+ bool inCharacterClass = false; // [___]
+ bool inPosixBracketExpr = false; // [:___:]
+#ifdef REGEXP_IS_PCRE2
+ bool quoteLiteral = false; // \Q___\E
+ bool inBraceExpr = false; // \c{___} where 'c' is any of: 'x' 'o' 'p' 'P' 'N' 'g'
+ bool inDirective = false; // (*___)
+ bool inGroupName = false; // (?<___>
+#endif // REGEXP_IS_PCRE2
+ CHAR16 currChar = 0;
+ CHAR16 prevChar = 0;
+ CHAR16 nextChar = 0;
+
+ for ( int i = 0 ; i < inStrLen ; outString[i] = CHAR16(currChar), i++ ) {
+
+ prevChar = currChar;
+ currChar = char16[i].unicode();
+
+ if ( isRegex ) {
+
+ /*
+ Look for regex characters and character sequences
+ that should never be converted to an equivalent.
+ */
+
+ if ( i < ( inStrLen - 1 ) )
+ nextChar = char16[i+1].unicode();
+ else
+ nextChar = 0;
+
+ if ( currChar == '\\' ) {
+ backSlashed = true;
+ continue;
+ }
+
+ // Don't convert backSlashed characters
+ if ( backSlashed ) {
+#ifdef REGEXP_IS_PCRE2
+ switch (currChar) {
+ case 'Q' : quoteLiteral = true; break; // Entering literal \Q___\E
+ case 'E' : quoteLiteral = false; break; // Leaving literal \Q___\E
+ case 'N' : // Entering Unicode codepoint specification \N{U+___} ?
+ case 'P' : // Entering (negated) Unicode property specification \p{} ?
+ case 'p' : // Entering Unicode property specification \p{} ?
+ case 'g' : // Entering a named backreference \g{___} ?
+ if ( nextChar == '{' ) inBraceExpr = true;
+ break;
+ }
+#endif // REGEXP_IS_PCRE2
+ backSlashed = false;
+ continue;
+ }
+
+#ifdef REGEXP_IS_PCRE2
+ if ( quoteLiteral )
+ continue;
+
+ if ( inBraceExpr ) {
+ // Is it time to leave brace expression {___} ?
+ if ( nextChar == '}' ) inBraceExpr = true;
+ continue;
+ }
+#endif // REGEXP_IS_PCRE2
+
+ if ( startedCharClass ) {
+ switch (currChar) {
+ case '^' : // Negated character class, proceed to next character
+ continue; // Bypass converting this special character
+ case ']' : // Treat as part of character class, not as a closure
+ case ':' : // Treat as part of character class, not as start of bracket expression
+ startedCharClass = false;
+ continue; // Bypass converting these special characters
+ }
+ startedCharClass = false;
+ } // startedCharClass
+
+ if ( inCharacterClass ) {
+
+ if ( inPosixBracketExpr ) {
+ // Is it time to leave POSIX bracket expression [:___:] ?
+ if ( currChar == ':' && nextChar == ']' ) inPosixBracketExpr = false;
+ continue;
+ } // inPosixBracketExpr
+
+ else { // ! inPosixBracketExpr
+
+ if ( prevChar == '[' && currChar == ':' ) {
+ // Enter POSIX bracket expression [:___:]
+ inPosixBracketExpr = true;
+ continue;
+ }
+
+ if ( currChar == ']' ) {
+ // Leaving character class [___]
+ inCharacterClass = false;
+ continue;
+ }
+
+ } // ! inPosixBracketExpr
+
+ } // inCharacterClass
+
+ else { // ! inCharacterClass
+
+ switch (currChar) {
+
+ case '[' :
+ // Entering a character class [___]
+ startedCharClass = true;
+ inCharacterClass = true;
+ continue;
+ break;
+#ifdef REGEXP_IS_PCRE2
+ case '*' :
+ if ( prevChar != '(' ) continue;
+ // Entering a PCRE2 directive (*___)
+ inDirective = true;
+ continue;
+ break;
+
+ case '?' :
+ if ( prevChar != '(' ) continue;
+ if ( nextChar != '<' ) continue;
+ // Entering PCRE2 group name (?<___>)
+ inGroupName = true;
+ continue;
+ break;
+#endif // REGEXP_IS_PCRE2
+ }
+#ifdef REGEXP_IS_PCRE2
+ if ( inDirective ) {
+ // Is it time to leave PCRE2 directive (*___) ?
+ if (currChar == ')' ) inDirective = false;
+ continue;
+ }
+
+ if ( inGroupName ) {
+ // Is it time to leave PCRE2 group name (?<___>) ?
+ if (currChar == '>' ) inGroupName = false;
+ continue;
+ }
+#endif // REGEXP_IS_PCRE2
+ } // ! inCharacterClass
+
+ /*
+ If we have reached here, this regex character is a
+ candidate for potential conversion to an equivalent.
+ */
+
+ } // isRegex
+
+ //-Debug: std::cerr << "Converting '" << TQString(currChar).utf8().data() << "' to '";
+
+#ifdef OPTIMIZE_ASCII_LOOKUP
+ // We can process ASCII quickly without using lookup table
+ unsigned short codepoint = currChar.unicode();
+ if ( codepoint < 128 ) {
+ if ( codepoint > 64 && codepoint < 91 ) // convert upper case ASCII
+ currChar = TQChar(codepoint + 32 ); // to corresponding lower case
+ // All other ASCII characters are equivalent to themselves
+ //-Debug: std::cerr << TQString(currChar).utf8().data() << "' (ascii)" << std::endl;
+ continue;
+ }
+#endif
+
+ // Use a simple binary search to look up an equivalent character
+ int low = 0;
+ int high = p->EquivTableROWS - 1;
+ while (low <= high) {
+ int mid = low + (high - low) / 2;
+ if ( currChar == p->EquivalentsTable[mid].character ) {
+ // Found equivalent character, use it instead
+ currChar = p->EquivalentsTable[mid].collatesTo;
+ break;
+ }
+ if ( p->EquivalentsTable[mid].character < currChar )
+ low = mid + 1;
+ else
+ high = mid - 1;
+ }
+ //-Debug: std::cerr << TQString(currChar).utf8().data() << "'" << std::endl;
+
+ /* FIXME: Possible ideas for optimizing table lookup speed
+ (1) Detect & handle ASCII (<128) characters separately. *DONE*
+ (2) Split table into multiple lookup tables and search each
+ in order of descending likelihood of character match.
+ */
+
+ }
+
+ return outString;
+}
diff --git a/tdecore/tequivchars.h b/tdecore/tequivchars.h
new file mode 100644
index 000000000..0b933ae7a
--- /dev/null
+++ b/tdecore/tequivchars.h
@@ -0,0 +1,34 @@
+#ifndef TEQUIVCHARS_H
+#define TEQUIVCHARS_H
+
+#include "tdelibs_export.h"
+
+#include <tqstring.h>
+
+/**
+ * Class representing a mapping of each alphanumeric character to its "collating
+ * equivalent" as defined by the Default Unicode Collation Entity Table (DUCET).
+ * The mapping is limited to single-codepoint characters <= U+FFFF.
+ */
+class TDECORE_EXPORT TEquivChars
+{
+public:
+ TEquivChars();
+ ~TEquivChars();
+
+ /**
+ @return copy of @param inputString modified such that each alphanumeric
+ character is replaced with it's collating character equivalent. If the
+ value @param isRegex is true, the input string is treated as a regular
+ expression and the alphabetical characters inside Posix bracket [::]
+ expressions are left as-is
+ */
+ TQString replaceChars( const TQString &inputString, bool isRegex = false );
+
+
+private:
+
+ class TEquivChars_Private *p;
+};
+
+#endif // TEQUIVCHARS_H
diff --git a/tdeio/tdeio/tdefileitem.cpp b/tdeio/tdeio/tdefileitem.cpp
index 577a8a0d7..0124e4b0d 100644
--- a/tdeio/tdeio/tdefileitem.cpp
+++ b/tdeio/tdeio/tdefileitem.cpp
@@ -204,6 +204,11 @@ void KFileItem::init( bool _determineMimeTypeOnDemand )
// otherwise, determineMimeType will be able to do better.
m_bMimeTypeKnown = (!_determineMimeTypeOnDemand) || accurate;
}
+
+ // Initialize hidden file matching apparatus
+ //-Debug: TSMTRACE "KFileItem::init(): Initialization for '" << m_url.fileName() << "' almost complete, initializing the hidden file matcher" << endl;
+ m_pHiddenFileMatcher = nullptr; // need to do or next will segfault
+ setHiddenFileMatcher( TDEGlobal::hiddenFileMatcher() );
}
void KFileItem::readUDSEntry( bool _urlIsDirectory )
@@ -830,15 +835,55 @@ bool KFileItem::isWritable() const
return true;
}
+void KFileItem::setHiddenFileMatcher( TDEStringMatcher *hiddenFileMatcher )
+{
+ //-Debug: TSMTRACE << "KFileItem::setHiddenFileMatcher(...) called for " << m_url.fileName() << endl ;
+
+ if ( hiddenFileMatcher == m_pHiddenFileMatcher )
+ return;
+
+ //-Debug: TSMTRACE << " Attempting to disconnect slots from hidden file matcher (" << m_pHiddenFileMatcher << ") signals ... " << endl;
+ if (m_pHiddenFileMatcher != nullptr)
+ disconnect( m_pHiddenFileMatcher, 0, this, 0 );
+ ; //-Debug: TSMTRACE << " ... all slots successfully disconnected" << endl;
+
+ //-Debug: TSMTRACE << " Changing hidden file matcher from " << m_pHiddenFileMatcher << " to " << hiddenFileMatcher << endl;
+ m_pHiddenFileMatcher = hiddenFileMatcher;
+
+ if ( hiddenFileMatcher != nullptr ) {
+ //-Debug: TSMTRACE << " New pattern string: " << hiddenFileMatcher->getMatchSpecString() << endl ;
+ //-Debug: TSMTRACE << " Attempting to reconnect slots to hidden file matcher signals ... " << endl;
+ if ( connect( m_pHiddenFileMatcher, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( setHiddenFileMatcher() ) ) )
+ ; //-Debug: TSMTRACE << " Connected slot sethiddenFileMatcher() to signal destroyed()" << endl;
+ if ( connect( m_pHiddenFileMatcher, TQT_SIGNAL( patternsChanged() ), this, TQT_SLOT( reEvaluateHidden() ) ) )
+ ; //-Debug: TSMTRACE << " Connected slot reEvaluateHidden() to signal patternsChanged()" << endl;
+ }
+ else {
+ kdWarning() << "KFileItem::setHiddenFileMatcher: called with null pointer, nothing will be hidden any more" << endl;
+ }
+
+ //-Debug: TSMTRACE << "KFileItem::setHiddenFileMatcher(...) finished, calling reEvaluateHidden()" << endl ;
+ reEvaluateHidden();
+}
+
+void KFileItem::reEvaluateHidden()
+{
+ //-Debug: TSMTRACE << "KFileItem::reEvaluateHidden() called for " << m_url.fileName() <<endl ;
+ if ( m_pHiddenFileMatcher == nullptr ) // abnormal
+ m_bHiddenByMatcher = false;
+ else if ( !m_url.isEmpty() )
+ m_bHiddenByMatcher = m_pHiddenFileMatcher->matchAny( m_url.fileName() );
+ else // should never happen
+ m_bHiddenByMatcher = m_pHiddenFileMatcher->matchAny( m_strName );
+ //-Debug: TSMTRACE << "KFileItem::reEvaluateHidden() completed for " << m_url.fileName() << " [" << m_bHiddenByMatcher << "]" << endl ;
+}
+
bool KFileItem::isHidden() const
{
if ( m_hidden != Auto )
return m_hidden == Hidden;
-
- if ( !m_url.isEmpty() )
- return m_url.fileName()[0] == '.';
- else // should never happen
- return m_strName[0] == '.';
+ // TSMTRACE << "KFileItem::isHidden() called for " << m_url.fileName() << " [" << m_bHiddenByMatcher << "]" <<endl ;
+ return m_bHiddenByMatcher;
}
bool KFileItem::isDir() const
@@ -1071,6 +1116,9 @@ void KFileItem::assign( const KFileItem & item )
// note: m_extra is NOT copied, as we'd have no control over who is
// deleting the data or not.
+ // We have to do this (vs. copying properties) to establish new signal/slot connections
+ setHiddenFileMatcher( item.m_pHiddenFileMatcher );
+
// We had a mimetype previously (probably), so we need to re-determine it
determineMimeType();
@@ -1276,3 +1324,5 @@ TQDataStream & operator>> ( TQDataStream & s, KFileItem & a )
a.refresh();
return s;
}
+
+#include "tdefileitem.moc"
diff --git a/tdeio/tdeio/tdefileitem.h b/tdeio/tdeio/tdefileitem.h
index 171b611e3..7c0f522b7 100644
--- a/tdeio/tdeio/tdefileitem.h
+++ b/tdeio/tdeio/tdefileitem.h
@@ -24,6 +24,7 @@
#include <sys/stat.h>
#include <tqptrlist.h>
+#include <tdestringmatcher.h>
#include <tdeio/global.h>
#include <kurl.h>
#include <kacl.h>
@@ -38,8 +39,9 @@
* (UDSEntry isn't very friendly to use).
* It includes many file attributes such as mimetype, icon, text, mode, link...
*/
-class TDEIO_EXPORT KFileItem
+class TDEIO_EXPORT KFileItem : public TQObject
{
+Q_OBJECT
public:
enum { Unknown = (mode_t) - 1 };
@@ -228,16 +230,29 @@ public:
*/
bool isWritable() const;
- /**
- * Checks whether the file is hidden.
- * @return true if the file is hidden.
+public slots:
+
+ /**
+ * Sets object that encapsulates criteria for determining whether or not
+ * a filesystem entity is hidden based on characteristics of its name.
+ * This object will be referred to as the "hidden file matcher"
*/
- bool isHidden() const;
+ void setHiddenFileMatcher( TDEStringMatcher *hiddenFileMatcher = nullptr );
/**
- * Returns the link destination if isLink() == true.
- * @return the link destination. TQString::null if the item is not a link
+ * Checks whether or not the current filesystem object is "hidden"
+ * according to current hidden file matcher. Result is cached for
+ * for use by function isHidden()
*/
+ void reEvaluateHidden();
+
+public:
+
+ /**
+ * @return true if the file is "hidden".
+ */
+ bool isHidden() const;
+
TQString linkDest() const;
/**
@@ -261,7 +276,7 @@ public:
* @return the file size, or 0 if not known
*/
TDEIO::filesize_t size(bool &hasSize) const;
-
+
//FIXME KDE4 deprecate this in favor of time(unsigned int which, bool &hasSize)
/**
* Requests the modification, access or creation time, depending on @p which.
@@ -667,9 +682,21 @@ private:
bool m_bMimeTypeKnown:1;
- // Auto: check leading dot.
+ // Auto: check if item is hidden.
enum { Auto, Hidden, Shown } m_hidden:3;
+ /**
+ * Caches result of most recent call to method reEvaluateHidden().
+ */
+ bool m_bHiddenByMatcher:1;
+
+ /**
+ * Object that encapsulates criteria for determining whether or not
+ * this filesystem entity is hidden based on characteristics of its
+ * name. Referred to as the "hidden file matcher".
+ */
+ TDEStringMatcher *m_pHiddenFileMatcher;
+
// For special case like link to dirs over FTP
TQString m_guessedMimeType;
mutable TQString m_access;