Skip to content

Instantly share code, notes, and snippets.

@andyraddatz
Last active November 21, 2024 16:53
Show Gist options
  • Save andyraddatz/e6a396fb91856174d4e3f1bf2e10951c to your computer and use it in GitHub Desktop.
Save andyraddatz/e6a396fb91856174d4e3f1bf2e10951c to your computer and use it in GitHub Desktop.
C# String extension method to fold diacritics to ASCII characters
// IMPORTANT
using System.Text;
// This gist was created thanks to this comment from Alexander on StackOverflow:
// https://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net#comment86833005_34272324
// This is a derivative work. The logic of this function comes from a switch statement found inside the
// Lucene.Net library. The documentation of the conversion of characters is quite impressive
// (thank you @NightOwl888 and @synhershko !!!):
// https://github.com/apache/lucenenet/blob/master/src/Lucene.Net.Analysis.Common/Analysis/Miscellaneous/ASCIIFoldingFilter.cs
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/// <summary>
/// This class converts alphabetic, numeric, and symbolic Unicode characters
/// which are not in the first 127 ASCII characters (the "Basic Latin" Unicode
/// block) into their ASCII equivalents, if one exists.
/// <para/>
/// Characters from the following Unicode blocks are converted; however, only
/// those characters with reasonable ASCII alternatives are converted:
///
/// <ul>
/// <item><description>C1 Controls and Latin-1 Supplement: <a href="http://www.unicode.org/charts/PDF/U0080.pdf">http://www.unicode.org/charts/PDF/U0080.pdf</a></description></item>
/// <item><description>Latin Extended-A: <a href="http://www.unicode.org/charts/PDF/U0100.pdf">http://www.unicode.org/charts/PDF/U0100.pdf</a></description></item>
/// <item><description>Latin Extended-B: <a href="http://www.unicode.org/charts/PDF/U0180.pdf">http://www.unicode.org/charts/PDF/U0180.pdf</a></description></item>
/// <item><description>Latin Extended Additional: <a href="http://www.unicode.org/charts/PDF/U1E00.pdf">http://www.unicode.org/charts/PDF/U1E00.pdf</a></description></item>
/// <item><description>Latin Extended-C: <a href="http://www.unicode.org/charts/PDF/U2C60.pdf">http://www.unicode.org/charts/PDF/U2C60.pdf</a></description></item>
/// <item><description>Latin Extended-D: <a href="http://www.unicode.org/charts/PDF/UA720.pdf">http://www.unicode.org/charts/PDF/UA720.pdf</a></description></item>
/// <item><description>IPA Extensions: <a href="http://www.unicode.org/charts/PDF/U0250.pdf">http://www.unicode.org/charts/PDF/U0250.pdf</a></description></item>
/// <item><description>Phonetic Extensions: <a href="http://www.unicode.org/charts/PDF/U1D00.pdf">http://www.unicode.org/charts/PDF/U1D00.pdf</a></description></item>
/// <item><description>Phonetic Extensions Supplement: <a href="http://www.unicode.org/charts/PDF/U1D80.pdf">http://www.unicode.org/charts/PDF/U1D80.pdf</a></description></item>
/// <item><description>General Punctuation: <a href="http://www.unicode.org/charts/PDF/U2000.pdf">http://www.unicode.org/charts/PDF/U2000.pdf</a></description></item>
/// <item><description>Superscripts and Subscripts: <a href="http://www.unicode.org/charts/PDF/U2070.pdf">http://www.unicode.org/charts/PDF/U2070.pdf</a></description></item>
/// <item><description>Enclosed Alphanumerics: <a href="http://www.unicode.org/charts/PDF/U2460.pdf">http://www.unicode.org/charts/PDF/U2460.pdf</a></description></item>
/// <item><description>Dingbats: <a href="http://www.unicode.org/charts/PDF/U2700.pdf">http://www.unicode.org/charts/PDF/U2700.pdf</a></description></item>
/// <item><description>Supplemental Punctuation: <a href="http://www.unicode.org/charts/PDF/U2E00.pdf">http://www.unicode.org/charts/PDF/U2E00.pdf</a></description></item>
/// <item><description>Alphabetic Presentation Forms: <a href="http://www.unicode.org/charts/PDF/UFB00.pdf">http://www.unicode.org/charts/PDF/UFB00.pdf</a></description></item>
/// <item><description>Halfwidth and Fullwidth Forms: <a href="http://www.unicode.org/charts/PDF/UFF00.pdf">http://www.unicode.org/charts/PDF/UFF00.pdf</a></description></item>
/// </ul>
/// <para/>
/// See: <a href="http://en.wikipedia.org/wiki/Latin_characters_in_Unicode">http://en.wikipedia.org/wiki/Latin_characters_in_Unicode</a>
/// <para/>
/// For example, '&amp;agrave;' will be replaced by 'a'.
/// </summary>
public static class StringExtensions
{
/// <summary>
/// Converts characters above ASCII to their ASCII equivalents. For example,
/// accents are removed from accented characters.
/// </summary>
/// <param name="input"> The string of characters to fold </param>
/// <param name="length"> The length of the folded return string </param>
/// <returns> length of output </returns>
public static string FoldToASCII(this string input, int? length = null)
{
if (string.IsNullOrWhiteSpace(input)) return input;
int end = length ?? input.Length;
var foldedString = new StringBuilder(end);
for (int pos = 0; pos < end; ++pos)
{
char c = input[pos];
// Quick test: if it's not in range then just keep current character
if (c < '\u0080')
{
foldedString.Append(c);
}
else
{
switch (c)
{
case '\u00C0': // À [LATIN CAPITAL LETTER A WITH GRAVE]
case '\u00C1': // Á [LATIN CAPITAL LETTER A WITH ACUTE]
case '\u00C2': // Â [LATIN CAPITAL LETTER A WITH CIRCUMFLEX]
case '\u00C3': // Ã [LATIN CAPITAL LETTER A WITH TILDE]
case '\u00C4': // Ä [LATIN CAPITAL LETTER A WITH DIAERESIS]
case '\u00C5': // Å [LATIN CAPITAL LETTER A WITH RING ABOVE]
case '\u0100': // Ā [LATIN CAPITAL LETTER A WITH MACRON]
case '\u0102': // Ă [LATIN CAPITAL LETTER A WITH BREVE]
case '\u0104': // Ą [LATIN CAPITAL LETTER A WITH OGONEK]
case '\u018F': // Ə http://en.wikipedia.org/wiki/Schwa [LATIN CAPITAL LETTER SCHWA]
case '\u01CD': // Ǎ [LATIN CAPITAL LETTER A WITH CARON]
case '\u01DE': // Ǟ [LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON]
case '\u01E0': // Ǡ [LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON]
case '\u01FA': // Ǻ [LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE]
case '\u0200': // Ȁ [LATIN CAPITAL LETTER A WITH DOUBLE GRAVE]
case '\u0202': // Ȃ [LATIN CAPITAL LETTER A WITH INVERTED BREVE]
case '\u0226': // Ȧ [LATIN CAPITAL LETTER A WITH DOT ABOVE]
case '\u023A': // Ⱥ [LATIN CAPITAL LETTER A WITH STROKE]
case '\u1D00': // ᴀ [LATIN LETTER SMALL CAPITAL A]
case '\u1E00': // Ḁ [LATIN CAPITAL LETTER A WITH RING BELOW]
case '\u1EA0': // Ạ [LATIN CAPITAL LETTER A WITH DOT BELOW]
case '\u1EA2': // Ả [LATIN CAPITAL LETTER A WITH HOOK ABOVE]
case '\u1EA4': // Ấ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE]
case '\u1EA6': // Ầ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE]
case '\u1EA8': // Ẩ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE]
case '\u1EAA': // Ẫ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE]
case '\u1EAC': // Ậ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW]
case '\u1EAE': // Ắ [LATIN CAPITAL LETTER A WITH BREVE AND ACUTE]
case '\u1EB0': // Ằ [LATIN CAPITAL LETTER A WITH BREVE AND GRAVE]
case '\u1EB2': // Ẳ [LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE]
case '\u1EB4': // Ẵ [LATIN CAPITAL LETTER A WITH BREVE AND TILDE]
case '\u1EB6': // Ặ [LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW]
case '\u24B6': // Ⓐ [CIRCLED LATIN CAPITAL LETTER A]
case '\uFF21': // A [FULLWIDTH LATIN CAPITAL LETTER A]
foldedString.Append('A');
break;
case '\u00E0': // à [LATIN SMALL LETTER A WITH GRAVE]
case '\u00E1': // á [LATIN SMALL LETTER A WITH ACUTE]
case '\u00E2': // â [LATIN SMALL LETTER A WITH CIRCUMFLEX]
case '\u00E3': // ã [LATIN SMALL LETTER A WITH TILDE]
case '\u00E4': // ä [LATIN SMALL LETTER A WITH DIAERESIS]
case '\u00E5': // å [LATIN SMALL LETTER A WITH RING ABOVE]
case '\u0101': // ā [LATIN SMALL LETTER A WITH MACRON]
case '\u0103': // ă [LATIN SMALL LETTER A WITH BREVE]
case '\u0105': // ą [LATIN SMALL LETTER A WITH OGONEK]
case '\u01CE': // ǎ [LATIN SMALL LETTER A WITH CARON]
case '\u01DF': // ǟ [LATIN SMALL LETTER A WITH DIAERESIS AND MACRON]
case '\u01E1': // ǡ [LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON]
case '\u01FB': // ǻ [LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE]
case '\u0201': // ȁ [LATIN SMALL LETTER A WITH DOUBLE GRAVE]
case '\u0203': // ȃ [LATIN SMALL LETTER A WITH INVERTED BREVE]
case '\u0227': // ȧ [LATIN SMALL LETTER A WITH DOT ABOVE]
case '\u0250': // ɐ [LATIN SMALL LETTER TURNED A]
case '\u0259': // ə [LATIN SMALL LETTER SCHWA]
case '\u025A': // ɚ [LATIN SMALL LETTER SCHWA WITH HOOK]
case '\u1D8F': // ᶏ [LATIN SMALL LETTER A WITH RETROFLEX HOOK]
case '\u1D95': // ᶕ [LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK]
case '\u1E01': // ạ [LATIN SMALL LETTER A WITH RING BELOW]
case '\u1E9A': // ả [LATIN SMALL LETTER A WITH RIGHT HALF RING]
case '\u1EA1': // ạ [LATIN SMALL LETTER A WITH DOT BELOW]
case '\u1EA3': // ả [LATIN SMALL LETTER A WITH HOOK ABOVE]
case '\u1EA5': // ấ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE]
case '\u1EA7': // ầ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE]
case '\u1EA9': // ẩ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE]
case '\u1EAB': // ẫ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE]
case '\u1EAD': // ậ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW]
case '\u1EAF': // ắ [LATIN SMALL LETTER A WITH BREVE AND ACUTE]
case '\u1EB1': // ằ [LATIN SMALL LETTER A WITH BREVE AND GRAVE]
case '\u1EB3': // ẳ [LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE]
case '\u1EB5': // ẵ [LATIN SMALL LETTER A WITH BREVE AND TILDE]
case '\u1EB7': // ặ [LATIN SMALL LETTER A WITH BREVE AND DOT BELOW]
case '\u2090': // ₐ [LATIN SUBSCRIPT SMALL LETTER A]
case '\u2094': // ₔ [LATIN SUBSCRIPT SMALL LETTER SCHWA]
case '\u24D0': // ⓐ [CIRCLED LATIN SMALL LETTER A]
case '\u2C65': // ⱥ [LATIN SMALL LETTER A WITH STROKE]
case '\u2C6F': // Ɐ [LATIN CAPITAL LETTER TURNED A]
case '\uFF41': // a [FULLWIDTH LATIN SMALL LETTER A]
foldedString.Append('a');
break;
case '\uA732': // Ꜳ [LATIN CAPITAL LETTER AA]
foldedString.Append('A');
foldedString.Append('A');
break;
case '\u00C6': // Æ [LATIN CAPITAL LETTER AE]
case '\u01E2': // Ǣ [LATIN CAPITAL LETTER AE WITH MACRON]
case '\u01FC': // Ǽ [LATIN CAPITAL LETTER AE WITH ACUTE]
case '\u1D01': // ᴁ [LATIN LETTER SMALL CAPITAL AE]
foldedString.Append('A');
foldedString.Append('E');
break;
case '\uA734': // Ꜵ [LATIN CAPITAL LETTER AO]
foldedString.Append('A');
foldedString.Append('O');
break;
case '\uA736': // Ꜷ [LATIN CAPITAL LETTER AU]
foldedString.Append('A');
foldedString.Append('U');
break;
case '\uA738': // Ꜹ [LATIN CAPITAL LETTER AV]
case '\uA73A': // Ꜻ [LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR]
foldedString.Append('A');
foldedString.Append('V');
break;
case '\uA73C': // Ꜽ [LATIN CAPITAL LETTER AY]
foldedString.Append('A');
foldedString.Append('Y');
break;
case '\u249C': // ⒜ [PARENTHESIZED LATIN SMALL LETTER A]
foldedString.Append('(');
foldedString.Append('a');
foldedString.Append(')');
break;
case '\uA733': // ꜳ [LATIN SMALL LETTER AA]
foldedString.Append('a');
foldedString.Append('a');
break;
case '\u00E6': // æ [LATIN SMALL LETTER AE]
case '\u01E3': // ǣ [LATIN SMALL LETTER AE WITH MACRON]
case '\u01FD': // ǽ [LATIN SMALL LETTER AE WITH ACUTE]
case '\u1D02': // ᴂ [LATIN SMALL LETTER TURNED AE]
foldedString.Append('a');
foldedString.Append('e');
break;
case '\uA735': // ꜵ [LATIN SMALL LETTER AO]
foldedString.Append('a');
foldedString.Append('o');
break;
case '\uA737': // ꜷ [LATIN SMALL LETTER AU]
foldedString.Append('a');
foldedString.Append('u');
break;
case '\uA739': // ꜹ [LATIN SMALL LETTER AV]
case '\uA73B': // ꜻ [LATIN SMALL LETTER AV WITH HORIZONTAL BAR]
foldedString.Append('a');
foldedString.Append('v');
break;
case '\uA73D': // ꜽ [LATIN SMALL LETTER AY]
foldedString.Append('a');
foldedString.Append('y');
break;
case '\u0181': // Ɓ [LATIN CAPITAL LETTER B WITH HOOK]
case '\u0182': // Ƃ [LATIN CAPITAL LETTER B WITH TOPBAR]
case '\u0243': // Ƀ [LATIN CAPITAL LETTER B WITH STROKE]
case '\u0299': // ʙ [LATIN LETTER SMALL CAPITAL B]
case '\u1D03': // ᴃ [LATIN LETTER SMALL CAPITAL BARRED B]
case '\u1E02': // Ḃ [LATIN CAPITAL LETTER B WITH DOT ABOVE]
case '\u1E04': // Ḅ [LATIN CAPITAL LETTER B WITH DOT BELOW]
case '\u1E06': // Ḇ [LATIN CAPITAL LETTER B WITH LINE BELOW]
case '\u24B7': // Ⓑ [CIRCLED LATIN CAPITAL LETTER B]
case '\uFF22': // B [FULLWIDTH LATIN CAPITAL LETTER B]
foldedString.Append('B');
break;
case '\u0180': // ƀ [LATIN SMALL LETTER B WITH STROKE]
case '\u0183': // ƃ [LATIN SMALL LETTER B WITH TOPBAR]
case '\u0253': // ɓ [LATIN SMALL LETTER B WITH HOOK]
case '\u1D6C': // ᵬ [LATIN SMALL LETTER B WITH MIDDLE TILDE]
case '\u1D80': // ᶀ [LATIN SMALL LETTER B WITH PALATAL HOOK]
case '\u1E03': // ḃ [LATIN SMALL LETTER B WITH DOT ABOVE]
case '\u1E05': // ḅ [LATIN SMALL LETTER B WITH DOT BELOW]
case '\u1E07': // ḇ [LATIN SMALL LETTER B WITH LINE BELOW]
case '\u24D1': // ⓑ [CIRCLED LATIN SMALL LETTER B]
case '\uFF42': // b [FULLWIDTH LATIN SMALL LETTER B]
foldedString.Append('b');
break;
case '\u249D': // ⒝ [PARENTHESIZED LATIN SMALL LETTER B]
foldedString.Append('(');
foldedString.Append('b');
foldedString.Append(')');
break;
case '\u00C7': // Ç [LATIN CAPITAL LETTER C WITH CEDILLA]
case '\u0106': // Ć [LATIN CAPITAL LETTER C WITH ACUTE]
case '\u0108': // Ĉ [LATIN CAPITAL LETTER C WITH CIRCUMFLEX]
case '\u010A': // Ċ [LATIN CAPITAL LETTER C WITH DOT ABOVE]
case '\u010C': // Č [LATIN CAPITAL LETTER C WITH CARON]
case '\u0187': // Ƈ [LATIN CAPITAL LETTER C WITH HOOK]
case '\u023B': // Ȼ [LATIN CAPITAL LETTER C WITH STROKE]
case '\u0297': // ʗ [LATIN LETTER STRETCHED C]
case '\u1D04': // ᴄ [LATIN LETTER SMALL CAPITAL C]
case '\u1E08': // Ḉ [LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE]
case '\u24B8': // Ⓒ [CIRCLED LATIN CAPITAL LETTER C]
case '\uFF23': // C [FULLWIDTH LATIN CAPITAL LETTER C]
foldedString.Append('C');
break;
case '\u00E7': // ç [LATIN SMALL LETTER C WITH CEDILLA]
case '\u0107': // ć [LATIN SMALL LETTER C WITH ACUTE]
case '\u0109': // ĉ [LATIN SMALL LETTER C WITH CIRCUMFLEX]
case '\u010B': // ċ [LATIN SMALL LETTER C WITH DOT ABOVE]
case '\u010D': // č [LATIN SMALL LETTER C WITH CARON]
case '\u0188': // ƈ [LATIN SMALL LETTER C WITH HOOK]
case '\u023C': // ȼ [LATIN SMALL LETTER C WITH STROKE]
case '\u0255': // ɕ [LATIN SMALL LETTER C WITH CURL]
case '\u1E09': // ḉ [LATIN SMALL LETTER C WITH CEDILLA AND ACUTE]
case '\u2184': // ↄ [LATIN SMALL LETTER REVERSED C]
case '\u24D2': // ⓒ [CIRCLED LATIN SMALL LETTER C]
case '\uA73E': // Ꜿ [LATIN CAPITAL LETTER REVERSED C WITH DOT]
case '\uA73F': // ꜿ [LATIN SMALL LETTER REVERSED C WITH DOT]
case '\uFF43': // c [FULLWIDTH LATIN SMALL LETTER C]
foldedString.Append('c');
break;
case '\u249E': // ⒞ [PARENTHESIZED LATIN SMALL LETTER C]
foldedString.Append('(');
foldedString.Append('c');
foldedString.Append(')');
break;
case '\u00D0': // Ð [LATIN CAPITAL LETTER ETH]
case '\u010E': // Ď [LATIN CAPITAL LETTER D WITH CARON]
case '\u0110': // Đ [LATIN CAPITAL LETTER D WITH STROKE]
case '\u0189': // Ɖ [LATIN CAPITAL LETTER AFRICAN D]
case '\u018A': // Ɗ [LATIN CAPITAL LETTER D WITH HOOK]
case '\u018B': // Ƌ [LATIN CAPITAL LETTER D WITH TOPBAR]
case '\u1D05': // ᴅ [LATIN LETTER SMALL CAPITAL D]
case '\u1D06': // ᴆ [LATIN LETTER SMALL CAPITAL ETH]
case '\u1E0A': // Ḋ [LATIN CAPITAL LETTER D WITH DOT ABOVE]
case '\u1E0C': // Ḍ [LATIN CAPITAL LETTER D WITH DOT BELOW]
case '\u1E0E': // Ḏ [LATIN CAPITAL LETTER D WITH LINE BELOW]
case '\u1E10': // Ḑ [LATIN CAPITAL LETTER D WITH CEDILLA]
case '\u1E12': // Ḓ [LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW]
case '\u24B9': // Ⓓ [CIRCLED LATIN CAPITAL LETTER D]
case '\uA779': // Ꝺ [LATIN CAPITAL LETTER INSULAR D]
case '\uFF24': // D [FULLWIDTH LATIN CAPITAL LETTER D]
foldedString.Append('D');
break;
case '\u00F0': // ð [LATIN SMALL LETTER ETH]
case '\u010F': // ď [LATIN SMALL LETTER D WITH CARON]
case '\u0111': // đ [LATIN SMALL LETTER D WITH STROKE]
case '\u018C': // ƌ [LATIN SMALL LETTER D WITH TOPBAR]
case '\u0221': // ȡ [LATIN SMALL LETTER D WITH CURL]
case '\u0256': // ɖ [LATIN SMALL LETTER D WITH TAIL]
case '\u0257': // ɗ [LATIN SMALL LETTER D WITH HOOK]
case '\u1D6D': // ᵭ [LATIN SMALL LETTER D WITH MIDDLE TILDE]
case '\u1D81': // ᶁ [LATIN SMALL LETTER D WITH PALATAL HOOK]
case '\u1D91': // ᶑ [LATIN SMALL LETTER D WITH HOOK AND TAIL]
case '\u1E0B': // ḋ [LATIN SMALL LETTER D WITH DOT ABOVE]
case '\u1E0D': // ḍ [LATIN SMALL LETTER D WITH DOT BELOW]
case '\u1E0F': // ḏ [LATIN SMALL LETTER D WITH LINE BELOW]
case '\u1E11': // ḑ [LATIN SMALL LETTER D WITH CEDILLA]
case '\u1E13': // ḓ [LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW]
case '\u24D3': // ⓓ [CIRCLED LATIN SMALL LETTER D]
case '\uA77A': // ꝺ [LATIN SMALL LETTER INSULAR D]
case '\uFF44': // d [FULLWIDTH LATIN SMALL LETTER D]
foldedString.Append('d');
break;
case '\u01C4': // DŽ [LATIN CAPITAL LETTER DZ WITH CARON]
case '\u01F1': // DZ [LATIN CAPITAL LETTER DZ]
foldedString.Append('D');
foldedString.Append('Z');
break;
case '\u01C5': // Dž [LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON]
case '\u01F2': // Dz [LATIN CAPITAL LETTER D WITH SMALL LETTER Z]
foldedString.Append('D');
foldedString.Append('z');
break;
case '\u249F': // ⒟ [PARENTHESIZED LATIN SMALL LETTER D]
foldedString.Append('(');
foldedString.Append('d');
foldedString.Append(')');
break;
case '\u0238': // ȸ [LATIN SMALL LETTER DB DIGRAPH]
foldedString.Append('d');
foldedString.Append('b');
break;
case '\u01C6': // dž [LATIN SMALL LETTER DZ WITH CARON]
case '\u01F3': // dz [LATIN SMALL LETTER DZ]
case '\u02A3': // ʣ [LATIN SMALL LETTER DZ DIGRAPH]
case '\u02A5': // ʥ [LATIN SMALL LETTER DZ DIGRAPH WITH CURL]
foldedString.Append('d');
foldedString.Append('z');
break;
case '\u00C8': // È [LATIN CAPITAL LETTER E WITH GRAVE]
case '\u00C9': // É [LATIN CAPITAL LETTER E WITH ACUTE]
case '\u00CA': // Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX]
case '\u00CB': // Ë [LATIN CAPITAL LETTER E WITH DIAERESIS]
case '\u0112': // Ē [LATIN CAPITAL LETTER E WITH MACRON]
case '\u0114': // Ĕ [LATIN CAPITAL LETTER E WITH BREVE]
case '\u0116': // Ė [LATIN CAPITAL LETTER E WITH DOT ABOVE]
case '\u0118': // Ę [LATIN CAPITAL LETTER E WITH OGONEK]
case '\u011A': // Ě [LATIN CAPITAL LETTER E WITH CARON]
case '\u018E': // Ǝ [LATIN CAPITAL LETTER REVERSED E]
case '\u0190': // Ɛ [LATIN CAPITAL LETTER OPEN E]
case '\u0204': // Ȅ [LATIN CAPITAL LETTER E WITH DOUBLE GRAVE]
case '\u0206': // Ȇ [LATIN CAPITAL LETTER E WITH INVERTED BREVE]
case '\u0228': // Ȩ [LATIN CAPITAL LETTER E WITH CEDILLA]
case '\u0246': // Ɇ [LATIN CAPITAL LETTER E WITH STROKE]
case '\u1D07': // ᴇ [LATIN LETTER SMALL CAPITAL E]
case '\u1E14': // Ḕ [LATIN CAPITAL LETTER E WITH MACRON AND GRAVE]
case '\u1E16': // Ḗ [LATIN CAPITAL LETTER E WITH MACRON AND ACUTE]
case '\u1E18': // Ḙ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW]
case '\u1E1A': // Ḛ [LATIN CAPITAL LETTER E WITH TILDE BELOW]
case '\u1E1C': // Ḝ [LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE]
case '\u1EB8': // Ẹ [LATIN CAPITAL LETTER E WITH DOT BELOW]
case '\u1EBA': // Ẻ [LATIN CAPITAL LETTER E WITH HOOK ABOVE]
case '\u1EBC': // Ẽ [LATIN CAPITAL LETTER E WITH TILDE]
case '\u1EBE': // Ế [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE]
case '\u1EC0': // Ề [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE]
case '\u1EC2': // Ể [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE]
case '\u1EC4': // Ễ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE]
case '\u1EC6': // Ệ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW]
case '\u24BA': // Ⓔ [CIRCLED LATIN CAPITAL LETTER E]
case '\u2C7B': // ⱻ [LATIN LETTER SMALL CAPITAL TURNED E]
case '\uFF25': // E [FULLWIDTH LATIN CAPITAL LETTER E]
foldedString.Append('E');
break;
case '\u00E8': // è [LATIN SMALL LETTER E WITH GRAVE]
case '\u00E9': // é [LATIN SMALL LETTER E WITH ACUTE]
case '\u00EA': // ê [LATIN SMALL LETTER E WITH CIRCUMFLEX]
case '\u00EB': // ë [LATIN SMALL LETTER E WITH DIAERESIS]
case '\u0113': // ē [LATIN SMALL LETTER E WITH MACRON]
case '\u0115': // ĕ [LATIN SMALL LETTER E WITH BREVE]
case '\u0117': // ė [LATIN SMALL LETTER E WITH DOT ABOVE]
case '\u0119': // ę [LATIN SMALL LETTER E WITH OGONEK]
case '\u011B': // ě [LATIN SMALL LETTER E WITH CARON]
case '\u01DD': // ǝ [LATIN SMALL LETTER TURNED E]
case '\u0205': // ȅ [LATIN SMALL LETTER E WITH DOUBLE GRAVE]
case '\u0207': // ȇ [LATIN SMALL LETTER E WITH INVERTED BREVE]
case '\u0229': // ȩ [LATIN SMALL LETTER E WITH CEDILLA]
case '\u0247': // ɇ [LATIN SMALL LETTER E WITH STROKE]
case '\u0258': // ɘ [LATIN SMALL LETTER REVERSED E]
case '\u025B': // ɛ [LATIN SMALL LETTER OPEN E]
case '\u025C': // ɜ [LATIN SMALL LETTER REVERSED OPEN E]
case '\u025D': // ɝ [LATIN SMALL LETTER REVERSED OPEN E WITH HOOK]
case '\u025E': // ɞ [LATIN SMALL LETTER CLOSED REVERSED OPEN E]
case '\u029A': // ʚ [LATIN SMALL LETTER CLOSED OPEN E]
case '\u1D08': // ᴈ [LATIN SMALL LETTER TURNED OPEN E]
case '\u1D92': // ᶒ [LATIN SMALL LETTER E WITH RETROFLEX HOOK]
case '\u1D93': // ᶓ [LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK]
case '\u1D94': // ᶔ [LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK]
case '\u1E15': // ḕ [LATIN SMALL LETTER E WITH MACRON AND GRAVE]
case '\u1E17': // ḗ [LATIN SMALL LETTER E WITH MACRON AND ACUTE]
case '\u1E19': // ḙ [LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW]
case '\u1E1B': // ḛ [LATIN SMALL LETTER E WITH TILDE BELOW]
case '\u1E1D': // ḝ [LATIN SMALL LETTER E WITH CEDILLA AND BREVE]
case '\u1EB9': // ẹ [LATIN SMALL LETTER E WITH DOT BELOW]
case '\u1EBB': // ẻ [LATIN SMALL LETTER E WITH HOOK ABOVE]
case '\u1EBD': // ẽ [LATIN SMALL LETTER E WITH TILDE]
case '\u1EBF': // ế [LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE]
case '\u1EC1': // ề [LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE]
case '\u1EC3': // ể [LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE]
case '\u1EC5': // ễ [LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE]
case '\u1EC7': // ệ [LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW]
case '\u2091': // ₑ [LATIN SUBSCRIPT SMALL LETTER E]
case '\u24D4': // ⓔ [CIRCLED LATIN SMALL LETTER E]
case '\u2C78': // ⱸ [LATIN SMALL LETTER E WITH NOTCH]
case '\uFF45': // e [FULLWIDTH LATIN SMALL LETTER E]
foldedString.Append('e');
break;
case '\u24A0': // ⒠ [PARENTHESIZED LATIN SMALL LETTER E]
foldedString.Append('(');
foldedString.Append('e');
foldedString.Append(')');
break;
case '\u0191': // Ƒ [LATIN CAPITAL LETTER F WITH HOOK]
case '\u1E1E': // Ḟ [LATIN CAPITAL LETTER F WITH DOT ABOVE]
case '\u24BB': // Ⓕ [CIRCLED LATIN CAPITAL LETTER F]
case '\uA730': // ꜰ [LATIN LETTER SMALL CAPITAL F]
case '\uA77B': // Ꝼ [LATIN CAPITAL LETTER INSULAR F]
case '\uA7FB': // ꟻ [LATIN EPIGRAPHIC LETTER REVERSED F]
case '\uFF26': // F [FULLWIDTH LATIN CAPITAL LETTER F]
foldedString.Append('F');
break;
case '\u0192': // ƒ [LATIN SMALL LETTER F WITH HOOK]
case '\u1D6E': // ᵮ [LATIN SMALL LETTER F WITH MIDDLE TILDE]
case '\u1D82': // ᶂ [LATIN SMALL LETTER F WITH PALATAL HOOK]
case '\u1E1F': // ḟ [LATIN SMALL LETTER F WITH DOT ABOVE]
case '\u1E9B': // ẛ [LATIN SMALL LETTER LONG S WITH DOT ABOVE]
case '\u24D5': // ⓕ [CIRCLED LATIN SMALL LETTER F]
case '\uA77C': // ꝼ [LATIN SMALL LETTER INSULAR F]
case '\uFF46': // f [FULLWIDTH LATIN SMALL LETTER F]
foldedString.Append('f');
break;
case '\u24A1': // ⒡ [PARENTHESIZED LATIN SMALL LETTER F]
foldedString.Append('(');
foldedString.Append('f');
foldedString.Append(')');
break;
case '\uFB00': // ff [LATIN SMALL LIGATURE FF]
foldedString.Append('f');
foldedString.Append('f');
break;
case '\uFB03': // ffi [LATIN SMALL LIGATURE FFI]
foldedString.Append('f');
foldedString.Append('f');
foldedString.Append('i');
break;
case '\uFB04': // ffl [LATIN SMALL LIGATURE FFL]
foldedString.Append('f');
foldedString.Append('f');
foldedString.Append('l');
break;
case '\uFB01': // fi [LATIN SMALL LIGATURE FI]
foldedString.Append('f');
foldedString.Append('i');
break;
case '\uFB02': // fl [LATIN SMALL LIGATURE FL]
foldedString.Append('f');
foldedString.Append('l');
break;
case '\u011C': // Ĝ [LATIN CAPITAL LETTER G WITH CIRCUMFLEX]
case '\u011E': // Ğ [LATIN CAPITAL LETTER G WITH BREVE]
case '\u0120': // Ġ [LATIN CAPITAL LETTER G WITH DOT ABOVE]
case '\u0122': // Ģ [LATIN CAPITAL LETTER G WITH CEDILLA]
case '\u0193': // Ɠ [LATIN CAPITAL LETTER G WITH HOOK]
case '\u01E4': // Ǥ [LATIN CAPITAL LETTER G WITH STROKE]
case '\u01E5': // ǥ [LATIN SMALL LETTER G WITH STROKE]
case '\u01E6': // Ǧ [LATIN CAPITAL LETTER G WITH CARON]
case '\u01E7': // ǧ [LATIN SMALL LETTER G WITH CARON]
case '\u01F4': // Ǵ [LATIN CAPITAL LETTER G WITH ACUTE]
case '\u0262': // ɢ [LATIN LETTER SMALL CAPITAL G]
case '\u029B': // ʛ [LATIN LETTER SMALL CAPITAL G WITH HOOK]
case '\u1E20': // Ḡ [LATIN CAPITAL LETTER G WITH MACRON]
case '\u24BC': // Ⓖ [CIRCLED LATIN CAPITAL LETTER G]
case '\uA77D': // Ᵹ [LATIN CAPITAL LETTER INSULAR G]
case '\uA77E': // Ꝿ [LATIN CAPITAL LETTER TURNED INSULAR G]
case '\uFF27': // G [FULLWIDTH LATIN CAPITAL LETTER G]
foldedString.Append('G');
break;
case '\u011D': // ĝ [LATIN SMALL LETTER G WITH CIRCUMFLEX]
case '\u011F': // ğ [LATIN SMALL LETTER G WITH BREVE]
case '\u0121': // ġ [LATIN SMALL LETTER G WITH DOT ABOVE]
case '\u0123': // ģ [LATIN SMALL LETTER G WITH CEDILLA]
case '\u01F5': // ǵ [LATIN SMALL LETTER G WITH ACUTE]
case '\u0260': // ɠ [LATIN SMALL LETTER G WITH HOOK]
case '\u0261': // ɡ [LATIN SMALL LETTER SCRIPT G]
case '\u1D77': // ᵷ [LATIN SMALL LETTER TURNED G]
case '\u1D79': // ᵹ [LATIN SMALL LETTER INSULAR G]
case '\u1D83': // ᶃ [LATIN SMALL LETTER G WITH PALATAL HOOK]
case '\u1E21': // ḡ [LATIN SMALL LETTER G WITH MACRON]
case '\u24D6': // ⓖ [CIRCLED LATIN SMALL LETTER G]
case '\uA77F': // ꝿ [LATIN SMALL LETTER TURNED INSULAR G]
case '\uFF47': // g [FULLWIDTH LATIN SMALL LETTER G]
foldedString.Append('g');
break;
case '\u24A2': // ⒢ [PARENTHESIZED LATIN SMALL LETTER G]
foldedString.Append('(');
foldedString.Append('g');
foldedString.Append(')');
break;
case '\u0124': // Ĥ [LATIN CAPITAL LETTER H WITH CIRCUMFLEX]
case '\u0126': // Ħ [LATIN CAPITAL LETTER H WITH STROKE]
case '\u021E': // Ȟ [LATIN CAPITAL LETTER H WITH CARON]
case '\u029C': // ʜ [LATIN LETTER SMALL CAPITAL H]
case '\u1E22': // Ḣ [LATIN CAPITAL LETTER H WITH DOT ABOVE]
case '\u1E24': // Ḥ [LATIN CAPITAL LETTER H WITH DOT BELOW]
case '\u1E26': // Ḧ [LATIN CAPITAL LETTER H WITH DIAERESIS]
case '\u1E28': // Ḩ [LATIN CAPITAL LETTER H WITH CEDILLA]
case '\u1E2A': // Ḫ [LATIN CAPITAL LETTER H WITH BREVE BELOW]
case '\u24BD': // Ⓗ [CIRCLED LATIN CAPITAL LETTER H]
case '\u2C67': // Ⱨ [LATIN CAPITAL LETTER H WITH DESCENDER]
case '\u2C75': // Ⱶ [LATIN CAPITAL LETTER HALF H]
case '\uFF28': // H [FULLWIDTH LATIN CAPITAL LETTER H]
foldedString.Append('H');
break;
case '\u0125': // ĥ [LATIN SMALL LETTER H WITH CIRCUMFLEX]
case '\u0127': // ħ [LATIN SMALL LETTER H WITH STROKE]
case '\u021F': // ȟ [LATIN SMALL LETTER H WITH CARON]
case '\u0265': // ɥ [LATIN SMALL LETTER TURNED H]
case '\u0266': // ɦ [LATIN SMALL LETTER H WITH HOOK]
case '\u02AE': // ʮ [LATIN SMALL LETTER TURNED H WITH FISHHOOK]
case '\u02AF': // ʯ [LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL]
case '\u1E23': // ḣ [LATIN SMALL LETTER H WITH DOT ABOVE]
case '\u1E25': // ḥ [LATIN SMALL LETTER H WITH DOT BELOW]
case '\u1E27': // ḧ [LATIN SMALL LETTER H WITH DIAERESIS]
case '\u1E29': // ḩ [LATIN SMALL LETTER H WITH CEDILLA]
case '\u1E2B': // ḫ [LATIN SMALL LETTER H WITH BREVE BELOW]
case '\u1E96': // ẖ [LATIN SMALL LETTER H WITH LINE BELOW]
case '\u24D7': // ⓗ [CIRCLED LATIN SMALL LETTER H]
case '\u2C68': // ⱨ [LATIN SMALL LETTER H WITH DESCENDER]
case '\u2C76': // ⱶ [LATIN SMALL LETTER HALF H]
case '\uFF48': // h [FULLWIDTH LATIN SMALL LETTER H]
foldedString.Append('h');
break;
case '\u01F6': // Ƕ http://en.wikipedia.org/wiki/Hwair [LATIN CAPITAL LETTER HWAIR]
foldedString.Append('H');
foldedString.Append('V');
break;
case '\u24A3': // ⒣ [PARENTHESIZED LATIN SMALL LETTER H]
foldedString.Append('(');
foldedString.Append('h');
foldedString.Append(')');
break;
case '\u0195': // ƕ [LATIN SMALL LETTER HV]
foldedString.Append('h');
foldedString.Append('v');
break;
case '\u00CC': // Ì [LATIN CAPITAL LETTER I WITH GRAVE]
case '\u00CD': // Í [LATIN CAPITAL LETTER I WITH ACUTE]
case '\u00CE': // Î [LATIN CAPITAL LETTER I WITH CIRCUMFLEX]
case '\u00CF': // Ï [LATIN CAPITAL LETTER I WITH DIAERESIS]
case '\u0128': // Ĩ [LATIN CAPITAL LETTER I WITH TILDE]
case '\u012A': // Ī [LATIN CAPITAL LETTER I WITH MACRON]
case '\u012C': // Ĭ [LATIN CAPITAL LETTER I WITH BREVE]
case '\u012E': // Į [LATIN CAPITAL LETTER I WITH OGONEK]
case '\u0130': // İ [LATIN CAPITAL LETTER I WITH DOT ABOVE]
case '\u0196': // Ɩ [LATIN CAPITAL LETTER IOTA]
case '\u0197': // Ɨ [LATIN CAPITAL LETTER I WITH STROKE]
case '\u01CF': // Ǐ [LATIN CAPITAL LETTER I WITH CARON]
case '\u0208': // Ȉ [LATIN CAPITAL LETTER I WITH DOUBLE GRAVE]
case '\u020A': // Ȋ [LATIN CAPITAL LETTER I WITH INVERTED BREVE]
case '\u026A': // ɪ [LATIN LETTER SMALL CAPITAL I]
case '\u1D7B': // ᵻ [LATIN SMALL CAPITAL LETTER I WITH STROKE]
case '\u1E2C': // Ḭ [LATIN CAPITAL LETTER I WITH TILDE BELOW]
case '\u1E2E': // Ḯ [LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE]
case '\u1EC8': // Ỉ [LATIN CAPITAL LETTER I WITH HOOK ABOVE]
case '\u1ECA': // Ị [LATIN CAPITAL LETTER I WITH DOT BELOW]
case '\u24BE': // Ⓘ [CIRCLED LATIN CAPITAL LETTER I]
case '\uA7FE': // ꟾ [LATIN EPIGRAPHIC LETTER I LONGA]
case '\uFF29': // I [FULLWIDTH LATIN CAPITAL LETTER I]
foldedString.Append('I');
break;
case '\u00EC': // ì [LATIN SMALL LETTER I WITH GRAVE]
case '\u00ED': // í [LATIN SMALL LETTER I WITH ACUTE]
case '\u00EE': // î [LATIN SMALL LETTER I WITH CIRCUMFLEX]
case '\u00EF': // ï [LATIN SMALL LETTER I WITH DIAERESIS]
case '\u0129': // ĩ [LATIN SMALL LETTER I WITH TILDE]
case '\u012B': // ī [LATIN SMALL LETTER I WITH MACRON]
case '\u012D': // ĭ [LATIN SMALL LETTER I WITH BREVE]
case '\u012F': // į [LATIN SMALL LETTER I WITH OGONEK]
case '\u0131': // ı [LATIN SMALL LETTER DOTLESS I]
case '\u01D0': // ǐ [LATIN SMALL LETTER I WITH CARON]
case '\u0209': // ȉ [LATIN SMALL LETTER I WITH DOUBLE GRAVE]
case '\u020B': // ȋ [LATIN SMALL LETTER I WITH INVERTED BREVE]
case '\u0268': // ɨ [LATIN SMALL LETTER I WITH STROKE]
case '\u1D09': // ᴉ [LATIN SMALL LETTER TURNED I]
case '\u1D62': // ᵢ [LATIN SUBSCRIPT SMALL LETTER I]
case '\u1D7C': // ᵼ [LATIN SMALL LETTER IOTA WITH STROKE]
case '\u1D96': // ᶖ [LATIN SMALL LETTER I WITH RETROFLEX HOOK]
case '\u1E2D': // ḭ [LATIN SMALL LETTER I WITH TILDE BELOW]
case '\u1E2F': // ḯ [LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE]
case '\u1EC9': // ỉ [LATIN SMALL LETTER I WITH HOOK ABOVE]
case '\u1ECB': // ị [LATIN SMALL LETTER I WITH DOT BELOW]
case '\u2071': // ⁱ [SUPERSCRIPT LATIN SMALL LETTER I]
case '\u24D8': // ⓘ [CIRCLED LATIN SMALL LETTER I]
case '\uFF49': // i [FULLWIDTH LATIN SMALL LETTER I]
foldedString.Append('i');
break;
case '\u0132': // IJ [LATIN CAPITAL LIGATURE IJ]
foldedString.Append('I');
foldedString.Append('J');
break;
case '\u24A4': // ⒤ [PARENTHESIZED LATIN SMALL LETTER I]
foldedString.Append('(');
foldedString.Append('i');
foldedString.Append(')');
break;
case '\u0133': // ij [LATIN SMALL LIGATURE IJ]
foldedString.Append('i');
foldedString.Append('j');
break;
case '\u0134': // Ĵ [LATIN CAPITAL LETTER J WITH CIRCUMFLEX]
case '\u0248': // Ɉ [LATIN CAPITAL LETTER J WITH STROKE]
case '\u1D0A': // ᴊ [LATIN LETTER SMALL CAPITAL J]
case '\u24BF': // Ⓙ [CIRCLED LATIN CAPITAL LETTER J]
case '\uFF2A': // J [FULLWIDTH LATIN CAPITAL LETTER J]
foldedString.Append('J');
break;
case '\u0135': // ĵ [LATIN SMALL LETTER J WITH CIRCUMFLEX]
case '\u01F0': // ǰ [LATIN SMALL LETTER J WITH CARON]
case '\u0237': // ȷ [LATIN SMALL LETTER DOTLESS J]
case '\u0249': // ɉ [LATIN SMALL LETTER J WITH STROKE]
case '\u025F': // ɟ [LATIN SMALL LETTER DOTLESS J WITH STROKE]
case '\u0284': // ʄ [LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK]
case '\u029D': // ʝ [LATIN SMALL LETTER J WITH CROSSED-TAIL]
case '\u24D9': // ⓙ [CIRCLED LATIN SMALL LETTER J]
case '\u2C7C': // ⱼ [LATIN SUBSCRIPT SMALL LETTER J]
case '\uFF4A': // j [FULLWIDTH LATIN SMALL LETTER J]
foldedString.Append('j');
break;
case '\u24A5': // ⒥ [PARENTHESIZED LATIN SMALL LETTER J]
foldedString.Append('(');
foldedString.Append('j');
foldedString.Append(')');
break;
case '\u0136': // Ķ [LATIN CAPITAL LETTER K WITH CEDILLA]
case '\u0198': // Ƙ [LATIN CAPITAL LETTER K WITH HOOK]
case '\u01E8': // Ǩ [LATIN CAPITAL LETTER K WITH CARON]
case '\u1D0B': // ᴋ [LATIN LETTER SMALL CAPITAL K]
case '\u1E30': // Ḱ [LATIN CAPITAL LETTER K WITH ACUTE]
case '\u1E32': // Ḳ [LATIN CAPITAL LETTER K WITH DOT BELOW]
case '\u1E34': // Ḵ [LATIN CAPITAL LETTER K WITH LINE BELOW]
case '\u24C0': // Ⓚ [CIRCLED LATIN CAPITAL LETTER K]
case '\u2C69': // Ⱪ [LATIN CAPITAL LETTER K WITH DESCENDER]
case '\uA740': // Ꝁ [LATIN CAPITAL LETTER K WITH STROKE]
case '\uA742': // Ꝃ [LATIN CAPITAL LETTER K WITH DIAGONAL STROKE]
case '\uA744': // Ꝅ [LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE]
case '\uFF2B': // K [FULLWIDTH LATIN CAPITAL LETTER K]
foldedString.Append('K');
break;
case '\u0137': // ķ [LATIN SMALL LETTER K WITH CEDILLA]
case '\u0199': // ƙ [LATIN SMALL LETTER K WITH HOOK]
case '\u01E9': // ǩ [LATIN SMALL LETTER K WITH CARON]
case '\u029E': // ʞ [LATIN SMALL LETTER TURNED K]
case '\u1D84': // ᶄ [LATIN SMALL LETTER K WITH PALATAL HOOK]
case '\u1E31': // ḱ [LATIN SMALL LETTER K WITH ACUTE]
case '\u1E33': // ḳ [LATIN SMALL LETTER K WITH DOT BELOW]
case '\u1E35': // ḵ [LATIN SMALL LETTER K WITH LINE BELOW]
case '\u24DA': // ⓚ [CIRCLED LATIN SMALL LETTER K]
case '\u2C6A': // ⱪ [LATIN SMALL LETTER K WITH DESCENDER]
case '\uA741': // ꝁ [LATIN SMALL LETTER K WITH STROKE]
case '\uA743': // ꝃ [LATIN SMALL LETTER K WITH DIAGONAL STROKE]
case '\uA745': // ꝅ [LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE]
case '\uFF4B': // k [FULLWIDTH LATIN SMALL LETTER K]
foldedString.Append('k');
break;
case '\u24A6': // ⒦ [PARENTHESIZED LATIN SMALL LETTER K]
foldedString.Append('(');
foldedString.Append('k');
foldedString.Append(')');
break;
case '\u0139': // Ĺ [LATIN CAPITAL LETTER L WITH ACUTE]
case '\u013B': // Ļ [LATIN CAPITAL LETTER L WITH CEDILLA]
case '\u013D': // Ľ [LATIN CAPITAL LETTER L WITH CARON]
case '\u013F': // Ŀ [LATIN CAPITAL LETTER L WITH MIDDLE DOT]
case '\u0141': // Ł [LATIN CAPITAL LETTER L WITH STROKE]
case '\u023D': // Ƚ [LATIN CAPITAL LETTER L WITH BAR]
case '\u029F': // ʟ [LATIN LETTER SMALL CAPITAL L]
case '\u1D0C': // ᴌ [LATIN LETTER SMALL CAPITAL L WITH STROKE]
case '\u1E36': // Ḷ [LATIN CAPITAL LETTER L WITH DOT BELOW]
case '\u1E38': // Ḹ [LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON]
case '\u1E3A': // Ḻ [LATIN CAPITAL LETTER L WITH LINE BELOW]
case '\u1E3C': // Ḽ [LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW]
case '\u24C1': // Ⓛ [CIRCLED LATIN CAPITAL LETTER L]
case '\u2C60': // Ⱡ [LATIN CAPITAL LETTER L WITH DOUBLE BAR]
case '\u2C62': // Ɫ [LATIN CAPITAL LETTER L WITH MIDDLE TILDE]
case '\uA746': // Ꝇ [LATIN CAPITAL LETTER BROKEN L]
case '\uA748': // Ꝉ [LATIN CAPITAL LETTER L WITH HIGH STROKE]
case '\uA780': // Ꞁ [LATIN CAPITAL LETTER TURNED L]
case '\uFF2C': // L [FULLWIDTH LATIN CAPITAL LETTER L]
foldedString.Append('L');
break;
case '\u013A': // ĺ [LATIN SMALL LETTER L WITH ACUTE]
case '\u013C': // ļ [LATIN SMALL LETTER L WITH CEDILLA]
case '\u013E': // ľ [LATIN SMALL LETTER L WITH CARON]
case '\u0140': // ŀ [LATIN SMALL LETTER L WITH MIDDLE DOT]
case '\u0142': // ł [LATIN SMALL LETTER L WITH STROKE]
case '\u019A': // ƚ [LATIN SMALL LETTER L WITH BAR]
case '\u0234': // ȴ [LATIN SMALL LETTER L WITH CURL]
case '\u026B': // ɫ [LATIN SMALL LETTER L WITH MIDDLE TILDE]
case '\u026C': // ɬ [LATIN SMALL LETTER L WITH BELT]
case '\u026D': // ɭ [LATIN SMALL LETTER L WITH RETROFLEX HOOK]
case '\u1D85': // ᶅ [LATIN SMALL LETTER L WITH PALATAL HOOK]
case '\u1E37': // ḷ [LATIN SMALL LETTER L WITH DOT BELOW]
case '\u1E39': // ḹ [LATIN SMALL LETTER L WITH DOT BELOW AND MACRON]
case '\u1E3B': // ḻ [LATIN SMALL LETTER L WITH LINE BELOW]
case '\u1E3D': // ḽ [LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW]
case '\u24DB': // ⓛ [CIRCLED LATIN SMALL LETTER L]
case '\u2C61': // ⱡ [LATIN SMALL LETTER L WITH DOUBLE BAR]
case '\uA747': // ꝇ [LATIN SMALL LETTER BROKEN L]
case '\uA749': // ꝉ [LATIN SMALL LETTER L WITH HIGH STROKE]
case '\uA781': // ꞁ [LATIN SMALL LETTER TURNED L]
case '\uFF4C': // l [FULLWIDTH LATIN SMALL LETTER L]
foldedString.Append('l');
break;
case '\u01C7': // LJ [LATIN CAPITAL LETTER LJ]
foldedString.Append('L');
foldedString.Append('J');
break;
case '\u1EFA': // Ỻ [LATIN CAPITAL LETTER MIDDLE-WELSH LL]
foldedString.Append('L');
foldedString.Append('L');
break;
case '\u01C8': // Lj [LATIN CAPITAL LETTER L WITH SMALL LETTER J]
foldedString.Append('L');
foldedString.Append('j');
break;
case '\u24A7': // ⒧ [PARENTHESIZED LATIN SMALL LETTER L]
foldedString.Append('(');
foldedString.Append('l');
foldedString.Append(')');
break;
case '\u01C9': // lj [LATIN SMALL LETTER LJ]
foldedString.Append('l');
foldedString.Append('j');
break;
case '\u1EFB': // ỻ [LATIN SMALL LETTER MIDDLE-WELSH LL]
foldedString.Append('l');
foldedString.Append('l');
break;
case '\u02AA': // ʪ [LATIN SMALL LETTER LS DIGRAPH]
foldedString.Append('l');
foldedString.Append('s');
break;
case '\u02AB': // ʫ [LATIN SMALL LETTER LZ DIGRAPH]
foldedString.Append('l');
foldedString.Append('z');
break;
case '\u019C': // Ɯ [LATIN CAPITAL LETTER TURNED M]
case '\u1D0D': // ᴍ [LATIN LETTER SMALL CAPITAL M]
case '\u1E3E': // Ḿ [LATIN CAPITAL LETTER M WITH ACUTE]
case '\u1E40': // Ṁ [LATIN CAPITAL LETTER M WITH DOT ABOVE]
case '\u1E42': // Ṃ [LATIN CAPITAL LETTER M WITH DOT BELOW]
case '\u24C2': // Ⓜ [CIRCLED LATIN CAPITAL LETTER M]
case '\u2C6E': // Ɱ [LATIN CAPITAL LETTER M WITH HOOK]
case '\uA7FD': // ꟽ [LATIN EPIGRAPHIC LETTER INVERTED M]
case '\uA7FF': // ꟿ [LATIN EPIGRAPHIC LETTER ARCHAIC M]
case '\uFF2D': // M [FULLWIDTH LATIN CAPITAL LETTER M]
foldedString.Append('M');
break;
case '\u026F': // ɯ [LATIN SMALL LETTER TURNED M]
case '\u0270': // ɰ [LATIN SMALL LETTER TURNED M WITH LONG LEG]
case '\u0271': // ɱ [LATIN SMALL LETTER M WITH HOOK]
case '\u1D6F': // ᵯ [LATIN SMALL LETTER M WITH MIDDLE TILDE]
case '\u1D86': // ᶆ [LATIN SMALL LETTER M WITH PALATAL HOOK]
case '\u1E3F': // ḿ [LATIN SMALL LETTER M WITH ACUTE]
case '\u1E41': // ṁ [LATIN SMALL LETTER M WITH DOT ABOVE]
case '\u1E43': // ṃ [LATIN SMALL LETTER M WITH DOT BELOW]
case '\u24DC': // ⓜ [CIRCLED LATIN SMALL LETTER M]
case '\uFF4D': // m [FULLWIDTH LATIN SMALL LETTER M]
foldedString.Append('m');
break;
case '\u24A8': // ⒨ [PARENTHESIZED LATIN SMALL LETTER M]
foldedString.Append('(');
foldedString.Append('m');
foldedString.Append(')');
break;
case '\u00D1': // Ñ [LATIN CAPITAL LETTER N WITH TILDE]
case '\u0143': // Ń [LATIN CAPITAL LETTER N WITH ACUTE]
case '\u0145': // Ņ [LATIN CAPITAL LETTER N WITH CEDILLA]
case '\u0147': // Ň [LATIN CAPITAL LETTER N WITH CARON]
case '\u014A': // Ŋ http://en.wikipedia.org/wiki/Eng_(letter) [LATIN CAPITAL LETTER ENG]
case '\u019D': // Ɲ [LATIN CAPITAL LETTER N WITH LEFT HOOK]
case '\u01F8': // Ǹ [LATIN CAPITAL LETTER N WITH GRAVE]
case '\u0220': // Ƞ [LATIN CAPITAL LETTER N WITH LONG RIGHT LEG]
case '\u0274': // ɴ [LATIN LETTER SMALL CAPITAL N]
case '\u1D0E': // ᴎ [LATIN LETTER SMALL CAPITAL REVERSED N]
case '\u1E44': // Ṅ [LATIN CAPITAL LETTER N WITH DOT ABOVE]
case '\u1E46': // Ṇ [LATIN CAPITAL LETTER N WITH DOT BELOW]
case '\u1E48': // Ṉ [LATIN CAPITAL LETTER N WITH LINE BELOW]
case '\u1E4A': // Ṋ [LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW]
case '\u24C3': // Ⓝ [CIRCLED LATIN CAPITAL LETTER N]
case '\uFF2E': // N [FULLWIDTH LATIN CAPITAL LETTER N]
foldedString.Append('N');
break;
case '\u00F1': // ñ [LATIN SMALL LETTER N WITH TILDE]
case '\u0144': // ń [LATIN SMALL LETTER N WITH ACUTE]
case '\u0146': // ņ [LATIN SMALL LETTER N WITH CEDILLA]
case '\u0148': // ň [LATIN SMALL LETTER N WITH CARON]
case '\u0149': // ʼn [LATIN SMALL LETTER N PRECEDED BY APOSTROPHE]
case '\u014B': // ŋ http://en.wikipedia.org/wiki/Eng_(letter) [LATIN SMALL LETTER ENG]
case '\u019E': // ƞ [LATIN SMALL LETTER N WITH LONG RIGHT LEG]
case '\u01F9': // ǹ [LATIN SMALL LETTER N WITH GRAVE]
case '\u0235': // ȵ [LATIN SMALL LETTER N WITH CURL]
case '\u0272': // ɲ [LATIN SMALL LETTER N WITH LEFT HOOK]
case '\u0273': // ɳ [LATIN SMALL LETTER N WITH RETROFLEX HOOK]
case '\u1D70': // ᵰ [LATIN SMALL LETTER N WITH MIDDLE TILDE]
case '\u1D87': // ᶇ [LATIN SMALL LETTER N WITH PALATAL HOOK]
case '\u1E45': // ṅ [LATIN SMALL LETTER N WITH DOT ABOVE]
case '\u1E47': // ṇ [LATIN SMALL LETTER N WITH DOT BELOW]
case '\u1E49': // ṉ [LATIN SMALL LETTER N WITH LINE BELOW]
case '\u1E4B': // ṋ [LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW]
case '\u207F': // ⁿ [SUPERSCRIPT LATIN SMALL LETTER N]
case '\u24DD': // ⓝ [CIRCLED LATIN SMALL LETTER N]
case '\uFF4E': // n [FULLWIDTH LATIN SMALL LETTER N]
foldedString.Append('n');
break;
case '\u01CA': // NJ [LATIN CAPITAL LETTER NJ]
foldedString.Append('N');
foldedString.Append('J');
break;
case '\u01CB': // Nj [LATIN CAPITAL LETTER N WITH SMALL LETTER J]
foldedString.Append('N');
foldedString.Append('j');
break;
case '\u24A9': // ⒩ [PARENTHESIZED LATIN SMALL LETTER N]
foldedString.Append('(');
foldedString.Append('n');
foldedString.Append(')');
break;
case '\u01CC': // nj [LATIN SMALL LETTER NJ]
foldedString.Append('n');
foldedString.Append('j');
break;
case '\u00D2': // Ò [LATIN CAPITAL LETTER O WITH GRAVE]
case '\u00D3': // Ó [LATIN CAPITAL LETTER O WITH ACUTE]
case '\u00D4': // Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX]
case '\u00D5': // Õ [LATIN CAPITAL LETTER O WITH TILDE]
case '\u00D6': // Ö [LATIN CAPITAL LETTER O WITH DIAERESIS]
case '\u00D8': // Ø [LATIN CAPITAL LETTER O WITH STROKE]
case '\u014C': // Ō [LATIN CAPITAL LETTER O WITH MACRON]
case '\u014E': // Ŏ [LATIN CAPITAL LETTER O WITH BREVE]
case '\u0150': // Ő [LATIN CAPITAL LETTER O WITH DOUBLE ACUTE]
case '\u0186': // Ɔ [LATIN CAPITAL LETTER OPEN O]
case '\u019F': // Ɵ [LATIN CAPITAL LETTER O WITH MIDDLE TILDE]
case '\u01A0': // Ơ [LATIN CAPITAL LETTER O WITH HORN]
case '\u01D1': // Ǒ [LATIN CAPITAL LETTER O WITH CARON]
case '\u01EA': // Ǫ [LATIN CAPITAL LETTER O WITH OGONEK]
case '\u01EC': // Ǭ [LATIN CAPITAL LETTER O WITH OGONEK AND MACRON]
case '\u01FE': // Ǿ [LATIN CAPITAL LETTER O WITH STROKE AND ACUTE]
case '\u020C': // Ȍ [LATIN CAPITAL LETTER O WITH DOUBLE GRAVE]
case '\u020E': // Ȏ [LATIN CAPITAL LETTER O WITH INVERTED BREVE]
case '\u022A': // Ȫ [LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON]
case '\u022C': // Ȭ [LATIN CAPITAL LETTER O WITH TILDE AND MACRON]
case '\u022E': // Ȯ [LATIN CAPITAL LETTER O WITH DOT ABOVE]
case '\u0230': // Ȱ [LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON]
case '\u1D0F': // ᴏ [LATIN LETTER SMALL CAPITAL O]
case '\u1D10': // ᴐ [LATIN LETTER SMALL CAPITAL OPEN O]
case '\u1E4C': // Ṍ [LATIN CAPITAL LETTER O WITH TILDE AND ACUTE]
case '\u1E4E': // Ṏ [LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS]
case '\u1E50': // Ṑ [LATIN CAPITAL LETTER O WITH MACRON AND GRAVE]
case '\u1E52': // Ṓ [LATIN CAPITAL LETTER O WITH MACRON AND ACUTE]
case '\u1ECC': // Ọ [LATIN CAPITAL LETTER O WITH DOT BELOW]
case '\u1ECE': // Ỏ [LATIN CAPITAL LETTER O WITH HOOK ABOVE]
case '\u1ED0': // Ố [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE]
case '\u1ED2': // Ồ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE]
case '\u1ED4': // Ổ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE]
case '\u1ED6': // Ỗ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE]
case '\u1ED8': // Ộ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW]
case '\u1EDA': // Ớ [LATIN CAPITAL LETTER O WITH HORN AND ACUTE]
case '\u1EDC': // Ờ [LATIN CAPITAL LETTER O WITH HORN AND GRAVE]
case '\u1EDE': // Ở [LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE]
case '\u1EE0': // Ỡ [LATIN CAPITAL LETTER O WITH HORN AND TILDE]
case '\u1EE2': // Ợ [LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW]
case '\u24C4': // Ⓞ [CIRCLED LATIN CAPITAL LETTER O]
case '\uA74A': // Ꝋ [LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY]
case '\uA74C': // Ꝍ [LATIN CAPITAL LETTER O WITH LOOP]
case '\uFF2F': // O [FULLWIDTH LATIN CAPITAL LETTER O]
foldedString.Append('O');
break;
case '\u00F2': // ò [LATIN SMALL LETTER O WITH GRAVE]
case '\u00F3': // ó [LATIN SMALL LETTER O WITH ACUTE]
case '\u00F4': // ô [LATIN SMALL LETTER O WITH CIRCUMFLEX]
case '\u00F5': // õ [LATIN SMALL LETTER O WITH TILDE]
case '\u00F6': // ö [LATIN SMALL LETTER O WITH DIAERESIS]
case '\u00F8': // ø [LATIN SMALL LETTER O WITH STROKE]
case '\u014D': // ō [LATIN SMALL LETTER O WITH MACRON]
case '\u014F': // ŏ [LATIN SMALL LETTER O WITH BREVE]
case '\u0151': // ő [LATIN SMALL LETTER O WITH DOUBLE ACUTE]
case '\u01A1': // ơ [LATIN SMALL LETTER O WITH HORN]
case '\u01D2': // ǒ [LATIN SMALL LETTER O WITH CARON]
case '\u01EB': // ǫ [LATIN SMALL LETTER O WITH OGONEK]
case '\u01ED': // ǭ [LATIN SMALL LETTER O WITH OGONEK AND MACRON]
case '\u01FF': // ǿ [LATIN SMALL LETTER O WITH STROKE AND ACUTE]
case '\u020D': // ȍ [LATIN SMALL LETTER O WITH DOUBLE GRAVE]
case '\u020F': // ȏ [LATIN SMALL LETTER O WITH INVERTED BREVE]
case '\u022B': // ȫ [LATIN SMALL LETTER O WITH DIAERESIS AND MACRON]
case '\u022D': // ȭ [LATIN SMALL LETTER O WITH TILDE AND MACRON]
case '\u022F': // ȯ [LATIN SMALL LETTER O WITH DOT ABOVE]
case '\u0231': // ȱ [LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON]
case '\u0254': // ɔ [LATIN SMALL LETTER OPEN O]
case '\u0275': // ɵ [LATIN SMALL LETTER BARRED O]
case '\u1D16': // ᴖ [LATIN SMALL LETTER TOP HALF O]
case '\u1D17': // ᴗ [LATIN SMALL LETTER BOTTOM HALF O]
case '\u1D97': // ᶗ [LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK]
case '\u1E4D': // ṍ [LATIN SMALL LETTER O WITH TILDE AND ACUTE]
case '\u1E4F': // ṏ [LATIN SMALL LETTER O WITH TILDE AND DIAERESIS]
case '\u1E51': // ṑ [LATIN SMALL LETTER O WITH MACRON AND GRAVE]
case '\u1E53': // ṓ [LATIN SMALL LETTER O WITH MACRON AND ACUTE]
case '\u1ECD': // ọ [LATIN SMALL LETTER O WITH DOT BELOW]
case '\u1ECF': // ỏ [LATIN SMALL LETTER O WITH HOOK ABOVE]
case '\u1ED1': // ố [LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE]
case '\u1ED3': // ồ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE]
case '\u1ED5': // ổ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE]
case '\u1ED7': // ỗ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE]
case '\u1ED9': // ộ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW]
case '\u1EDB': // ớ [LATIN SMALL LETTER O WITH HORN AND ACUTE]
case '\u1EDD': // ờ [LATIN SMALL LETTER O WITH HORN AND GRAVE]
case '\u1EDF': // ở [LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE]
case '\u1EE1': // ỡ [LATIN SMALL LETTER O WITH HORN AND TILDE]
case '\u1EE3': // ợ [LATIN SMALL LETTER O WITH HORN AND DOT BELOW]
case '\u2092': // ₒ [LATIN SUBSCRIPT SMALL LETTER O]
case '\u24DE': // ⓞ [CIRCLED LATIN SMALL LETTER O]
case '\u2C7A': // ⱺ [LATIN SMALL LETTER O WITH LOW RING INSIDE]
case '\uA74B': // ꝋ [LATIN SMALL LETTER O WITH LONG STROKE OVERLAY]
case '\uA74D': // ꝍ [LATIN SMALL LETTER O WITH LOOP]
case '\uFF4F': // o [FULLWIDTH LATIN SMALL LETTER O]
foldedString.Append('o');
break;
case '\u0152': // Œ [LATIN CAPITAL LIGATURE OE]
case '\u0276': // ɶ [LATIN LETTER SMALL CAPITAL OE]
foldedString.Append('O');
foldedString.Append('E');
break;
case '\uA74E': // Ꝏ [LATIN CAPITAL LETTER OO]
foldedString.Append('O');
foldedString.Append('O');
break;
case '\u0222': // Ȣ http://en.wikipedia.org/wiki/OU [LATIN CAPITAL LETTER OU]
case '\u1D15': // ᴕ [LATIN LETTER SMALL CAPITAL OU]
foldedString.Append('O');
foldedString.Append('U');
break;
case '\u24AA': // ⒪ [PARENTHESIZED LATIN SMALL LETTER O]
foldedString.Append('(');
foldedString.Append('o');
foldedString.Append(')');
break;
case '\u0153': // œ [LATIN SMALL LIGATURE OE]
case '\u1D14': // ᴔ [LATIN SMALL LETTER TURNED OE]
foldedString.Append('o');
foldedString.Append('e');
break;
case '\uA74F': // ꝏ [LATIN SMALL LETTER OO]
foldedString.Append('o');
foldedString.Append('o');
break;
case '\u0223': // ȣ http://en.wikipedia.org/wiki/OU [LATIN SMALL LETTER OU]
foldedString.Append('o');
foldedString.Append('u');
break;
case '\u01A4': // Ƥ [LATIN CAPITAL LETTER P WITH HOOK]
case '\u1D18': // ᴘ [LATIN LETTER SMALL CAPITAL P]
case '\u1E54': // Ṕ [LATIN CAPITAL LETTER P WITH ACUTE]
case '\u1E56': // Ṗ [LATIN CAPITAL LETTER P WITH DOT ABOVE]
case '\u24C5': // Ⓟ [CIRCLED LATIN CAPITAL LETTER P]
case '\u2C63': // Ᵽ [LATIN CAPITAL LETTER P WITH STROKE]
case '\uA750': // Ꝑ [LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER]
case '\uA752': // Ꝓ [LATIN CAPITAL LETTER P WITH FLOURISH]
case '\uA754': // Ꝕ [LATIN CAPITAL LETTER P WITH SQUIRREL TAIL]
case '\uFF30': // P [FULLWIDTH LATIN CAPITAL LETTER P]
foldedString.Append('P');
break;
case '\u01A5': // ƥ [LATIN SMALL LETTER P WITH HOOK]
case '\u1D71': // ᵱ [LATIN SMALL LETTER P WITH MIDDLE TILDE]
case '\u1D7D': // ᵽ [LATIN SMALL LETTER P WITH STROKE]
case '\u1D88': // ᶈ [LATIN SMALL LETTER P WITH PALATAL HOOK]
case '\u1E55': // ṕ [LATIN SMALL LETTER P WITH ACUTE]
case '\u1E57': // ṗ [LATIN SMALL LETTER P WITH DOT ABOVE]
case '\u24DF': // ⓟ [CIRCLED LATIN SMALL LETTER P]
case '\uA751': // ꝑ [LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER]
case '\uA753': // ꝓ [LATIN SMALL LETTER P WITH FLOURISH]
case '\uA755': // ꝕ [LATIN SMALL LETTER P WITH SQUIRREL TAIL]
case '\uA7FC': // ꟼ [LATIN EPIGRAPHIC LETTER REVERSED P]
case '\uFF50': // p [FULLWIDTH LATIN SMALL LETTER P]
foldedString.Append('p');
break;
case '\u24AB': // ⒫ [PARENTHESIZED LATIN SMALL LETTER P]
foldedString.Append('(');
foldedString.Append('p');
foldedString.Append(')');
break;
case '\u024A': // Ɋ [LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL]
case '\u24C6': // Ⓠ [CIRCLED LATIN CAPITAL LETTER Q]
case '\uA756': // Ꝗ [LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER]
case '\uA758': // Ꝙ [LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE]
case '\uFF31': // Q [FULLWIDTH LATIN CAPITAL LETTER Q]
foldedString.Append('Q');
break;
case '\u0138': // ĸ http://en.wikipedia.org/wiki/Kra_(letter) [LATIN SMALL LETTER KRA]
case '\u024B': // ɋ [LATIN SMALL LETTER Q WITH HOOK TAIL]
case '\u02A0': // ʠ [LATIN SMALL LETTER Q WITH HOOK]
case '\u24E0': // ⓠ [CIRCLED LATIN SMALL LETTER Q]
case '\uA757': // ꝗ [LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER]
case '\uA759': // ꝙ [LATIN SMALL LETTER Q WITH DIAGONAL STROKE]
case '\uFF51': // q [FULLWIDTH LATIN SMALL LETTER Q]
foldedString.Append('q');
break;
case '\u24AC': // ⒬ [PARENTHESIZED LATIN SMALL LETTER Q]
foldedString.Append('(');
foldedString.Append('q');
foldedString.Append(')');
break;
case '\u0239': // ȹ [LATIN SMALL LETTER QP DIGRAPH]
foldedString.Append('q');
foldedString.Append('p');
break;
case '\u0154': // Ŕ [LATIN CAPITAL LETTER R WITH ACUTE]
case '\u0156': // Ŗ [LATIN CAPITAL LETTER R WITH CEDILLA]
case '\u0158': // Ř [LATIN CAPITAL LETTER R WITH CARON]
case '\u0210': // Ȓ [LATIN CAPITAL LETTER R WITH DOUBLE GRAVE]
case '\u0212': // Ȓ [LATIN CAPITAL LETTER R WITH INVERTED BREVE]
case '\u024C': // Ɍ [LATIN CAPITAL LETTER R WITH STROKE]
case '\u0280': // ʀ [LATIN LETTER SMALL CAPITAL R]
case '\u0281': // ʁ [LATIN LETTER SMALL CAPITAL INVERTED R]
case '\u1D19': // ᴙ [LATIN LETTER SMALL CAPITAL REVERSED R]
case '\u1D1A': // ᴚ [LATIN LETTER SMALL CAPITAL TURNED R]
case '\u1E58': // Ṙ [LATIN CAPITAL LETTER R WITH DOT ABOVE]
case '\u1E5A': // Ṛ [LATIN CAPITAL LETTER R WITH DOT BELOW]
case '\u1E5C': // Ṝ [LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON]
case '\u1E5E': // Ṟ [LATIN CAPITAL LETTER R WITH LINE BELOW]
case '\u24C7': // Ⓡ [CIRCLED LATIN CAPITAL LETTER R]
case '\u2C64': // Ɽ [LATIN CAPITAL LETTER R WITH TAIL]
case '\uA75A': // Ꝛ [LATIN CAPITAL LETTER R ROTUNDA]
case '\uA782': // Ꞃ [LATIN CAPITAL LETTER INSULAR R]
case '\uFF32': // R [FULLWIDTH LATIN CAPITAL LETTER R]
foldedString.Append('R');
break;
case '\u0155': // ŕ [LATIN SMALL LETTER R WITH ACUTE]
case '\u0157': // ŗ [LATIN SMALL LETTER R WITH CEDILLA]
case '\u0159': // ř [LATIN SMALL LETTER R WITH CARON]
case '\u0211': // ȑ [LATIN SMALL LETTER R WITH DOUBLE GRAVE]
case '\u0213': // ȓ [LATIN SMALL LETTER R WITH INVERTED BREVE]
case '\u024D': // ɍ [LATIN SMALL LETTER R WITH STROKE]
case '\u027C': // ɼ [LATIN SMALL LETTER R WITH LONG LEG]
case '\u027D': // ɽ [LATIN SMALL LETTER R WITH TAIL]
case '\u027E': // ɾ [LATIN SMALL LETTER R WITH FISHHOOK]
case '\u027F': // ɿ [LATIN SMALL LETTER REVERSED R WITH FISHHOOK]
case '\u1D63': // ᵣ [LATIN SUBSCRIPT SMALL LETTER R]
case '\u1D72': // ᵲ [LATIN SMALL LETTER R WITH MIDDLE TILDE]
case '\u1D73': // ᵳ [LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE]
case '\u1D89': // ᶉ [LATIN SMALL LETTER R WITH PALATAL HOOK]
case '\u1E59': // ṙ [LATIN SMALL LETTER R WITH DOT ABOVE]
case '\u1E5B': // ṛ [LATIN SMALL LETTER R WITH DOT BELOW]
case '\u1E5D': // ṝ [LATIN SMALL LETTER R WITH DOT BELOW AND MACRON]
case '\u1E5F': // ṟ [LATIN SMALL LETTER R WITH LINE BELOW]
case '\u24E1': // ⓡ [CIRCLED LATIN SMALL LETTER R]
case '\uA75B': // ꝛ [LATIN SMALL LETTER R ROTUNDA]
case '\uA783': // ꞃ [LATIN SMALL LETTER INSULAR R]
case '\uFF52': // r [FULLWIDTH LATIN SMALL LETTER R]
foldedString.Append('r');
break;
case '\u24AD': // ⒭ [PARENTHESIZED LATIN SMALL LETTER R]
foldedString.Append('(');
foldedString.Append('r');
foldedString.Append(')');
break;
case '\u015A': // Ś [LATIN CAPITAL LETTER S WITH ACUTE]
case '\u015C': // Ŝ [LATIN CAPITAL LETTER S WITH CIRCUMFLEX]
case '\u015E': // Ş [LATIN CAPITAL LETTER S WITH CEDILLA]
case '\u0160': // Š [LATIN CAPITAL LETTER S WITH CARON]
case '\u0218': // Ș [LATIN CAPITAL LETTER S WITH COMMA BELOW]
case '\u1E60': // Ṡ [LATIN CAPITAL LETTER S WITH DOT ABOVE]
case '\u1E62': // Ṣ [LATIN CAPITAL LETTER S WITH DOT BELOW]
case '\u1E64': // Ṥ [LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE]
case '\u1E66': // Ṧ [LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE]
case '\u1E68': // Ṩ [LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE]
case '\u24C8': // Ⓢ [CIRCLED LATIN CAPITAL LETTER S]
case '\uA731': // ꜱ [LATIN LETTER SMALL CAPITAL S]
case '\uA785': // ꞅ [LATIN SMALL LETTER INSULAR S]
case '\uFF33': // S [FULLWIDTH LATIN CAPITAL LETTER S]
foldedString.Append('S');
break;
case '\u015B': // ś [LATIN SMALL LETTER S WITH ACUTE]
case '\u015D': // ŝ [LATIN SMALL LETTER S WITH CIRCUMFLEX]
case '\u015F': // ş [LATIN SMALL LETTER S WITH CEDILLA]
case '\u0161': // š [LATIN SMALL LETTER S WITH CARON]
case '\u017F': // ſ http://en.wikipedia.org/wiki/Long_S [LATIN SMALL LETTER LONG S]
case '\u0219': // ș [LATIN SMALL LETTER S WITH COMMA BELOW]
case '\u023F': // ȿ [LATIN SMALL LETTER S WITH SWASH TAIL]
case '\u0282': // ʂ [LATIN SMALL LETTER S WITH HOOK]
case '\u1D74': // ᵴ [LATIN SMALL LETTER S WITH MIDDLE TILDE]
case '\u1D8A': // ᶊ [LATIN SMALL LETTER S WITH PALATAL HOOK]
case '\u1E61': // ṡ [LATIN SMALL LETTER S WITH DOT ABOVE]
case '\u1E63': // ṣ [LATIN SMALL LETTER S WITH DOT BELOW]
case '\u1E65': // ṥ [LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE]
case '\u1E67': // ṧ [LATIN SMALL LETTER S WITH CARON AND DOT ABOVE]
case '\u1E69': // ṩ [LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE]
case '\u1E9C': // ẜ [LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE]
case '\u1E9D': // ẝ [LATIN SMALL LETTER LONG S WITH HIGH STROKE]
case '\u24E2': // ⓢ [CIRCLED LATIN SMALL LETTER S]
case '\uA784': // Ꞅ [LATIN CAPITAL LETTER INSULAR S]
case '\uFF53': // s [FULLWIDTH LATIN SMALL LETTER S]
foldedString.Append('s');
break;
case '\u1E9E': // ẞ [LATIN CAPITAL LETTER SHARP S]
foldedString.Append('S');
foldedString.Append('S');
break;
case '\u24AE': // ⒮ [PARENTHESIZED LATIN SMALL LETTER S]
foldedString.Append('(');
foldedString.Append('s');
foldedString.Append(')');
break;
case '\u00DF': // ß [LATIN SMALL LETTER SHARP S]
foldedString.Append('s');
foldedString.Append('s');
break;
case '\uFB06': // st [LATIN SMALL LIGATURE ST]
foldedString.Append('s');
foldedString.Append('t');
break;
case '\u0162': // Ţ [LATIN CAPITAL LETTER T WITH CEDILLA]
case '\u0164': // Ť [LATIN CAPITAL LETTER T WITH CARON]
case '\u0166': // Ŧ [LATIN CAPITAL LETTER T WITH STROKE]
case '\u01AC': // Ƭ [LATIN CAPITAL LETTER T WITH HOOK]
case '\u01AE': // Ʈ [LATIN CAPITAL LETTER T WITH RETROFLEX HOOK]
case '\u021A': // Ț [LATIN CAPITAL LETTER T WITH COMMA BELOW]
case '\u023E': // Ⱦ [LATIN CAPITAL LETTER T WITH DIAGONAL STROKE]
case '\u1D1B': // ᴛ [LATIN LETTER SMALL CAPITAL T]
case '\u1E6A': // Ṫ [LATIN CAPITAL LETTER T WITH DOT ABOVE]
case '\u1E6C': // Ṭ [LATIN CAPITAL LETTER T WITH DOT BELOW]
case '\u1E6E': // Ṯ [LATIN CAPITAL LETTER T WITH LINE BELOW]
case '\u1E70': // Ṱ [LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW]
case '\u24C9': // Ⓣ [CIRCLED LATIN CAPITAL LETTER T]
case '\uA786': // Ꞇ [LATIN CAPITAL LETTER INSULAR T]
case '\uFF34': // T [FULLWIDTH LATIN CAPITAL LETTER T]
foldedString.Append('T');
break;
case '\u0163': // ţ [LATIN SMALL LETTER T WITH CEDILLA]
case '\u0165': // ť [LATIN SMALL LETTER T WITH CARON]
case '\u0167': // ŧ [LATIN SMALL LETTER T WITH STROKE]
case '\u01AB': // ƫ [LATIN SMALL LETTER T WITH PALATAL HOOK]
case '\u01AD': // ƭ [LATIN SMALL LETTER T WITH HOOK]
case '\u021B': // ț [LATIN SMALL LETTER T WITH COMMA BELOW]
case '\u0236': // ȶ [LATIN SMALL LETTER T WITH CURL]
case '\u0287': // ʇ [LATIN SMALL LETTER TURNED T]
case '\u0288': // ʈ [LATIN SMALL LETTER T WITH RETROFLEX HOOK]
case '\u1D75': // ᵵ [LATIN SMALL LETTER T WITH MIDDLE TILDE]
case '\u1E6B': // ṫ [LATIN SMALL LETTER T WITH DOT ABOVE]
case '\u1E6D': // ṭ [LATIN SMALL LETTER T WITH DOT BELOW]
case '\u1E6F': // ṯ [LATIN SMALL LETTER T WITH LINE BELOW]
case '\u1E71': // ṱ [LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW]
case '\u1E97': // ẗ [LATIN SMALL LETTER T WITH DIAERESIS]
case '\u24E3': // ⓣ [CIRCLED LATIN SMALL LETTER T]
case '\u2C66': // ⱦ [LATIN SMALL LETTER T WITH DIAGONAL STROKE]
case '\uFF54': // t [FULLWIDTH LATIN SMALL LETTER T]
foldedString.Append('t');
break;
case '\u00DE': // Þ [LATIN CAPITAL LETTER THORN]
case '\uA766': // Ꝧ [LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER]
foldedString.Append('T');
foldedString.Append('H');
break;
case '\uA728': // Ꜩ [LATIN CAPITAL LETTER TZ]
foldedString.Append('T');
foldedString.Append('Z');
break;
case '\u24AF': // ⒯ [PARENTHESIZED LATIN SMALL LETTER T]
foldedString.Append('(');
foldedString.Append('t');
foldedString.Append(')');
break;
case '\u02A8': // ʨ [LATIN SMALL LETTER TC DIGRAPH WITH CURL]
foldedString.Append('t');
foldedString.Append('c');
break;
case '\u00FE': // þ [LATIN SMALL LETTER THORN]
case '\u1D7A': // ᵺ [LATIN SMALL LETTER TH WITH STRIKETHROUGH]
case '\uA767': // ꝧ [LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER]
foldedString.Append('t');
foldedString.Append('h');
break;
case '\u02A6': // ʦ [LATIN SMALL LETTER TS DIGRAPH]
foldedString.Append('t');
foldedString.Append('s');
break;
case '\uA729': // ꜩ [LATIN SMALL LETTER TZ]
foldedString.Append('t');
foldedString.Append('z');
break;
case '\u00D9': // Ù [LATIN CAPITAL LETTER U WITH GRAVE]
case '\u00DA': // Ú [LATIN CAPITAL LETTER U WITH ACUTE]
case '\u00DB': // Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX]
case '\u00DC': // Ü [LATIN CAPITAL LETTER U WITH DIAERESIS]
case '\u0168': // Ũ [LATIN CAPITAL LETTER U WITH TILDE]
case '\u016A': // Ū [LATIN CAPITAL LETTER U WITH MACRON]
case '\u016C': // Ŭ [LATIN CAPITAL LETTER U WITH BREVE]
case '\u016E': // Ů [LATIN CAPITAL LETTER U WITH RING ABOVE]
case '\u0170': // Ű [LATIN CAPITAL LETTER U WITH DOUBLE ACUTE]
case '\u0172': // Ų [LATIN CAPITAL LETTER U WITH OGONEK]
case '\u01AF': // Ư [LATIN CAPITAL LETTER U WITH HORN]
case '\u01D3': // Ǔ [LATIN CAPITAL LETTER U WITH CARON]
case '\u01D5': // Ǖ [LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON]
case '\u01D7': // Ǘ [LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE]
case '\u01D9': // Ǚ [LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON]
case '\u01DB': // Ǜ [LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE]
case '\u0214': // Ȕ [LATIN CAPITAL LETTER U WITH DOUBLE GRAVE]
case '\u0216': // Ȗ [LATIN CAPITAL LETTER U WITH INVERTED BREVE]
case '\u0244': // Ʉ [LATIN CAPITAL LETTER U BAR]
case '\u1D1C': // ᴜ [LATIN LETTER SMALL CAPITAL U]
case '\u1D7E': // ᵾ [LATIN SMALL CAPITAL LETTER U WITH STROKE]
case '\u1E72': // Ṳ [LATIN CAPITAL LETTER U WITH DIAERESIS BELOW]
case '\u1E74': // Ṵ [LATIN CAPITAL LETTER U WITH TILDE BELOW]
case '\u1E76': // Ṷ [LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW]
case '\u1E78': // Ṹ [LATIN CAPITAL LETTER U WITH TILDE AND ACUTE]
case '\u1E7A': // Ṻ [LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS]
case '\u1EE4': // Ụ [LATIN CAPITAL LETTER U WITH DOT BELOW]
case '\u1EE6': // Ủ [LATIN CAPITAL LETTER U WITH HOOK ABOVE]
case '\u1EE8': // Ứ [LATIN CAPITAL LETTER U WITH HORN AND ACUTE]
case '\u1EEA': // Ừ [LATIN CAPITAL LETTER U WITH HORN AND GRAVE]
case '\u1EEC': // Ử [LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE]
case '\u1EEE': // Ữ [LATIN CAPITAL LETTER U WITH HORN AND TILDE]
case '\u1EF0': // Ự [LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW]
case '\u24CA': // Ⓤ [CIRCLED LATIN CAPITAL LETTER U]
case '\uFF35': // U [FULLWIDTH LATIN CAPITAL LETTER U]
foldedString.Append('U');
break;
case '\u00F9': // ù [LATIN SMALL LETTER U WITH GRAVE]
case '\u00FA': // ú [LATIN SMALL LETTER U WITH ACUTE]
case '\u00FB': // û [LATIN SMALL LETTER U WITH CIRCUMFLEX]
case '\u00FC': // ü [LATIN SMALL LETTER U WITH DIAERESIS]
case '\u0169': // ũ [LATIN SMALL LETTER U WITH TILDE]
case '\u016B': // ū [LATIN SMALL LETTER U WITH MACRON]
case '\u016D': // ŭ [LATIN SMALL LETTER U WITH BREVE]
case '\u016F': // ů [LATIN SMALL LETTER U WITH RING ABOVE]
case '\u0171': // ű [LATIN SMALL LETTER U WITH DOUBLE ACUTE]
case '\u0173': // ų [LATIN SMALL LETTER U WITH OGONEK]
case '\u01B0': // ư [LATIN SMALL LETTER U WITH HORN]
case '\u01D4': // ǔ [LATIN SMALL LETTER U WITH CARON]
case '\u01D6': // ǖ [LATIN SMALL LETTER U WITH DIAERESIS AND MACRON]
case '\u01D8': // ǘ [LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE]
case '\u01DA': // ǚ [LATIN SMALL LETTER U WITH DIAERESIS AND CARON]
case '\u01DC': // ǜ [LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE]
case '\u0215': // ȕ [LATIN SMALL LETTER U WITH DOUBLE GRAVE]
case '\u0217': // ȗ [LATIN SMALL LETTER U WITH INVERTED BREVE]
case '\u0289': // ʉ [LATIN SMALL LETTER U BAR]
case '\u1D64': // ᵤ [LATIN SUBSCRIPT SMALL LETTER U]
case '\u1D99': // ᶙ [LATIN SMALL LETTER U WITH RETROFLEX HOOK]
case '\u1E73': // ṳ [LATIN SMALL LETTER U WITH DIAERESIS BELOW]
case '\u1E75': // ṵ [LATIN SMALL LETTER U WITH TILDE BELOW]
case '\u1E77': // ṷ [LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW]
case '\u1E79': // ṹ [LATIN SMALL LETTER U WITH TILDE AND ACUTE]
case '\u1E7B': // ṻ [LATIN SMALL LETTER U WITH MACRON AND DIAERESIS]
case '\u1EE5': // ụ [LATIN SMALL LETTER U WITH DOT BELOW]
case '\u1EE7': // ủ [LATIN SMALL LETTER U WITH HOOK ABOVE]
case '\u1EE9': // ứ [LATIN SMALL LETTER U WITH HORN AND ACUTE]
case '\u1EEB': // ừ [LATIN SMALL LETTER U WITH HORN AND GRAVE]
case '\u1EED': // ử [LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE]
case '\u1EEF': // ữ [LATIN SMALL LETTER U WITH HORN AND TILDE]
case '\u1EF1': // ự [LATIN SMALL LETTER U WITH HORN AND DOT BELOW]
case '\u24E4': // ⓤ [CIRCLED LATIN SMALL LETTER U]
case '\uFF55': // u [FULLWIDTH LATIN SMALL LETTER U]
foldedString.Append('u');
break;
case '\u24B0': // ⒰ [PARENTHESIZED LATIN SMALL LETTER U]
foldedString.Append('(');
foldedString.Append('u');
foldedString.Append(')');
break;
case '\u1D6B': // ᵫ [LATIN SMALL LETTER UE]
foldedString.Append('u');
foldedString.Append('e');
break;
case '\u01B2': // Ʋ [LATIN CAPITAL LETTER V WITH HOOK]
case '\u0245': // Ʌ [LATIN CAPITAL LETTER TURNED V]
case '\u1D20': // ᴠ [LATIN LETTER SMALL CAPITAL V]
case '\u1E7C': // Ṽ [LATIN CAPITAL LETTER V WITH TILDE]
case '\u1E7E': // Ṿ [LATIN CAPITAL LETTER V WITH DOT BELOW]
case '\u1EFC': // Ỽ [LATIN CAPITAL LETTER MIDDLE-WELSH V]
case '\u24CB': // Ⓥ [CIRCLED LATIN CAPITAL LETTER V]
case '\uA75E': // Ꝟ [LATIN CAPITAL LETTER V WITH DIAGONAL STROKE]
case '\uA768': // Ꝩ [LATIN CAPITAL LETTER VEND]
case '\uFF36': // V [FULLWIDTH LATIN CAPITAL LETTER V]
foldedString.Append('V');
break;
case '\u028B': // ʋ [LATIN SMALL LETTER V WITH HOOK]
case '\u028C': // ʌ [LATIN SMALL LETTER TURNED V]
case '\u1D65': // ᵥ [LATIN SUBSCRIPT SMALL LETTER V]
case '\u1D8C': // ᶌ [LATIN SMALL LETTER V WITH PALATAL HOOK]
case '\u1E7D': // ṽ [LATIN SMALL LETTER V WITH TILDE]
case '\u1E7F': // ṿ [LATIN SMALL LETTER V WITH DOT BELOW]
case '\u24E5': // ⓥ [CIRCLED LATIN SMALL LETTER V]
case '\u2C71': // ⱱ [LATIN SMALL LETTER V WITH RIGHT HOOK]
case '\u2C74': // ⱴ [LATIN SMALL LETTER V WITH CURL]
case '\uA75F': // ꝟ [LATIN SMALL LETTER V WITH DIAGONAL STROKE]
case '\uFF56': // v [FULLWIDTH LATIN SMALL LETTER V]
foldedString.Append('v');
break;
case '\uA760': // Ꝡ [LATIN CAPITAL LETTER VY]
foldedString.Append('V');
foldedString.Append('Y');
break;
case '\u24B1': // ⒱ [PARENTHESIZED LATIN SMALL LETTER V]
foldedString.Append('(');
foldedString.Append('v');
foldedString.Append(')');
break;
case '\uA761': // ꝡ [LATIN SMALL LETTER VY]
foldedString.Append('v');
foldedString.Append('y');
break;
case '\u0174': // Ŵ [LATIN CAPITAL LETTER W WITH CIRCUMFLEX]
case '\u01F7': // Ƿ http://en.wikipedia.org/wiki/Wynn [LATIN CAPITAL LETTER WYNN]
case '\u1D21': // ᴡ [LATIN LETTER SMALL CAPITAL W]
case '\u1E80': // Ẁ [LATIN CAPITAL LETTER W WITH GRAVE]
case '\u1E82': // Ẃ [LATIN CAPITAL LETTER W WITH ACUTE]
case '\u1E84': // Ẅ [LATIN CAPITAL LETTER W WITH DIAERESIS]
case '\u1E86': // Ẇ [LATIN CAPITAL LETTER W WITH DOT ABOVE]
case '\u1E88': // Ẉ [LATIN CAPITAL LETTER W WITH DOT BELOW]
case '\u24CC': // Ⓦ [CIRCLED LATIN CAPITAL LETTER W]
case '\u2C72': // Ⱳ [LATIN CAPITAL LETTER W WITH HOOK]
case '\uFF37': // W [FULLWIDTH LATIN CAPITAL LETTER W]
foldedString.Append('W');
break;
case '\u0175': // ŵ [LATIN SMALL LETTER W WITH CIRCUMFLEX]
case '\u01BF': // ƿ http://en.wikipedia.org/wiki/Wynn [LATIN LETTER WYNN]
case '\u028D': // ʍ [LATIN SMALL LETTER TURNED W]
case '\u1E81': // ẁ [LATIN SMALL LETTER W WITH GRAVE]
case '\u1E83': // ẃ [LATIN SMALL LETTER W WITH ACUTE]
case '\u1E85': // ẅ [LATIN SMALL LETTER W WITH DIAERESIS]
case '\u1E87': // ẇ [LATIN SMALL LETTER W WITH DOT ABOVE]
case '\u1E89': // ẉ [LATIN SMALL LETTER W WITH DOT BELOW]
case '\u1E98': // ẘ [LATIN SMALL LETTER W WITH RING ABOVE]
case '\u24E6': // ⓦ [CIRCLED LATIN SMALL LETTER W]
case '\u2C73': // ⱳ [LATIN SMALL LETTER W WITH HOOK]
case '\uFF57': // w [FULLWIDTH LATIN SMALL LETTER W]
foldedString.Append('w');
break;
case '\u24B2': // ⒲ [PARENTHESIZED LATIN SMALL LETTER W]
foldedString.Append('(');
foldedString.Append('w');
foldedString.Append(')');
break;
case '\u1E8A': // Ẋ [LATIN CAPITAL LETTER X WITH DOT ABOVE]
case '\u1E8C': // Ẍ [LATIN CAPITAL LETTER X WITH DIAERESIS]
case '\u24CD': // Ⓧ [CIRCLED LATIN CAPITAL LETTER X]
case '\uFF38': // X [FULLWIDTH LATIN CAPITAL LETTER X]
foldedString.Append('X');
break;
case '\u1D8D': // ᶍ [LATIN SMALL LETTER X WITH PALATAL HOOK]
case '\u1E8B': // ẋ [LATIN SMALL LETTER X WITH DOT ABOVE]
case '\u1E8D': // ẍ [LATIN SMALL LETTER X WITH DIAERESIS]
case '\u2093': // ₓ [LATIN SUBSCRIPT SMALL LETTER X]
case '\u24E7': // ⓧ [CIRCLED LATIN SMALL LETTER X]
case '\uFF58': // x [FULLWIDTH LATIN SMALL LETTER X]
foldedString.Append('x');
break;
case '\u24B3': // ⒳ [PARENTHESIZED LATIN SMALL LETTER X]
foldedString.Append('(');
foldedString.Append('x');
foldedString.Append(')');
break;
case '\u00DD': // Ý [LATIN CAPITAL LETTER Y WITH ACUTE]
case '\u0176': // Ŷ [LATIN CAPITAL LETTER Y WITH CIRCUMFLEX]
case '\u0178': // Ÿ [LATIN CAPITAL LETTER Y WITH DIAERESIS]
case '\u01B3': // Ƴ [LATIN CAPITAL LETTER Y WITH HOOK]
case '\u0232': // Ȳ [LATIN CAPITAL LETTER Y WITH MACRON]
case '\u024E': // Ɏ [LATIN CAPITAL LETTER Y WITH STROKE]
case '\u028F': // ʏ [LATIN LETTER SMALL CAPITAL Y]
case '\u1E8E': // Ẏ [LATIN CAPITAL LETTER Y WITH DOT ABOVE]
case '\u1EF2': // Ỳ [LATIN CAPITAL LETTER Y WITH GRAVE]
case '\u1EF4': // Ỵ [LATIN CAPITAL LETTER Y WITH DOT BELOW]
case '\u1EF6': // Ỷ [LATIN CAPITAL LETTER Y WITH HOOK ABOVE]
case '\u1EF8': // Ỹ [LATIN CAPITAL LETTER Y WITH TILDE]
case '\u1EFE': // Ỿ [LATIN CAPITAL LETTER Y WITH LOOP]
case '\u24CE': // Ⓨ [CIRCLED LATIN CAPITAL LETTER Y]
case '\uFF39': // Y [FULLWIDTH LATIN CAPITAL LETTER Y]
foldedString.Append('Y');
break;
case '\u00FD': // ý [LATIN SMALL LETTER Y WITH ACUTE]
case '\u00FF': // ÿ [LATIN SMALL LETTER Y WITH DIAERESIS]
case '\u0177': // ŷ [LATIN SMALL LETTER Y WITH CIRCUMFLEX]
case '\u01B4': // ƴ [LATIN SMALL LETTER Y WITH HOOK]
case '\u0233': // ȳ [LATIN SMALL LETTER Y WITH MACRON]
case '\u024F': // ɏ [LATIN SMALL LETTER Y WITH STROKE]
case '\u028E': // ʎ [LATIN SMALL LETTER TURNED Y]
case '\u1E8F': // ẏ [LATIN SMALL LETTER Y WITH DOT ABOVE]
case '\u1E99': // ẙ [LATIN SMALL LETTER Y WITH RING ABOVE]
case '\u1EF3': // ỳ [LATIN SMALL LETTER Y WITH GRAVE]
case '\u1EF5': // ỵ [LATIN SMALL LETTER Y WITH DOT BELOW]
case '\u1EF7': // ỷ [LATIN SMALL LETTER Y WITH HOOK ABOVE]
case '\u1EF9': // ỹ [LATIN SMALL LETTER Y WITH TILDE]
case '\u1EFF': // ỿ [LATIN SMALL LETTER Y WITH LOOP]
case '\u24E8': // ⓨ [CIRCLED LATIN SMALL LETTER Y]
case '\uFF59': // y [FULLWIDTH LATIN SMALL LETTER Y]
foldedString.Append('y');
break;
case '\u24B4': // ⒴ [PARENTHESIZED LATIN SMALL LETTER Y]
foldedString.Append('(');
foldedString.Append('y');
foldedString.Append(')');
break;
case '\u0179': // Ź [LATIN CAPITAL LETTER Z WITH ACUTE]
case '\u017B': // Ż [LATIN CAPITAL LETTER Z WITH DOT ABOVE]
case '\u017D': // Ž [LATIN CAPITAL LETTER Z WITH CARON]
case '\u01B5': // Ƶ [LATIN CAPITAL LETTER Z WITH STROKE]
case '\u021C': // Ȝ http://en.wikipedia.org/wiki/Yogh [LATIN CAPITAL LETTER YOGH]
case '\u0224': // Ȥ [LATIN CAPITAL LETTER Z WITH HOOK]
case '\u1D22': // ᴢ [LATIN LETTER SMALL CAPITAL Z]
case '\u1E90': // Ẑ [LATIN CAPITAL LETTER Z WITH CIRCUMFLEX]
case '\u1E92': // Ẓ [LATIN CAPITAL LETTER Z WITH DOT BELOW]
case '\u1E94': // Ẕ [LATIN CAPITAL LETTER Z WITH LINE BELOW]
case '\u24CF': // Ⓩ [CIRCLED LATIN CAPITAL LETTER Z]
case '\u2C6B': // Ⱬ [LATIN CAPITAL LETTER Z WITH DESCENDER]
case '\uA762': // Ꝣ [LATIN CAPITAL LETTER VISIGOTHIC Z]
case '\uFF3A': // Z [FULLWIDTH LATIN CAPITAL LETTER Z]
foldedString.Append('Z');
break;
case '\u017A': // ź [LATIN SMALL LETTER Z WITH ACUTE]
case '\u017C': // ż [LATIN SMALL LETTER Z WITH DOT ABOVE]
case '\u017E': // ž [LATIN SMALL LETTER Z WITH CARON]
case '\u01B6': // ƶ [LATIN SMALL LETTER Z WITH STROKE]
case '\u021D': // ȝ http://en.wikipedia.org/wiki/Yogh [LATIN SMALL LETTER YOGH]
case '\u0225': // ȥ [LATIN SMALL LETTER Z WITH HOOK]
case '\u0240': // ɀ [LATIN SMALL LETTER Z WITH SWASH TAIL]
case '\u0290': // ʐ [LATIN SMALL LETTER Z WITH RETROFLEX HOOK]
case '\u0291': // ʑ [LATIN SMALL LETTER Z WITH CURL]
case '\u1D76': // ᵶ [LATIN SMALL LETTER Z WITH MIDDLE TILDE]
case '\u1D8E': // ᶎ [LATIN SMALL LETTER Z WITH PALATAL HOOK]
case '\u1E91': // ẑ [LATIN SMALL LETTER Z WITH CIRCUMFLEX]
case '\u1E93': // ẓ [LATIN SMALL LETTER Z WITH DOT BELOW]
case '\u1E95': // ẕ [LATIN SMALL LETTER Z WITH LINE BELOW]
case '\u24E9': // ⓩ [CIRCLED LATIN SMALL LETTER Z]
case '\u2C6C': // ⱬ [LATIN SMALL LETTER Z WITH DESCENDER]
case '\uA763': // ꝣ [LATIN SMALL LETTER VISIGOTHIC Z]
case '\uFF5A': // z [FULLWIDTH LATIN SMALL LETTER Z]
foldedString.Append('z');
break;
case '\u24B5': // ⒵ [PARENTHESIZED LATIN SMALL LETTER Z]
foldedString.Append('(');
foldedString.Append('z');
foldedString.Append(')');
break;
case '\u2070': // ⁰ [SUPERSCRIPT ZERO]
case '\u2080': // ₀ [SUBSCRIPT ZERO]
case '\u24EA': // ⓪ [CIRCLED DIGIT ZERO]
case '\u24FF': // ⓿ [NEGATIVE CIRCLED DIGIT ZERO]
case '\uFF10': // 0 [FULLWIDTH DIGIT ZERO]
foldedString.Append('0');
break;
case '\u00B9': // ¹ [SUPERSCRIPT ONE]
case '\u2081': // ₁ [SUBSCRIPT ONE]
case '\u2460': // ① [CIRCLED DIGIT ONE]
case '\u24F5': // ⓵ [DOUBLE CIRCLED DIGIT ONE]
case '\u2776': // ❶ [DINGBAT NEGATIVE CIRCLED DIGIT ONE]
case '\u2780': // ➀ [DINGBAT CIRCLED SANS-SERIF DIGIT ONE]
case '\u278A': // ➊ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE]
case '\uFF11': // 1 [FULLWIDTH DIGIT ONE]
foldedString.Append('1');
break;
case '\u2488': // ⒈ [DIGIT ONE FULL STOP]
foldedString.Append('1');
foldedString.Append('.');
break;
case '\u2474': // ⑴ [PARENTHESIZED DIGIT ONE]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append(')');
break;
case '\u00B2': // ² [SUPERSCRIPT TWO]
case '\u2082': // ₂ [SUBSCRIPT TWO]
case '\u2461': // ② [CIRCLED DIGIT TWO]
case '\u24F6': // ⓶ [DOUBLE CIRCLED DIGIT TWO]
case '\u2777': // ❷ [DINGBAT NEGATIVE CIRCLED DIGIT TWO]
case '\u2781': // ➁ [DINGBAT CIRCLED SANS-SERIF DIGIT TWO]
case '\u278B': // ➋ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO]
case '\uFF12': // 2 [FULLWIDTH DIGIT TWO]
foldedString.Append('2');
break;
case '\u2489': // ⒉ [DIGIT TWO FULL STOP]
foldedString.Append('2');
foldedString.Append('.');
break;
case '\u2475': // ⑵ [PARENTHESIZED DIGIT TWO]
foldedString.Append('(');
foldedString.Append('2');
foldedString.Append(')');
break;
case '\u00B3': // ³ [SUPERSCRIPT THREE]
case '\u2083': // ₃ [SUBSCRIPT THREE]
case '\u2462': // ③ [CIRCLED DIGIT THREE]
case '\u24F7': // ⓷ [DOUBLE CIRCLED DIGIT THREE]
case '\u2778': // ❸ [DINGBAT NEGATIVE CIRCLED DIGIT THREE]
case '\u2782': // ➂ [DINGBAT CIRCLED SANS-SERIF DIGIT THREE]
case '\u278C': // ➌ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE]
case '\uFF13': // 3 [FULLWIDTH DIGIT THREE]
foldedString.Append('3');
break;
case '\u248A': // ⒊ [DIGIT THREE FULL STOP]
foldedString.Append('3');
foldedString.Append('.');
break;
case '\u2476': // ⑶ [PARENTHESIZED DIGIT THREE]
foldedString.Append('(');
foldedString.Append('3');
foldedString.Append(')');
break;
case '\u2074': // ⁴ [SUPERSCRIPT FOUR]
case '\u2084': // ₄ [SUBSCRIPT FOUR]
case '\u2463': // ④ [CIRCLED DIGIT FOUR]
case '\u24F8': // ⓸ [DOUBLE CIRCLED DIGIT FOUR]
case '\u2779': // ❹ [DINGBAT NEGATIVE CIRCLED DIGIT FOUR]
case '\u2783': // ➃ [DINGBAT CIRCLED SANS-SERIF DIGIT FOUR]
case '\u278D': // ➍ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR]
case '\uFF14': // 4 [FULLWIDTH DIGIT FOUR]
foldedString.Append('4');
break;
case '\u248B': // ⒋ [DIGIT FOUR FULL STOP]
foldedString.Append('4');
foldedString.Append('.');
break;
case '\u2477': // ⑷ [PARENTHESIZED DIGIT FOUR]
foldedString.Append('(');
foldedString.Append('4');
foldedString.Append(')');
break;
case '\u2075': // ⁵ [SUPERSCRIPT FIVE]
case '\u2085': // ₅ [SUBSCRIPT FIVE]
case '\u2464': // ⑤ [CIRCLED DIGIT FIVE]
case '\u24F9': // ⓹ [DOUBLE CIRCLED DIGIT FIVE]
case '\u277A': // ❺ [DINGBAT NEGATIVE CIRCLED DIGIT FIVE]
case '\u2784': // ➄ [DINGBAT CIRCLED SANS-SERIF DIGIT FIVE]
case '\u278E': // ➎ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE]
case '\uFF15': // 5 [FULLWIDTH DIGIT FIVE]
foldedString.Append('5');
break;
case '\u248C': // ⒌ [DIGIT FIVE FULL STOP]
foldedString.Append('5');
foldedString.Append('.');
break;
case '\u2478': // ⑸ [PARENTHESIZED DIGIT FIVE]
foldedString.Append('(');
foldedString.Append('5');
foldedString.Append(')');
break;
case '\u2076': // ⁶ [SUPERSCRIPT SIX]
case '\u2086': // ₆ [SUBSCRIPT SIX]
case '\u2465': // ⑥ [CIRCLED DIGIT SIX]
case '\u24FA': // ⓺ [DOUBLE CIRCLED DIGIT SIX]
case '\u277B': // ❻ [DINGBAT NEGATIVE CIRCLED DIGIT SIX]
case '\u2785': // ➅ [DINGBAT CIRCLED SANS-SERIF DIGIT SIX]
case '\u278F': // ➏ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX]
case '\uFF16': // 6 [FULLWIDTH DIGIT SIX]
foldedString.Append('6');
break;
case '\u248D': // ⒍ [DIGIT SIX FULL STOP]
foldedString.Append('6');
foldedString.Append('.');
break;
case '\u2479': // ⑹ [PARENTHESIZED DIGIT SIX]
foldedString.Append('(');
foldedString.Append('6');
foldedString.Append(')');
break;
case '\u2077': // ⁷ [SUPERSCRIPT SEVEN]
case '\u2087': // ₇ [SUBSCRIPT SEVEN]
case '\u2466': // ⑦ [CIRCLED DIGIT SEVEN]
case '\u24FB': // ⓻ [DOUBLE CIRCLED DIGIT SEVEN]
case '\u277C': // ❼ [DINGBAT NEGATIVE CIRCLED DIGIT SEVEN]
case '\u2786': // ➆ [DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN]
case '\u2790': // ➐ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN]
case '\uFF17': // 7 [FULLWIDTH DIGIT SEVEN]
foldedString.Append('7');
break;
case '\u248E': // ⒎ [DIGIT SEVEN FULL STOP]
foldedString.Append('7');
foldedString.Append('.');
break;
case '\u247A': // ⑺ [PARENTHESIZED DIGIT SEVEN]
foldedString.Append('(');
foldedString.Append('7');
foldedString.Append(')');
break;
case '\u2078': // ⁸ [SUPERSCRIPT EIGHT]
case '\u2088': // ₈ [SUBSCRIPT EIGHT]
case '\u2467': // ⑧ [CIRCLED DIGIT EIGHT]
case '\u24FC': // ⓼ [DOUBLE CIRCLED DIGIT EIGHT]
case '\u277D': // ❽ [DINGBAT NEGATIVE CIRCLED DIGIT EIGHT]
case '\u2787': // ➇ [DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT]
case '\u2791': // ➑ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT]
case '\uFF18': // 8 [FULLWIDTH DIGIT EIGHT]
foldedString.Append('8');
break;
case '\u248F': // ⒏ [DIGIT EIGHT FULL STOP]
foldedString.Append('8');
foldedString.Append('.');
break;
case '\u247B': // ⑻ [PARENTHESIZED DIGIT EIGHT]
foldedString.Append('(');
foldedString.Append('8');
foldedString.Append(')');
break;
case '\u2079': // ⁹ [SUPERSCRIPT NINE]
case '\u2089': // ₉ [SUBSCRIPT NINE]
case '\u2468': // ⑨ [CIRCLED DIGIT NINE]
case '\u24FD': // ⓽ [DOUBLE CIRCLED DIGIT NINE]
case '\u277E': // ❾ [DINGBAT NEGATIVE CIRCLED DIGIT NINE]
case '\u2788': // ➈ [DINGBAT CIRCLED SANS-SERIF DIGIT NINE]
case '\u2792': // ➒ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE]
case '\uFF19': // 9 [FULLWIDTH DIGIT NINE]
foldedString.Append('9');
break;
case '\u2490': // ⒐ [DIGIT NINE FULL STOP]
foldedString.Append('9');
foldedString.Append('.');
break;
case '\u247C': // ⑼ [PARENTHESIZED DIGIT NINE]
foldedString.Append('(');
foldedString.Append('9');
foldedString.Append(')');
break;
case '\u2469': // ⑩ [CIRCLED NUMBER TEN]
case '\u24FE': // ⓾ [DOUBLE CIRCLED NUMBER TEN]
case '\u277F': // ❿ [DINGBAT NEGATIVE CIRCLED NUMBER TEN]
case '\u2789': // ➉ [DINGBAT CIRCLED SANS-SERIF NUMBER TEN]
case '\u2793': // ➓ [DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN]
foldedString.Append('1');
foldedString.Append('0');
break;
case '\u2491': // ⒑ [NUMBER TEN FULL STOP]
foldedString.Append('1');
foldedString.Append('0');
foldedString.Append('.');
break;
case '\u247D': // ⑽ [PARENTHESIZED NUMBER TEN]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append('0');
foldedString.Append(')');
break;
case '\u246A': // ⑪ [CIRCLED NUMBER ELEVEN]
case '\u24EB': // ⓫ [NEGATIVE CIRCLED NUMBER ELEVEN]
foldedString.Append('1');
foldedString.Append('1');
break;
case '\u2492': // ⒒ [NUMBER ELEVEN FULL STOP]
foldedString.Append('1');
foldedString.Append('1');
foldedString.Append('.');
break;
case '\u247E': // ⑾ [PARENTHESIZED NUMBER ELEVEN]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append('1');
foldedString.Append(')');
break;
case '\u246B': // ⑫ [CIRCLED NUMBER TWELVE]
case '\u24EC': // ⓬ [NEGATIVE CIRCLED NUMBER TWELVE]
foldedString.Append('1');
foldedString.Append('2');
break;
case '\u2493': // ⒓ [NUMBER TWELVE FULL STOP]
foldedString.Append('1');
foldedString.Append('2');
foldedString.Append('.');
break;
case '\u247F': // ⑿ [PARENTHESIZED NUMBER TWELVE]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append('2');
foldedString.Append(')');
break;
case '\u246C': // ⑬ [CIRCLED NUMBER THIRTEEN]
case '\u24ED': // ⓭ [NEGATIVE CIRCLED NUMBER THIRTEEN]
foldedString.Append('1');
foldedString.Append('3');
break;
case '\u2494': // ⒔ [NUMBER THIRTEEN FULL STOP]
foldedString.Append('1');
foldedString.Append('3');
foldedString.Append('.');
break;
case '\u2480': // ⒀ [PARENTHESIZED NUMBER THIRTEEN]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append('3');
foldedString.Append(')');
break;
case '\u246D': // ⑭ [CIRCLED NUMBER FOURTEEN]
case '\u24EE': // ⓮ [NEGATIVE CIRCLED NUMBER FOURTEEN]
foldedString.Append('1');
foldedString.Append('4');
break;
case '\u2495': // ⒕ [NUMBER FOURTEEN FULL STOP]
foldedString.Append('1');
foldedString.Append('4');
foldedString.Append('.');
break;
case '\u2481': // ⒁ [PARENTHESIZED NUMBER FOURTEEN]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append('4');
foldedString.Append(')');
break;
case '\u246E': // ⑮ [CIRCLED NUMBER FIFTEEN]
case '\u24EF': // ⓯ [NEGATIVE CIRCLED NUMBER FIFTEEN]
foldedString.Append('1');
foldedString.Append('5');
break;
case '\u2496': // ⒖ [NUMBER FIFTEEN FULL STOP]
foldedString.Append('1');
foldedString.Append('5');
foldedString.Append('.');
break;
case '\u2482': // ⒂ [PARENTHESIZED NUMBER FIFTEEN]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append('5');
foldedString.Append(')');
break;
case '\u246F': // ⑯ [CIRCLED NUMBER SIXTEEN]
case '\u24F0': // ⓰ [NEGATIVE CIRCLED NUMBER SIXTEEN]
foldedString.Append('1');
foldedString.Append('6');
break;
case '\u2497': // ⒗ [NUMBER SIXTEEN FULL STOP]
foldedString.Append('1');
foldedString.Append('6');
foldedString.Append('.');
break;
case '\u2483': // ⒃ [PARENTHESIZED NUMBER SIXTEEN]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append('6');
foldedString.Append(')');
break;
case '\u2470': // ⑰ [CIRCLED NUMBER SEVENTEEN]
case '\u24F1': // ⓱ [NEGATIVE CIRCLED NUMBER SEVENTEEN]
foldedString.Append('1');
foldedString.Append('7');
break;
case '\u2498': // ⒘ [NUMBER SEVENTEEN FULL STOP]
foldedString.Append('1');
foldedString.Append('7');
foldedString.Append('.');
break;
case '\u2484': // ⒄ [PARENTHESIZED NUMBER SEVENTEEN]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append('7');
foldedString.Append(')');
break;
case '\u2471': // ⑱ [CIRCLED NUMBER EIGHTEEN]
case '\u24F2': // ⓲ [NEGATIVE CIRCLED NUMBER EIGHTEEN]
foldedString.Append('1');
foldedString.Append('8');
break;
case '\u2499': // ⒙ [NUMBER EIGHTEEN FULL STOP]
foldedString.Append('1');
foldedString.Append('8');
foldedString.Append('.');
break;
case '\u2485': // ⒅ [PARENTHESIZED NUMBER EIGHTEEN]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append('8');
foldedString.Append(')');
break;
case '\u2472': // ⑲ [CIRCLED NUMBER NINETEEN]
case '\u24F3': // ⓳ [NEGATIVE CIRCLED NUMBER NINETEEN]
foldedString.Append('1');
foldedString.Append('9');
break;
case '\u249A': // ⒚ [NUMBER NINETEEN FULL STOP]
foldedString.Append('1');
foldedString.Append('9');
foldedString.Append('.');
break;
case '\u2486': // ⒆ [PARENTHESIZED NUMBER NINETEEN]
foldedString.Append('(');
foldedString.Append('1');
foldedString.Append('9');
foldedString.Append(')');
break;
case '\u2473': // ⑳ [CIRCLED NUMBER TWENTY]
case '\u24F4': // ⓴ [NEGATIVE CIRCLED NUMBER TWENTY]
foldedString.Append('2');
foldedString.Append('0');
break;
case '\u249B': // ⒛ [NUMBER TWENTY FULL STOP]
foldedString.Append('2');
foldedString.Append('0');
foldedString.Append('.');
break;
case '\u2487': // ⒇ [PARENTHESIZED NUMBER TWENTY]
foldedString.Append('(');
foldedString.Append('2');
foldedString.Append('0');
foldedString.Append(')');
break;
case '\u00AB': // « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK]
case '\u00BB': // » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK]
case '\u201C': // " [LEFT DOUBLE QUOTATION MARK]
case '\u201D': // " [RIGHT DOUBLE QUOTATION MARK]
case '\u201E': // „ [DOUBLE LOW-9 QUOTATION MARK]
case '\u2033': // ″ [DOUBLE PRIME]
case '\u2036': // ‶ [REVERSED DOUBLE PRIME]
case '\u275D': // ❝ [HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT]
case '\u275E': // ❞ [HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT]
case '\u276E': // ❮ [HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT]
case '\u276F': // ❯ [HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT]
case '\uFF02': // " [FULLWIDTH QUOTATION MARK]
foldedString.Append('"');
break;
case '\u2018': // ‘ [LEFT SINGLE QUOTATION MARK]
case '\u2019': // ’ [RIGHT SINGLE QUOTATION MARK]
case '\u201A': // ‚ [SINGLE LOW-9 QUOTATION MARK]
case '\u201B': // ‛ [SINGLE HIGH-REVERSED-9 QUOTATION MARK]
case '\u2032': // ′ [PRIME]
case '\u2035': // ‵ [REVERSED PRIME]
case '\u2039': // ‹ [SINGLE LEFT-POINTING ANGLE QUOTATION MARK]
case '\u203A': // › [SINGLE RIGHT-POINTING ANGLE QUOTATION MARK]
case '\u275B': // ❛ [HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT]
case '\u275C': // ❜ [HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT]
case '\uFF07': // ' [FULLWIDTH APOSTROPHE]
foldedString.Append('\'');
break;
case '\u2010': // ‐ [HYPHEN]
case '\u2011': // ‑ [NON-BREAKING HYPHEN]
case '\u2012': // ‒ [FIGURE DASH]
case '\u2013': // – [EN DASH]
case '\u2014': // — [EM DASH]
case '\u207B': // ⁻ [SUPERSCRIPT MINUS]
case '\u208B': // ₋ [SUBSCRIPT MINUS]
case '\uFF0D': // - [FULLWIDTH HYPHEN-MINUS]
foldedString.Append('-');
break;
case '\u2045': // ⁅ [LEFT SQUARE BRACKET WITH QUILL]
case '\u2772': // ❲ [LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT]
case '\uFF3B': // [ [FULLWIDTH LEFT SQUARE BRACKET]
foldedString.Append('[');
break;
case '\u2046': // ⁆ [RIGHT SQUARE BRACKET WITH QUILL]
case '\u2773': // ❳ [LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT]
case '\uFF3D': // ] [FULLWIDTH RIGHT SQUARE BRACKET]
foldedString.Append(']');
break;
case '\u207D': // ⁽ [SUPERSCRIPT LEFT PARENTHESIS]
case '\u208D': // ₍ [SUBSCRIPT LEFT PARENTHESIS]
case '\u2768': // ❨ [MEDIUM LEFT PARENTHESIS ORNAMENT]
case '\u276A': // ❪ [MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT]
case '\uFF08': // ( [FULLWIDTH LEFT PARENTHESIS]
foldedString.Append('(');
break;
case '\u2E28': // ⸨ [LEFT DOUBLE PARENTHESIS]
foldedString.Append('(');
foldedString.Append('(');
break;
case '\u207E': // ⁾ [SUPERSCRIPT RIGHT PARENTHESIS]
case '\u208E': // ₎ [SUBSCRIPT RIGHT PARENTHESIS]
case '\u2769': // ❩ [MEDIUM RIGHT PARENTHESIS ORNAMENT]
case '\u276B': // ❫ [MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT]
case '\uFF09': // ) [FULLWIDTH RIGHT PARENTHESIS]
foldedString.Append(')');
break;
case '\u2E29': // ⸩ [RIGHT DOUBLE PARENTHESIS]
foldedString.Append(')');
foldedString.Append(')');
break;
case '\u276C': // ❬ [MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT]
case '\u2770': // ❰ [HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT]
case '\uFF1C': // < [FULLWIDTH LESS-THAN SIGN]
foldedString.Append('<');
break;
case '\u276D': // ❭ [MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT]
case '\u2771': // ❱ [HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT]
case '\uFF1E': // > [FULLWIDTH GREATER-THAN SIGN]
foldedString.Append('>');
break;
case '\u2774': // ❴ [MEDIUM LEFT CURLY BRACKET ORNAMENT]
case '\uFF5B': // { [FULLWIDTH LEFT CURLY BRACKET]
foldedString.Append('{');
break;
case '\u2775': // ❵ [MEDIUM RIGHT CURLY BRACKET ORNAMENT]
case '\uFF5D': // } [FULLWIDTH RIGHT CURLY BRACKET]
foldedString.Append('}');
break;
case '\u207A': // ⁺ [SUPERSCRIPT PLUS SIGN]
case '\u208A': // ₊ [SUBSCRIPT PLUS SIGN]
case '\uFF0B': // + [FULLWIDTH PLUS SIGN]
foldedString.Append('+');
break;
case '\u207C': // ⁼ [SUPERSCRIPT EQUALS SIGN]
case '\u208C': // ₌ [SUBSCRIPT EQUALS SIGN]
case '\uFF1D': // = [FULLWIDTH EQUALS SIGN]
foldedString.Append('=');
break;
case '\uFF01': // ! [FULLWIDTH EXCLAMATION MARK]
foldedString.Append('!');
break;
case '\u203C': // ‼ [DOUBLE EXCLAMATION MARK]
foldedString.Append('!');
foldedString.Append('!');
break;
case '\u2049': // ⁉ [EXCLAMATION QUESTION MARK]
foldedString.Append('!');
foldedString.Append('?');
break;
case '\uFF03': // # [FULLWIDTH NUMBER SIGN]
foldedString.Append('#');
break;
case '\uFF04': // $ [FULLWIDTH DOLLAR SIGN]
foldedString.Append('$');
break;
case '\u2052': // ⁒ [COMMERCIAL MINUS SIGN]
case '\uFF05': // % [FULLWIDTH PERCENT SIGN]
foldedString.Append('%');
break;
case '\uFF06': // & [FULLWIDTH AMPERSAND]
foldedString.Append('&');
break;
case '\u204E': // ⁎ [LOW ASTERISK]
case '\uFF0A': // * [FULLWIDTH ASTERISK]
foldedString.Append('*');
break;
case '\uFF0C': // , [FULLWIDTH COMMA]
foldedString.Append(',');
break;
case '\uFF0E': // . [FULLWIDTH FULL STOP]
foldedString.Append('.');
break;
case '\u2044': // ⁄ [FRACTION SLASH]
case '\uFF0F': // / [FULLWIDTH SOLIDUS]
foldedString.Append('/');
break;
case '\uFF1A': // : [FULLWIDTH COLON]
foldedString.Append(':');
break;
case '\u204F': // ⁏ [REVERSED SEMICOLON]
case '\uFF1B': // ; [FULLWIDTH SEMICOLON]
foldedString.Append(';');
break;
case '\uFF1F': // ? [FULLWIDTH QUESTION MARK]
foldedString.Append('?');
break;
case '\u2047': // ⁇ [DOUBLE QUESTION MARK]
foldedString.Append('?');
foldedString.Append('?');
break;
case '\u2048': // ⁈ [QUESTION EXCLAMATION MARK]
foldedString.Append('?');
foldedString.Append('!');
break;
case '\uFF20': // @ [FULLWIDTH COMMERCIAL AT]
foldedString.Append('@');
break;
case '\uFF3C': // \ [FULLWIDTH REVERSE SOLIDUS]
foldedString.Append('\\');
break;
case '\u2038': // ‸ [CARET]
case '\uFF3E': // ^ [FULLWIDTH CIRCUMFLEX ACCENT]
foldedString.Append('^');
break;
case '\uFF3F': // _ [FULLWIDTH LOW LINE]
foldedString.Append('_');
break;
case '\u2053': // ⁓ [SWUNG DASH]
case '\uFF5E': // ~ [FULLWIDTH TILDE]
foldedString.Append('~');
break;
default:
foldedString.Append(c);
break;
}
}
}
return foldedString.ToString();
}
}
@isakigus
Copy link

isakigus commented Nov 21, 2024

private static readonly Dictionary<char, string> _unicodeToAsciiMap = new()
{
    // A Mappings
    { '\u00C0', "A" }, // À  [LATIN CAPITAL LETTER A WITH GRAVE]
    { '\u00C1', "A" }, // Á  [LATIN CAPITAL LETTER A WITH ACUTE]
    { '\u00C2', "A" }, // Â  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX]
    { '\u00C3', "A" }, // Ã  [LATIN CAPITAL LETTER A WITH TILDE]
    { '\u00C4', "A" }, // Ä  [LATIN CAPITAL LETTER A WITH DIAERESIS]
    { '\u00C5', "A" }, // Å  [LATIN CAPITAL LETTER A WITH RING ABOVE]
    { '\u0100', "A" }, // Ā  [LATIN CAPITAL LETTER A WITH MACRON]
    { '\u0102', "A" }, // Ă  [LATIN CAPITAL LETTER A WITH BREVE]
    { '\u0104', "A" }, // Ą  [LATIN CAPITAL LETTER A WITH OGONEK]
    { '\u018F', "A" }, // Ə  http://en.wikipedia.org/wiki/Schwa  [LATIN CAPITAL LETTER SCHWA]
    { '\u01CD', "A" }, // Ǎ  [LATIN CAPITAL LETTER A WITH CARON]
    { '\u01DE', "A" }, // Ǟ  [LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON]
    { '\u01E0', "A" }, // Ǡ  [LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON]
    { '\u01FA', "A" }, // Ǻ  [LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE]
    { '\u0200', "A" }, // Ȁ  [LATIN CAPITAL LETTER A WITH DOUBLE GRAVE]
    { '\u0202', "A" }, // Ȃ  [LATIN CAPITAL LETTER A WITH INVERTED BREVE]
    { '\u0226', "A" }, // Ȧ  [LATIN CAPITAL LETTER A WITH DOT ABOVE]
    { '\u023A', "A" }, // Ⱥ  [LATIN CAPITAL LETTER A WITH STROKE]
    { '\u1D00', "A" }, // ᴀ  [LATIN LETTER SMALL CAPITAL A]
    { '\u1E00', "A" }, // Ḁ  [LATIN CAPITAL LETTER A WITH RING BELOW]
    { '\u1EA0', "A" }, // Ạ  [LATIN CAPITAL LETTER A WITH DOT BELOW]
    { '\u1EA2', "A" }, // Ả  [LATIN CAPITAL LETTER A WITH HOOK ABOVE]
    { '\u1EA4', "A" }, // Ấ  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE]
    { '\u1EA6', "A" }, // Ầ  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE]
    { '\u1EA8', "A" }, // Ẩ  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE]
    { '\u1EAA', "A" }, // Ẫ  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE]
    { '\u1EAC', "A" }, // Ậ  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW]
    { '\u1EAE', "A" }, // Ắ  [LATIN CAPITAL LETTER A WITH BREVE AND ACUTE]
    { '\u1EB0', "A" }, // Ằ  [LATIN CAPITAL LETTER A WITH BREVE AND GRAVE]
    { '\u1EB2', "A" }, // Ẳ  [LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE]
    { '\u1EB4', "A" }, // Ẵ  [LATIN CAPITAL LETTER A WITH BREVE AND TILDE]
    { '\u1EB6', "A" }, // Ặ  [LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW]
    { '\u24B6', "A" }, // Ⓐ  [CIRCLED LATIN CAPITAL LETTER A]
    { '\uFF21', "A" }, // A  [FULLWIDTH LATIN CAPITAL LETTER A]

    // a Mappings
    { '\u00E0', "a" }, // à  [LATIN SMALL LETTER A WITH GRAVE]
    { '\u00E1', "a" }, // á  [LATIN SMALL LETTER A WITH ACUTE]
    { '\u00E2', "a" }, // â  [LATIN SMALL LETTER A WITH CIRCUMFLEX]
    { '\u00E3', "a" }, // ã  [LATIN SMALL LETTER A WITH TILDE]
    { '\u00E4', "a" }, // ä  [LATIN SMALL LETTER A WITH DIAERESIS]
    { '\u00E5', "a" }, // å  [LATIN SMALL LETTER A WITH RING ABOVE]
    { '\u0101', "a" }, // ā  [LATIN SMALL LETTER A WITH MACRON]
    { '\u0103', "a" }, // ă  [LATIN SMALL LETTER A WITH BREVE]
    { '\u0105', "a" }, // ą  [LATIN SMALL LETTER A WITH OGONEK]
    { '\u01CE', "a" }, // ǎ  [LATIN SMALL LETTER A WITH CARON]
    { '\u01DF', "a" }, // ǟ  [LATIN SMALL LETTER A WITH DIAERESIS AND MACRON]
    { '\u01E1', "a" }, // ǡ  [LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON]
    { '\u01FB', "a" }, // ǻ  [LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE]
    { '\u0201', "a" }, // ȁ  [LATIN SMALL LETTER A WITH DOUBLE GRAVE]
    { '\u0203', "a" }, // ȃ  [LATIN SMALL LETTER A WITH INVERTED BREVE]
    { '\u0227', "a" }, // ȧ  [LATIN SMALL LETTER A WITH DOT ABOVE]
    { '\u0250', "a" }, // ɐ  [LATIN SMALL LETTER TURNED A]
    { '\u0259', "a" }, // ə  [LATIN SMALL LETTER SCHWA]
    { '\u025A', "a" }, // ɚ  [LATIN SMALL LETTER SCHWA WITH HOOK]
    { '\u1D8F', "a" }, // ᶏ  [LATIN SMALL LETTER A WITH RETROFLEX HOOK]
    { '\u1D95', "a" }, // ᶕ  [LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK]
    { '\u1E01', "a" }, // ạ  [LATIN SMALL LETTER A WITH RING BELOW]
    { '\u1E9A', "a" }, // ả  [LATIN SMALL LETTER A WITH RIGHT HALF RING]
    { '\u1EA1', "a" }, // ạ  [LATIN SMALL LETTER A WITH DOT BELOW]
    { '\u1EA3', "a" }, // ả  [LATIN SMALL LETTER A WITH HOOK ABOVE]
    { '\u1EA5', "a" }, // ấ  [LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE]
    { '\u1EA7', "a" }, // ầ  [LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE]
    { '\u1EA9', "a" }, // ẩ  [LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE]
    { '\u1EAB', "a" }, // ẫ  [LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE]
    { '\u1EAD', "a" }, // ậ  [LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW]
    { '\u1EAF', "a" }, // ắ  [LATIN SMALL LETTER A WITH BREVE AND ACUTE]
    { '\u1EB1', "a" }, // ằ  [LATIN SMALL LETTER A WITH BREVE AND GRAVE]
    { '\u1EB3', "a" }, // ẳ  [LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE]
    { '\u1EB5', "a" }, // ẵ  [LATIN SMALL LETTER A WITH BREVE AND TILDE]
    { '\u1EB7', "a" }, // ặ  [LATIN SMALL LETTER A WITH BREVE AND DOT BELOW]
    { '\u2090', "a" }, // ₐ  [LATIN SUBSCRIPT SMALL LETTER A]
    { '\u2094', "a" }, // ₔ  [LATIN SUBSCRIPT SMALL LETTER SCHWA]
    { '\u24D0', "a" }, // ⓐ  [CIRCLED LATIN SMALL LETTER A]
    { '\u2C65', "a" }, // ⱥ  [LATIN SMALL LETTER A WITH STROKE]
    { '\u2C6F', "a" }, // Ɐ  [LATIN CAPITAL LETTER TURNED A]
    { '\uFF41', "a" }, // a  [FULLWIDTH LATIN SMALL LETTER A]

    // AA Mappings
    { '\uA732', "AA" }, // Ꜳ  [LATIN CAPITAL LETTER AA]

    // AE Mappings
    { '\u00C6', "AE" }, // Æ  [LATIN CAPITAL LETTER AE]
    { '\u01E2', "AE" }, // Ǣ  [LATIN CAPITAL LETTER AE WITH MACRON]
    { '\u01FC', "AE" }, // Ǽ  [LATIN CAPITAL LETTER AE WITH ACUTE]
    { '\u1D01', "AE" }, // ᴁ  [LATIN LETTER SMALL CAPITAL AE]

    // AO Mappings
    { '\uA734', "AO" }, // Ꜵ  [LATIN CAPITAL LETTER AO]

    // AU Mappings
    { '\uA736', "AU" }, // Ꜷ  [LATIN CAPITAL LETTER AU]

    // AV Mappings
    { '\uA738', "AV" }, // Ꜹ  [LATIN CAPITAL LETTER AV]
    { '\uA73A', "AV" }, // Ꜻ  [LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR]

    // AY Mappings
    { '\uA73C', "AY" }, // Ꜽ  [LATIN CAPITAL LETTER AY]

    // (a) Mappings
    { '\u249C', "(a)" }, // ⒜  [PARENTHESIZED LATIN SMALL LETTER A]

    // aa Mappings
    { '\uA733', "aa" }, // ꜳ  [LATIN SMALL LETTER AA]

    // ae Mappings
    { '\u00E6', "ae" }, // æ  [LATIN SMALL LETTER AE]
    { '\u01E3', "ae" }, // ǣ  [LATIN SMALL LETTER AE WITH MACRON]
    { '\u01FD', "ae" }, // ǽ  [LATIN SMALL LETTER AE WITH ACUTE]
    { '\u1D02', "ae" }, // ᴂ  [LATIN SMALL LETTER TURNED AE]

    // ao Mappings
    { '\uA735', "ao" }, // ꜵ  [LATIN SMALL LETTER AO]

    // au Mappings
    { '\uA737', "au" }, // ꜷ  [LATIN SMALL LETTER AU]

    // av Mappings
    { '\uA739', "av" }, // ꜹ  [LATIN SMALL LETTER AV]
    { '\uA73B', "av" }, // ꜻ  [LATIN SMALL LETTER AV WITH HORIZONTAL BAR]

    // ay Mappings
    { '\uA73D', "ay" }, // ꜽ  [LATIN SMALL LETTER AY]

    // B Mappings
    { '\u0181', "B" }, // Ɓ  [LATIN CAPITAL LETTER B WITH HOOK]
    { '\u0182', "B" }, // Ƃ  [LATIN CAPITAL LETTER B WITH TOPBAR]
    { '\u0243', "B" }, // Ƀ  [LATIN CAPITAL LETTER B WITH STROKE]
    { '\u0299', "B" }, // ʙ  [LATIN LETTER SMALL CAPITAL B]
    { '\u1D03', "B" }, // ᴃ  [LATIN LETTER SMALL CAPITAL BARRED B]
    { '\u1E02', "B" }, // Ḃ  [LATIN CAPITAL LETTER B WITH DOT ABOVE]
    { '\u1E04', "B" }, // Ḅ  [LATIN CAPITAL LETTER B WITH DOT BELOW]
    { '\u1E06', "B" }, // Ḇ  [LATIN CAPITAL LETTER B WITH LINE BELOW]
    { '\u24B7', "B" }, // Ⓑ  [CIRCLED LATIN CAPITAL LETTER B]
    { '\uFF22', "B" }, // B  [FULLWIDTH LATIN CAPITAL LETTER B]

    // b Mappings
    { '\u0180', "b" }, // ƀ  [LATIN SMALL LETTER B WITH STROKE]
    { '\u0183', "b" }, // ƃ  [LATIN SMALL LETTER B WITH TOPBAR]
    { '\u0253', "b" }, // ɓ  [LATIN SMALL LETTER B WITH HOOK]
    { '\u1D6C', "b" }, // ᵬ  [LATIN SMALL LETTER B WITH MIDDLE TILDE]
    { '\u1D80', "b" }, // ᶀ  [LATIN SMALL LETTER B WITH PALATAL HOOK]
    { '\u1E03', "b" }, // ḃ  [LATIN SMALL LETTER B WITH DOT ABOVE]
    { '\u1E05', "b" }, // ḅ  [LATIN SMALL LETTER B WITH DOT BELOW]
    { '\u1E07', "b" }, // ḇ  [LATIN SMALL LETTER B WITH LINE BELOW]
    { '\u24D1', "b" }, // ⓑ  [CIRCLED LATIN SMALL LETTER B]
    { '\uFF42', "b" }, // b  [FULLWIDTH LATIN SMALL LETTER B]

    // (b) Mappings
    { '\u249D', "(b)" }, // ⒝  [PARENTHESIZED LATIN SMALL LETTER B]

    // C Mappings
    { '\u00C7', "C" }, // Ç  [LATIN CAPITAL LETTER C WITH CEDILLA]
    { '\u0106', "C" }, // Ć  [LATIN CAPITAL LETTER C WITH ACUTE]
    { '\u0108', "C" }, // Ĉ  [LATIN CAPITAL LETTER C WITH CIRCUMFLEX]
    { '\u010A', "C" }, // Ċ  [LATIN CAPITAL LETTER C WITH DOT ABOVE]
    { '\u010C', "C" }, // Č  [LATIN CAPITAL LETTER C WITH CARON]
    { '\u0187', "C" }, // Ƈ  [LATIN CAPITAL LETTER C WITH HOOK]
    { '\u023B', "C" }, // Ȼ  [LATIN CAPITAL LETTER C WITH STROKE]
    { '\u0297', "C" }, // ʗ  [LATIN LETTER STRETCHED C]
    { '\u1D04', "C" }, // ᴄ  [LATIN LETTER SMALL CAPITAL C]
    { '\u1E08', "C" }, // Ḉ  [LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE]
    { '\u24B8', "C" }, // Ⓒ  [CIRCLED LATIN CAPITAL LETTER C]
    { '\uFF23', "C" }, // C  [FULLWIDTH LATIN CAPITAL LETTER C]

    // c Mappings
    { '\u00E7', "c" }, // ç  [LATIN SMALL LETTER C WITH CEDILLA]
    { '\u0107', "c" }, // ć  [LATIN SMALL LETTER C WITH ACUTE]
    { '\u0109', "c" }, // ĉ  [LATIN SMALL LETTER C WITH CIRCUMFLEX]
    { '\u010B', "c" }, // ċ  [LATIN SMALL LETTER C WITH DOT ABOVE]
    { '\u010D', "c" }, // č  [LATIN SMALL LETTER C WITH CARON]
    { '\u0188', "c" }, // ƈ  [LATIN SMALL LETTER C WITH HOOK]
    { '\u023C', "c" }, // ȼ  [LATIN SMALL LETTER C WITH STROKE]
    { '\u0255', "c" }, // ɕ  [LATIN SMALL LETTER C WITH CURL]
    { '\u1E09', "c" }, // ḉ  [LATIN SMALL LETTER C WITH CEDILLA AND ACUTE]
    { '\u2184', "c" }, // ↄ  [LATIN SMALL LETTER REVERSED C]
    { '\u24D2', "c" }, // ⓒ  [CIRCLED LATIN SMALL LETTER C]
    { '\uA73E', "c" }, // Ꜿ  [LATIN CAPITAL LETTER REVERSED C WITH DOT]
    { '\uA73F', "c" }, // ꜿ  [LATIN SMALL LETTER REVERSED C WITH DOT]
    { '\uFF43', "c" }, // c  [FULLWIDTH LATIN SMALL LETTER C]

    // (c) Mappings
    { '\u249E', "(c)" }, // ⒞  [PARENTHESIZED LATIN SMALL LETTER C]

    // D Mappings
    { '\u00D0', "D" }, // Ð  [LATIN CAPITAL LETTER ETH]
    { '\u010E', "D" }, // Ď  [LATIN CAPITAL LETTER D WITH CARON]
    { '\u0110', "D" }, // Đ  [LATIN CAPITAL LETTER D WITH STROKE]
    { '\u0189', "D" }, // Ɖ  [LATIN CAPITAL LETTER AFRICAN D]
    { '\u018A', "D" }, // Ɗ  [LATIN CAPITAL LETTER D WITH HOOK]
    { '\u018B', "D" }, // Ƌ  [LATIN CAPITAL LETTER D WITH TOPBAR]
    { '\u1D05', "D" }, // ᴅ  [LATIN LETTER SMALL CAPITAL D]
    { '\u1D06', "D" }, // ᴆ  [LATIN LETTER SMALL CAPITAL ETH]
    { '\u1E0A', "D" }, // Ḋ  [LATIN CAPITAL LETTER D WITH DOT ABOVE]
    { '\u1E0C', "D" }, // Ḍ  [LATIN CAPITAL LETTER D WITH DOT BELOW]
    { '\u1E0E', "D" }, // Ḏ  [LATIN CAPITAL LETTER D WITH LINE BELOW]
    { '\u1E10', "D" }, // Ḑ  [LATIN CAPITAL LETTER D WITH CEDILLA]
    { '\u1E12', "D" }, // Ḓ  [LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW]
    { '\u24B9', "D" }, // Ⓓ  [CIRCLED LATIN CAPITAL LETTER D]
    { '\uA779', "D" }, // Ꝺ  [LATIN CAPITAL LETTER INSULAR D]
    { '\uFF24', "D" }, // D  [FULLWIDTH LATIN CAPITAL LETTER D]

    // d Mappings
    { '\u00F0', "d" }, // ð  [LATIN SMALL LETTER ETH]
    { '\u010F', "d" }, // ď  [LATIN SMALL LETTER D WITH CARON]
    { '\u0111', "d" }, // đ  [LATIN SMALL LETTER D WITH STROKE]
    { '\u018C', "d" }, // ƌ  [LATIN SMALL LETTER D WITH TOPBAR]
    { '\u0221', "d" }, // ȡ  [LATIN SMALL LETTER D WITH CURL]
    { '\u0256', "d" }, // ɖ  [LATIN SMALL LETTER D WITH TAIL]
    { '\u0257', "d" }, // ɗ  [LATIN SMALL LETTER D WITH HOOK]
    { '\u1D6D', "d" }, // ᵭ  [LATIN SMALL LETTER D WITH MIDDLE TILDE]
    { '\u1D81', "d" }, // ᶁ  [LATIN SMALL LETTER D WITH PALATAL HOOK]
    { '\u1D91', "d" }, // ᶑ  [LATIN SMALL LETTER D WITH HOOK AND TAIL]
    { '\u1E0B', "d" }, // ḋ  [LATIN SMALL LETTER D WITH DOT ABOVE]
    { '\u1E0D', "d" }, // ḍ  [LATIN SMALL LETTER D WITH DOT BELOW]
    { '\u1E0F', "d" }, // ḏ  [LATIN SMALL LETTER D WITH LINE BELOW]
    { '\u1E11', "d" }, // ḑ  [LATIN SMALL LETTER D WITH CEDILLA]
    { '\u1E13', "d" }, // ḓ  [LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW]
    { '\u24D3', "d" }, // ⓓ  [CIRCLED LATIN SMALL LETTER D]
    { '\uA77A', "d" }, // ꝺ  [LATIN SMALL LETTER INSULAR D]
    { '\uFF44', "d" }, // d  [FULLWIDTH LATIN SMALL LETTER D]

    // DZ Mappings
    { '\u01C4', "DZ" }, // DŽ  [LATIN CAPITAL LETTER DZ WITH CARON]
    { '\u01F1', "DZ" }, // DZ  [LATIN CAPITAL LETTER DZ]

    // Dz Mappings
    { '\u01C5', "Dz" }, // Dž  [LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON]
    { '\u01F2', "Dz" }, // Dz  [LATIN CAPITAL LETTER D WITH SMALL LETTER Z]

    // (d) Mappings
    { '\u249F', "(d)" }, // ⒟  [PARENTHESIZED LATIN SMALL LETTER D]

    // db Mappings
    { '\u0238', "db" }, // ȸ  [LATIN SMALL LETTER DB DIGRAPH]

    // dz Mappings
    { '\u01C6', "dz" }, // dž  [LATIN SMALL LETTER DZ WITH CARON]
    { '\u01F3', "dz" }, // dz  [LATIN SMALL LETTER DZ]
    { '\u02A3', "dz" }, // ʣ  [LATIN SMALL LETTER DZ DIGRAPH]
    { '\u02A5', "dz" }, // ʥ  [LATIN SMALL LETTER DZ DIGRAPH WITH CURL]

    // E Mappings
    { '\u00C8', "E" }, // È  [LATIN CAPITAL LETTER E WITH GRAVE]
    { '\u00C9', "E" }, // É  [LATIN CAPITAL LETTER E WITH ACUTE]
    { '\u00CA', "E" }, // Ê  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX]
    { '\u00CB', "E" }, // Ë  [LATIN CAPITAL LETTER E WITH DIAERESIS]
    { '\u0112', "E" }, // Ē  [LATIN CAPITAL LETTER E WITH MACRON]
    { '\u0114', "E" }, // Ĕ  [LATIN CAPITAL LETTER E WITH BREVE]
    { '\u0116', "E" }, // Ė  [LATIN CAPITAL LETTER E WITH DOT ABOVE]
    { '\u0118', "E" }, // Ę  [LATIN CAPITAL LETTER E WITH OGONEK]
    { '\u011A', "E" }, // Ě  [LATIN CAPITAL LETTER E WITH CARON]
    { '\u018E', "E" }, // Ǝ  [LATIN CAPITAL LETTER REVERSED E]
    { '\u0190', "E" }, // Ɛ  [LATIN CAPITAL LETTER OPEN E]
    { '\u0204', "E" }, // Ȅ  [LATIN CAPITAL LETTER E WITH DOUBLE GRAVE]
    { '\u0206', "E" }, // Ȇ  [LATIN CAPITAL LETTER E WITH INVERTED BREVE]
    { '\u0228', "E" }, // Ȩ  [LATIN CAPITAL LETTER E WITH CEDILLA]
    { '\u0246', "E" }, // Ɇ  [LATIN CAPITAL LETTER E WITH STROKE]
    { '\u1D07', "E" }, // ᴇ  [LATIN LETTER SMALL CAPITAL E]
    { '\u1E14', "E" }, // Ḕ  [LATIN CAPITAL LETTER E WITH MACRON AND GRAVE]
    { '\u1E16', "E" }, // Ḗ  [LATIN CAPITAL LETTER E WITH MACRON AND ACUTE]
    { '\u1E18', "E" }, // Ḙ  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW]
    { '\u1E1A', "E" }, // Ḛ  [LATIN CAPITAL LETTER E WITH TILDE BELOW]
    { '\u1E1C', "E" }, // Ḝ  [LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE]
    { '\u1EB8', "E" }, // Ẹ  [LATIN CAPITAL LETTER E WITH DOT BELOW]
    { '\u1EBA', "E" }, // Ẻ  [LATIN CAPITAL LETTER E WITH HOOK ABOVE]
    { '\u1EBC', "E" }, // Ẽ  [LATIN CAPITAL LETTER E WITH TILDE]
    { '\u1EBE', "E" }, // Ế  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE]
    { '\u1EC0', "E" }, // Ề  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE]
    { '\u1EC2', "E" }, // Ể  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE]
    { '\u1EC4', "E" }, // Ễ  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE]
    { '\u1EC6', "E" }, // Ệ  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW]
    { '\u24BA', "E" }, // Ⓔ  [CIRCLED LATIN CAPITAL LETTER E]
    { '\u2C7B', "E" }, // ⱻ  [LATIN LETTER SMALL CAPITAL TURNED E]
    { '\uFF25', "E" }, // E  [FULLWIDTH LATIN CAPITAL LETTER E]

    // e Mappings
    { '\u00E8', "e" }, // è  [LATIN SMALL LETTER E WITH GRAVE]
    { '\u00E9', "e" }, // é  [LATIN SMALL LETTER E WITH ACUTE]
    { '\u00EA', "e" }, // ê  [LATIN SMALL LETTER E WITH CIRCUMFLEX]
    { '\u00EB', "e" }, // ë  [LATIN SMALL LETTER E WITH DIAERESIS]
    { '\u0113', "e" }, // ē  [LATIN SMALL LETTER E WITH MACRON]
    { '\u0115', "e" }, // ĕ  [LATIN SMALL LETTER E WITH BREVE]
    { '\u0117', "e" }, // ė  [LATIN SMALL LETTER E WITH DOT ABOVE]
    { '\u0119', "e" }, // ę  [LATIN SMALL LETTER E WITH OGONEK]
    { '\u011B', "e" }, // ě  [LATIN SMALL LETTER E WITH CARON]
    { '\u01DD', "e" }, // ǝ  [LATIN SMALL LETTER TURNED E]
    { '\u0205', "e" }, // ȅ  [LATIN SMALL LETTER E WITH DOUBLE GRAVE]
    { '\u0207', "e" }, // ȇ  [LATIN SMALL LETTER E WITH INVERTED BREVE]
    { '\u0229', "e" }, // ȩ  [LATIN SMALL LETTER E WITH CEDILLA]
    { '\u0247', "e" }, // ɇ  [LATIN SMALL LETTER E WITH STROKE]
    { '\u0258', "e" }, // ɘ  [LATIN SMALL LETTER REVERSED E]
    { '\u025B', "e" }, // ɛ  [LATIN SMALL LETTER OPEN E]
    { '\u025C', "e" }, // ɜ  [LATIN SMALL LETTER REVERSED OPEN E]
    { '\u025D', "e" }, // ɝ  [LATIN SMALL LETTER REVERSED OPEN E WITH HOOK]
    { '\u025E', "e" }, // ɞ  [LATIN SMALL LETTER CLOSED REVERSED OPEN E]
    { '\u029A', "e" }, // ʚ  [LATIN SMALL LETTER CLOSED OPEN E]
    { '\u1D08', "e" }, // ᴈ  [LATIN SMALL LETTER TURNED OPEN E]
    { '\u1D92', "e" }, // ᶒ  [LATIN SMALL LETTER E WITH RETROFLEX HOOK]
    { '\u1D93', "e" }, // ᶓ  [LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK]
    { '\u1D94', "e" }, // ᶔ  [LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK]
    { '\u1E15', "e" }, // ḕ  [LATIN SMALL LETTER E WITH MACRON AND GRAVE]
    { '\u1E17', "e" }, // ḗ  [LATIN SMALL LETTER E WITH MACRON AND ACUTE]
    { '\u1E19', "e" }, // ḙ  [LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW]
    { '\u1E1B', "e" }, // ḛ  [LATIN SMALL LETTER E WITH TILDE BELOW]
    { '\u1E1D', "e" }, // ḝ  [LATIN SMALL LETTER E WITH CEDILLA AND BREVE]
    { '\u1EB9', "e" }, // ẹ  [LATIN SMALL LETTER E WITH DOT BELOW]
    { '\u1EBB', "e" }, // ẻ  [LATIN SMALL LETTER E WITH HOOK ABOVE]
    { '\u1EBD', "e" }, // ẽ  [LATIN SMALL LETTER E WITH TILDE]
    { '\u1EBF', "e" }, // ế  [LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE]
    { '\u1EC1', "e" }, // ề  [LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE]
    { '\u1EC3', "e" }, // ể  [LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE]
    { '\u1EC5', "e" }, // ễ  [LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE]
    { '\u1EC7', "e" }, // ệ  [LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW]
    { '\u2091', "e" }, // ₑ  [LATIN SUBSCRIPT SMALL LETTER E]
    { '\u24D4', "e" }, // ⓔ  [CIRCLED LATIN SMALL LETTER E]
    { '\u2C78', "e" }, // ⱸ  [LATIN SMALL LETTER E WITH NOTCH]
    { '\uFF45', "e" }, // e  [FULLWIDTH LATIN SMALL LETTER E]

    // (e) Mappings
    { '\u24A0', "(e)" }, // ⒠  [PARENTHESIZED LATIN SMALL LETTER E]

    // F Mappings
    { '\u0191', "F" }, // Ƒ  [LATIN CAPITAL LETTER F WITH HOOK]
    { '\u1E1E', "F" }, // Ḟ  [LATIN CAPITAL LETTER F WITH DOT ABOVE]
    { '\u24BB', "F" }, // Ⓕ  [CIRCLED LATIN CAPITAL LETTER F]
    { '\uA730', "F" }, // ꜰ  [LATIN LETTER SMALL CAPITAL F]
    { '\uA77B', "F" }, // Ꝼ  [LATIN CAPITAL LETTER INSULAR F]
    { '\uA7FB', "F" }, // ꟻ  [LATIN EPIGRAPHIC LETTER REVERSED F]
    { '\uFF26', "F" }, // F  [FULLWIDTH LATIN CAPITAL LETTER F]

    // f Mappings
    { '\u0192', "f" }, // ƒ  [LATIN SMALL LETTER F WITH HOOK]
    { '\u1D6E', "f" }, // ᵮ  [LATIN SMALL LETTER F WITH MIDDLE TILDE]
    { '\u1D82', "f" }, // ᶂ  [LATIN SMALL LETTER F WITH PALATAL HOOK]
    { '\u1E1F', "f" }, // ḟ  [LATIN SMALL LETTER F WITH DOT ABOVE]
    { '\u1E9B', "f" }, // ẛ  [LATIN SMALL LETTER LONG S WITH DOT ABOVE]
    { '\u24D5', "f" }, // ⓕ  [CIRCLED LATIN SMALL LETTER F]
    { '\uA77C', "f" }, // ꝼ  [LATIN SMALL LETTER INSULAR F]
    { '\uFF46', "f" }, // f  [FULLWIDTH LATIN SMALL LETTER F]

    // (f) Mappings
    { '\u24A1', "(f)" }, // ⒡  [PARENTHESIZED LATIN SMALL LETTER F]

    // ff Mappings
    { '\uFB00', "ff" }, // ff  [LATIN SMALL LIGATURE FF]

    // ffi Mappings
    { '\uFB03', "ffi" }, // ffi  [LATIN SMALL LIGATURE FFI]

    // ffl Mappings
    { '\uFB04', "ffl" }, // ffl  [LATIN SMALL LIGATURE FFL]

    // fi Mappings
    { '\uFB01', "fi" }, // fi  [LATIN SMALL LIGATURE FI]

    // fl Mappings
    { '\uFB02', "fl" }, // fl  [LATIN SMALL LIGATURE FL]

    // G Mappings
    { '\u011C', "G" }, // Ĝ  [LATIN CAPITAL LETTER G WITH CIRCUMFLEX]
    { '\u011E', "G" }, // Ğ  [LATIN CAPITAL LETTER G WITH BREVE]
    { '\u0120', "G" }, // Ġ  [LATIN CAPITAL LETTER G WITH DOT ABOVE]
    { '\u0122', "G" }, // Ģ  [LATIN CAPITAL LETTER G WITH CEDILLA]
    { '\u0193', "G" }, // Ɠ  [LATIN CAPITAL LETTER G WITH HOOK]
    { '\u01E4', "G" }, // Ǥ  [LATIN CAPITAL LETTER G WITH STROKE]
    { '\u01E5', "G" }, // ǥ  [LATIN SMALL LETTER G WITH STROKE]
    { '\u01E6', "G" }, // Ǧ  [LATIN CAPITAL LETTER G WITH CARON]
    { '\u01E7', "G" }, // ǧ  [LATIN SMALL LETTER G WITH CARON]
    { '\u01F4', "G" }, // Ǵ  [LATIN CAPITAL LETTER G WITH ACUTE]
    { '\u0262', "G" }, // ɢ  [LATIN LETTER SMALL CAPITAL G]
    { '\u029B', "G" }, // ʛ  [LATIN LETTER SMALL CAPITAL G WITH HOOK]
    { '\u1E20', "G" }, // Ḡ  [LATIN CAPITAL LETTER G WITH MACRON]
    { '\u24BC', "G" }, // Ⓖ  [CIRCLED LATIN CAPITAL LETTER G]
    { '\uA77D', "G" }, // Ᵹ  [LATIN CAPITAL LETTER INSULAR G]
    { '\uA77E', "G" }, // Ꝿ  [LATIN CAPITAL LETTER TURNED INSULAR G]
    { '\uFF27', "G" }, // G  [FULLWIDTH LATIN CAPITAL LETTER G]

    // g Mappings
    { '\u011D', "g" }, // ĝ  [LATIN SMALL LETTER G WITH CIRCUMFLEX]
    { '\u011F', "g" }, // ğ  [LATIN SMALL LETTER G WITH BREVE]
    { '\u0121', "g" }, // ġ  [LATIN SMALL LETTER G WITH DOT ABOVE]
    { '\u0123', "g" }, // ģ  [LATIN SMALL LETTER G WITH CEDILLA]
    { '\u01F5', "g" }, // ǵ  [LATIN SMALL LETTER G WITH ACUTE]
    { '\u0260', "g" }, // ɠ  [LATIN SMALL LETTER G WITH HOOK]
    { '\u0261', "g" }, // ɡ  [LATIN SMALL LETTER SCRIPT G]
    { '\u1D77', "g" }, // ᵷ  [LATIN SMALL LETTER TURNED G]
    { '\u1D79', "g" }, // ᵹ  [LATIN SMALL LETTER INSULAR G]
    { '\u1D83', "g" }, // ᶃ  [LATIN SMALL LETTER G WITH PALATAL HOOK]
    { '\u1E21', "g" }, // ḡ  [LATIN SMALL LETTER G WITH MACRON]
    { '\u24D6', "g" }, // ⓖ  [CIRCLED LATIN SMALL LETTER G]
    { '\uA77F', "g" }, // ꝿ  [LATIN SMALL LETTER TURNED INSULAR G]
    { '\uFF47', "g" }, // g  [FULLWIDTH LATIN SMALL LETTER G]

    // (g) Mappings
    { '\u24A2', "(g)" }, // ⒢  [PARENTHESIZED LATIN SMALL LETTER G]

    // H Mappings
    { '\u0124', "H" }, // Ĥ  [LATIN CAPITAL LETTER H WITH CIRCUMFLEX]
    { '\u0126', "H" }, // Ħ  [LATIN CAPITAL LETTER H WITH STROKE]
    { '\u021E', "H" }, // Ȟ  [LATIN CAPITAL LETTER H WITH CARON]
    { '\u029C', "H" }, // ʜ  [LATIN LETTER SMALL CAPITAL H]
    { '\u1E22', "H" }, // Ḣ  [LATIN CAPITAL LETTER H WITH DOT ABOVE]
    { '\u1E24', "H" }, // Ḥ  [LATIN CAPITAL LETTER H WITH DOT BELOW]
    { '\u1E26', "H" }, // Ḧ  [LATIN CAPITAL LETTER H WITH DIAERESIS]
    { '\u1E28', "H" }, // Ḩ  [LATIN CAPITAL LETTER H WITH CEDILLA]
    { '\u1E2A', "H" }, // Ḫ  [LATIN CAPITAL LETTER H WITH BREVE BELOW]
    { '\u24BD', "H" }, // Ⓗ  [CIRCLED LATIN CAPITAL LETTER H]
    { '\u2C67', "H" }, // Ⱨ  [LATIN CAPITAL LETTER H WITH DESCENDER]
    { '\u2C75', "H" }, // Ⱶ  [LATIN CAPITAL LETTER HALF H]
    { '\uFF28', "H" }, // H  [FULLWIDTH LATIN CAPITAL LETTER H]

    // h Mappings
    { '\u0125', "h" }, // ĥ  [LATIN SMALL LETTER H WITH CIRCUMFLEX]
    { '\u0127', "h" }, // ħ  [LATIN SMALL LETTER H WITH STROKE]
    { '\u021F', "h" }, // ȟ  [LATIN SMALL LETTER H WITH CARON]
    { '\u0265', "h" }, // ɥ  [LATIN SMALL LETTER TURNED H]
    { '\u0266', "h" }, // ɦ  [LATIN SMALL LETTER H WITH HOOK]
    { '\u02AE', "h" }, // ʮ  [LATIN SMALL LETTER TURNED H WITH FISHHOOK]
    { '\u02AF', "h" }, // ʯ  [LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL]
    { '\u1E23', "h" }, // ḣ  [LATIN SMALL LETTER H WITH DOT ABOVE]
    { '\u1E25', "h" }, // ḥ  [LATIN SMALL LETTER H WITH DOT BELOW]
    { '\u1E27', "h" }, // ḧ  [LATIN SMALL LETTER H WITH DIAERESIS]
    { '\u1E29', "h" }, // ḩ  [LATIN SMALL LETTER H WITH CEDILLA]
    { '\u1E2B', "h" }, // ḫ  [LATIN SMALL LETTER H WITH BREVE BELOW]
    { '\u1E96', "h" }, // ẖ  [LATIN SMALL LETTER H WITH LINE BELOW]
    { '\u24D7', "h" }, // ⓗ  [CIRCLED LATIN SMALL LETTER H]
    { '\u2C68', "h" }, // ⱨ  [LATIN SMALL LETTER H WITH DESCENDER]
    { '\u2C76', "h" }, // ⱶ  [LATIN SMALL LETTER HALF H]
    { '\uFF48', "h" }, // h  [FULLWIDTH LATIN SMALL LETTER H]

    // HV Mappings
    { '\u01F6', "HV" }, // Ƕ  http://en.wikipedia.org/wiki/Hwair  [LATIN CAPITAL LETTER HWAIR]

    // (h) Mappings
    { '\u24A3', "(h)" }, // ⒣  [PARENTHESIZED LATIN SMALL LETTER H]

    // hv Mappings
    { '\u0195', "hv" }, // ƕ  [LATIN SMALL LETTER HV]

    // I Mappings
    { '\u00CC', "I" }, // Ì  [LATIN CAPITAL LETTER I WITH GRAVE]
    { '\u00CD', "I" }, // Í  [LATIN CAPITAL LETTER I WITH ACUTE]
    { '\u00CE', "I" }, // Î  [LATIN CAPITAL LETTER I WITH CIRCUMFLEX]
    { '\u00CF', "I" }, // Ï  [LATIN CAPITAL LETTER I WITH DIAERESIS]
    { '\u0128', "I" }, // Ĩ  [LATIN CAPITAL LETTER I WITH TILDE]
    { '\u012A', "I" }, // Ī  [LATIN CAPITAL LETTER I WITH MACRON]
    { '\u012C', "I" }, // Ĭ  [LATIN CAPITAL LETTER I WITH BREVE]
    { '\u012E', "I" }, // Į  [LATIN CAPITAL LETTER I WITH OGONEK]
    { '\u0130', "I" }, // İ  [LATIN CAPITAL LETTER I WITH DOT ABOVE]
    { '\u0196', "I" }, // Ɩ  [LATIN CAPITAL LETTER IOTA]
    { '\u0197', "I" }, // Ɨ  [LATIN CAPITAL LETTER I WITH STROKE]
    { '\u01CF', "I" }, // Ǐ  [LATIN CAPITAL LETTER I WITH CARON]
    { '\u0208', "I" }, // Ȉ  [LATIN CAPITAL LETTER I WITH DOUBLE GRAVE]
    { '\u020A', "I" }, // Ȋ  [LATIN CAPITAL LETTER I WITH INVERTED BREVE]
    { '\u026A', "I" }, // ɪ  [LATIN LETTER SMALL CAPITAL I]
    { '\u1D7B', "I" }, // ᵻ  [LATIN SMALL CAPITAL LETTER I WITH STROKE]
    { '\u1E2C', "I" }, // Ḭ  [LATIN CAPITAL LETTER I WITH TILDE BELOW]
    { '\u1E2E', "I" }, // Ḯ  [LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE]
    { '\u1EC8', "I" }, // Ỉ  [LATIN CAPITAL LETTER I WITH HOOK ABOVE]
    { '\u1ECA', "I" }, // Ị  [LATIN CAPITAL LETTER I WITH DOT BELOW]
    { '\u24BE', "I" }, // Ⓘ  [CIRCLED LATIN CAPITAL LETTER I]
    { '\uA7FE', "I" }, // ꟾ  [LATIN EPIGRAPHIC LETTER I LONGA]
    { '\uFF29', "I" }, // I  [FULLWIDTH LATIN CAPITAL LETTER I]

    // i Mappings
    { '\u00EC', "i" }, // ì  [LATIN SMALL LETTER I WITH GRAVE]
    { '\u00ED', "i" }, // í  [LATIN SMALL LETTER I WITH ACUTE]
    { '\u00EE', "i" }, // î  [LATIN SMALL LETTER I WITH CIRCUMFLEX]
    { '\u00EF', "i" }, // ï  [LATIN SMALL LETTER I WITH DIAERESIS]
    { '\u0129', "i" }, // ĩ  [LATIN SMALL LETTER I WITH TILDE]
    { '\u012B', "i" }, // ī  [LATIN SMALL LETTER I WITH MACRON]
    { '\u012D', "i" }, // ĭ  [LATIN SMALL LETTER I WITH BREVE]
    { '\u012F', "i" }, // į  [LATIN SMALL LETTER I WITH OGONEK]
    { '\u0131', "i" }, // ı  [LATIN SMALL LETTER DOTLESS I]
    { '\u01D0', "i" }, // ǐ  [LATIN SMALL LETTER I WITH CARON]
    { '\u0209', "i" }, // ȉ  [LATIN SMALL LETTER I WITH DOUBLE GRAVE]
    { '\u020B', "i" }, // ȋ  [LATIN SMALL LETTER I WITH INVERTED BREVE]
    { '\u0268', "i" }, // ɨ  [LATIN SMALL LETTER I WITH STROKE]
    { '\u1D09', "i" }, // ᴉ  [LATIN SMALL LETTER TURNED I]
    { '\u1D62', "i" }, // ᵢ  [LATIN SUBSCRIPT SMALL LETTER I]
    { '\u1D7C', "i" }, // ᵼ  [LATIN SMALL LETTER IOTA WITH STROKE]
    { '\u1D96', "i" }, // ᶖ  [LATIN SMALL LETTER I WITH RETROFLEX HOOK]
    { '\u1E2D', "i" }, // ḭ  [LATIN SMALL LETTER I WITH TILDE BELOW]
    { '\u1E2F', "i" }, // ḯ  [LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE]
    { '\u1EC9', "i" }, // ỉ  [LATIN SMALL LETTER I WITH HOOK ABOVE]
    { '\u1ECB', "i" }, // ị  [LATIN SMALL LETTER I WITH DOT BELOW]
    { '\u2071', "i" }, // ⁱ  [SUPERSCRIPT LATIN SMALL LETTER I]
    { '\u24D8', "i" }, // ⓘ  [CIRCLED LATIN SMALL LETTER I]
    { '\uFF49', "i" }, // i  [FULLWIDTH LATIN SMALL LETTER I]

    // IJ Mappings
    { '\u0132', "IJ" }, // IJ  [LATIN CAPITAL LIGATURE IJ]

    // (i) Mappings
    { '\u24A4', "(i)" }, // ⒤  [PARENTHESIZED LATIN SMALL LETTER I]

    // ij Mappings
    { '\u0133', "ij" }, // ij  [LATIN SMALL LIGATURE IJ]

    // J Mappings
    { '\u0134', "J" }, // Ĵ  [LATIN CAPITAL LETTER J WITH CIRCUMFLEX]
    { '\u0248', "J" }, // Ɉ  [LATIN CAPITAL LETTER J WITH STROKE]
    { '\u1D0A', "J" }, // ᴊ  [LATIN LETTER SMALL CAPITAL J]
    { '\u24BF', "J" }, // Ⓙ  [CIRCLED LATIN CAPITAL LETTER J]
    { '\uFF2A', "J" }, // J  [FULLWIDTH LATIN CAPITAL LETTER J]

    // j Mappings
    { '\u0135', "j" }, // ĵ  [LATIN SMALL LETTER J WITH CIRCUMFLEX]
    { '\u01F0', "j" }, // ǰ  [LATIN SMALL LETTER J WITH CARON]
    { '\u0237', "j" }, // ȷ  [LATIN SMALL LETTER DOTLESS J]
    { '\u0249', "j" }, // ɉ  [LATIN SMALL LETTER J WITH STROKE]
    { '\u025F', "j" }, // ɟ  [LATIN SMALL LETTER DOTLESS J WITH STROKE]
    { '\u0284', "j" }, // ʄ  [LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK]
    { '\u029D', "j" }, // ʝ  [LATIN SMALL LETTER J WITH CROSSED-TAIL]
    { '\u24D9', "j" }, // ⓙ  [CIRCLED LATIN SMALL LETTER J]
    { '\u2C7C', "j" }, // ⱼ  [LATIN SUBSCRIPT SMALL LETTER J]
    { '\uFF4A', "j" }, // j  [FULLWIDTH LATIN SMALL LETTER J]

    // (j) Mappings
    { '\u24A5', "(j)" }, // ⒥  [PARENTHESIZED LATIN SMALL LETTER J]

    // K Mappings
    { '\u0136', "K" }, // Ķ  [LATIN CAPITAL LETTER K WITH CEDILLA]
    { '\u0198', "K" }, // Ƙ  [LATIN CAPITAL LETTER K WITH HOOK]
    { '\u01E8', "K" }, // Ǩ  [LATIN CAPITAL LETTER K WITH CARON]
    { '\u1D0B', "K" }, // ᴋ  [LATIN LETTER SMALL CAPITAL K]
    { '\u1E30', "K" }, // Ḱ  [LATIN CAPITAL LETTER K WITH ACUTE]
    { '\u1E32', "K" }, // Ḳ  [LATIN CAPITAL LETTER K WITH DOT BELOW]
    { '\u1E34', "K" }, // Ḵ  [LATIN CAPITAL LETTER K WITH LINE BELOW]
    { '\u24C0', "K" }, // Ⓚ  [CIRCLED LATIN CAPITAL LETTER K]
    { '\u2C69', "K" }, // Ⱪ  [LATIN CAPITAL LETTER K WITH DESCENDER]
    { '\uA740', "K" }, // Ꝁ  [LATIN CAPITAL LETTER K WITH STROKE]
    { '\uA742', "K" }, // Ꝃ  [LATIN CAPITAL LETTER K WITH DIAGONAL STROKE]
    { '\uA744', "K" }, // Ꝅ  [LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE]
    { '\uFF2B', "K" }, // K  [FULLWIDTH LATIN CAPITAL LETTER K]

    // k Mappings
    { '\u0137', "k" }, // ķ  [LATIN SMALL LETTER K WITH CEDILLA]
    { '\u0199', "k" }, // ƙ  [LATIN SMALL LETTER K WITH HOOK]
    { '\u01E9', "k" }, // ǩ  [LATIN SMALL LETTER K WITH CARON]
    { '\u029E', "k" }, // ʞ  [LATIN SMALL LETTER TURNED K]
    { '\u1D84', "k" }, // ᶄ  [LATIN SMALL LETTER K WITH PALATAL HOOK]
    { '\u1E31', "k" }, // ḱ  [LATIN SMALL LETTER K WITH ACUTE]
    { '\u1E33', "k" }, // ḳ  [LATIN SMALL LETTER K WITH DOT BELOW]
    { '\u1E35', "k" }, // ḵ  [LATIN SMALL LETTER K WITH LINE BELOW]
    { '\u24DA', "k" }, // ⓚ  [CIRCLED LATIN SMALL LETTER K]
    { '\u2C6A', "k" }, // ⱪ  [LATIN SMALL LETTER K WITH DESCENDER]
    { '\uA741', "k" }, // ꝁ  [LATIN SMALL LETTER K WITH STROKE]
    { '\uA743', "k" }, // ꝃ  [LATIN SMALL LETTER K WITH DIAGONAL STROKE]
    { '\uA745', "k" }, // ꝅ  [LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE]
    { '\uFF4B', "k" }, // k  [FULLWIDTH LATIN SMALL LETTER K]

    // (k) Mappings
    { '\u24A6', "(k)" }, // ⒦  [PARENTHESIZED LATIN SMALL LETTER K]

    // L Mappings
    { '\u0139', "L" }, // Ĺ  [LATIN CAPITAL LETTER L WITH ACUTE]
    { '\u013B', "L" }, // Ļ  [LATIN CAPITAL LETTER L WITH CEDILLA]
    { '\u013D', "L" }, // Ľ  [LATIN CAPITAL LETTER L WITH CARON]
    { '\u013F', "L" }, // Ŀ  [LATIN CAPITAL LETTER L WITH MIDDLE DOT]
    { '\u0141', "L" }, // Ł  [LATIN CAPITAL LETTER L WITH STROKE]
    { '\u023D', "L" }, // Ƚ  [LATIN CAPITAL LETTER L WITH BAR]
    { '\u029F', "L" }, // ʟ  [LATIN LETTER SMALL CAPITAL L]
    { '\u1D0C', "L" }, // ᴌ  [LATIN LETTER SMALL CAPITAL L WITH STROKE]
    { '\u1E36', "L" }, // Ḷ  [LATIN CAPITAL LETTER L WITH DOT BELOW]
    { '\u1E38', "L" }, // Ḹ  [LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON]
    { '\u1E3A', "L" }, // Ḻ  [LATIN CAPITAL LETTER L WITH LINE BELOW]
    { '\u1E3C', "L" }, // Ḽ  [LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW]
    { '\u24C1', "L" }, // Ⓛ  [CIRCLED LATIN CAPITAL LETTER L]
    { '\u2C60', "L" }, // Ⱡ  [LATIN CAPITAL LETTER L WITH DOUBLE BAR]
    { '\u2C62', "L" }, // Ɫ  [LATIN CAPITAL LETTER L WITH MIDDLE TILDE]
    { '\uA746', "L" }, // Ꝇ  [LATIN CAPITAL LETTER BROKEN L]
    { '\uA748', "L" }, // Ꝉ  [LATIN CAPITAL LETTER L WITH HIGH STROKE]
    { '\uA780', "L" }, // Ꞁ  [LATIN CAPITAL LETTER TURNED L]
    { '\uFF2C', "L" }, // L  [FULLWIDTH LATIN CAPITAL LETTER L]

    // l Mappings
    { '\u013A', "l" }, // ĺ  [LATIN SMALL LETTER L WITH ACUTE]
    { '\u013C', "l" }, // ļ  [LATIN SMALL LETTER L WITH CEDILLA]
    { '\u013E', "l" }, // ľ  [LATIN SMALL LETTER L WITH CARON]
    { '\u0140', "l" }, // ŀ  [LATIN SMALL LETTER L WITH MIDDLE DOT]
    { '\u0142', "l" }, // ł  [LATIN SMALL LETTER L WITH STROKE]
    { '\u019A', "l" }, // ƚ  [LATIN SMALL LETTER L WITH BAR]
    { '\u0234', "l" }, // ȴ  [LATIN SMALL LETTER L WITH CURL]
    { '\u026B', "l" }, // ɫ  [LATIN SMALL LETTER L WITH MIDDLE TILDE]
    { '\u026C', "l" }, // ɬ  [LATIN SMALL LETTER L WITH BELT]
    { '\u026D', "l" }, // ɭ  [LATIN SMALL LETTER L WITH RETROFLEX HOOK]
    { '\u1D85', "l" }, // ᶅ  [LATIN SMALL LETTER L WITH PALATAL HOOK]
    { '\u1E37', "l" }, // ḷ  [LATIN SMALL LETTER L WITH DOT BELOW]
    { '\u1E39', "l" }, // ḹ  [LATIN SMALL LETTER L WITH DOT BELOW AND MACRON]
    { '\u1E3B', "l" }, // ḻ  [LATIN SMALL LETTER L WITH LINE BELOW]
    { '\u1E3D', "l" }, // ḽ  [LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW]
    { '\u24DB', "l" }, // ⓛ  [CIRCLED LATIN SMALL LETTER L]
    { '\u2C61', "l" }, // ⱡ  [LATIN SMALL LETTER L WITH DOUBLE BAR]
    { '\uA747', "l" }, // ꝇ  [LATIN SMALL LETTER BROKEN L]
    { '\uA749', "l" }, // ꝉ  [LATIN SMALL LETTER L WITH HIGH STROKE]
    { '\uA781', "l" }, // ꞁ  [LATIN SMALL LETTER TURNED L]
    { '\uFF4C', "l" }, // l  [FULLWIDTH LATIN SMALL LETTER L]

    // LJ Mappings
    { '\u01C7', "LJ" }, // LJ  [LATIN CAPITAL LETTER LJ]

    // LL Mappings
    { '\u1EFA', "LL" }, // Ỻ  [LATIN CAPITAL LETTER MIDDLE-WELSH LL]

    // Lj Mappings
    { '\u01C8', "Lj" }, // Lj  [LATIN CAPITAL LETTER L WITH SMALL LETTER J]

    // (l) Mappings
    { '\u24A7', "(l)" }, // ⒧  [PARENTHESIZED LATIN SMALL LETTER L]

    // lj Mappings
    { '\u01C9', "lj" }, // lj  [LATIN SMALL LETTER LJ]

    // ll Mappings
    { '\u1EFB', "ll" }, // ỻ  [LATIN SMALL LETTER MIDDLE-WELSH LL]

    // ls Mappings
    { '\u02AA', "ls" }, // ʪ  [LATIN SMALL LETTER LS DIGRAPH]

    // lz Mappings
    { '\u02AB', "lz" }, // ʫ  [LATIN SMALL LETTER LZ DIGRAPH]

    // M Mappings
    { '\u019C', "M" }, // Ɯ  [LATIN CAPITAL LETTER TURNED M]
    { '\u1D0D', "M" }, // ᴍ  [LATIN LETTER SMALL CAPITAL M]
    { '\u1E3E', "M" }, // Ḿ  [LATIN CAPITAL LETTER M WITH ACUTE]
    { '\u1E40', "M" }, // Ṁ  [LATIN CAPITAL LETTER M WITH DOT ABOVE]
    { '\u1E42', "M" }, // Ṃ  [LATIN CAPITAL LETTER M WITH DOT BELOW]
    { '\u24C2', "M" }, // Ⓜ  [CIRCLED LATIN CAPITAL LETTER M]
    { '\u2C6E', "M" }, // Ɱ  [LATIN CAPITAL LETTER M WITH HOOK]
    { '\uA7FD', "M" }, // ꟽ  [LATIN EPIGRAPHIC LETTER INVERTED M]
    { '\uA7FF', "M" }, // ꟿ  [LATIN EPIGRAPHIC LETTER ARCHAIC M]
    { '\uFF2D', "M" }, // M  [FULLWIDTH LATIN CAPITAL LETTER M]

    // m Mappings
    { '\u026F', "m" }, // ɯ  [LATIN SMALL LETTER TURNED M]
    { '\u0270', "m" }, // ɰ  [LATIN SMALL LETTER TURNED M WITH LONG LEG]
    { '\u0271', "m" }, // ɱ  [LATIN SMALL LETTER M WITH HOOK]
    { '\u1D6F', "m" }, // ᵯ  [LATIN SMALL LETTER M WITH MIDDLE TILDE]
    { '\u1D86', "m" }, // ᶆ  [LATIN SMALL LETTER M WITH PALATAL HOOK]
    { '\u1E3F', "m" }, // ḿ  [LATIN SMALL LETTER M WITH ACUTE]
    { '\u1E41', "m" }, // ṁ  [LATIN SMALL LETTER M WITH DOT ABOVE]
    { '\u1E43', "m" }, // ṃ  [LATIN SMALL LETTER M WITH DOT BELOW]
    { '\u24DC', "m" }, // ⓜ  [CIRCLED LATIN SMALL LETTER M]
    { '\uFF4D', "m" }, // m  [FULLWIDTH LATIN SMALL LETTER M]

    // (m) Mappings
    { '\u24A8', "(m)" }, // ⒨  [PARENTHESIZED LATIN SMALL LETTER M]

    // N Mappings
    { '\u00D1', "N" }, // Ñ  [LATIN CAPITAL LETTER N WITH TILDE]
    { '\u0143', "N" }, // Ń  [LATIN CAPITAL LETTER N WITH ACUTE]
    { '\u0145', "N" }, // Ņ  [LATIN CAPITAL LETTER N WITH CEDILLA]
    { '\u0147', "N" }, // Ň  [LATIN CAPITAL LETTER N WITH CARON]
    { '\u014A', "N" }, // Ŋ  http://en.wikipedia.org/wiki/Eng_(letter)  [LATIN CAPITAL LETTER ENG]
    { '\u019D', "N" }, // Ɲ  [LATIN CAPITAL LETTER N WITH LEFT HOOK]
    { '\u01F8', "N" }, // Ǹ  [LATIN CAPITAL LETTER N WITH GRAVE]
    { '\u0220', "N" }, // Ƞ  [LATIN CAPITAL LETTER N WITH LONG RIGHT LEG]
    { '\u0274', "N" }, // ɴ  [LATIN LETTER SMALL CAPITAL N]
    { '\u1D0E', "N" }, // ᴎ  [LATIN LETTER SMALL CAPITAL REVERSED N]
    { '\u1E44', "N" }, // Ṅ  [LATIN CAPITAL LETTER N WITH DOT ABOVE]
    { '\u1E46', "N" }, // Ṇ  [LATIN CAPITAL LETTER N WITH DOT BELOW]
    { '\u1E48', "N" }, // Ṉ  [LATIN CAPITAL LETTER N WITH LINE BELOW]
    { '\u1E4A', "N" }, // Ṋ  [LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW]
    { '\u24C3', "N" }, // Ⓝ  [CIRCLED LATIN CAPITAL LETTER N]
    { '\uFF2E', "N" }, // N  [FULLWIDTH LATIN CAPITAL LETTER N]

    // n Mappings
    { '\u00F1', "n" }, // ñ  [LATIN SMALL LETTER N WITH TILDE]
    { '\u0144', "n" }, // ń  [LATIN SMALL LETTER N WITH ACUTE]
    { '\u0146', "n" }, // ņ  [LATIN SMALL LETTER N WITH CEDILLA]
    { '\u0148', "n" }, // ň  [LATIN SMALL LETTER N WITH CARON]
    { '\u0149', "n" }, // ʼn  [LATIN SMALL LETTER N PRECEDED BY APOSTROPHE]
    { '\u014B', "n" }, // ŋ  http://en.wikipedia.org/wiki/Eng_(letter)  [LATIN SMALL LETTER ENG]
    { '\u019E', "n" }, // ƞ  [LATIN SMALL LETTER N WITH LONG RIGHT LEG]
    { '\u01F9', "n" }, // ǹ  [LATIN SMALL LETTER N WITH GRAVE]
    { '\u0235', "n" }, // ȵ  [LATIN SMALL LETTER N WITH CURL]
    { '\u0272', "n" }, // ɲ  [LATIN SMALL LETTER N WITH LEFT HOOK]
    { '\u0273', "n" }, // ɳ  [LATIN SMALL LETTER N WITH RETROFLEX HOOK]
    { '\u1D70', "n" }, // ᵰ  [LATIN SMALL LETTER N WITH MIDDLE TILDE]
    { '\u1D87', "n" }, // ᶇ  [LATIN SMALL LETTER N WITH PALATAL HOOK]
    { '\u1E45', "n" }, // ṅ  [LATIN SMALL LETTER N WITH DOT ABOVE]
    { '\u1E47', "n" }, // ṇ  [LATIN SMALL LETTER N WITH DOT BELOW]
    { '\u1E49', "n" }, // ṉ  [LATIN SMALL LETTER N WITH LINE BELOW]
    { '\u1E4B', "n" }, // ṋ  [LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW]
    { '\u207F', "n" }, // ⁿ  [SUPERSCRIPT LATIN SMALL LETTER N]
    { '\u24DD', "n" }, // ⓝ  [CIRCLED LATIN SMALL LETTER N]
    { '\uFF4E', "n" }, // n  [FULLWIDTH LATIN SMALL LETTER N]

    // NJ Mappings
    { '\u01CA', "NJ" }, // NJ  [LATIN CAPITAL LETTER NJ]

    // Nj Mappings
    { '\u01CB', "Nj" }, // Nj  [LATIN CAPITAL LETTER N WITH SMALL LETTER J]

    // (n) Mappings
    { '\u24A9', "(n)" }, // ⒩  [PARENTHESIZED LATIN SMALL LETTER N]

    // nj Mappings
    { '\u01CC', "nj" }, // nj  [LATIN SMALL LETTER NJ]

    // O Mappings
    { '\u00D2', "O" }, // Ò  [LATIN CAPITAL LETTER O WITH GRAVE]
    { '\u00D3', "O" }, // Ó  [LATIN CAPITAL LETTER O WITH ACUTE]
    { '\u00D4', "O" }, // Ô  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX]
    { '\u00D5', "O" }, // Õ  [LATIN CAPITAL LETTER O WITH TILDE]
    { '\u00D6', "O" }, // Ö  [LATIN CAPITAL LETTER O WITH DIAERESIS]
    { '\u00D8', "O" }, // Ø  [LATIN CAPITAL LETTER O WITH STROKE]
    { '\u014C', "O" }, // Ō  [LATIN CAPITAL LETTER O WITH MACRON]
    { '\u014E', "O" }, // Ŏ  [LATIN CAPITAL LETTER O WITH BREVE]
    { '\u0150', "O" }, // Ő  [LATIN CAPITAL LETTER O WITH DOUBLE ACUTE]
    { '\u0186', "O" }, // Ɔ  [LATIN CAPITAL LETTER OPEN O]
    { '\u019F', "O" }, // Ɵ  [LATIN CAPITAL LETTER O WITH MIDDLE TILDE]
    { '\u01A0', "O" }, // Ơ  [LATIN CAPITAL LETTER O WITH HORN]
    { '\u01D1', "O" }, // Ǒ  [LATIN CAPITAL LETTER O WITH CARON]
    { '\u01EA', "O" }, // Ǫ  [LATIN CAPITAL LETTER O WITH OGONEK]
    { '\u01EC', "O" }, // Ǭ  [LATIN CAPITAL LETTER O WITH OGONEK AND MACRON]
    { '\u01FE', "O" }, // Ǿ  [LATIN CAPITAL LETTER O WITH STROKE AND ACUTE]
    { '\u020C', "O" }, // Ȍ  [LATIN CAPITAL LETTER O WITH DOUBLE GRAVE]
    { '\u020E', "O" }, // Ȏ  [LATIN CAPITAL LETTER O WITH INVERTED BREVE]
    { '\u022A', "O" }, // Ȫ  [LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON]
    { '\u022C', "O" }, // Ȭ  [LATIN CAPITAL LETTER O WITH TILDE AND MACRON]
    { '\u022E', "O" }, // Ȯ  [LATIN CAPITAL LETTER O WITH DOT ABOVE]
    { '\u0230', "O" }, // Ȱ  [LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON]
    { '\u1D0F', "O" }, // ᴏ  [LATIN LETTER SMALL CAPITAL O]
    { '\u1D10', "O" }, // ᴐ  [LATIN LETTER SMALL CAPITAL OPEN O]
    { '\u1E4C', "O" }, // Ṍ  [LATIN CAPITAL LETTER O WITH TILDE AND ACUTE]
    { '\u1E4E', "O" }, // Ṏ  [LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS]
    { '\u1E50', "O" }, // Ṑ  [LATIN CAPITAL LETTER O WITH MACRON AND GRAVE]
    { '\u1E52', "O" }, // Ṓ  [LATIN CAPITAL LETTER O WITH MACRON AND ACUTE]
    { '\u1ECC', "O" }, // Ọ  [LATIN CAPITAL LETTER O WITH DOT BELOW]
    { '\u1ECE', "O" }, // Ỏ  [LATIN CAPITAL LETTER O WITH HOOK ABOVE]
    { '\u1ED0', "O" }, // Ố  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE]
    { '\u1ED2', "O" }, // Ồ  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE]
    { '\u1ED4', "O" }, // Ổ  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE]
    { '\u1ED6', "O" }, // Ỗ  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE]
    { '\u1ED8', "O" }, // Ộ  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW]
    { '\u1EDA', "O" }, // Ớ  [LATIN CAPITAL LETTER O WITH HORN AND ACUTE]
    { '\u1EDC', "O" }, // Ờ  [LATIN CAPITAL LETTER O WITH HORN AND GRAVE]
    { '\u1EDE', "O" }, // Ở  [LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE]
    { '\u1EE0', "O" }, // Ỡ  [LATIN CAPITAL LETTER O WITH HORN AND TILDE]
    { '\u1EE2', "O" }, // Ợ  [LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW]
    { '\u24C4', "O" }, // Ⓞ  [CIRCLED LATIN CAPITAL LETTER O]
    { '\uA74A', "O" }, // Ꝋ  [LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY]
    { '\uA74C', "O" }, // Ꝍ  [LATIN CAPITAL LETTER O WITH LOOP]
    { '\uFF2F', "O" }, // O  [FULLWIDTH LATIN CAPITAL LETTER O]

    // o Mappings
    { '\u00F2', "o" }, // ò  [LATIN SMALL LETTER O WITH GRAVE]
    { '\u00F3', "o" }, // ó  [LATIN SMALL LETTER O WITH ACUTE]
    { '\u00F4', "o" }, // ô  [LATIN SMALL LETTER O WITH CIRCUMFLEX]
    { '\u00F5', "o" }, // õ  [LATIN SMALL LETTER O WITH TILDE]
    { '\u00F6', "o" }, // ö  [LATIN SMALL LETTER O WITH DIAERESIS]
    { '\u00F8', "o" }, // ø  [LATIN SMALL LETTER O WITH STROKE]
    { '\u014D', "o" }, // ō  [LATIN SMALL LETTER O WITH MACRON]
    { '\u014F', "o" }, // ŏ  [LATIN SMALL LETTER O WITH BREVE]
    { '\u0151', "o" }, // ő  [LATIN SMALL LETTER O WITH DOUBLE ACUTE]
    { '\u01A1', "o" }, // ơ  [LATIN SMALL LETTER O WITH HORN]
    { '\u01D2', "o" }, // ǒ  [LATIN SMALL LETTER O WITH CARON]
    { '\u01EB', "o" }, // ǫ  [LATIN SMALL LETTER O WITH OGONEK]
    { '\u01ED', "o" }, // ǭ  [LATIN SMALL LETTER O WITH OGONEK AND MACRON]
    { '\u01FF', "o" }, // ǿ  [LATIN SMALL LETTER O WITH STROKE AND ACUTE]
    { '\u020D', "o" }, // ȍ  [LATIN SMALL LETTER O WITH DOUBLE GRAVE]
    { '\u020F', "o" }, // ȏ  [LATIN SMALL LETTER O WITH INVERTED BREVE]
    { '\u022B', "o" }, // ȫ  [LATIN SMALL LETTER O WITH DIAERESIS AND MACRON]
    { '\u022D', "o" }, // ȭ  [LATIN SMALL LETTER O WITH TILDE AND MACRON]
    { '\u022F', "o" }, // ȯ  [LATIN SMALL LETTER O WITH DOT ABOVE]
    { '\u0231', "o" }, // ȱ  [LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON]
    { '\u0254', "o" }, // ɔ  [LATIN SMALL LETTER OPEN O]
    { '\u0275', "o" }, // ɵ  [LATIN SMALL LETTER BARRED O]
    { '\u1D16', "o" }, // ᴖ  [LATIN SMALL LETTER TOP HALF O]
    { '\u1D17', "o" }, // ᴗ  [LATIN SMALL LETTER BOTTOM HALF O]
    { '\u1D97', "o" }, // ᶗ  [LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK]
    { '\u1E4D', "o" }, // ṍ  [LATIN SMALL LETTER O WITH TILDE AND ACUTE]
    { '\u1E4F', "o" }, // ṏ  [LATIN SMALL LETTER O WITH TILDE AND DIAERESIS]
    { '\u1E51', "o" }, // ṑ  [LATIN SMALL LETTER O WITH MACRON AND GRAVE]
    { '\u1E53', "o" }, // ṓ  [LATIN SMALL LETTER O WITH MACRON AND ACUTE]
    { '\u1ECD', "o" }, // ọ  [LATIN SMALL LETTER O WITH DOT BELOW]
    { '\u1ECF', "o" }, // ỏ  [LATIN SMALL LETTER O WITH HOOK ABOVE]
    { '\u1ED1', "o" }, // ố  [LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE]
    { '\u1ED3', "o" }, // ồ  [LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE]
    { '\u1ED5', "o" }, // ổ  [LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE]
    { '\u1ED7', "o" }, // ỗ  [LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE]
    { '\u1ED9', "o" }, // ộ  [LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW]
    { '\u1EDB', "o" }, // ớ  [LATIN SMALL LETTER O WITH HORN AND ACUTE]
    { '\u1EDD', "o" }, // ờ  [LATIN SMALL LETTER O WITH HORN AND GRAVE]
    { '\u1EDF', "o" }, // ở  [LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE]
    { '\u1EE1', "o" }, // ỡ  [LATIN SMALL LETTER O WITH HORN AND TILDE]
    { '\u1EE3', "o" }, // ợ  [LATIN SMALL LETTER O WITH HORN AND DOT BELOW]
    { '\u2092', "o" }, // ₒ  [LATIN SUBSCRIPT SMALL LETTER O]
    { '\u24DE', "o" }, // ⓞ  [CIRCLED LATIN SMALL LETTER O]
    { '\u2C7A', "o" }, // ⱺ  [LATIN SMALL LETTER O WITH LOW RING INSIDE]
    { '\uA74B', "o" }, // ꝋ  [LATIN SMALL LETTER O WITH LONG STROKE OVERLAY]
    { '\uA74D', "o" }, // ꝍ  [LATIN SMALL LETTER O WITH LOOP]
    { '\uFF4F', "o" }, // o  [FULLWIDTH LATIN SMALL LETTER O]

    // OE Mappings
    { '\u0152', "OE" }, // Œ  [LATIN CAPITAL LIGATURE OE]
    { '\u0276', "OE" }, // ɶ  [LATIN LETTER SMALL CAPITAL OE]

    // OO Mappings
    { '\uA74E', "OO" }, // Ꝏ  [LATIN CAPITAL LETTER OO]

    // OU Mappings
    { '\u0222', "OU" }, // Ȣ  http://en.wikipedia.org/wiki/OU  [LATIN CAPITAL LETTER OU]
    { '\u1D15', "OU" }, // ᴕ  [LATIN LETTER SMALL CAPITAL OU]

    // (o) Mappings
    { '\u24AA', "(o)" }, // ⒪  [PARENTHESIZED LATIN SMALL LETTER O]

    // oe Mappings
    { '\u0153', "oe" }, // œ  [LATIN SMALL LIGATURE OE]
    { '\u1D14', "oe" }, // ᴔ  [LATIN SMALL LETTER TURNED OE]

    // oo Mappings
    { '\uA74F', "oo" }, // ꝏ  [LATIN SMALL LETTER OO]

    // ou Mappings
    { '\u0223', "ou" }, // ȣ  http://en.wikipedia.org/wiki/OU  [LATIN SMALL LETTER OU]

    // P Mappings
    { '\u01A4', "P" }, // Ƥ  [LATIN CAPITAL LETTER P WITH HOOK]
    { '\u1D18', "P" }, // ᴘ  [LATIN LETTER SMALL CAPITAL P]
    { '\u1E54', "P" }, // Ṕ  [LATIN CAPITAL LETTER P WITH ACUTE]
    { '\u1E56', "P" }, // Ṗ  [LATIN CAPITAL LETTER P WITH DOT ABOVE]
    { '\u24C5', "P" }, // Ⓟ  [CIRCLED LATIN CAPITAL LETTER P]
    { '\u2C63', "P" }, // Ᵽ  [LATIN CAPITAL LETTER P WITH STROKE]
    { '\uA750', "P" }, // Ꝑ  [LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER]
    { '\uA752', "P" }, // Ꝓ  [LATIN CAPITAL LETTER P WITH FLOURISH]
    { '\uA754', "P" }, // Ꝕ  [LATIN CAPITAL LETTER P WITH SQUIRREL TAIL]
    { '\uFF30', "P" }, // P  [FULLWIDTH LATIN CAPITAL LETTER P]

    // p Mappings
    { '\u01A5', "p" }, // ƥ  [LATIN SMALL LETTER P WITH HOOK]
    { '\u1D71', "p" }, // ᵱ  [LATIN SMALL LETTER P WITH MIDDLE TILDE]
    { '\u1D7D', "p" }, // ᵽ  [LATIN SMALL LETTER P WITH STROKE]
    { '\u1D88', "p" }, // ᶈ  [LATIN SMALL LETTER P WITH PALATAL HOOK]
    { '\u1E55', "p" }, // ṕ  [LATIN SMALL LETTER P WITH ACUTE]
    { '\u1E57', "p" }, // ṗ  [LATIN SMALL LETTER P WITH DOT ABOVE]
    { '\u24DF', "p" }, // ⓟ  [CIRCLED LATIN SMALL LETTER P]
    { '\uA751', "p" }, // ꝑ  [LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER]
    { '\uA753', "p" }, // ꝓ  [LATIN SMALL LETTER P WITH FLOURISH]
    { '\uA755', "p" }, // ꝕ  [LATIN SMALL LETTER P WITH SQUIRREL TAIL]
    { '\uA7FC', "p" }, // ꟼ  [LATIN EPIGRAPHIC LETTER REVERSED P]
    { '\uFF50', "p" }, // p  [FULLWIDTH LATIN SMALL LETTER P]

    // (p) Mappings
    { '\u24AB', "(p)" }, // ⒫  [PARENTHESIZED LATIN SMALL LETTER P]

    // Q Mappings
    { '\u024A', "Q" }, // Ɋ  [LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL]
    { '\u24C6', "Q" }, // Ⓠ  [CIRCLED LATIN CAPITAL LETTER Q]
    { '\uA756', "Q" }, // Ꝗ  [LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER]
    { '\uA758', "Q" }, // Ꝙ  [LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE]
    { '\uFF31', "Q" }, // Q  [FULLWIDTH LATIN CAPITAL LETTER Q]

    // q Mappings
    { '\u0138', "q" }, // ĸ  http://en.wikipedia.org/wiki/Kra_(letter)  [LATIN SMALL LETTER KRA]
    { '\u024B', "q" }, // ɋ  [LATIN SMALL LETTER Q WITH HOOK TAIL]
    { '\u02A0', "q" }, // ʠ  [LATIN SMALL LETTER Q WITH HOOK]
    { '\u24E0', "q" }, // ⓠ  [CIRCLED LATIN SMALL LETTER Q]
    { '\uA757', "q" }, // ꝗ  [LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER]
    { '\uA759', "q" }, // ꝙ  [LATIN SMALL LETTER Q WITH DIAGONAL STROKE]
    { '\uFF51', "q" }, // q  [FULLWIDTH LATIN SMALL LETTER Q]

    // (q) Mappings
    { '\u24AC', "(q)" }, // ⒬  [PARENTHESIZED LATIN SMALL LETTER Q]

    // qp Mappings
    { '\u0239', "qp" }, // ȹ  [LATIN SMALL LETTER QP DIGRAPH]

    // R Mappings
    { '\u0154', "R" }, // Ŕ  [LATIN CAPITAL LETTER R WITH ACUTE]
    { '\u0156', "R" }, // Ŗ  [LATIN CAPITAL LETTER R WITH CEDILLA]
    { '\u0158', "R" }, // Ř  [LATIN CAPITAL LETTER R WITH CARON]
    { '\u0210', "R" }, // Ȓ  [LATIN CAPITAL LETTER R WITH DOUBLE GRAVE]
    { '\u0212', "R" }, // Ȓ  [LATIN CAPITAL LETTER R WITH INVERTED BREVE]
    { '\u024C', "R" }, // Ɍ  [LATIN CAPITAL LETTER R WITH STROKE]
    { '\u0280', "R" }, // ʀ  [LATIN LETTER SMALL CAPITAL R]
    { '\u0281', "R" }, // ʁ  [LATIN LETTER SMALL CAPITAL INVERTED R]
    { '\u1D19', "R" }, // ᴙ  [LATIN LETTER SMALL CAPITAL REVERSED R]
    { '\u1D1A', "R" }, // ᴚ  [LATIN LETTER SMALL CAPITAL TURNED R]
    { '\u1E58', "R" }, // Ṙ  [LATIN CAPITAL LETTER R WITH DOT ABOVE]
    { '\u1E5A', "R" }, // Ṛ  [LATIN CAPITAL LETTER R WITH DOT BELOW]
    { '\u1E5C', "R" }, // Ṝ  [LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON]
    { '\u1E5E', "R" }, // Ṟ  [LATIN CAPITAL LETTER R WITH LINE BELOW]
    { '\u24C7', "R" }, // Ⓡ  [CIRCLED LATIN CAPITAL LETTER R]
    { '\u2C64', "R" }, // Ɽ  [LATIN CAPITAL LETTER R WITH TAIL]
    { '\uA75A', "R" }, // Ꝛ  [LATIN CAPITAL LETTER R ROTUNDA]
    { '\uA782', "R" }, // Ꞃ  [LATIN CAPITAL LETTER INSULAR R]
    { '\uFF32', "R" }, // R  [FULLWIDTH LATIN CAPITAL LETTER R]

    // r Mappings
    { '\u0155', "r" }, // ŕ  [LATIN SMALL LETTER R WITH ACUTE]
    { '\u0157', "r" }, // ŗ  [LATIN SMALL LETTER R WITH CEDILLA]
    { '\u0159', "r" }, // ř  [LATIN SMALL LETTER R WITH CARON]
    { '\u0211', "r" }, // ȑ  [LATIN SMALL LETTER R WITH DOUBLE GRAVE]
    { '\u0213', "r" }, // ȓ  [LATIN SMALL LETTER R WITH INVERTED BREVE]
    { '\u024D', "r" }, // ɍ  [LATIN SMALL LETTER R WITH STROKE]
    { '\u027C', "r" }, // ɼ  [LATIN SMALL LETTER R WITH LONG LEG]
    { '\u027D', "r" }, // ɽ  [LATIN SMALL LETTER R WITH TAIL]
    { '\u027E', "r" }, // ɾ  [LATIN SMALL LETTER R WITH FISHHOOK]
    { '\u027F', "r" }, // ɿ  [LATIN SMALL LETTER REVERSED R WITH FISHHOOK]
    { '\u1D63', "r" }, // ᵣ  [LATIN SUBSCRIPT SMALL LETTER R]
    { '\u1D72', "r" }, // ᵲ  [LATIN SMALL LETTER R WITH MIDDLE TILDE]
    { '\u1D73', "r" }, // ᵳ  [LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE]
    { '\u1D89', "r" }, // ᶉ  [LATIN SMALL LETTER R WITH PALATAL HOOK]
    { '\u1E59', "r" }, // ṙ  [LATIN SMALL LETTER R WITH DOT ABOVE]
    { '\u1E5B', "r" }, // ṛ  [LATIN SMALL LETTER R WITH DOT BELOW]
    { '\u1E5D', "r" }, // ṝ  [LATIN SMALL LETTER R WITH DOT BELOW AND MACRON]
    { '\u1E5F', "r" }, // ṟ  [LATIN SMALL LETTER R WITH LINE BELOW]
    { '\u24E1', "r" }, // ⓡ  [CIRCLED LATIN SMALL LETTER R]
    { '\uA75B', "r" }, // ꝛ  [LATIN SMALL LETTER R ROTUNDA]
    { '\uA783', "r" }, // ꞃ  [LATIN SMALL LETTER INSULAR R]
    { '\uFF52', "r" }, // r  [FULLWIDTH LATIN SMALL LETTER R]

    // (r) Mappings
    { '\u24AD', "(r)" }, // ⒭  [PARENTHESIZED LATIN SMALL LETTER R]

    // S Mappings
    { '\u015A', "S" }, // Ś  [LATIN CAPITAL LETTER S WITH ACUTE]
    { '\u015C', "S" }, // Ŝ  [LATIN CAPITAL LETTER S WITH CIRCUMFLEX]
    { '\u015E', "S" }, // Ş  [LATIN CAPITAL LETTER S WITH CEDILLA]
    { '\u0160', "S" }, // Š  [LATIN CAPITAL LETTER S WITH CARON]
    { '\u0218', "S" }, // Ș  [LATIN CAPITAL LETTER S WITH COMMA BELOW]
    { '\u1E60', "S" }, // Ṡ  [LATIN CAPITAL LETTER S WITH DOT ABOVE]
    { '\u1E62', "S" }, // Ṣ  [LATIN CAPITAL LETTER S WITH DOT BELOW]
    { '\u1E64', "S" }, // Ṥ  [LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE]
    { '\u1E66', "S" }, // Ṧ  [LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE]
    { '\u1E68', "S" }, // Ṩ  [LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE]
    { '\u24C8', "S" }, // Ⓢ  [CIRCLED LATIN CAPITAL LETTER S]
    { '\uA731', "S" }, // ꜱ  [LATIN LETTER SMALL CAPITAL S]
    { '\uA785', "S" }, // ꞅ  [LATIN SMALL LETTER INSULAR S]
    { '\uFF33', "S" }, // S  [FULLWIDTH LATIN CAPITAL LETTER S]

    // s Mappings
    { '\u015B', "s" }, // ś  [LATIN SMALL LETTER S WITH ACUTE]
    { '\u015D', "s" }, // ŝ  [LATIN SMALL LETTER S WITH CIRCUMFLEX]
    { '\u015F', "s" }, // ş  [LATIN SMALL LETTER S WITH CEDILLA]
    { '\u0161', "s" }, // š  [LATIN SMALL LETTER S WITH CARON]
    { '\u017F', "s" }, // ſ  http://en.wikipedia.org/wiki/Long_S  [LATIN SMALL LETTER LONG S]
    { '\u0219', "s" }, // ș  [LATIN SMALL LETTER S WITH COMMA BELOW]
    { '\u023F', "s" }, // ȿ  [LATIN SMALL LETTER S WITH SWASH TAIL]
    { '\u0282', "s" }, // ʂ  [LATIN SMALL LETTER S WITH HOOK]
    { '\u1D74', "s" }, // ᵴ  [LATIN SMALL LETTER S WITH MIDDLE TILDE]
    { '\u1D8A', "s" }, // ᶊ  [LATIN SMALL LETTER S WITH PALATAL HOOK]
    { '\u1E61', "s" }, // ṡ  [LATIN SMALL LETTER S WITH DOT ABOVE]
    { '\u1E63', "s" }, // ṣ  [LATIN SMALL LETTER S WITH DOT BELOW]
    { '\u1E65', "s" }, // ṥ  [LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE]
    { '\u1E67', "s" }, // ṧ  [LATIN SMALL LETTER S WITH CARON AND DOT ABOVE]
    { '\u1E69', "s" }, // ṩ  [LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE]
    { '\u1E9C', "s" }, // ẜ  [LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE]
    { '\u1E9D', "s" }, // ẝ  [LATIN SMALL LETTER LONG S WITH HIGH STROKE]
    { '\u24E2', "s" }, // ⓢ  [CIRCLED LATIN SMALL LETTER S]
    { '\uA784', "s" }, // Ꞅ  [LATIN CAPITAL LETTER INSULAR S]
    { '\uFF53', "s" }, // s  [FULLWIDTH LATIN SMALL LETTER S]

    // SS Mappings
    { '\u1E9E', "SS" }, // ẞ  [LATIN CAPITAL LETTER SHARP S]

    // (s) Mappings
    { '\u24AE', "(s)" }, // ⒮  [PARENTHESIZED LATIN SMALL LETTER S]

    // ss Mappings
    { '\u00DF', "ss" }, // ß  [LATIN SMALL LETTER SHARP S]

    // st Mappings
    { '\uFB06', "st" }, // st  [LATIN SMALL LIGATURE ST]

    // T Mappings
    { '\u0162', "T" }, // Ţ  [LATIN CAPITAL LETTER T WITH CEDILLA]
    { '\u0164', "T" }, // Ť  [LATIN CAPITAL LETTER T WITH CARON]
    { '\u0166', "T" }, // Ŧ  [LATIN CAPITAL LETTER T WITH STROKE]
    { '\u01AC', "T" }, // Ƭ  [LATIN CAPITAL LETTER T WITH HOOK]
    { '\u01AE', "T" }, // Ʈ  [LATIN CAPITAL LETTER T WITH RETROFLEX HOOK]
    { '\u021A', "T" }, // Ț  [LATIN CAPITAL LETTER T WITH COMMA BELOW]
    { '\u023E', "T" }, // Ⱦ  [LATIN CAPITAL LETTER T WITH DIAGONAL STROKE]
    { '\u1D1B', "T" }, // ᴛ  [LATIN LETTER SMALL CAPITAL T]
    { '\u1E6A', "T" }, // Ṫ  [LATIN CAPITAL LETTER T WITH DOT ABOVE]
    { '\u1E6C', "T" }, // Ṭ  [LATIN CAPITAL LETTER T WITH DOT BELOW]
    { '\u1E6E', "T" }, // Ṯ  [LATIN CAPITAL LETTER T WITH LINE BELOW]
    { '\u1E70', "T" }, // Ṱ  [LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW]
    { '\u24C9', "T" }, // Ⓣ  [CIRCLED LATIN CAPITAL LETTER T]
    { '\uA786', "T" }, // Ꞇ  [LATIN CAPITAL LETTER INSULAR T]
    { '\uFF34', "T" }, // T  [FULLWIDTH LATIN CAPITAL LETTER T]

    // t Mappings
    { '\u0163', "t" }, // ţ  [LATIN SMALL LETTER T WITH CEDILLA]
    { '\u0165', "t" }, // ť  [LATIN SMALL LETTER T WITH CARON]
    { '\u0167', "t" }, // ŧ  [LATIN SMALL LETTER T WITH STROKE]
    { '\u01AB', "t" }, // ƫ  [LATIN SMALL LETTER T WITH PALATAL HOOK]
    { '\u01AD', "t" }, // ƭ  [LATIN SMALL LETTER T WITH HOOK]
    { '\u021B', "t" }, // ț  [LATIN SMALL LETTER T WITH COMMA BELOW]
    { '\u0236', "t" }, // ȶ  [LATIN SMALL LETTER T WITH CURL]
    { '\u0287', "t" }, // ʇ  [LATIN SMALL LETTER TURNED T]
    { '\u0288', "t" }, // ʈ  [LATIN SMALL LETTER T WITH RETROFLEX HOOK]
    { '\u1D75', "t" }, // ᵵ  [LATIN SMALL LETTER T WITH MIDDLE TILDE]
    { '\u1E6B', "t" }, // ṫ  [LATIN SMALL LETTER T WITH DOT ABOVE]
    { '\u1E6D', "t" }, // ṭ  [LATIN SMALL LETTER T WITH DOT BELOW]
    { '\u1E6F', "t" }, // ṯ  [LATIN SMALL LETTER T WITH LINE BELOW]
    { '\u1E71', "t" }, // ṱ  [LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW]
    { '\u1E97', "t" }, // ẗ  [LATIN SMALL LETTER T WITH DIAERESIS]
    { '\u24E3', "t" }, // ⓣ  [CIRCLED LATIN SMALL LETTER T]
    { '\u2C66', "t" }, // ⱦ  [LATIN SMALL LETTER T WITH DIAGONAL STROKE]
    { '\uFF54', "t" }, // t  [FULLWIDTH LATIN SMALL LETTER T]

    // TH Mappings
    { '\u00DE', "TH" }, // Þ  [LATIN CAPITAL LETTER THORN]
    { '\uA766', "TH" }, // Ꝧ  [LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER]

    // TZ Mappings
    { '\uA728', "TZ" }, // Ꜩ  [LATIN CAPITAL LETTER TZ]

    // (t) Mappings
    { '\u24AF', "(t)" }, // ⒯  [PARENTHESIZED LATIN SMALL LETTER T]

    // tc Mappings
    { '\u02A8', "tc" }, // ʨ  [LATIN SMALL LETTER TC DIGRAPH WITH CURL]

    // th Mappings
    { '\u00FE', "th" }, // þ  [LATIN SMALL LETTER THORN]
    { '\u1D7A', "th" }, // ᵺ  [LATIN SMALL LETTER TH WITH STRIKETHROUGH]
    { '\uA767', "th" }, // ꝧ  [LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER]

    // ts Mappings
    { '\u02A6', "ts" }, // ʦ  [LATIN SMALL LETTER TS DIGRAPH]

    // tz Mappings
    { '\uA729', "tz" }, // ꜩ  [LATIN SMALL LETTER TZ]

    // U Mappings
    { '\u00D9', "U" }, // Ù  [LATIN CAPITAL LETTER U WITH GRAVE]
    { '\u00DA', "U" }, // Ú  [LATIN CAPITAL LETTER U WITH ACUTE]
    { '\u00DB', "U" }, // Û  [LATIN CAPITAL LETTER U WITH CIRCUMFLEX]
    { '\u00DC', "U" }, // Ü  [LATIN CAPITAL LETTER U WITH DIAERESIS]
    { '\u0168', "U" }, // Ũ  [LATIN CAPITAL LETTER U WITH TILDE]
    { '\u016A', "U" }, // Ū  [LATIN CAPITAL LETTER U WITH MACRON]
    { '\u016C', "U" }, // Ŭ  [LATIN CAPITAL LETTER U WITH BREVE]
    { '\u016E', "U" }, // Ů  [LATIN CAPITAL LETTER U WITH RING ABOVE]
    { '\u0170', "U" }, // Ű  [LATIN CAPITAL LETTER U WITH DOUBLE ACUTE]
    { '\u0172', "U" }, // Ų  [LATIN CAPITAL LETTER U WITH OGONEK]
    { '\u01AF', "U" }, // Ư  [LATIN CAPITAL LETTER U WITH HORN]
    { '\u01D3', "U" }, // Ǔ  [LATIN CAPITAL LETTER U WITH CARON]
    { '\u01D5', "U" }, // Ǖ  [LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON]
    { '\u01D7', "U" }, // Ǘ  [LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE]
    { '\u01D9', "U" }, // Ǚ  [LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON]
    { '\u01DB', "U" }, // Ǜ  [LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE]
    { '\u0214', "U" }, // Ȕ  [LATIN CAPITAL LETTER U WITH DOUBLE GRAVE]
    { '\u0216', "U" }, // Ȗ  [LATIN CAPITAL LETTER U WITH INVERTED BREVE]
    { '\u0244', "U" }, // Ʉ  [LATIN CAPITAL LETTER U BAR]
    { '\u1D1C', "U" }, // ᴜ  [LATIN LETTER SMALL CAPITAL U]
    { '\u1D7E', "U" }, // ᵾ  [LATIN SMALL CAPITAL LETTER U WITH STROKE]
    { '\u1E72', "U" }, // Ṳ  [LATIN CAPITAL LETTER U WITH DIAERESIS BELOW]
    { '\u1E74', "U" }, // Ṵ  [LATIN CAPITAL LETTER U WITH TILDE BELOW]
    { '\u1E76', "U" }, // Ṷ  [LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW]
    { '\u1E78', "U" }, // Ṹ  [LATIN CAPITAL LETTER U WITH TILDE AND ACUTE]
    { '\u1E7A', "U" }, // Ṻ  [LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS]
    { '\u1EE4', "U" }, // Ụ  [LATIN CAPITAL LETTER U WITH DOT BELOW]
    { '\u1EE6', "U" }, // Ủ  [LATIN CAPITAL LETTER U WITH HOOK ABOVE]
    { '\u1EE8', "U" }, // Ứ  [LATIN CAPITAL LETTER U WITH HORN AND ACUTE]
    { '\u1EEA', "U" }, // Ừ  [LATIN CAPITAL LETTER U WITH HORN AND GRAVE]
    { '\u1EEC', "U" }, // Ử  [LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE]
    { '\u1EEE', "U" }, // Ữ  [LATIN CAPITAL LETTER U WITH HORN AND TILDE]
    { '\u1EF0', "U" }, // Ự  [LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW]
    { '\u24CA', "U" }, // Ⓤ  [CIRCLED LATIN CAPITAL LETTER U]
    { '\uFF35', "U" }, // U  [FULLWIDTH LATIN CAPITAL LETTER U]

    // u Mappings
    { '\u00F9', "u" }, // ù  [LATIN SMALL LETTER U WITH GRAVE]
    { '\u00FA', "u" }, // ú  [LATIN SMALL LETTER U WITH ACUTE]
    { '\u00FB', "u" }, // û  [LATIN SMALL LETTER U WITH CIRCUMFLEX]
    { '\u00FC', "u" }, // ü  [LATIN SMALL LETTER U WITH DIAERESIS]
    { '\u0169', "u" }, // ũ  [LATIN SMALL LETTER U WITH TILDE]
    { '\u016B', "u" }, // ū  [LATIN SMALL LETTER U WITH MACRON]
    { '\u016D', "u" }, // ŭ  [LATIN SMALL LETTER U WITH BREVE]
    { '\u016F', "u" }, // ů  [LATIN SMALL LETTER U WITH RING ABOVE]
    { '\u0171', "u" }, // ű  [LATIN SMALL LETTER U WITH DOUBLE ACUTE]
    { '\u0173', "u" }, // ų  [LATIN SMALL LETTER U WITH OGONEK]
    { '\u01B0', "u" }, // ư  [LATIN SMALL LETTER U WITH HORN]
    { '\u01D4', "u" }, // ǔ  [LATIN SMALL LETTER U WITH CARON]
    { '\u01D6', "u" }, // ǖ  [LATIN SMALL LETTER U WITH DIAERESIS AND MACRON]
    { '\u01D8', "u" }, // ǘ  [LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE]
    { '\u01DA', "u" }, // ǚ  [LATIN SMALL LETTER U WITH DIAERESIS AND CARON]
    { '\u01DC', "u" }, // ǜ  [LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE]
    { '\u0215', "u" }, // ȕ  [LATIN SMALL LETTER U WITH DOUBLE GRAVE]
    { '\u0217', "u" }, // ȗ  [LATIN SMALL LETTER U WITH INVERTED BREVE]
    { '\u0289', "u" }, // ʉ  [LATIN SMALL LETTER U BAR]
    { '\u1D64', "u" }, // ᵤ  [LATIN SUBSCRIPT SMALL LETTER U]
    { '\u1D99', "u" }, // ᶙ  [LATIN SMALL LETTER U WITH RETROFLEX HOOK]
    { '\u1E73', "u" }, // ṳ  [LATIN SMALL LETTER U WITH DIAERESIS BELOW]
    { '\u1E75', "u" }, // ṵ  [LATIN SMALL LETTER U WITH TILDE BELOW]
    { '\u1E77', "u" }, // ṷ  [LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW]
    { '\u1E79', "u" }, // ṹ  [LATIN SMALL LETTER U WITH TILDE AND ACUTE]
    { '\u1E7B', "u" }, // ṻ  [LATIN SMALL LETTER U WITH MACRON AND DIAERESIS]
    { '\u1EE5', "u" }, // ụ  [LATIN SMALL LETTER U WITH DOT BELOW]
    { '\u1EE7', "u" }, // ủ  [LATIN SMALL LETTER U WITH HOOK ABOVE]
    { '\u1EE9', "u" }, // ứ  [LATIN SMALL LETTER U WITH HORN AND ACUTE]
    { '\u1EEB', "u" }, // ừ  [LATIN SMALL LETTER U WITH HORN AND GRAVE]
    { '\u1EED', "u" }, // ử  [LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE]
    { '\u1EEF', "u" }, // ữ  [LATIN SMALL LETTER U WITH HORN AND TILDE]
    { '\u1EF1', "u" }, // ự  [LATIN SMALL LETTER U WITH HORN AND DOT BELOW]
    { '\u24E4', "u" }, // ⓤ  [CIRCLED LATIN SMALL LETTER U]
    { '\uFF55', "u" }, // u  [FULLWIDTH LATIN SMALL LETTER U]

    // (u) Mappings
    { '\u24B0', "(u)" }, // ⒰  [PARENTHESIZED LATIN SMALL LETTER U]

    // ue Mappings
    { '\u1D6B', "ue" }, // ᵫ  [LATIN SMALL LETTER UE]

    // V Mappings
    { '\u01B2', "V" }, // Ʋ  [LATIN CAPITAL LETTER V WITH HOOK]
    { '\u0245', "V" }, // Ʌ  [LATIN CAPITAL LETTER TURNED V]
    { '\u1D20', "V" }, // ᴠ  [LATIN LETTER SMALL CAPITAL V]
    { '\u1E7C', "V" }, // Ṽ  [LATIN CAPITAL LETTER V WITH TILDE]
    { '\u1E7E', "V" }, // Ṿ  [LATIN CAPITAL LETTER V WITH DOT BELOW]
    { '\u1EFC', "V" }, // Ỽ  [LATIN CAPITAL LETTER MIDDLE-WELSH V]
    { '\u24CB', "V" }, // Ⓥ  [CIRCLED LATIN CAPITAL LETTER V]
    { '\uA75E', "V" }, // Ꝟ  [LATIN CAPITAL LETTER V WITH DIAGONAL STROKE]
    { '\uA768', "V" }, // Ꝩ  [LATIN CAPITAL LETTER VEND]
    { '\uFF36', "V" }, // V  [FULLWIDTH LATIN CAPITAL LETTER V]

    // v Mappings
    { '\u028B', "v" }, // ʋ  [LATIN SMALL LETTER V WITH HOOK]
    { '\u028C', "v" }, // ʌ  [LATIN SMALL LETTER TURNED V]
    { '\u1D65', "v" }, // ᵥ  [LATIN SUBSCRIPT SMALL LETTER V]
    { '\u1D8C', "v" }, // ᶌ  [LATIN SMALL LETTER V WITH PALATAL HOOK]
    { '\u1E7D', "v" }, // ṽ  [LATIN SMALL LETTER V WITH TILDE]
    { '\u1E7F', "v" }, // ṿ  [LATIN SMALL LETTER V WITH DOT BELOW]
    { '\u24E5', "v" }, // ⓥ  [CIRCLED LATIN SMALL LETTER V]
    { '\u2C71', "v" }, // ⱱ  [LATIN SMALL LETTER V WITH RIGHT HOOK]
    { '\u2C74', "v" }, // ⱴ  [LATIN SMALL LETTER V WITH CURL]
    { '\uA75F', "v" }, // ꝟ  [LATIN SMALL LETTER V WITH DIAGONAL STROKE]
    { '\uFF56', "v" }, // v  [FULLWIDTH LATIN SMALL LETTER V]

    // VY Mappings
    { '\uA760', "VY" }, // Ꝡ  [LATIN CAPITAL LETTER VY]

    // (v) Mappings
    { '\u24B1', "(v)" }, // ⒱  [PARENTHESIZED LATIN SMALL LETTER V]

    // vy Mappings
    { '\uA761', "vy" }, // ꝡ  [LATIN SMALL LETTER VY]

    // W Mappings
    { '\u0174', "W" }, // Ŵ  [LATIN CAPITAL LETTER W WITH CIRCUMFLEX]
    { '\u01F7', "W" }, // Ƿ  http://en.wikipedia.org/wiki/Wynn  [LATIN CAPITAL LETTER WYNN]
    { '\u1D21', "W" }, // ᴡ  [LATIN LETTER SMALL CAPITAL W]
    { '\u1E80', "W" }, // Ẁ  [LATIN CAPITAL LETTER W WITH GRAVE]
    { '\u1E82', "W" }, // Ẃ  [LATIN CAPITAL LETTER W WITH ACUTE]
    { '\u1E84', "W" }, // Ẅ  [LATIN CAPITAL LETTER W WITH DIAERESIS]
    { '\u1E86', "W" }, // Ẇ  [LATIN CAPITAL LETTER W WITH DOT ABOVE]
    { '\u1E88', "W" }, // Ẉ  [LATIN CAPITAL LETTER W WITH DOT BELOW]
    { '\u24CC', "W" }, // Ⓦ  [CIRCLED LATIN CAPITAL LETTER W]
    { '\u2C72', "W" }, // Ⱳ  [LATIN CAPITAL LETTER W WITH HOOK]
    { '\uFF37', "W" }, // W  [FULLWIDTH LATIN CAPITAL LETTER W]

    // w Mappings
    { '\u0175', "w" }, // ŵ  [LATIN SMALL LETTER W WITH CIRCUMFLEX]
    { '\u01BF', "w" }, // ƿ  http://en.wikipedia.org/wiki/Wynn  [LATIN LETTER WYNN]
    { '\u028D', "w" }, // ʍ  [LATIN SMALL LETTER TURNED W]
    { '\u1E81', "w" }, // ẁ  [LATIN SMALL LETTER W WITH GRAVE]
    { '\u1E83', "w" }, // ẃ  [LATIN SMALL LETTER W WITH ACUTE]
    { '\u1E85', "w" }, // ẅ  [LATIN SMALL LETTER W WITH DIAERESIS]
    { '\u1E87', "w" }, // ẇ  [LATIN SMALL LETTER W WITH DOT ABOVE]
    { '\u1E89', "w" }, // ẉ  [LATIN SMALL LETTER W WITH DOT BELOW]
    { '\u1E98', "w" }, // ẘ  [LATIN SMALL LETTER W WITH RING ABOVE]
    { '\u24E6', "w" }, // ⓦ  [CIRCLED LATIN SMALL LETTER W]
    { '\u2C73', "w" }, // ⱳ  [LATIN SMALL LETTER W WITH HOOK]
    { '\uFF57', "w" }, // w  [FULLWIDTH LATIN SMALL LETTER W]

    // (w) Mappings
    { '\u24B2', "(w)" }, // ⒲  [PARENTHESIZED LATIN SMALL LETTER W]

    // X Mappings
    { '\u1E8A', "X" }, // Ẋ  [LATIN CAPITAL LETTER X WITH DOT ABOVE]
    { '\u1E8C', "X" }, // Ẍ  [LATIN CAPITAL LETTER X WITH DIAERESIS]
    { '\u24CD', "X" }, // Ⓧ  [CIRCLED LATIN CAPITAL LETTER X]
    { '\uFF38', "X" }, // X  [FULLWIDTH LATIN CAPITAL LETTER X]

    // x Mappings
    { '\u1D8D', "x" }, // ᶍ  [LATIN SMALL LETTER X WITH PALATAL HOOK]
    { '\u1E8B', "x" }, // ẋ  [LATIN SMALL LETTER X WITH DOT ABOVE]
    { '\u1E8D', "x" }, // ẍ  [LATIN SMALL LETTER X WITH DIAERESIS]
    { '\u2093', "x" }, // ₓ  [LATIN SUBSCRIPT SMALL LETTER X]
    { '\u24E7', "x" }, // ⓧ  [CIRCLED LATIN SMALL LETTER X]
    { '\uFF58', "x" }, // x  [FULLWIDTH LATIN SMALL LETTER X]

    // (x) Mappings
    { '\u24B3', "(x)" }, // ⒳  [PARENTHESIZED LATIN SMALL LETTER X]

    // Y Mappings
    { '\u00DD', "Y" }, // Ý  [LATIN CAPITAL LETTER Y WITH ACUTE]
    { '\u0176', "Y" }, // Ŷ  [LATIN CAPITAL LETTER Y WITH CIRCUMFLEX]
    { '\u0178', "Y" }, // Ÿ  [LATIN CAPITAL LETTER Y WITH DIAERESIS]
    { '\u01B3', "Y" }, // Ƴ  [LATIN CAPITAL LETTER Y WITH HOOK]
    { '\u0232', "Y" }, // Ȳ  [LATIN CAPITAL LETTER Y WITH MACRON]
    { '\u024E', "Y" }, // Ɏ  [LATIN CAPITAL LETTER Y WITH STROKE]
    { '\u028F', "Y" }, // ʏ  [LATIN LETTER SMALL CAPITAL Y]
    { '\u1E8E', "Y" }, // Ẏ  [LATIN CAPITAL LETTER Y WITH DOT ABOVE]
    { '\u1EF2', "Y" }, // Ỳ  [LATIN CAPITAL LETTER Y WITH GRAVE]
    { '\u1EF4', "Y" }, // Ỵ  [LATIN CAPITAL LETTER Y WITH DOT BELOW]
    { '\u1EF6', "Y" }, // Ỷ  [LATIN CAPITAL LETTER Y WITH HOOK ABOVE]
    { '\u1EF8', "Y" }, // Ỹ  [LATIN CAPITAL LETTER Y WITH TILDE]
    { '\u1EFE', "Y" }, // Ỿ  [LATIN CAPITAL LETTER Y WITH LOOP]
    { '\u24CE', "Y" }, // Ⓨ  [CIRCLED LATIN CAPITAL LETTER Y]
    { '\uFF39', "Y" }, // Y  [FULLWIDTH LATIN CAPITAL LETTER Y]

    // y Mappings
    { '\u00FD', "y" }, // ý  [LATIN SMALL LETTER Y WITH ACUTE]
    { '\u00FF', "y" }, // ÿ  [LATIN SMALL LETTER Y WITH DIAERESIS]
    { '\u0177', "y" }, // ŷ  [LATIN SMALL LETTER Y WITH CIRCUMFLEX]
    { '\u01B4', "y" }, // ƴ  [LATIN SMALL LETTER Y WITH HOOK]
    { '\u0233', "y" }, // ȳ  [LATIN SMALL LETTER Y WITH MACRON]
    { '\u024F', "y" }, // ɏ  [LATIN SMALL LETTER Y WITH STROKE]
    { '\u028E', "y" }, // ʎ  [LATIN SMALL LETTER TURNED Y]
    { '\u1E8F', "y" }, // ẏ  [LATIN SMALL LETTER Y WITH DOT ABOVE]
    { '\u1E99', "y" }, // ẙ  [LATIN SMALL LETTER Y WITH RING ABOVE]
    { '\u1EF3', "y" }, // ỳ  [LATIN SMALL LETTER Y WITH GRAVE]
    { '\u1EF5', "y" }, // ỵ  [LATIN SMALL LETTER Y WITH DOT BELOW]
    { '\u1EF7', "y" }, // ỷ  [LATIN SMALL LETTER Y WITH HOOK ABOVE]
    { '\u1EF9', "y" }, // ỹ  [LATIN SMALL LETTER Y WITH TILDE]
    { '\u1EFF', "y" }, // ỿ  [LATIN SMALL LETTER Y WITH LOOP]
    { '\u24E8', "y" }, // ⓨ  [CIRCLED LATIN SMALL LETTER Y]
    { '\uFF59', "y" }, // y  [FULLWIDTH LATIN SMALL LETTER Y]

    // (y) Mappings
    { '\u24B4', "(y)" }, // ⒴  [PARENTHESIZED LATIN SMALL LETTER Y]

    // Z Mappings
    { '\u0179', "Z" }, // Ź  [LATIN CAPITAL LETTER Z WITH ACUTE]
    { '\u017B', "Z" }, // Ż  [LATIN CAPITAL LETTER Z WITH DOT ABOVE]
    { '\u017D', "Z" }, // Ž  [LATIN CAPITAL LETTER Z WITH CARON]
    { '\u01B5', "Z" }, // Ƶ  [LATIN CAPITAL LETTER Z WITH STROKE]
    { '\u021C', "Z" }, // Ȝ  http://en.wikipedia.org/wiki/Yogh  [LATIN CAPITAL LETTER YOGH]
    { '\u0224', "Z" }, // Ȥ  [LATIN CAPITAL LETTER Z WITH HOOK]
    { '\u1D22', "Z" }, // ᴢ  [LATIN LETTER SMALL CAPITAL Z]
    { '\u1E90', "Z" }, // Ẑ  [LATIN CAPITAL LETTER Z WITH CIRCUMFLEX]
    { '\u1E92', "Z" }, // Ẓ  [LATIN CAPITAL LETTER Z WITH DOT BELOW]
    { '\u1E94', "Z" }, // Ẕ  [LATIN CAPITAL LETTER Z WITH LINE BELOW]
    { '\u24CF', "Z" }, // Ⓩ  [CIRCLED LATIN CAPITAL LETTER Z]
    { '\u2C6B', "Z" }, // Ⱬ  [LATIN CAPITAL LETTER Z WITH DESCENDER]
    { '\uA762', "Z" }, // Ꝣ  [LATIN CAPITAL LETTER VISIGOTHIC Z]
    { '\uFF3A', "Z" }, // Z  [FULLWIDTH LATIN CAPITAL LETTER Z]

    // z Mappings
    { '\u017A', "z" }, // ź  [LATIN SMALL LETTER Z WITH ACUTE]
    { '\u017C', "z" }, // ż  [LATIN SMALL LETTER Z WITH DOT ABOVE]
    { '\u017E', "z" }, // ž  [LATIN SMALL LETTER Z WITH CARON]
    { '\u01B6', "z" }, // ƶ  [LATIN SMALL LETTER Z WITH STROKE]
    { '\u021D', "z" }, // ȝ  http://en.wikipedia.org/wiki/Yogh  [LATIN SMALL LETTER YOGH]
    { '\u0225', "z" }, // ȥ  [LATIN SMALL LETTER Z WITH HOOK]
    { '\u0240', "z" }, // ɀ  [LATIN SMALL LETTER Z WITH SWASH TAIL]
    { '\u0290', "z" }, // ʐ  [LATIN SMALL LETTER Z WITH RETROFLEX HOOK]
    { '\u0291', "z" }, // ʑ  [LATIN SMALL LETTER Z WITH CURL]
    { '\u1D76', "z" }, // ᵶ  [LATIN SMALL LETTER Z WITH MIDDLE TILDE]
    { '\u1D8E', "z" }, // ᶎ  [LATIN SMALL LETTER Z WITH PALATAL HOOK]
    { '\u1E91', "z" }, // ẑ  [LATIN SMALL LETTER Z WITH CIRCUMFLEX]
    { '\u1E93', "z" }, // ẓ  [LATIN SMALL LETTER Z WITH DOT BELOW]
    { '\u1E95', "z" }, // ẕ  [LATIN SMALL LETTER Z WITH LINE BELOW]
    { '\u24E9', "z" }, // ⓩ  [CIRCLED LATIN SMALL LETTER Z]
    { '\u2C6C', "z" }, // ⱬ  [LATIN SMALL LETTER Z WITH DESCENDER]
    { '\uA763', "z" }, // ꝣ  [LATIN SMALL LETTER VISIGOTHIC Z]
    { '\uFF5A', "z" }, // z  [FULLWIDTH LATIN SMALL LETTER Z]

    // (z) Mappings
    { '\u24B5', "(z)" }, // ⒵  [PARENTHESIZED LATIN SMALL LETTER Z]

    // 0 Mappings
    { '\u2070', "0" }, // ⁰  [SUPERSCRIPT ZERO]
    { '\u2080', "0" }, // ₀  [SUBSCRIPT ZERO]
    { '\u24EA', "0" }, // ⓪  [CIRCLED DIGIT ZERO]
    { '\u24FF', "0" }, // ⓿  [NEGATIVE CIRCLED DIGIT ZERO]
    { '\uFF10', "0" }, // 0  [FULLWIDTH DIGIT ZERO]

    // 1 Mappings
    { '\u00B9', "1" }, // ¹  [SUPERSCRIPT ONE]
    { '\u2081', "1" }, // ₁  [SUBSCRIPT ONE]
    { '\u2460', "1" }, // ①  [CIRCLED DIGIT ONE]
    { '\u24F5', "1" }, // ⓵  [DOUBLE CIRCLED DIGIT ONE]
    { '\u2776', "1" }, // ❶  [DINGBAT NEGATIVE CIRCLED DIGIT ONE]
    { '\u2780', "1" }, // ➀  [DINGBAT CIRCLED SANS-SERIF DIGIT ONE]
    { '\u278A', "1" }, // ➊  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE]
    { '\uFF11', "1" }, // 1  [FULLWIDTH DIGIT ONE]

    // 1. Mappings
    { '\u2488', "1." }, // ⒈  [DIGIT ONE FULL STOP]

    // (1) Mappings
    { '\u2474', "(1)" }, // ⑴  [PARENTHESIZED DIGIT ONE]

    // 2 Mappings
    { '\u00B2', "2" }, // ²  [SUPERSCRIPT TWO]
    { '\u2082', "2" }, // ₂  [SUBSCRIPT TWO]
    { '\u2461', "2" }, // ②  [CIRCLED DIGIT TWO]
    { '\u24F6', "2" }, // ⓶  [DOUBLE CIRCLED DIGIT TWO]
    { '\u2777', "2" }, // ❷  [DINGBAT NEGATIVE CIRCLED DIGIT TWO]
    { '\u2781', "2" }, // ➁  [DINGBAT CIRCLED SANS-SERIF DIGIT TWO]
    { '\u278B', "2" }, // ➋  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO]
    { '\uFF12', "2" }, // 2  [FULLWIDTH DIGIT TWO]

    // 2. Mappings
    { '\u2489', "2." }, // ⒉  [DIGIT TWO FULL STOP]

    // (2) Mappings
    { '\u2475', "(2)" }, // ⑵  [PARENTHESIZED DIGIT TWO]

    // 3 Mappings
    { '\u00B3', "3" }, // ³  [SUPERSCRIPT THREE]
    { '\u2083', "3" }, // ₃  [SUBSCRIPT THREE]
    { '\u2462', "3" }, // ③  [CIRCLED DIGIT THREE]
    { '\u24F7', "3" }, // ⓷  [DOUBLE CIRCLED DIGIT THREE]
    { '\u2778', "3" }, // ❸  [DINGBAT NEGATIVE CIRCLED DIGIT THREE]
    { '\u2782', "3" }, // ➂  [DINGBAT CIRCLED SANS-SERIF DIGIT THREE]
    { '\u278C', "3" }, // ➌  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE]
    { '\uFF13', "3" }, // 3  [FULLWIDTH DIGIT THREE]

    // 3. Mappings
    { '\u248A', "3." }, // ⒊  [DIGIT THREE FULL STOP]

    // (3) Mappings
    { '\u2476', "(3)" }, // ⑶  [PARENTHESIZED DIGIT THREE]

    // 4 Mappings
    { '\u2074', "4" }, // ⁴  [SUPERSCRIPT FOUR]
    { '\u2084', "4" }, // ₄  [SUBSCRIPT FOUR]
    { '\u2463', "4" }, // ④  [CIRCLED DIGIT FOUR]
    { '\u24F8', "4" }, // ⓸  [DOUBLE CIRCLED DIGIT FOUR]
    { '\u2779', "4" }, // ❹  [DINGBAT NEGATIVE CIRCLED DIGIT FOUR]
    { '\u2783', "4" }, // ➃  [DINGBAT CIRCLED SANS-SERIF DIGIT FOUR]
    { '\u278D', "4" }, // ➍  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR]
    { '\uFF14', "4" }, // 4  [FULLWIDTH DIGIT FOUR]

    // 4. Mappings
    { '\u248B', "4." }, // ⒋  [DIGIT FOUR FULL STOP]

    // (4) Mappings
    { '\u2477', "(4)" }, // ⑷  [PARENTHESIZED DIGIT FOUR]

    // 5 Mappings
    { '\u2075', "5" }, // ⁵  [SUPERSCRIPT FIVE]
    { '\u2085', "5" }, // ₅  [SUBSCRIPT FIVE]
    { '\u2464', "5" }, // ⑤  [CIRCLED DIGIT FIVE]
    { '\u24F9', "5" }, // ⓹  [DOUBLE CIRCLED DIGIT FIVE]
    { '\u277A', "5" }, // ❺  [DINGBAT NEGATIVE CIRCLED DIGIT FIVE]
    { '\u2784', "5" }, // ➄  [DINGBAT CIRCLED SANS-SERIF DIGIT FIVE]
    { '\u278E', "5" }, // ➎  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE]
    { '\uFF15', "5" }, // 5  [FULLWIDTH DIGIT FIVE]

    // 5. Mappings
    { '\u248C', "5." }, // ⒌  [DIGIT FIVE FULL STOP]

    // (5) Mappings
    { '\u2478', "(5)" }, // ⑸  [PARENTHESIZED DIGIT FIVE]

    // 6 Mappings
    { '\u2076', "6" }, // ⁶  [SUPERSCRIPT SIX]
    { '\u2086', "6" }, // ₆  [SUBSCRIPT SIX]
    { '\u2465', "6" }, // ⑥  [CIRCLED DIGIT SIX]
    { '\u24FA', "6" }, // ⓺  [DOUBLE CIRCLED DIGIT SIX]
    { '\u277B', "6" }, // ❻  [DINGBAT NEGATIVE CIRCLED DIGIT SIX]
    { '\u2785', "6" }, // ➅  [DINGBAT CIRCLED SANS-SERIF DIGIT SIX]
    { '\u278F', "6" }, // ➏  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX]
    { '\uFF16', "6" }, // 6  [FULLWIDTH DIGIT SIX]

    // 6. Mappings
    { '\u248D', "6." }, // ⒍  [DIGIT SIX FULL STOP]

    // (6) Mappings
    { '\u2479', "(6)" }, // ⑹  [PARENTHESIZED DIGIT SIX]

    // 7 Mappings
    { '\u2077', "7" }, // ⁷  [SUPERSCRIPT SEVEN]
    { '\u2087', "7" }, // ₇  [SUBSCRIPT SEVEN]
    { '\u2466', "7" }, // ⑦  [CIRCLED DIGIT SEVEN]
    { '\u24FB', "7" }, // ⓻  [DOUBLE CIRCLED DIGIT SEVEN]
    { '\u277C', "7" }, // ❼  [DINGBAT NEGATIVE CIRCLED DIGIT SEVEN]
    { '\u2786', "7" }, // ➆  [DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN]
    { '\u2790', "7" }, // ➐  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN]
    { '\uFF17', "7" }, // 7  [FULLWIDTH DIGIT SEVEN]

    // 7. Mappings
    { '\u248E', "7." }, // ⒎  [DIGIT SEVEN FULL STOP]

    // (7) Mappings
    { '\u247A', "(7)" }, // ⑺  [PARENTHESIZED DIGIT SEVEN]

    // 8 Mappings
    { '\u2078', "8" }, // ⁸  [SUPERSCRIPT EIGHT]
    { '\u2088', "8" }, // ₈  [SUBSCRIPT EIGHT]
    { '\u2467', "8" }, // ⑧  [CIRCLED DIGIT EIGHT]
    { '\u24FC', "8" }, // ⓼  [DOUBLE CIRCLED DIGIT EIGHT]
    { '\u277D', "8" }, // ❽  [DINGBAT NEGATIVE CIRCLED DIGIT EIGHT]
    { '\u2787', "8" }, // ➇  [DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT]
    { '\u2791', "8" }, // ➑  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT]
    { '\uFF18', "8" }, // 8  [FULLWIDTH DIGIT EIGHT]

    // 8. Mappings
    { '\u248F', "8." }, // ⒏  [DIGIT EIGHT FULL STOP]

    // (8) Mappings
    { '\u247B', "(8)" }, // ⑻  [PARENTHESIZED DIGIT EIGHT]

    // 9 Mappings
    { '\u2079', "9" }, // ⁹  [SUPERSCRIPT NINE]
    { '\u2089', "9" }, // ₉  [SUBSCRIPT NINE]
    { '\u2468', "9" }, // ⑨  [CIRCLED DIGIT NINE]
    { '\u24FD', "9" }, // ⓽  [DOUBLE CIRCLED DIGIT NINE]
    { '\u277E', "9" }, // ❾  [DINGBAT NEGATIVE CIRCLED DIGIT NINE]
    { '\u2788', "9" }, // ➈  [DINGBAT CIRCLED SANS-SERIF DIGIT NINE]
    { '\u2792', "9" }, // ➒  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE]
    { '\uFF19', "9" }, // 9  [FULLWIDTH DIGIT NINE]

    // 9. Mappings
    { '\u2490', "9." }, // ⒐  [DIGIT NINE FULL STOP]

    // (9) Mappings
    { '\u247C', "(9)" }, // ⑼  [PARENTHESIZED DIGIT NINE]

    // 10 Mappings
    { '\u2469', "10" }, // ⑩  [CIRCLED NUMBER TEN]
    { '\u24FE', "10" }, // ⓾  [DOUBLE CIRCLED NUMBER TEN]
    { '\u277F', "10" }, // ❿  [DINGBAT NEGATIVE CIRCLED NUMBER TEN]
    { '\u2789', "10" }, // ➉  [DINGBAT CIRCLED SANS-SERIF NUMBER TEN]
    { '\u2793', "10" }, // ➓  [DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN]

    // 10. Mappings
    { '\u2491', "10." }, // ⒑  [NUMBER TEN FULL STOP]

    // (10) Mappings
    { '\u247D', "(10)" }, // ⑽  [PARENTHESIZED NUMBER TEN]

    // 11 Mappings
    { '\u246A', "11" }, // ⑪  [CIRCLED NUMBER ELEVEN]
    { '\u24EB', "11" }, // ⓫  [NEGATIVE CIRCLED NUMBER ELEVEN]

    // 11. Mappings
    { '\u2492', "11." }, // ⒒  [NUMBER ELEVEN FULL STOP]

    // (11) Mappings
    { '\u247E', "(11)" }, // ⑾  [PARENTHESIZED NUMBER ELEVEN]

    // 12 Mappings
    { '\u246B', "12" }, // ⑫  [CIRCLED NUMBER TWELVE]
    { '\u24EC', "12" }, // ⓬  [NEGATIVE CIRCLED NUMBER TWELVE]

    // 12. Mappings
    { '\u2493', "12." }, // ⒓  [NUMBER TWELVE FULL STOP]

    // (12) Mappings
    { '\u247F', "(12)" }, // ⑿  [PARENTHESIZED NUMBER TWELVE]

    // 13 Mappings
    { '\u246C', "13" }, // ⑬  [CIRCLED NUMBER THIRTEEN]
    { '\u24ED', "13" }, // ⓭  [NEGATIVE CIRCLED NUMBER THIRTEEN]

    // 13. Mappings
    { '\u2494', "13." }, // ⒔  [NUMBER THIRTEEN FULL STOP]

    // (13) Mappings
    { '\u2480', "(13)" }, // ⒀  [PARENTHESIZED NUMBER THIRTEEN]

    // 14 Mappings
    { '\u246D', "14" }, // ⑭  [CIRCLED NUMBER FOURTEEN]
    { '\u24EE', "14" }, // ⓮  [NEGATIVE CIRCLED NUMBER FOURTEEN]

    // 14. Mappings
    { '\u2495', "14." }, // ⒕  [NUMBER FOURTEEN FULL STOP]

    // (14) Mappings
    { '\u2481', "(14)" }, // ⒁  [PARENTHESIZED NUMBER FOURTEEN]

    // 15 Mappings
    { '\u246E', "15" }, // ⑮  [CIRCLED NUMBER FIFTEEN]
    { '\u24EF', "15" }, // ⓯  [NEGATIVE CIRCLED NUMBER FIFTEEN]

    // 15. Mappings
    { '\u2496', "15." }, // ⒖  [NUMBER FIFTEEN FULL STOP]

    // (15) Mappings
    { '\u2482', "(15)" }, // ⒂  [PARENTHESIZED NUMBER FIFTEEN]

    // 16 Mappings
    { '\u246F', "16" }, // ⑯  [CIRCLED NUMBER SIXTEEN]
    { '\u24F0', "16" }, // ⓰  [NEGATIVE CIRCLED NUMBER SIXTEEN]

    // 16. Mappings
    { '\u2497', "16." }, // ⒗  [NUMBER SIXTEEN FULL STOP]

    // (16) Mappings
    { '\u2483', "(16)" }, // ⒃  [PARENTHESIZED NUMBER SIXTEEN]

    // 17 Mappings
    { '\u2470', "17" }, // ⑰  [CIRCLED NUMBER SEVENTEEN]
    { '\u24F1', "17" }, // ⓱  [NEGATIVE CIRCLED NUMBER SEVENTEEN]

    // 17. Mappings
    { '\u2498', "17." }, // ⒘  [NUMBER SEVENTEEN FULL STOP]

    // (17) Mappings
    { '\u2484', "(17)" }, // ⒄  [PARENTHESIZED NUMBER SEVENTEEN]

    // 18 Mappings
    { '\u2471', "18" }, // ⑱  [CIRCLED NUMBER EIGHTEEN]
    { '\u24F2', "18" }, // ⓲  [NEGATIVE CIRCLED NUMBER EIGHTEEN]

    // 18. Mappings
    { '\u2499', "18." }, // ⒙  [NUMBER EIGHTEEN FULL STOP]

    // (18) Mappings
    { '\u2485', "(18)" }, // ⒅  [PARENTHESIZED NUMBER EIGHTEEN]

    // 19 Mappings
    { '\u2472', "19" }, // ⑲  [CIRCLED NUMBER NINETEEN]
    { '\u24F3', "19" }, // ⓳  [NEGATIVE CIRCLED NUMBER NINETEEN]

    // 19. Mappings
    { '\u249A', "19." }, // ⒚  [NUMBER NINETEEN FULL STOP]

    // (19) Mappings
    { '\u2486', "(19)" }, // ⒆  [PARENTHESIZED NUMBER NINETEEN]

    // 20 Mappings
    { '\u2473', "20" }, // ⑳  [CIRCLED NUMBER TWENTY]
    { '\u24F4', "20" }, // ⓴  [NEGATIVE CIRCLED NUMBER TWENTY]

    // 20. Mappings
    { '\u249B', "20." }, // ⒛  [NUMBER TWENTY FULL STOP]

    // (20) Mappings
    { '\u2487', "(20)" }, // ⒇  [PARENTHESIZED NUMBER TWENTY]

    // " Mappings
    { '\u00AB', "\"" }, // «  [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK]
    { '\u00BB', "\"" }, // »  [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK]
    { '\u201C', "\"" }, // "  [LEFT DOUBLE QUOTATION MARK]
    { '\u201D', "\"" }, // "  [RIGHT DOUBLE QUOTATION MARK]
    { '\u201E', "\"" }, // „  [DOUBLE LOW-9 QUOTATION MARK]
    { '\u2033', "\"" }, // ″  [DOUBLE PRIME]
    { '\u2036', "\"" }, // ‶  [REVERSED DOUBLE PRIME]
    { '\u275D', "\"" }, // ❝  [HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT]
    { '\u275E', "\"" }, // ❞  [HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT]
    { '\u276E', "\"" }, // ❮  [HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT]
    { '\u276F', "\"" }, // ❯  [HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT]
    { '\uFF02', "\"" }, // "  [FULLWIDTH QUOTATION MARK]

    // \ Mappings
    { '\uFF3C', "\\" }, // \  [FULLWIDTH REVERSE SOLIDUS]

    // - Mappings
    { '\u2010', "-" }, // ‐  [HYPHEN]
    { '\u2011', "-" }, // ‑  [NON-BREAKING HYPHEN]
    { '\u2012', "-" }, // ‒  [FIGURE DASH]
    { '\u2013', "-" }, // –  [EN DASH]
    { '\u2014', "-" }, // —  [EM DASH]
    { '\u207B', "-" }, // ⁻  [SUPERSCRIPT MINUS]
    { '\u208B', "-" }, // ₋  [SUBSCRIPT MINUS]
    { '\uFF0D', "-" }, // -  [FULLWIDTH HYPHEN-MINUS]

    // [ Mappings
    { '\u2045', "[" }, // ⁅  [LEFT SQUARE BRACKET WITH QUILL]
    { '\u2772', "[" }, // ❲  [LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT]
    { '\uFF3B', "[" }, // [  [FULLWIDTH LEFT SQUARE BRACKET]

    // ] Mappings
    { '\u2046', "]" }, // ⁆  [RIGHT SQUARE BRACKET WITH QUILL]
    { '\u2773', "]" }, // ❳  [LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT]
    { '\uFF3D', "]" }, // ]  [FULLWIDTH RIGHT SQUARE BRACKET]

    // ( Mappings
    { '\u207D', "(" }, // ⁽  [SUPERSCRIPT LEFT PARENTHESIS]
    { '\u208D', "(" }, // ₍  [SUBSCRIPT LEFT PARENTHESIS]
    { '\u2768', "(" }, // ❨  [MEDIUM LEFT PARENTHESIS ORNAMENT]
    { '\u276A', "(" }, // ❪  [MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT]
    { '\uFF08', "(" }, // (  [FULLWIDTH LEFT PARENTHESIS]

    // (( Mappings
    { '\u2E28', "((" }, // ⸨  [LEFT DOUBLE PARENTHESIS]

    // ) Mappings
    { '\u207E', ")" }, // ⁾  [SUPERSCRIPT RIGHT PARENTHESIS]
    { '\u208E', ")" }, // ₎  [SUBSCRIPT RIGHT PARENTHESIS]
    { '\u2769', ")" }, // ❩  [MEDIUM RIGHT PARENTHESIS ORNAMENT]
    { '\u276B', ")" }, // ❫  [MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT]
    { '\uFF09', ")" }, // )  [FULLWIDTH RIGHT PARENTHESIS]

    // )) Mappings
    { '\u2E29', "))" }, // ⸩  [RIGHT DOUBLE PARENTHESIS]

    // < Mappings
    { '\u276C', "<" }, // ❬  [MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT]
    { '\u2770', "<" }, // ❰  [HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT]
    { '\uFF1C', "<" }, // <  [FULLWIDTH LESS-THAN SIGN]

    // > Mappings
    { '\u276D', ">" }, // ❭  [MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT]
    { '\u2771', ">" }, // ❱  [HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT]
    { '\uFF1E', ">" }, // >  [FULLWIDTH GREATER-THAN SIGN]

    // { Mappings
    { '\u2774', "{" }, // ❴  [MEDIUM LEFT CURLY BRACKET ORNAMENT]
    { '\uFF5B', "{" }, // {  [FULLWIDTH LEFT CURLY BRACKET]

    // } Mappings
    { '\u2775', "}" }, // ❵  [MEDIUM RIGHT CURLY BRACKET ORNAMENT]
    { '\uFF5D', "}" }, // }  [FULLWIDTH RIGHT CURLY BRACKET]

    // + Mappings
    { '\u207A', "+" }, // ⁺  [SUPERSCRIPT PLUS SIGN]
    { '\u208A', "+" }, // ₊  [SUBSCRIPT PLUS SIGN]
    { '\uFF0B', "+" }, // +  [FULLWIDTH PLUS SIGN]

    // = Mappings
    { '\u207C', "=" }, // ⁼  [SUPERSCRIPT EQUALS SIGN]
    { '\u208C', "=" }, // ₌  [SUBSCRIPT EQUALS SIGN]
    { '\uFF1D', "=" }, // =  [FULLWIDTH EQUALS SIGN]

    // ! Mappings
    { '\uFF01', "!" }, // !  [FULLWIDTH EXCLAMATION MARK]

    // !! Mappings
    { '\u203C', "!!" }, // ‼  [DOUBLE EXCLAMATION MARK]

    // !? Mappings
    { '\u2049', "!?" }, // ⁉  [EXCLAMATION QUESTION MARK]

    // # Mappings
    { '\uFF03', "#" }, // #  [FULLWIDTH NUMBER SIGN]

    // $ Mappings
    { '\uFF04', "$" }, // $  [FULLWIDTH DOLLAR SIGN]

    // % Mappings
    { '\u2052', "%" }, // ⁒  [COMMERCIAL MINUS SIGN]
    { '\uFF05', "%" }, // %  [FULLWIDTH PERCENT SIGN]

    // & Mappings
    { '\uFF06', "&" }, // &  [FULLWIDTH AMPERSAND]

    // * Mappings
    { '\u204E', "*" }, // ⁎  [LOW ASTERISK]
    { '\uFF0A', "*" }, // *  [FULLWIDTH ASTERISK]

    // , Mappings
    { '\uFF0C', "," }, // ,  [FULLWIDTH COMMA]

    // . Mappings
    { '\uFF0E', "." }, // .  [FULLWIDTH FULL STOP]

    // / Mappings
    { '\u2044', "/" }, // ⁄  [FRACTION SLASH]
    { '\uFF0F', "/" }, // /  [FULLWIDTH SOLIDUS]

    // : Mappings
    { '\uFF1A', ":" }, // :  [FULLWIDTH COLON]

    // ; Mappings
    { '\u204F', ";" }, // ⁏  [REVERSED SEMICOLON]
    { '\uFF1B', ";" }, // ;  [FULLWIDTH SEMICOLON]

    // ? Mappings
    { '\uFF1F', "?" }, // ?  [FULLWIDTH QUESTION MARK]

    // ?? Mappings
    { '\u2047', "??" }, // ⁇  [DOUBLE QUESTION MARK]

    // ?! Mappings
    { '\u2048', "?!" }, // ⁈  [QUESTION EXCLAMATION MARK]

    // @ Mappings
    { '\uFF20', "@" }, // @  [FULLWIDTH COMMERCIAL AT]

    // ^ Mappings
    { '\u2038', "^" }, // ‸  [CARET]
    { '\uFF3E', "^" }, // ^  [FULLWIDTH CIRCUMFLEX ACCENT]

    // _ Mappings
    { '\uFF3F', "_" }, // _  [FULLWIDTH LOW LINE]

    // ~ Mappings
    { '\u2053', "~" }, // ⁓  [SWUNG DASH]
    { '\uFF5E', "~" }, // ~  [FULLWIDTH TILDE]

};

public static string FoldToASCII(this string input, int? length = null, int? version = 2)
{
    if (string.IsNullOrWhiteSpace(input)) return input;

    int end = length ?? input.Length;
    var foldedString = new StringBuilder(end);

    for (int pos = 0; pos < end; ++pos)
    {
        char c = input[pos];

        if (c < '\u0080')
        {
            foldedString.Append(c); // Directly append ASCII characters.
        }
        else if (_unicodeToAsciiMap.TryGetValue(c, out var asciiEquivalent))
        {
            foldedString.Append(asciiEquivalent); // Use dictionary for non-ASCII characters.
        }
    }

    return foldedString.ToString();
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment