diff options
author | Vincent Reher <tde@4reher.org> | 2023-06-22 09:22:42 -0700 |
---|---|---|
committer | Vincent Reher <tde@4reher.org> | 2023-10-02 11:22:04 -0700 |
commit | a39403fb8be586e9b9e4b326616156fbfed27c6c (patch) | |
tree | 85f7bf35279604d3c648d7fe0521890e2ee5283d | |
parent | 4c0dae60b2fbc60996fc8f4bd29ee6219b869527 (diff) | |
download | tdelibs-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.txt | 5 | ||||
-rw-r--r-- | tdecore/README.tdestringmatcher | 121 | ||||
-rw-r--r-- | tdecore/tdeglobal.cpp | 31 | ||||
-rw-r--r-- | tdecore/tdeglobal.h | 17 | ||||
-rwxr-xr-x | tdecore/tdestringmatcher.cpp | 649 | ||||
-rw-r--r-- | tdecore/tdestringmatcher.h | 134 | ||||
-rw-r--r-- | tdecore/tequivchars-mapping.h | 3085 | ||||
-rwxr-xr-x | tdecore/tequivchars.cpp | 241 | ||||
-rw-r--r-- | tdecore/tequivchars.h | 34 | ||||
-rw-r--r-- | tdeio/tdeio/tdefileitem.cpp | 60 | ||||
-rw-r--r-- | tdeio/tdeio/tdefileitem.h | 45 |
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; |