[monkeydoc] Merge/add monkeydoc to master.
[mono.git] / mcs / tools / monkeydoc / Lucene.Net / Lucene.Net / Analysis / ASCIIFoldingFilter.cs
1 /* 
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  * 
9  * http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 using System;
19
20 using TermAttribute = Mono.Lucene.Net.Analysis.Tokenattributes.TermAttribute;
21 using ArrayUtil = Mono.Lucene.Net.Util.ArrayUtil;
22
23 namespace Mono.Lucene.Net.Analysis
24 {
25         
26         /// <summary> This class converts alphabetic, numeric, and symbolic Unicode characters
27         /// which are not in the first 127 ASCII characters (the "Basic Latin" Unicode
28         /// block) into their ASCII equivalents, if one exists.
29         /// 
30         /// Characters from the following Unicode blocks are converted; however, only
31         /// those characters with reasonable ASCII alternatives are converted:
32         /// 
33         /// <ul>
34         /// <li>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></li>
35     /// <li>Latin Extended-A: <a href="http://www.unicode.org/charts/PDF/U0100.pdf">http://www.unicode.org/charts/PDF/U0100.pdf</a></li>
36     /// <li>Latin Extended-B: <a href="http://www.unicode.org/charts/PDF/U0180.pdf">http://www.unicode.org/charts/PDF/U0180.pdf</a></li>
37     /// <li>Latin Extended Additional: <a href="http://www.unicode.org/charts/PDF/U1E00.pdf">http://www.unicode.org/charts/PDF/U1E00.pdf</a></li>
38     /// <li>Latin Extended-C: <a href="http://www.unicode.org/charts/PDF/U2C60.pdf">http://www.unicode.org/charts/PDF/U2C60.pdf</a></li>
39     /// <li>Latin Extended-D: <a href="http://www.unicode.org/charts/PDF/UA720.pdf">http://www.unicode.org/charts/PDF/UA720.pdf</a></li>
40     /// <li>IPA Extensions: <a href="http://www.unicode.org/charts/PDF/U0250.pdf">http://www.unicode.org/charts/PDF/U0250.pdf</a></li>
41     /// <li>Phonetic Extensions: <a href="http://www.unicode.org/charts/PDF/U1D00.pdf">http://www.unicode.org/charts/PDF/U1D00.pdf</a></li>
42     /// <li>Phonetic Extensions Supplement: <a href="http://www.unicode.org/charts/PDF/U1D80.pdf">http://www.unicode.org/charts/PDF/U1D80.pdf</a></li>
43     /// <li>General Punctuation: <a href="http://www.unicode.org/charts/PDF/U2000.pdf">http://www.unicode.org/charts/PDF/U2000.pdf</a></li>
44     /// <li>Superscripts and Subscripts: <a href="http://www.unicode.org/charts/PDF/U2070.pdf">http://www.unicode.org/charts/PDF/U2070.pdf</a></li>
45     /// <li>Enclosed Alphanumerics: <a href="http://www.unicode.org/charts/PDF/U2460.pdf">http://www.unicode.org/charts/PDF/U2460.pdf</a></li>
46     /// <li>Dingbats: <a href="http://www.unicode.org/charts/PDF/U2700.pdf">http://www.unicode.org/charts/PDF/U2700.pdf</a></li>
47     /// <li>Supplemental Punctuation: <a href="http://www.unicode.org/charts/PDF/U2E00.pdf">http://www.unicode.org/charts/PDF/U2E00.pdf</a></li>
48     /// <li>Alphabetic Presentation Forms: <a href="http://www.unicode.org/charts/PDF/UFB00.pdf">http://www.unicode.org/charts/PDF/UFB00.pdf</a></li>
49     /// <li>Halfwidth and Fullwidth Forms: <a href="http://www.unicode.org/charts/PDF/UFF00.pdf">http://www.unicode.org/charts/PDF/UFF00.pdf</a></li>
50         /// </ul>
51         /// 
52         /// See: <a href="http://en.wikipedia.org/wiki/Latin_characters_in_Unicode">http://en.wikipedia.org/wiki/Latin_characters_in_Unicode</a>
53         /// 
54         /// The set of character conversions supported by this class is a superset of
55         /// those supported by Lucene's {@link ISOLatin1AccentFilter} which strips
56         /// accents from Latin1 characters.  For example, '&#192;' will be replaced by
57         /// 'a'.
58         /// </summary>
59         public sealed class ASCIIFoldingFilter:TokenFilter
60         {
61                 public ASCIIFoldingFilter(TokenStream input):base(input)
62                 {
63                         termAtt = (TermAttribute) AddAttribute(typeof(TermAttribute));
64                 }
65                 
66                 private char[] output = new char[512];
67                 private int outputPos;
68                 private TermAttribute termAtt;
69                 
70                 public override bool IncrementToken()
71                 {
72                         if (input.IncrementToken())
73                         {
74                                 char[] buffer = termAtt.TermBuffer();
75                                 int length = termAtt.TermLength();
76                                 
77                                 // If no characters actually require rewriting then we
78                                 // just return token as-is:
79                                 for (int i = 0; i < length; ++i)
80                                 {
81                                         char c = buffer[i];
82                                         if (c >= '\u0080')
83                                         {
84                                                 FoldToASCII(buffer, length);
85                                                 termAtt.SetTermBuffer(output, 0, outputPos);
86                                                 break;
87                                         }
88                                 }
89                                 return true;
90                         }
91                         else
92                         {
93                                 return false;
94                         }
95                 }
96                 
97                 /// <summary> Converts characters above ASCII to their ASCII equivalents.  For example,
98                 /// accents are removed from accented characters.
99                 /// </summary>
100                 /// <param name="input">The string to fold
101                 /// </param>
102                 /// <param name="length">The number of characters in the input string
103                 /// </param>
104                 public void  FoldToASCII(char[] input, int length)
105                 {
106                         // Worst-case length required:
107                         int maxSizeNeeded = 4 * length;
108                         if (output.Length < maxSizeNeeded)
109                         {
110                                 output = new char[ArrayUtil.GetNextSize(maxSizeNeeded)];
111                         }
112                         
113                         outputPos = 0;
114                         
115                         for (int pos = 0; pos < length; ++pos)
116                         {
117                                 char c = input[pos];
118                                 
119                                 // Quick test: if it's not in range then just keep current character
120                                 if (c < '\u0080')
121                                 {
122                                         output[outputPos++] = c;
123                                 }
124                                 else
125                                 {
126                                         switch (c)
127                                         {
128                                                 
129                                                 case '\u00C0': 
130                                                 // Ãƒâ‚¬  [LATIN CAPITAL LETTER A WITH GRAVE]
131                                                 case '\u00C1': 
132                                                 // Ãƒï¿½  [LATIN CAPITAL LETTER A WITH ACUTE]
133                                                 case '\u00C2': 
134                                                 // Ãƒâ€š  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX]
135                                                 case '\u00C3': 
136                                                 // ÃƒÆ’  [LATIN CAPITAL LETTER A WITH TILDE]
137                                                 case '\u00C4': 
138                                                 // Ãƒâ€ž  [LATIN CAPITAL LETTER A WITH DIAERESIS]
139                                                 case '\u00C5': 
140                                                 // Ãƒâ€¦  [LATIN CAPITAL LETTER A WITH RING ABOVE]
141                                                 case '\u0100': 
142                                                 // Ã„€  [LATIN CAPITAL LETTER A WITH MACRON]
143                                                 case '\u0102': 
144                                                 // Ã„‚  [LATIN CAPITAL LETTER A WITH BREVE]
145                                                 case '\u0104': 
146                                                 // Ã„„  [LATIN CAPITAL LETTER A WITH OGONEK]
147                                                 case '\u018F': 
148                                                 // Ã†ï¿½  http://en.wikipedia.org/wiki/Schwa  [LATIN CAPITAL LETTER SCHWA]
149                                                 case '\u01CD': 
150                                                 // Ã‡ï¿½  [LATIN CAPITAL LETTER A WITH CARON]
151                                                 case '\u01DE': 
152                                                 // Ã‡Å¾  [LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON]
153                                                 case '\u01E0': 
154                                                 // Ã‡Â   [LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON]
155                                                 case '\u01FA': 
156                                                 // Ã‡Âº  [LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE]
157                                                 case '\u0200': 
158                                                 // Ãˆâ‚¬  [LATIN CAPITAL LETTER A WITH DOUBLE GRAVE]
159                                                 case '\u0202': 
160                                                 // Ãˆâ€š  [LATIN CAPITAL LETTER A WITH INVERTED BREVE]
161                                                 case '\u0226': 
162                                                 // ÃˆÂ¦  [LATIN CAPITAL LETTER A WITH DOT ABOVE]
163                                                 case '\u023A': 
164                                                 // ÃˆÂº  [LATIN CAPITAL LETTER A WITH STROKE]
165                                                 case '\u1D00': 
166                                                 // Ã¡Â´â‚¬  [LATIN LETTER SMALL CAPITAL A]
167                                                 case '\u1E00': 
168                                                 // Ã¡Â¸â‚¬  [LATIN CAPITAL LETTER A WITH RING BELOW]
169                                                 case '\u1EA0': 
170                                                 // Ã¡ÂºÂ   [LATIN CAPITAL LETTER A WITH DOT BELOW]
171                                                 case '\u1EA2': 
172                                                 // Ã¡ÂºÂ¢  [LATIN CAPITAL LETTER A WITH HOOK ABOVE]
173                                                 case '\u1EA4': 
174                                                 // Ã¡ÂºÂ¤  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE]
175                                                 case '\u1EA6': 
176                                                 // Ã¡ÂºÂ¦  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE]
177                                                 case '\u1EA8': 
178                                                 // Ã¡ÂºÂ¨  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE]
179                                                 case '\u1EAA': 
180                                                 // Ã¡ÂºÂª  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE]
181                                                 case '\u1EAC': 
182                                                 // Ã¡ÂºÂ¬  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW]
183                                                 case '\u1EAE': 
184                                                 // Ã¡ÂºÂ®  [LATIN CAPITAL LETTER A WITH BREVE AND ACUTE]
185                                                 case '\u1EB0': 
186                                                 // Ã¡ÂºÂ°  [LATIN CAPITAL LETTER A WITH BREVE AND GRAVE]
187                                                 case '\u1EB2': 
188                                                 // Ã¡ÂºÂ²  [LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE]
189                                                 case '\u1EB4': 
190                                                 // Ã¡ÂºÂ´  [LATIN CAPITAL LETTER A WITH BREVE AND TILDE]
191                                                 case '\u1EB6': 
192                                                 // Ã¡ÂºÂ¶  [LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW]
193                                                 case '\u24B6': 
194                                                 // Ã¢â€™Â¶  [CIRCLED LATIN CAPITAL LETTER A]
195                                                 case '\uFF21':  // Ã¯Â¼Â¡  [FULLWIDTH LATIN CAPITAL LETTER A]
196                                                         output[outputPos++] = 'A';
197                                                         break;
198                                                 
199                                                 case '\u00E0': 
200                                                 // ÃƒÂ   [LATIN SMALL LETTER A WITH GRAVE]
201                                                 case '\u00E1': 
202                                                 // ÃƒÂ¡  [LATIN SMALL LETTER A WITH ACUTE]
203                                                 case '\u00E2': 
204                                                 // ÃƒÂ¢  [LATIN SMALL LETTER A WITH CIRCUMFLEX]
205                                                 case '\u00E3': 
206                                                 // ÃƒÂ£  [LATIN SMALL LETTER A WITH TILDE]
207                                                 case '\u00E4': 
208                                                 // ÃƒÂ¤  [LATIN SMALL LETTER A WITH DIAERESIS]
209                                                 case '\u00E5': 
210                                                 // ÃƒÂ¥  [LATIN SMALL LETTER A WITH RING ABOVE]
211                                                 case '\u0101': 
212                                                 // Ã„�  [LATIN SMALL LETTER A WITH MACRON]
213                                                 case '\u0103': 
214                                                 // Ã„Æ’  [LATIN SMALL LETTER A WITH BREVE]
215                                                 case '\u0105': 
216                                                 // Ã„…  [LATIN SMALL LETTER A WITH OGONEK]
217                                                 case '\u01CE': 
218                                                 // Ã‡Å½  [LATIN SMALL LETTER A WITH CARON]
219                                                 case '\u01DF': 
220                                                 // Ã‡Å¸  [LATIN SMALL LETTER A WITH DIAERESIS AND MACRON]
221                                                 case '\u01E1': 
222                                                 // Ã‡Â¡  [LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON]
223                                                 case '\u01FB': 
224                                                 // Ã‡Â»  [LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE]
225                                                 case '\u0201': 
226                                                 // Ãˆï¿½  [LATIN SMALL LETTER A WITH DOUBLE GRAVE]
227                                                 case '\u0203': 
228                                                 // ÃˆÆ’  [LATIN SMALL LETTER A WITH INVERTED BREVE]
229                                                 case '\u0227': 
230                                                 // ÃˆÂ§  [LATIN SMALL LETTER A WITH DOT ABOVE]
231                                                 case '\u0250': 
232                                                 // Ã‰ï¿½  [LATIN SMALL LETTER TURNED A]
233                                                 case '\u0259': 
234                                                 // Ã‰â„¢  [LATIN SMALL LETTER SCHWA]
235                                                 case '\u025A': 
236                                                 // Ã‰Å¡  [LATIN SMALL LETTER SCHWA WITH HOOK]
237                                                 case '\u1D8F': 
238                                                 // Ã¡Â¶ï¿½  [LATIN SMALL LETTER A WITH RETROFLEX HOOK]
239                                                 case '\u1D95': 
240                                                 // Ã¡Â¶â€¢  [LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK]
241                                                 case '\u1E01': 
242                                                 // Ã¡ÂºÂ¡  [LATIN SMALL LETTER A WITH RING BELOW]
243                                                 case '\u1E9A': 
244                                                 // Ã¡ÂºÂ£  [LATIN SMALL LETTER A WITH RIGHT HALF RING]
245                                                 case '\u1EA1': 
246                                                 // Ã¡ÂºÂ¡  [LATIN SMALL LETTER A WITH DOT BELOW]
247                                                 case '\u1EA3': 
248                                                 // Ã¡ÂºÂ£  [LATIN SMALL LETTER A WITH HOOK ABOVE]
249                                                 case '\u1EA5': 
250                                                 // Ã¡ÂºÂ¥  [LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE]
251                                                 case '\u1EA7': 
252                                                 // Ã¡ÂºÂ§  [LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE]
253                                                 case '\u1EA9': 
254                                                 // Ã¡ÂºÂ©  [LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE]
255                                                 case '\u1EAB': 
256                                                 // Ã¡ÂºÂ«  [LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE]
257                                                 case '\u1EAD': 
258                                                 // Ã¡ÂºÂ­  [LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW]
259                                                 case '\u1EAF': 
260                                                 // Ã¡ÂºÂ¯  [LATIN SMALL LETTER A WITH BREVE AND ACUTE]
261                                                 case '\u1EB1': 
262                                                 // Ã¡ÂºÂ±  [LATIN SMALL LETTER A WITH BREVE AND GRAVE]
263                                                 case '\u1EB3': 
264                                                 // Ã¡ÂºÂ³  [LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE]
265                                                 case '\u1EB5': 
266                                                 // Ã¡ÂºÂµ  [LATIN SMALL LETTER A WITH BREVE AND TILDE]
267                                                 case '\u1EB7': 
268                                                 // Ã¡ÂºÂ·  [LATIN SMALL LETTER A WITH BREVE AND DOT BELOW]
269                                                 case '\u2090': 
270                                                 // Ã¢â€šï¿½  [LATIN SUBSCRIPT SMALL LETTER A]
271                                                 case '\u2094': 
272                                                 // Ã¢â€šï¿½?  [LATIN SUBSCRIPT SMALL LETTER SCHWA]
273                                                 case '\u24D0': 
274                                                 // Ã¢â€œï¿½  [CIRCLED LATIN SMALL LETTER A]
275                                                 case '\u2C65': 
276                                                 // Ã¢Â±Â¥  [LATIN SMALL LETTER A WITH STROKE]
277                                                 case '\u2C6F': 
278                                                 // Ã¢Â±Â¯  [LATIN CAPITAL LETTER TURNED A]
279                                                 case '\uFF41':  // Ã¯Â½ï¿½  [FULLWIDTH LATIN SMALL LETTER A]
280                                                         output[outputPos++] = 'a';
281                                                         break;
282                                                 
283                                                 case '\uA732':  // ÃªÅ“²  [LATIN CAPITAL LETTER AA]
284                                                         output[outputPos++] = 'A';
285                                                         output[outputPos++] = 'A';
286                                                         break;
287                                                 
288                                                 case '\u00C6': 
289                                                 // Ãƒâ€   [LATIN CAPITAL LETTER AE]
290                                                 case '\u01E2': 
291                                                 // Ã‡Â¢  [LATIN CAPITAL LETTER AE WITH MACRON]
292                                                 case '\u01FC': 
293                                                 // Ã‡Â¼  [LATIN CAPITAL LETTER AE WITH ACUTE]
294                                                 case '\u1D01':  // Ã¡Â´ï¿½  [LATIN LETTER SMALL CAPITAL AE]
295                                                         output[outputPos++] = 'A';
296                                                         output[outputPos++] = 'E';
297                                                         break;
298                                                 
299                                                 case '\uA734':  // ÃªÅ“´  [LATIN CAPITAL LETTER AO]
300                                                         output[outputPos++] = 'A';
301                                                         output[outputPos++] = 'O';
302                                                         break;
303                                                 
304                                                 case '\uA736':  // ÃªÅ“¶  [LATIN CAPITAL LETTER AU]
305                                                         output[outputPos++] = 'A';
306                                                         output[outputPos++] = 'U';
307                                                         break;
308                                                 
309                                                 case '\uA738': 
310                                                 // ÃªÅ“¸  [LATIN CAPITAL LETTER AV]
311                                                 case '\uA73A':  // ÃªÅ“º  [LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR]
312                                                         output[outputPos++] = 'A';
313                                                         output[outputPos++] = 'V';
314                                                         break;
315                                                 
316                                                 case '\uA73C':  // ÃªÅ“¼  [LATIN CAPITAL LETTER AY]
317                                                         output[outputPos++] = 'A';
318                                                         output[outputPos++] = 'Y';
319                                                         break;
320                                                 
321                                                 case '\u249C':  // Ã¢â€™Å“  [PARENTHESIZED LATIN SMALL LETTER A]
322                                                         output[outputPos++] = '(';
323                                                         output[outputPos++] = 'a';
324                                                         output[outputPos++] = ')';
325                                                         break;
326                                                 
327                                                 case '\uA733':  // ÃªÅ“³  [LATIN SMALL LETTER AA]
328                                                         output[outputPos++] = 'a';
329                                                         output[outputPos++] = 'a';
330                                                         break;
331                                                 
332                                                 case '\u00E6': 
333                                                 // ÃƒÂ¦  [LATIN SMALL LETTER AE]
334                                                 case '\u01E3': 
335                                                 // Ã‡Â£  [LATIN SMALL LETTER AE WITH MACRON]
336                                                 case '\u01FD': 
337                                                 // Ã‡Â½  [LATIN SMALL LETTER AE WITH ACUTE]
338                                                 case '\u1D02':  // Ã¡Â´â€š  [LATIN SMALL LETTER TURNED AE]
339                                                         output[outputPos++] = 'a';
340                                                         output[outputPos++] = 'e';
341                                                         break;
342                                                 
343                                                 case '\uA735':  // ÃªÅ“µ  [LATIN SMALL LETTER AO]
344                                                         output[outputPos++] = 'a';
345                                                         output[outputPos++] = 'o';
346                                                         break;
347                                                 
348                                                 case '\uA737':  // ÃªÅ“·  [LATIN SMALL LETTER AU]
349                                                         output[outputPos++] = 'a';
350                                                         output[outputPos++] = 'u';
351                                                         break;
352                                                 
353                                                 case '\uA739': 
354                                                 // ÃªÅ“¹  [LATIN SMALL LETTER AV]
355                                                 case '\uA73B':  // ÃªÅ“»  [LATIN SMALL LETTER AV WITH HORIZONTAL BAR]
356                                                         output[outputPos++] = 'a';
357                                                         output[outputPos++] = 'v';
358                                                         break;
359                                                 
360                                                 case '\uA73D':  // ÃªÅ“½  [LATIN SMALL LETTER AY]
361                                                         output[outputPos++] = 'a';
362                                                         output[outputPos++] = 'y';
363                                                         break;
364                                                 
365                                                 case '\u0181': 
366                                                 // Ã†ï¿½  [LATIN CAPITAL LETTER B WITH HOOK]
367                                                 case '\u0182': 
368                                                 // Ã†â€š  [LATIN CAPITAL LETTER B WITH TOPBAR]
369                                                 case '\u0243': 
370                                                 // Ã‰Æ’  [LATIN CAPITAL LETTER B WITH STROKE]
371                                                 case '\u0299': 
372                                                 // ÃŠâ„¢  [LATIN LETTER SMALL CAPITAL B]
373                                                 case '\u1D03': 
374                                                 // Ã¡Â´Æ’  [LATIN LETTER SMALL CAPITAL BARRED B]
375                                                 case '\u1E02': 
376                                                 // Ã¡Â¸â€š  [LATIN CAPITAL LETTER B WITH DOT ABOVE]
377                                                 case '\u1E04': 
378                                                 // Ã¡Â¸â€ž  [LATIN CAPITAL LETTER B WITH DOT BELOW]
379                                                 case '\u1E06': 
380                                                 // Ã¡Â¸â€   [LATIN CAPITAL LETTER B WITH LINE BELOW]
381                                                 case '\u24B7': 
382                                                 // Ã¢â€™Â·  [CIRCLED LATIN CAPITAL LETTER B]
383                                                 case '\uFF22':  // Ã¯Â¼Â¢  [FULLWIDTH LATIN CAPITAL LETTER B]
384                                                         output[outputPos++] = 'B';
385                                                         break;
386                                                 
387                                                 case '\u0180': 
388                                                 // Ã†â‚¬  [LATIN SMALL LETTER B WITH STROKE]
389                                                 case '\u0183': 
390                                                 // Ã†Æ’  [LATIN SMALL LETTER B WITH TOPBAR]
391                                                 case '\u0253': 
392                                                 // Ã‰â€œ  [LATIN SMALL LETTER B WITH HOOK]
393                                                 case '\u1D6C': 
394                                                 // Ã¡ÂµÂ¬  [LATIN SMALL LETTER B WITH MIDDLE TILDE]
395                                                 case '\u1D80': 
396                                                 // Ã¡Â¶â‚¬  [LATIN SMALL LETTER B WITH PALATAL HOOK]
397                                                 case '\u1E03': 
398                                                 // Ã¡Â¸Æ’  [LATIN SMALL LETTER B WITH DOT ABOVE]
399                                                 case '\u1E05': 
400                                                 // Ã¡Â¸â€¦  [LATIN SMALL LETTER B WITH DOT BELOW]
401                                                 case '\u1E07': 
402                                                 // Ã¡Â¸â€¡  [LATIN SMALL LETTER B WITH LINE BELOW]
403                                                 case '\u24D1': 
404                                                 // Ã¢â€œâ€˜  [CIRCLED LATIN SMALL LETTER B]
405                                                 case '\uFF42':  // Ã¯Â½â€š  [FULLWIDTH LATIN SMALL LETTER B]
406                                                         output[outputPos++] = 'b';
407                                                         break;
408                                                 
409                                                 case '\u249D':  // Ã¢â€™ï¿½  [PARENTHESIZED LATIN SMALL LETTER B]
410                                                         output[outputPos++] = '(';
411                                                         output[outputPos++] = 'b';
412                                                         output[outputPos++] = ')';
413                                                         break;
414                                                 
415                                                 case '\u00C7': 
416                                                 // Ãƒâ€¡  [LATIN CAPITAL LETTER C WITH CEDILLA]
417                                                 case '\u0106': 
418                                                 // Ã„†  [LATIN CAPITAL LETTER C WITH ACUTE]
419                                                 case '\u0108': 
420                                                 // Ã„ˆ  [LATIN CAPITAL LETTER C WITH CIRCUMFLEX]
421                                                 case '\u010A': 
422                                                 // Ã„Å   [LATIN CAPITAL LETTER C WITH DOT ABOVE]
423                                                 case '\u010C': 
424                                                 // Ã„Å’  [LATIN CAPITAL LETTER C WITH CARON]
425                                                 case '\u0187': 
426                                                 // Ã†â€¡  [LATIN CAPITAL LETTER C WITH HOOK]
427                                                 case '\u023B': 
428                                                 // ÃˆÂ»  [LATIN CAPITAL LETTER C WITH STROKE]
429                                                 case '\u0297': 
430                                                 // ÃŠâ€”  [LATIN LETTER STRETCHED C]
431                                                 case '\u1D04': 
432                                                 // Ã¡Â´â€ž  [LATIN LETTER SMALL CAPITAL C]
433                                                 case '\u1E08': 
434                                                 // Ã¡Â¸Ë†  [LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE]
435                                                 case '\u24B8': 
436                                                 // Ã¢â€™Â¸  [CIRCLED LATIN CAPITAL LETTER C]
437                                                 case '\uFF23':  // Ã¯Â¼Â£  [FULLWIDTH LATIN CAPITAL LETTER C]
438                                                         output[outputPos++] = 'C';
439                                                         break;
440                                                 
441                                                 case '\u00E7': 
442                                                 // ÃƒÂ§  [LATIN SMALL LETTER C WITH CEDILLA]
443                                                 case '\u0107': 
444                                                 // Ã„‡  [LATIN SMALL LETTER C WITH ACUTE]
445                                                 case '\u0109': 
446                                                 // Ã„‰  [LATIN SMALL LETTER C WITH CIRCUMFLEX]
447                                                 case '\u010B': 
448                                                 // Ã„‹  [LATIN SMALL LETTER C WITH DOT ABOVE]
449                                                 case '\u010D': 
450                                                 // Ã„�  [LATIN SMALL LETTER C WITH CARON]
451                                                 case '\u0188': 
452                                                 // Ã†Ë†  [LATIN SMALL LETTER C WITH HOOK]
453                                                 case '\u023C': 
454                                                 // ÃˆÂ¼  [LATIN SMALL LETTER C WITH STROKE]
455                                                 case '\u0255': 
456                                                 // Ã‰â€¢  [LATIN SMALL LETTER C WITH CURL]
457                                                 case '\u1E09': 
458                                                 // Ã¡Â¸â€°  [LATIN SMALL LETTER C WITH CEDILLA AND ACUTE]
459                                                 case '\u2184': 
460                                                 // Ã¢â€ â€ž  [LATIN SMALL LETTER REVERSED C]
461                                                 case '\u24D2': 
462                                                 // Ã¢â€œâ€™  [CIRCLED LATIN SMALL LETTER C]
463                                                 case '\uA73E': 
464                                                 // ÃªÅ“¾  [LATIN CAPITAL LETTER REVERSED C WITH DOT]
465                                                 case '\uA73F': 
466                                                 // ÃªÅ“¿  [LATIN SMALL LETTER REVERSED C WITH DOT]
467                                                 case '\uFF43':  // Ã¯Â½Æ’  [FULLWIDTH LATIN SMALL LETTER C]
468                                                         output[outputPos++] = 'c';
469                                                         break;
470                                                 
471                                                 case '\u249E':  // Ã¢â€™Å¾  [PARENTHESIZED LATIN SMALL LETTER C]
472                                                         output[outputPos++] = '(';
473                                                         output[outputPos++] = 'c';
474                                                         output[outputPos++] = ')';
475                                                         break;
476                                                 
477                                                 case '\u00D0': 
478                                                 // Ãƒï¿½  [LATIN CAPITAL LETTER ETH]
479                                                 case '\u010E': 
480                                                 // Ã„Ž  [LATIN CAPITAL LETTER D WITH CARON]
481                                                 case '\u0110': 
482                                                 // Ã„�  [LATIN CAPITAL LETTER D WITH STROKE]
483                                                 case '\u0189': 
484                                                 // Ã†â€°  [LATIN CAPITAL LETTER AFRICAN D]
485                                                 case '\u018A': 
486                                                 // Ã†Å   [LATIN CAPITAL LETTER D WITH HOOK]
487                                                 case '\u018B': 
488                                                 // Ã†â€¹  [LATIN CAPITAL LETTER D WITH TOPBAR]
489                                                 case '\u1D05': 
490                                                 // Ã¡Â´â€¦  [LATIN LETTER SMALL CAPITAL D]
491                                                 case '\u1D06': 
492                                                 // Ã¡Â´â€   [LATIN LETTER SMALL CAPITAL ETH]
493                                                 case '\u1E0A': 
494                                                 // Ã¡Â¸Å   [LATIN CAPITAL LETTER D WITH DOT ABOVE]
495                                                 case '\u1E0C': 
496                                                 // Ã¡Â¸Å’  [LATIN CAPITAL LETTER D WITH DOT BELOW]
497                                                 case '\u1E0E': 
498                                                 // Ã¡Â¸Å½  [LATIN CAPITAL LETTER D WITH LINE BELOW]
499                                                 case '\u1E10': 
500                                                 // Ã¡Â¸ï¿½  [LATIN CAPITAL LETTER D WITH CEDILLA]
501                                                 case '\u1E12': 
502                                                 // Ã¡Â¸â€™  [LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW]
503                                                 case '\u24B9': 
504                                                 // Ã¢â€™Â¹  [CIRCLED LATIN CAPITAL LETTER D]
505                                                 case '\uA779': 
506                                                 // Ãªï¿½Â¹  [LATIN CAPITAL LETTER INSULAR D]
507                                                 case '\uFF24':  // Ã¯Â¼Â¤  [FULLWIDTH LATIN CAPITAL LETTER D]
508                                                         output[outputPos++] = 'D';
509                                                         break;
510                                                 
511                                                 case '\u00F0': 
512                                                 // ÃƒÂ°  [LATIN SMALL LETTER ETH]
513                                                 case '\u010F': 
514                                                 // Ã„�  [LATIN SMALL LETTER D WITH CARON]
515                                                 case '\u0111': 
516                                                 // Ã„‘  [LATIN SMALL LETTER D WITH STROKE]
517                                                 case '\u018C': 
518                                                 // Ã†Å’  [LATIN SMALL LETTER D WITH TOPBAR]
519                                                 case '\u0221': 
520                                                 // ÃˆÂ¡  [LATIN SMALL LETTER D WITH CURL]
521                                                 case '\u0256': 
522                                                 // Ã‰â€“  [LATIN SMALL LETTER D WITH TAIL]
523                                                 case '\u0257': 
524                                                 // Ã‰â€”  [LATIN SMALL LETTER D WITH HOOK]
525                                                 case '\u1D6D': 
526                                                 // Ã¡ÂµÂ­  [LATIN SMALL LETTER D WITH MIDDLE TILDE]
527                                                 case '\u1D81': 
528                                                 // Ã¡Â¶ï¿½  [LATIN SMALL LETTER D WITH PALATAL HOOK]
529                                                 case '\u1D91': 
530                                                 // Ã¡Â¶â€˜  [LATIN SMALL LETTER D WITH HOOK AND TAIL]
531                                                 case '\u1E0B': 
532                                                 // Ã¡Â¸â€¹  [LATIN SMALL LETTER D WITH DOT ABOVE]
533                                                 case '\u1E0D': 
534                                                 // Ã¡Â¸ï¿½  [LATIN SMALL LETTER D WITH DOT BELOW]
535                                                 case '\u1E0F': 
536                                                 // Ã¡Â¸ï¿½  [LATIN SMALL LETTER D WITH LINE BELOW]
537                                                 case '\u1E11': 
538                                                 // Ã¡Â¸â€˜  [LATIN SMALL LETTER D WITH CEDILLA]
539                                                 case '\u1E13': 
540                                                 // Ã¡Â¸â€œ  [LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW]
541                                                 case '\u24D3': 
542                                                 // Ã¢â€œâ€œ  [CIRCLED LATIN SMALL LETTER D]
543                                                 case '\uA77A': 
544                                                 // Ãªï¿½Âº  [LATIN SMALL LETTER INSULAR D]
545                                                 case '\uFF44':  // Ã¯Â½â€ž  [FULLWIDTH LATIN SMALL LETTER D]
546                                                         output[outputPos++] = 'd';
547                                                         break;
548                                                 
549                                                 case '\u01C4': 
550                                                 // Ã‡â€ž  [LATIN CAPITAL LETTER DZ WITH CARON]
551                                                 case '\u01F1':  // Ã‡Â±  [LATIN CAPITAL LETTER DZ]
552                                                         output[outputPos++] = 'D';
553                                                         output[outputPos++] = 'Z';
554                                                         break;
555                                                 
556                                                 case '\u01C5': 
557                                                 // Ã‡â€¦  [LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON]
558                                                 case '\u01F2':  // Ã‡Â²  [LATIN CAPITAL LETTER D WITH SMALL LETTER Z]
559                                                         output[outputPos++] = 'D';
560                                                         output[outputPos++] = 'z';
561                                                         break;
562                                                 
563                                                 case '\u249F':  // Ã¢â€™Å¸  [PARENTHESIZED LATIN SMALL LETTER D]
564                                                         output[outputPos++] = '(';
565                                                         output[outputPos++] = 'd';
566                                                         output[outputPos++] = ')';
567                                                         break;
568                                                 
569                                                 case '\u0238':  // ÃˆÂ¸  [LATIN SMALL LETTER DB DIGRAPH]
570                                                         output[outputPos++] = 'd';
571                                                         output[outputPos++] = 'b';
572                                                         break;
573                                                 
574                                                 case '\u01C6': 
575                                                 // Ã‡â€   [LATIN SMALL LETTER DZ WITH CARON]
576                                                 case '\u01F3': 
577                                                 // Ã‡Â³  [LATIN SMALL LETTER DZ]
578                                                 case '\u02A3': 
579                                                 // ÃŠÂ£  [LATIN SMALL LETTER DZ DIGRAPH]
580                                                 case '\u02A5':  // ÃŠÂ¥  [LATIN SMALL LETTER DZ DIGRAPH WITH CURL]
581                                                         output[outputPos++] = 'd';
582                                                         output[outputPos++] = 'z';
583                                                         break;
584                                                 
585                                                 case '\u00C8': 
586                                                 // ÃƒË†  [LATIN CAPITAL LETTER E WITH GRAVE]
587                                                 case '\u00C9': 
588                                                 // Ãƒâ€°  [LATIN CAPITAL LETTER E WITH ACUTE]
589                                                 case '\u00CA': 
590                                                 // ÃƒÅ   [LATIN CAPITAL LETTER E WITH CIRCUMFLEX]
591                                                 case '\u00CB': 
592                                                 // Ãƒâ€¹  [LATIN CAPITAL LETTER E WITH DIAERESIS]
593                                                 case '\u0112': 
594                                                 // Ã„’  [LATIN CAPITAL LETTER E WITH MACRON]
595                                                 case '\u0114': 
596                                                 // Ã„�?  [LATIN CAPITAL LETTER E WITH BREVE]
597                                                 case '\u0116': 
598                                                 // Ã„–  [LATIN CAPITAL LETTER E WITH DOT ABOVE]
599                                                 case '\u0118': 
600                                                 // Ã„Ëœ  [LATIN CAPITAL LETTER E WITH OGONEK]
601                                                 case '\u011A': 
602                                                 // Ã„Å¡  [LATIN CAPITAL LETTER E WITH CARON]
603                                                 case '\u018E': 
604                                                 // Ã†Å½  [LATIN CAPITAL LETTER REVERSED E]
605                                                 case '\u0190': 
606                                                 // Ã†ï¿½  [LATIN CAPITAL LETTER OPEN E]
607                                                 case '\u0204': 
608                                                 // Ãˆâ€ž  [LATIN CAPITAL LETTER E WITH DOUBLE GRAVE]
609                                                 case '\u0206': 
610                                                 // Ãˆâ€   [LATIN CAPITAL LETTER E WITH INVERTED BREVE]
611                                                 case '\u0228': 
612                                                 // ÃˆÂ¨  [LATIN CAPITAL LETTER E WITH CEDILLA]
613                                                 case '\u0246': 
614                                                 // Ã‰â€   [LATIN CAPITAL LETTER E WITH STROKE]
615                                                 case '\u1D07': 
616                                                 // Ã¡Â´â€¡  [LATIN LETTER SMALL CAPITAL E]
617                                                 case '\u1E14': 
618                                                 // Ã¡Â¸ï¿½?  [LATIN CAPITAL LETTER E WITH MACRON AND GRAVE]
619                                                 case '\u1E16': 
620                                                 // Ã¡Â¸â€“  [LATIN CAPITAL LETTER E WITH MACRON AND ACUTE]
621                                                 case '\u1E18': 
622                                                 // Ã¡Â¸Ëœ  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW]
623                                                 case '\u1E1A': 
624                                                 // Ã¡Â¸Å¡  [LATIN CAPITAL LETTER E WITH TILDE BELOW]
625                                                 case '\u1E1C': 
626                                                 // Ã¡Â¸Å“  [LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE]
627                                                 case '\u1EB8': 
628                                                 // Ã¡ÂºÂ¸  [LATIN CAPITAL LETTER E WITH DOT BELOW]
629                                                 case '\u1EBA': 
630                                                 // Ã¡ÂºÂº  [LATIN CAPITAL LETTER E WITH HOOK ABOVE]
631                                                 case '\u1EBC': 
632                                                 // Ã¡ÂºÂ¼  [LATIN CAPITAL LETTER E WITH TILDE]
633                                                 case '\u1EBE': 
634                                                 // Ã¡ÂºÂ¾  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE]
635                                                 case '\u1EC0': 
636                                                 // Ã¡Â»â‚¬  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE]
637                                                 case '\u1EC2': 
638                                                 // Ã¡Â»â€š  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE]
639                                                 case '\u1EC4': 
640                                                 // Ã¡Â»â€ž  [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE]
641                                                 case '\u1EC6': 
642                                                 // Ã¡Â»â€   [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW]
643                                                 case '\u24BA': 
644                                                 // Ã¢â€™Âº  [CIRCLED LATIN CAPITAL LETTER E]
645                                                 case '\u2C7B': 
646                                                 // Ã¢Â±Â»  [LATIN LETTER SMALL CAPITAL TURNED E]
647                                                 case '\uFF25':  // Ã¯Â¼Â¥  [FULLWIDTH LATIN CAPITAL LETTER E]
648                                                         output[outputPos++] = 'E';
649                                                         break;
650                                                 
651                                                 case '\u00E8': 
652                                                 // ÃƒÂ¨  [LATIN SMALL LETTER E WITH GRAVE]
653                                                 case '\u00E9': 
654                                                 // ÃƒÂ©  [LATIN SMALL LETTER E WITH ACUTE]
655                                                 case '\u00EA': 
656                                                 // ÃƒÂª  [LATIN SMALL LETTER E WITH CIRCUMFLEX]
657                                                 case '\u00EB': 
658                                                 // ÃƒÂ«  [LATIN SMALL LETTER E WITH DIAERESIS]
659                                                 case '\u0113': 
660                                                 // Ã„“  [LATIN SMALL LETTER E WITH MACRON]
661                                                 case '\u0115': 
662                                                 // Ã„•  [LATIN SMALL LETTER E WITH BREVE]
663                                                 case '\u0117': 
664                                                 // Ã„—  [LATIN SMALL LETTER E WITH DOT ABOVE]
665                                                 case '\u0119': 
666                                                 // Ã„â„¢  [LATIN SMALL LETTER E WITH OGONEK]
667                                                 case '\u011B': 
668                                                 // Ã„›  [LATIN SMALL LETTER E WITH CARON]
669                                                 case '\u01DD': 
670                                                 // Ã‡ï¿½  [LATIN SMALL LETTER TURNED E]
671                                                 case '\u0205': 
672                                                 // Ãˆâ€¦  [LATIN SMALL LETTER E WITH DOUBLE GRAVE]
673                                                 case '\u0207': 
674                                                 // Ãˆâ€¡  [LATIN SMALL LETTER E WITH INVERTED BREVE]
675                                                 case '\u0229': 
676                                                 // ÃˆÂ©  [LATIN SMALL LETTER E WITH CEDILLA]
677                                                 case '\u0247': 
678                                                 // Ã‰â€¡  [LATIN SMALL LETTER E WITH STROKE]
679                                                 case '\u0258': 
680                                                 // Ã‰Ëœ  [LATIN SMALL LETTER REVERSED E]
681                                                 case '\u025B': 
682                                                 // Ã‰â€º  [LATIN SMALL LETTER OPEN E]
683                                                 case '\u025C': 
684                                                 // Ã‰Å“  [LATIN SMALL LETTER REVERSED OPEN E]
685                                                 case '\u025D': 
686                                                 // Ã‰ï¿½  [LATIN SMALL LETTER REVERSED OPEN E WITH HOOK]
687                                                 case '\u025E': 
688                                                 // Ã‰Å¾  [LATIN SMALL LETTER CLOSED REVERSED OPEN E]
689                                                 case '\u029A': 
690                                                 // ÃŠÅ¡  [LATIN SMALL LETTER CLOSED OPEN E]
691                                                 case '\u1D08': 
692                                                 // Ã¡Â´Ë†  [LATIN SMALL LETTER TURNED OPEN E]
693                                                 case '\u1D92': 
694                                                 // Ã¡Â¶â€™  [LATIN SMALL LETTER E WITH RETROFLEX HOOK]
695                                                 case '\u1D93': 
696                                                 // Ã¡Â¶â€œ  [LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK]
697                                                 case '\u1D94': 
698                                                 // Ã¡Â¶ï¿½?  [LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK]
699                                                 case '\u1E15': 
700                                                 // Ã¡Â¸â€¢  [LATIN SMALL LETTER E WITH MACRON AND GRAVE]
701                                                 case '\u1E17': 
702                                                 // Ã¡Â¸â€”  [LATIN SMALL LETTER E WITH MACRON AND ACUTE]
703                                                 case '\u1E19': 
704                                                 // Ã¡Â¸â„¢  [LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW]
705                                                 case '\u1E1B': 
706                                                 // Ã¡Â¸â€º  [LATIN SMALL LETTER E WITH TILDE BELOW]
707                                                 case '\u1E1D': 
708                                                 // Ã¡Â¸ï¿½  [LATIN SMALL LETTER E WITH CEDILLA AND BREVE]
709                                                 case '\u1EB9': 
710                                                 // Ã¡ÂºÂ¹  [LATIN SMALL LETTER E WITH DOT BELOW]
711                                                 case '\u1EBB': 
712                                                 // Ã¡ÂºÂ»  [LATIN SMALL LETTER E WITH HOOK ABOVE]
713                                                 case '\u1EBD': 
714                                                 // Ã¡ÂºÂ½  [LATIN SMALL LETTER E WITH TILDE]
715                                                 case '\u1EBF': 
716                                                 // Ã¡ÂºÂ¿  [LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE]
717                                                 case '\u1EC1': 
718                                                 // Ã¡Â»ï¿½  [LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE]
719                                                 case '\u1EC3': 
720                                                 // Ã¡Â»Æ’  [LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE]
721                                                 case '\u1EC5': 
722                                                 // Ã¡Â»â€¦  [LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE]
723                                                 case '\u1EC7': 
724                                                 // Ã¡Â»â€¡  [LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW]
725                                                 case '\u2091': 
726                                                 // Ã¢â€šâ€˜  [LATIN SUBSCRIPT SMALL LETTER E]
727                                                 case '\u24D4': 
728                                                 // Ã¢â€œï¿½?  [CIRCLED LATIN SMALL LETTER E]
729                                                 case '\u2C78': 
730                                                 // Ã¢Â±Â¸  [LATIN SMALL LETTER E WITH NOTCH]
731                                                 case '\uFF45':  // Ã¯Â½â€¦  [FULLWIDTH LATIN SMALL LETTER E]
732                                                         output[outputPos++] = 'e';
733                                                         break;
734                                                 
735                                                 case '\u24A0':  // Ã¢â€™Â   [PARENTHESIZED LATIN SMALL LETTER E]
736                                                         output[outputPos++] = '(';
737                                                         output[outputPos++] = 'e';
738                                                         output[outputPos++] = ')';
739                                                         break;
740                                                 
741                                                 case '\u0191': 
742                                                 // Ã†â€˜  [LATIN CAPITAL LETTER F WITH HOOK]
743                                                 case '\u1E1E': 
744                                                 // Ã¡Â¸Å¾  [LATIN CAPITAL LETTER F WITH DOT ABOVE]
745                                                 case '\u24BB': 
746                                                 // Ã¢â€™Â»  [CIRCLED LATIN CAPITAL LETTER F]
747                                                 case '\uA730': 
748                                                 // ÃªÅ“°  [LATIN LETTER SMALL CAPITAL F]
749                                                 case '\uA77B': 
750                                                 // Ãªï¿½Â»  [LATIN CAPITAL LETTER INSULAR F]
751                                                 case '\uA7FB': 
752                                                 // ÃªÅ¸Â»  [LATIN EPIGRAPHIC LETTER REVERSED F]
753                                                 case '\uFF26':  // Ã¯Â¼Â¦  [FULLWIDTH LATIN CAPITAL LETTER F]
754                                                         output[outputPos++] = 'F';
755                                                         break;
756                                                 
757                                                 case '\u0192': 
758                                                 // Ã†â€™  [LATIN SMALL LETTER F WITH HOOK]
759                                                 case '\u1D6E': 
760                                                 // Ã¡ÂµÂ®  [LATIN SMALL LETTER F WITH MIDDLE TILDE]
761                                                 case '\u1D82': 
762                                                 // Ã¡Â¶â€š  [LATIN SMALL LETTER F WITH PALATAL HOOK]
763                                                 case '\u1E1F': 
764                                                 // Ã¡Â¸Å¸  [LATIN SMALL LETTER F WITH DOT ABOVE]
765                                                 case '\u1E9B': 
766                                                 // Ã¡Âºâ€º  [LATIN SMALL LETTER LONG S WITH DOT ABOVE]
767                                                 case '\u24D5': 
768                                                 // Ã¢â€œâ€¢  [CIRCLED LATIN SMALL LETTER F]
769                                                 case '\uA77C': 
770                                                 // Ãªï¿½Â¼  [LATIN SMALL LETTER INSULAR F]
771                                                 case '\uFF46':  // Ã¯Â½â€   [FULLWIDTH LATIN SMALL LETTER F]
772                                                         output[outputPos++] = 'f';
773                                                         break;
774                                                 
775                                                 case '\u24A1':  // Ã¢â€™Â¡  [PARENTHESIZED LATIN SMALL LETTER F]
776                                                         output[outputPos++] = '(';
777                                                         output[outputPos++] = 'f';
778                                                         output[outputPos++] = ')';
779                                                         break;
780                                                 
781                                                 case '\uFB00':  // Ã¯Â¬â‚¬  [LATIN SMALL LIGATURE FF]
782                                                         output[outputPos++] = 'f';
783                                                         output[outputPos++] = 'f';
784                                                         break;
785                                                 
786                                                 case '\uFB03':  // Ã¯Â¬Æ’  [LATIN SMALL LIGATURE FFI]
787                                                         output[outputPos++] = 'f';
788                                                         output[outputPos++] = 'f';
789                                                         output[outputPos++] = 'i';
790                                                         break;
791                                                 
792                                                 case '\uFB04':  // Ã¯Â¬â€ž  [LATIN SMALL LIGATURE FFL]
793                                                         output[outputPos++] = 'f';
794                                                         output[outputPos++] = 'f';
795                                                         output[outputPos++] = 'l';
796                                                         break;
797                                                 
798                                                 case '\uFB01':  // Ã¯Â¬ï¿½  [LATIN SMALL LIGATURE FI]
799                                                         output[outputPos++] = 'f';
800                                                         output[outputPos++] = 'i';
801                                                         break;
802                                                 
803                                                 case '\uFB02':  // Ã¯Â¬â€š  [LATIN SMALL LIGATURE FL]
804                                                         output[outputPos++] = 'f';
805                                                         output[outputPos++] = 'l';
806                                                         break;
807                                                 
808                                                 case '\u011C': 
809                                                 // Ã„Å“  [LATIN CAPITAL LETTER G WITH CIRCUMFLEX]
810                                                 case '\u011E': 
811                                                 // Ã„ž  [LATIN CAPITAL LETTER G WITH BREVE]
812                                                 case '\u0120': 
813                                                 // Ã„   [LATIN CAPITAL LETTER G WITH DOT ABOVE]
814                                                 case '\u0122': 
815                                                 // Ã„¢  [LATIN CAPITAL LETTER G WITH CEDILLA]
816                                                 case '\u0193': 
817                                                 // Ã†â€œ  [LATIN CAPITAL LETTER G WITH HOOK]
818                                                 case '\u01E4': 
819                                                 // Ã‡Â¤  [LATIN CAPITAL LETTER G WITH STROKE]
820                                                 case '\u01E5': 
821                                                 // Ã‡Â¥  [LATIN SMALL LETTER G WITH STROKE]
822                                                 case '\u01E6': 
823                                                 // Ã‡Â¦  [LATIN CAPITAL LETTER G WITH CARON]
824                                                 case '\u01E7': 
825                                                 // Ã‡Â§  [LATIN SMALL LETTER G WITH CARON]
826                                                 case '\u01F4': 
827                                                 // Ã‡Â´  [LATIN CAPITAL LETTER G WITH ACUTE]
828                                                 case '\u0262': 
829                                                 // Ã‰Â¢  [LATIN LETTER SMALL CAPITAL G]
830                                                 case '\u029B': 
831                                                 // ÃŠâ€º  [LATIN LETTER SMALL CAPITAL G WITH HOOK]
832                                                 case '\u1E20': 
833                                                 // Ã¡Â¸Â   [LATIN CAPITAL LETTER G WITH MACRON]
834                                                 case '\u24BC': 
835                                                 // Ã¢â€™Â¼  [CIRCLED LATIN CAPITAL LETTER G]
836                                                 case '\uA77D': 
837                                                 // Ãªï¿½Â½  [LATIN CAPITAL LETTER INSULAR G]
838                                                 case '\uA77E': 
839                                                 // Ãªï¿½Â¾  [LATIN CAPITAL LETTER TURNED INSULAR G]
840                                                 case '\uFF27':  // Ã¯Â¼Â§  [FULLWIDTH LATIN CAPITAL LETTER G]
841                                                         output[outputPos++] = 'G';
842                                                         break;
843                                                 
844                                                 case '\u011D': 
845                                                 // Ã„�  [LATIN SMALL LETTER G WITH CIRCUMFLEX]
846                                                 case '\u011F': 
847                                                 // Ã„Ÿ  [LATIN SMALL LETTER G WITH BREVE]
848                                                 case '\u0121': 
849                                                 // Ã„¡  [LATIN SMALL LETTER G WITH DOT ABOVE]
850                                                 case '\u0123': 
851                                                 // Ã„£  [LATIN SMALL LETTER G WITH CEDILLA]
852                                                 case '\u01F5': 
853                                                 // Ã‡Âµ  [LATIN SMALL LETTER G WITH ACUTE]
854                                                 case '\u0260': 
855                                                 // Ã‰Â   [LATIN SMALL LETTER G WITH HOOK]
856                                                 case '\u0261': 
857                                                 // Ã‰Â¡  [LATIN SMALL LETTER SCRIPT G]
858                                                 case '\u1D77': 
859                                                 // Ã¡ÂµÂ·  [LATIN SMALL LETTER TURNED G]
860                                                 case '\u1D79': 
861                                                 // Ã¡ÂµÂ¹  [LATIN SMALL LETTER INSULAR G]
862                                                 case '\u1D83': 
863                                                 // Ã¡Â¶Æ’  [LATIN SMALL LETTER G WITH PALATAL HOOK]
864                                                 case '\u1E21': 
865                                                 // Ã¡Â¸Â¡  [LATIN SMALL LETTER G WITH MACRON]
866                                                 case '\u24D6': 
867                                                 // Ã¢â€œâ€“  [CIRCLED LATIN SMALL LETTER G]
868                                                 case '\uA77F': 
869                                                 // Ãªï¿½Â¿  [LATIN SMALL LETTER TURNED INSULAR G]
870                                                 case '\uFF47':  // Ã¯Â½â€¡  [FULLWIDTH LATIN SMALL LETTER G]
871                                                         output[outputPos++] = 'g';
872                                                         break;
873                                                 
874                                                 case '\u24A2':  // Ã¢â€™Â¢  [PARENTHESIZED LATIN SMALL LETTER G]
875                                                         output[outputPos++] = '(';
876                                                         output[outputPos++] = 'g';
877                                                         output[outputPos++] = ')';
878                                                         break;
879                                                 
880                                                 case '\u0124': 
881                                                 // Ã„¤  [LATIN CAPITAL LETTER H WITH CIRCUMFLEX]
882                                                 case '\u0126': 
883                                                 // Ã„¦  [LATIN CAPITAL LETTER H WITH STROKE]
884                                                 case '\u021E': 
885                                                 // ÃˆÅ¾  [LATIN CAPITAL LETTER H WITH CARON]
886                                                 case '\u029C': 
887                                                 // ÃŠÅ“  [LATIN LETTER SMALL CAPITAL H]
888                                                 case '\u1E22': 
889                                                 // Ã¡Â¸Â¢  [LATIN CAPITAL LETTER H WITH DOT ABOVE]
890                                                 case '\u1E24': 
891                                                 // Ã¡Â¸Â¤  [LATIN CAPITAL LETTER H WITH DOT BELOW]
892                                                 case '\u1E26': 
893                                                 // Ã¡Â¸Â¦  [LATIN CAPITAL LETTER H WITH DIAERESIS]
894                                                 case '\u1E28': 
895                                                 // Ã¡Â¸Â¨  [LATIN CAPITAL LETTER H WITH CEDILLA]
896                                                 case '\u1E2A': 
897                                                 // Ã¡Â¸Âª  [LATIN CAPITAL LETTER H WITH BREVE BELOW]
898                                                 case '\u24BD': 
899                                                 // Ã¢â€™Â½  [CIRCLED LATIN CAPITAL LETTER H]
900                                                 case '\u2C67': 
901                                                 // Ã¢Â±Â§  [LATIN CAPITAL LETTER H WITH DESCENDER]
902                                                 case '\u2C75': 
903                                                 // Ã¢Â±Âµ  [LATIN CAPITAL LETTER HALF H]
904                                                 case '\uFF28':  // Ã¯Â¼Â¨  [FULLWIDTH LATIN CAPITAL LETTER H]
905                                                         output[outputPos++] = 'H';
906                                                         break;
907                                                 
908                                                 case '\u0125': 
909                                                 // Ã„Â¥  [LATIN SMALL LETTER H WITH CIRCUMFLEX]
910                                                 case '\u0127': 
911                                                 // Ã„§  [LATIN SMALL LETTER H WITH STROKE]
912                                                 case '\u021F': 
913                                                 // ÃˆÅ¸  [LATIN SMALL LETTER H WITH CARON]
914                                                 case '\u0265': 
915                                                 // Ã‰Â¥  [LATIN SMALL LETTER TURNED H]
916                                                 case '\u0266': 
917                                                 // Ã‰Â¦  [LATIN SMALL LETTER H WITH HOOK]
918                                                 case '\u02AE': 
919                                                 // ÃŠÂ®  [LATIN SMALL LETTER TURNED H WITH FISHHOOK]
920                                                 case '\u02AF': 
921                                                 // ÃŠÂ¯  [LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL]
922                                                 case '\u1E23': 
923                                                 // Ã¡Â¸Â£  [LATIN SMALL LETTER H WITH DOT ABOVE]
924                                                 case '\u1E25': 
925                                                 // Ã¡Â¸Â¥  [LATIN SMALL LETTER H WITH DOT BELOW]
926                                                 case '\u1E27': 
927                                                 // Ã¡Â¸Â§  [LATIN SMALL LETTER H WITH DIAERESIS]
928                                                 case '\u1E29': 
929                                                 // Ã¡Â¸Â©  [LATIN SMALL LETTER H WITH CEDILLA]
930                                                 case '\u1E2B': 
931                                                 // Ã¡Â¸Â«  [LATIN SMALL LETTER H WITH BREVE BELOW]
932                                                 case '\u1E96': 
933                                                 // Ã¡Âºâ€“  [LATIN SMALL LETTER H WITH LINE BELOW]
934                                                 case '\u24D7': 
935                                                 // Ã¢â€œâ€”  [CIRCLED LATIN SMALL LETTER H]
936                                                 case '\u2C68': 
937                                                 // Ã¢Â±Â¨  [LATIN SMALL LETTER H WITH DESCENDER]
938                                                 case '\u2C76': 
939                                                 // Ã¢Â±Â¶  [LATIN SMALL LETTER HALF H]
940                                                 case '\uFF48':  // Ã¯Â½Ë†  [FULLWIDTH LATIN SMALL LETTER H]
941                                                         output[outputPos++] = 'h';
942                                                         break;
943                                                 
944                                                 case '\u01F6':  // Ã‡Â¶  http://en.wikipedia.org/wiki/Hwair  [LATIN CAPITAL LETTER HWAIR]
945                                                         output[outputPos++] = 'H';
946                                                         output[outputPos++] = 'V';
947                                                         break;
948                                                 
949                                                 case '\u24A3':  // Ã¢â€™Â£  [PARENTHESIZED LATIN SMALL LETTER H]
950                                                         output[outputPos++] = '(';
951                                                         output[outputPos++] = 'h';
952                                                         output[outputPos++] = ')';
953                                                         break;
954                                                 
955                                                 case '\u0195':  // Ã†â€¢  [LATIN SMALL LETTER HV]
956                                                         output[outputPos++] = 'h';
957                                                         output[outputPos++] = 'v';
958                                                         break;
959                                                 
960                                                 case '\u00CC': 
961                                                 // ÃƒÅ’  [LATIN CAPITAL LETTER I WITH GRAVE]
962                                                 case '\u00CD': 
963                                                 // Ãƒï¿½  [LATIN CAPITAL LETTER I WITH ACUTE]
964                                                 case '\u00CE': 
965                                                 // ÃƒÅ½  [LATIN CAPITAL LETTER I WITH CIRCUMFLEX]
966                                                 case '\u00CF': 
967                                                 // Ãƒï¿½  [LATIN CAPITAL LETTER I WITH DIAERESIS]
968                                                 case '\u0128': 
969                                                 // Ã„¨  [LATIN CAPITAL LETTER I WITH TILDE]
970                                                 case '\u012A': 
971                                                 // Ã„ª  [LATIN CAPITAL LETTER I WITH MACRON]
972                                                 case '\u012C': 
973                                                 // Ã„¬  [LATIN CAPITAL LETTER I WITH BREVE]
974                                                 case '\u012E': 
975                                                 // Ã„®  [LATIN CAPITAL LETTER I WITH OGONEK]
976                                                 case '\u0130': 
977                                                 // Ã„°  [LATIN CAPITAL LETTER I WITH DOT ABOVE]
978                                                 case '\u0196': 
979                                                 // Ã†â€“  [LATIN CAPITAL LETTER IOTA]
980                                                 case '\u0197': 
981                                                 // Ã†â€”  [LATIN CAPITAL LETTER I WITH STROKE]
982                                                 case '\u01CF': 
983                                                 // Ã‡ï¿½  [LATIN CAPITAL LETTER I WITH CARON]
984                                                 case '\u0208': 
985                                                 // ÃˆË†  [LATIN CAPITAL LETTER I WITH DOUBLE GRAVE]
986                                                 case '\u020A': 
987                                                 // ÃˆÅ   [LATIN CAPITAL LETTER I WITH INVERTED BREVE]
988                                                 case '\u026A': 
989                                                 // Ã‰Âª  [LATIN LETTER SMALL CAPITAL I]
990                                                 case '\u1D7B': 
991                                                 // Ã¡ÂµÂ»  [LATIN SMALL CAPITAL LETTER I WITH STROKE]
992                                                 case '\u1E2C': 
993                                                 // Ã¡Â¸Â¬  [LATIN CAPITAL LETTER I WITH TILDE BELOW]
994                                                 case '\u1E2E': 
995                                                 // Ã¡Â¸Â®  [LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE]
996                                                 case '\u1EC8': 
997                                                 // Ã¡Â»Ë†  [LATIN CAPITAL LETTER I WITH HOOK ABOVE]
998                                                 case '\u1ECA': 
999                                                 // Ã¡Â»Å   [LATIN CAPITAL LETTER I WITH DOT BELOW]
1000                                                 case '\u24BE': 
1001                                                 // Ã¢â€™Â¾  [CIRCLED LATIN CAPITAL LETTER I]
1002                                                 case '\uA7FE': 
1003                                                 // ÃªÅ¸Â¾  [LATIN EPIGRAPHIC LETTER I LONGA]
1004                                                 case '\uFF29':  // Ã¯Â¼Â©  [FULLWIDTH LATIN CAPITAL LETTER I]
1005                                                         output[outputPos++] = 'I';
1006                                                         break;
1007                                                 
1008                                                 case '\u00EC': 
1009                                                 // ÃƒÂ¬  [LATIN SMALL LETTER I WITH GRAVE]
1010                                                 case '\u00ED': 
1011                                                 // ÃƒÂ­  [LATIN SMALL LETTER I WITH ACUTE]
1012                                                 case '\u00EE': 
1013                                                 // ÃƒÂ®  [LATIN SMALL LETTER I WITH CIRCUMFLEX]
1014                                                 case '\u00EF': 
1015                                                 // ÃƒÂ¯  [LATIN SMALL LETTER I WITH DIAERESIS]
1016                                                 case '\u0129': 
1017                                                 // Ã„©  [LATIN SMALL LETTER I WITH TILDE]
1018                                                 case '\u012B': 
1019                                                 // Ã„«  [LATIN SMALL LETTER I WITH MACRON]
1020                                                 case '\u012D': 
1021                                                 // Ã„­  [LATIN SMALL LETTER I WITH BREVE]
1022                                                 case '\u012F': 
1023                                                 // Ã„¯  [LATIN SMALL LETTER I WITH OGONEK]
1024                                                 case '\u0131': 
1025                                                 // Ã„±  [LATIN SMALL LETTER DOTLESS I]
1026                                                 case '\u01D0': 
1027                                                 // Ã‡ï¿½  [LATIN SMALL LETTER I WITH CARON]
1028                                                 case '\u0209': 
1029                                                 // Ãˆâ€°  [LATIN SMALL LETTER I WITH DOUBLE GRAVE]
1030                                                 case '\u020B': 
1031                                                 // Ãˆâ€¹  [LATIN SMALL LETTER I WITH INVERTED BREVE]
1032                                                 case '\u0268': 
1033                                                 // Ã‰Â¨  [LATIN SMALL LETTER I WITH STROKE]
1034                                                 case '\u1D09': 
1035                                                 // Ã¡Â´â€°  [LATIN SMALL LETTER TURNED I]
1036                                                 case '\u1D62': 
1037                                                 // Ã¡ÂµÂ¢  [LATIN SUBSCRIPT SMALL LETTER I]
1038                                                 case '\u1D7C': 
1039                                                 // Ã¡ÂµÂ¼  [LATIN SMALL LETTER IOTA WITH STROKE]
1040                                                 case '\u1D96': 
1041                                                 // Ã¡Â¶â€“  [LATIN SMALL LETTER I WITH RETROFLEX HOOK]
1042                                                 case '\u1E2D': 
1043                                                 // Ã¡Â¸Â­  [LATIN SMALL LETTER I WITH TILDE BELOW]
1044                                                 case '\u1E2F': 
1045                                                 // Ã¡Â¸Â¯  [LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE]
1046                                                 case '\u1EC9': 
1047                                                 // Ã¡Â»â€°  [LATIN SMALL LETTER I WITH HOOK ABOVE]
1048                                                 case '\u1ECB': 
1049                                                 // Ã¡Â»â€¹  [LATIN SMALL LETTER I WITH DOT BELOW]
1050                                                 case '\u2071': 
1051                                                 // Ã¢ï¿½Â±  [SUPERSCRIPT LATIN SMALL LETTER I]
1052                                                 case '\u24D8': 
1053                                                 // Ã¢â€œËœ  [CIRCLED LATIN SMALL LETTER I]
1054                                                 case '\uFF49':  // Ã¯Â½â€°  [FULLWIDTH LATIN SMALL LETTER I]
1055                                                         output[outputPos++] = 'i';
1056                                                         break;
1057                                                 
1058                                                 case '\u0132':  // Ã„²  [LATIN CAPITAL LIGATURE IJ]
1059                                                         output[outputPos++] = 'I';
1060                                                         output[outputPos++] = 'J';
1061                                                         break;
1062                                                 
1063                                                 case '\u24A4':  // Ã¢â€™Â¤  [PARENTHESIZED LATIN SMALL LETTER I]
1064                                                         output[outputPos++] = '(';
1065                                                         output[outputPos++] = 'i';
1066                                                         output[outputPos++] = ')';
1067                                                         break;
1068                                                 
1069                                                 case '\u0133':  // Ã„³  [LATIN SMALL LIGATURE IJ]
1070                                                         output[outputPos++] = 'i';
1071                                                         output[outputPos++] = 'j';
1072                                                         break;
1073                                                 
1074                                                 case '\u0134': 
1075                                                 // Ã„´  [LATIN CAPITAL LETTER J WITH CIRCUMFLEX]
1076                                                 case '\u0248': 
1077                                                 // Ã‰Ë†  [LATIN CAPITAL LETTER J WITH STROKE]
1078                                                 case '\u1D0A': 
1079                                                 // Ã¡Â´Å   [LATIN LETTER SMALL CAPITAL J]
1080                                                 case '\u24BF': 
1081                                                 // Ã¢â€™Â¿  [CIRCLED LATIN CAPITAL LETTER J]
1082                                                 case '\uFF2A':  // Ã¯Â¼Âª  [FULLWIDTH LATIN CAPITAL LETTER J]
1083                                                         output[outputPos++] = 'J';
1084                                                         break;
1085                                                 
1086                                                 case '\u0135': 
1087                                                 // Ã„µ  [LATIN SMALL LETTER J WITH CIRCUMFLEX]
1088                                                 case '\u01F0': 
1089                                                 // Ã‡Â°  [LATIN SMALL LETTER J WITH CARON]
1090                                                 case '\u0237': 
1091                                                 // ÃˆÂ·  [LATIN SMALL LETTER DOTLESS J]
1092                                                 case '\u0249': 
1093                                                 // Ã‰â€°  [LATIN SMALL LETTER J WITH STROKE]
1094                                                 case '\u025F': 
1095                                                 // Ã‰Å¸  [LATIN SMALL LETTER DOTLESS J WITH STROKE]
1096                                                 case '\u0284': 
1097                                                 // ÃŠâ€ž  [LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK]
1098                                                 case '\u029D': 
1099                                                 // ÃŠï¿½  [LATIN SMALL LETTER J WITH CROSSED-TAIL]
1100                                                 case '\u24D9': 
1101                                                 // Ã¢â€œâ„¢  [CIRCLED LATIN SMALL LETTER J]
1102                                                 case '\u2C7C': 
1103                                                 // Ã¢Â±Â¼  [LATIN SUBSCRIPT SMALL LETTER J]
1104                                                 case '\uFF4A':  // Ã¯Â½Å   [FULLWIDTH LATIN SMALL LETTER J]
1105                                                         output[outputPos++] = 'j';
1106                                                         break;
1107                                                 
1108                                                 case '\u24A5':  // Ã¢â€™Â¥  [PARENTHESIZED LATIN SMALL LETTER J]
1109                                                         output[outputPos++] = '(';
1110                                                         output[outputPos++] = 'j';
1111                                                         output[outputPos++] = ')';
1112                                                         break;
1113                                                 
1114                                                 case '\u0136': 
1115                                                 // Ã„¶  [LATIN CAPITAL LETTER K WITH CEDILLA]
1116                                                 case '\u0198': 
1117                                                 // Ã†Ëœ  [LATIN CAPITAL LETTER K WITH HOOK]
1118                                                 case '\u01E8': 
1119                                                 // Ã‡Â¨  [LATIN CAPITAL LETTER K WITH CARON]
1120                                                 case '\u1D0B': 
1121                                                 // Ã¡Â´â€¹  [LATIN LETTER SMALL CAPITAL K]
1122                                                 case '\u1E30': 
1123                                                 // Ã¡Â¸Â°  [LATIN CAPITAL LETTER K WITH ACUTE]
1124                                                 case '\u1E32': 
1125                                                 // Ã¡Â¸Â²  [LATIN CAPITAL LETTER K WITH DOT BELOW]
1126                                                 case '\u1E34': 
1127                                                 // Ã¡Â¸Â´  [LATIN CAPITAL LETTER K WITH LINE BELOW]
1128                                                 case '\u24C0': 
1129                                                 // Ã¢â€œâ‚¬  [CIRCLED LATIN CAPITAL LETTER K]
1130                                                 case '\u2C69': 
1131                                                 // Ã¢Â±Â©  [LATIN CAPITAL LETTER K WITH DESCENDER]
1132                                                 case '\uA740': 
1133                                                 // Ãªï¿½â‚¬  [LATIN CAPITAL LETTER K WITH STROKE]
1134                                                 case '\uA742': 
1135                                                 // Ãªï¿½â€š  [LATIN CAPITAL LETTER K WITH DIAGONAL STROKE]
1136                                                 case '\uA744': 
1137                                                 // Ãªï¿½â€ž  [LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE]
1138                                                 case '\uFF2B':  // Ã¯Â¼Â«  [FULLWIDTH LATIN CAPITAL LETTER K]
1139                                                         output[outputPos++] = 'K';
1140                                                         break;
1141                                                 
1142                                                 case '\u0137': 
1143                                                 // Ã„·  [LATIN SMALL LETTER K WITH CEDILLA]
1144                                                 case '\u0199': 
1145                                                 // Ã†â„¢  [LATIN SMALL LETTER K WITH HOOK]
1146                                                 case '\u01E9': 
1147                                                 // Ã‡Â©  [LATIN SMALL LETTER K WITH CARON]
1148                                                 case '\u029E': 
1149                                                 // ÃŠÅ¾  [LATIN SMALL LETTER TURNED K]
1150                                                 case '\u1D84': 
1151                                                 // Ã¡Â¶â€ž  [LATIN SMALL LETTER K WITH PALATAL HOOK]
1152                                                 case '\u1E31': 
1153                                                 // Ã¡Â¸Â±  [LATIN SMALL LETTER K WITH ACUTE]
1154                                                 case '\u1E33': 
1155                                                 // Ã¡Â¸Â³  [LATIN SMALL LETTER K WITH DOT BELOW]
1156                                                 case '\u1E35': 
1157                                                 // Ã¡Â¸Âµ  [LATIN SMALL LETTER K WITH LINE BELOW]
1158                                                 case '\u24DA': 
1159                                                 // Ã¢â€œÅ¡  [CIRCLED LATIN SMALL LETTER K]
1160                                                 case '\u2C6A': 
1161                                                 // Ã¢Â±Âª  [LATIN SMALL LETTER K WITH DESCENDER]
1162                                                 case '\uA741': 
1163                                                 // Ãªï¿½ï¿½  [LATIN SMALL LETTER K WITH STROKE]
1164                                                 case '\uA743': 
1165                                                 // Ãªï¿½Æ’  [LATIN SMALL LETTER K WITH DIAGONAL STROKE]
1166                                                 case '\uA745': 
1167                                                 // Ãªï¿½â€¦  [LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE]
1168                                                 case '\uFF4B':  // Ã¯Â½â€¹  [FULLWIDTH LATIN SMALL LETTER K]
1169                                                         output[outputPos++] = 'k';
1170                                                         break;
1171                                                 
1172                                                 case '\u24A6':  // Ã¢â€™Â¦  [PARENTHESIZED LATIN SMALL LETTER K]
1173                                                         output[outputPos++] = '(';
1174                                                         output[outputPos++] = 'k';
1175                                                         output[outputPos++] = ')';
1176                                                         break;
1177                                                 
1178                                                 case '\u0139': 
1179                                                 // Ã„¹  [LATIN CAPITAL LETTER L WITH ACUTE]
1180                                                 case '\u013B': 
1181                                                 // Ã„»  [LATIN CAPITAL LETTER L WITH CEDILLA]
1182                                                 case '\u013D': 
1183                                                 // Ã„½  [LATIN CAPITAL LETTER L WITH CARON]
1184                                                 case '\u013F': 
1185                                                 // Ã„¿  [LATIN CAPITAL LETTER L WITH MIDDLE DOT]
1186                                                 case '\u0141': 
1187                                                 // Ã…�  [LATIN CAPITAL LETTER L WITH STROKE]
1188                                                 case '\u023D': 
1189                                                 // ÃˆÂ½  [LATIN CAPITAL LETTER L WITH BAR]
1190                                                 case '\u029F': 
1191                                                 // ÃŠÅ¸  [LATIN LETTER SMALL CAPITAL L]
1192                                                 case '\u1D0C': 
1193                                                 // Ã¡Â´Å’  [LATIN LETTER SMALL CAPITAL L WITH STROKE]
1194                                                 case '\u1E36': 
1195                                                 // Ã¡Â¸Â¶  [LATIN CAPITAL LETTER L WITH DOT BELOW]
1196                                                 case '\u1E38': 
1197                                                 // Ã¡Â¸Â¸  [LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON]
1198                                                 case '\u1E3A': 
1199                                                 // Ã¡Â¸Âº  [LATIN CAPITAL LETTER L WITH LINE BELOW]
1200                                                 case '\u1E3C': 
1201                                                 // Ã¡Â¸Â¼  [LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW]
1202                                                 case '\u24C1': 
1203                                                 // Ã¢â€œï¿½  [CIRCLED LATIN CAPITAL LETTER L]
1204                                                 case '\u2C60': 
1205                                                 // Ã¢Â±Â   [LATIN CAPITAL LETTER L WITH DOUBLE BAR]
1206                                                 case '\u2C62': 
1207                                                 // Ã¢Â±Â¢  [LATIN CAPITAL LETTER L WITH MIDDLE TILDE]
1208                                                 case '\uA746': 
1209                                                 // Ãªï¿½â€   [LATIN CAPITAL LETTER BROKEN L]
1210                                                 case '\uA748': 
1211                                                 // Ãªï¿½Ë†  [LATIN CAPITAL LETTER L WITH HIGH STROKE]
1212                                                 case '\uA780': 
1213                                                 // ÃªÅ¾â‚¬  [LATIN CAPITAL LETTER TURNED L]
1214                                                 case '\uFF2C':  // Ã¯Â¼Â¬  [FULLWIDTH LATIN CAPITAL LETTER L]
1215                                                         output[outputPos++] = 'L';
1216                                                         break;
1217                                                 
1218                                                 case '\u013A': 
1219                                                 // Ã„º  [LATIN SMALL LETTER L WITH ACUTE]
1220                                                 case '\u013C': 
1221                                                 // Ã„¼  [LATIN SMALL LETTER L WITH CEDILLA]
1222                                                 case '\u013E': 
1223                                                 // Ã„¾  [LATIN SMALL LETTER L WITH CARON]
1224                                                 case '\u0140': 
1225                                                 // Ã…€  [LATIN SMALL LETTER L WITH MIDDLE DOT]
1226                                                 case '\u0142': 
1227                                                 // Ã…‚  [LATIN SMALL LETTER L WITH STROKE]
1228                                                 case '\u019A': 
1229                                                 // Ã†Å¡  [LATIN SMALL LETTER L WITH BAR]
1230                                                 case '\u0234': 
1231                                                 // ÃˆÂ´  [LATIN SMALL LETTER L WITH CURL]
1232                                                 case '\u026B': 
1233                                                 // Ã‰Â«  [LATIN SMALL LETTER L WITH MIDDLE TILDE]
1234                                                 case '\u026C': 
1235                                                 // Ã‰Â¬  [LATIN SMALL LETTER L WITH BELT]
1236                                                 case '\u026D': 
1237                                                 // Ã‰Â­  [LATIN SMALL LETTER L WITH RETROFLEX HOOK]
1238                                                 case '\u1D85': 
1239                                                 // Ã¡Â¶â€¦  [LATIN SMALL LETTER L WITH PALATAL HOOK]
1240                                                 case '\u1E37': 
1241                                                 // Ã¡Â¸Â·  [LATIN SMALL LETTER L WITH DOT BELOW]
1242                                                 case '\u1E39': 
1243                                                 // Ã¡Â¸Â¹  [LATIN SMALL LETTER L WITH DOT BELOW AND MACRON]
1244                                                 case '\u1E3B': 
1245                                                 // Ã¡Â¸Â»  [LATIN SMALL LETTER L WITH LINE BELOW]
1246                                                 case '\u1E3D': 
1247                                                 // Ã¡Â¸Â½  [LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW]
1248                                                 case '\u24DB': 
1249                                                 // Ã¢â€œâ€º  [CIRCLED LATIN SMALL LETTER L]
1250                                                 case '\u2C61': 
1251                                                 // Ã¢Â±Â¡  [LATIN SMALL LETTER L WITH DOUBLE BAR]
1252                                                 case '\uA747': 
1253                                                 // Ãªï¿½â€¡  [LATIN SMALL LETTER BROKEN L]
1254                                                 case '\uA749': 
1255                                                 // Ãªï¿½â€°  [LATIN SMALL LETTER L WITH HIGH STROKE]
1256                                                 case '\uA781': 
1257                                                 // ÃªÅ¾ï¿½  [LATIN SMALL LETTER TURNED L]
1258                                                 case '\uFF4C':  // Ã¯Â½Å’  [FULLWIDTH LATIN SMALL LETTER L]
1259                                                         output[outputPos++] = 'l';
1260                                                         break;
1261                                                 
1262                                                 case '\u01C7':  // Ã‡â€¡  [LATIN CAPITAL LETTER LJ]
1263                                                         output[outputPos++] = 'L';
1264                                                         output[outputPos++] = 'J';
1265                                                         break;
1266                                                 
1267                                                 case '\u1EFA':  // Ã¡Â»Âº  [LATIN CAPITAL LETTER MIDDLE-WELSH LL]
1268                                                         output[outputPos++] = 'L';
1269                                                         output[outputPos++] = 'L';
1270                                                         break;
1271                                                 
1272                                                 case '\u01C8':  // Ã‡Ë†  [LATIN CAPITAL LETTER L WITH SMALL LETTER J]
1273                                                         output[outputPos++] = 'L';
1274                                                         output[outputPos++] = 'j';
1275                                                         break;
1276                                                 
1277                                                 case '\u24A7':  // Ã¢â€™Â§  [PARENTHESIZED LATIN SMALL LETTER L]
1278                                                         output[outputPos++] = '(';
1279                                                         output[outputPos++] = 'l';
1280                                                         output[outputPos++] = ')';
1281                                                         break;
1282                                                 
1283                                                 case '\u01C9':  // Ã‡â€°  [LATIN SMALL LETTER LJ]
1284                                                         output[outputPos++] = 'l';
1285                                                         output[outputPos++] = 'j';
1286                                                         break;
1287                                                 
1288                                                 case '\u1EFB':  // Ã¡Â»Â»  [LATIN SMALL LETTER MIDDLE-WELSH LL]
1289                                                         output[outputPos++] = 'l';
1290                                                         output[outputPos++] = 'l';
1291                                                         break;
1292                                                 
1293                                                 case '\u02AA':  // ÃŠÂª  [LATIN SMALL LETTER LS DIGRAPH]
1294                                                         output[outputPos++] = 'l';
1295                                                         output[outputPos++] = 's';
1296                                                         break;
1297                                                 
1298                                                 case '\u02AB':  // ÃŠÂ«  [LATIN SMALL LETTER LZ DIGRAPH]
1299                                                         output[outputPos++] = 'l';
1300                                                         output[outputPos++] = 'z';
1301                                                         break;
1302                                                 
1303                                                 case '\u019C': 
1304                                                 // Ã†Å“  [LATIN CAPITAL LETTER TURNED M]
1305                                                 case '\u1D0D': 
1306                                                 // Ã¡Â´ï¿½  [LATIN LETTER SMALL CAPITAL M]
1307                                                 case '\u1E3E': 
1308                                                 // Ã¡Â¸Â¾  [LATIN CAPITAL LETTER M WITH ACUTE]
1309                                                 case '\u1E40': 
1310                                                 // Ã¡Â¹â‚¬  [LATIN CAPITAL LETTER M WITH DOT ABOVE]
1311                                                 case '\u1E42': 
1312                                                 // Ã¡Â¹â€š  [LATIN CAPITAL LETTER M WITH DOT BELOW]
1313                                                 case '\u24C2': 
1314                                                 // Ã¢â€œâ€š  [CIRCLED LATIN CAPITAL LETTER M]
1315                                                 case '\u2C6E': 
1316                                                 // Ã¢Â±Â®  [LATIN CAPITAL LETTER M WITH HOOK]
1317                                                 case '\uA7FD': 
1318                                                 // ÃªÅ¸Â½  [LATIN EPIGRAPHIC LETTER INVERTED M]
1319                                                 case '\uA7FF': 
1320                                                 // ÃªÅ¸Â¿  [LATIN EPIGRAPHIC LETTER ARCHAIC M]
1321                                                 case '\uFF2D':  // Ã¯Â¼Â­  [FULLWIDTH LATIN CAPITAL LETTER M]
1322                                                         output[outputPos++] = 'M';
1323                                                         break;
1324                                                 
1325                                                 case '\u026F': 
1326                                                 // Ã‰Â¯  [LATIN SMALL LETTER TURNED M]
1327                                                 case '\u0270': 
1328                                                 // Ã‰Â°  [LATIN SMALL LETTER TURNED M WITH LONG LEG]
1329                                                 case '\u0271': 
1330                                                 // Ã‰Â±  [LATIN SMALL LETTER M WITH HOOK]
1331                                                 case '\u1D6F': 
1332                                                 // Ã¡ÂµÂ¯  [LATIN SMALL LETTER M WITH MIDDLE TILDE]
1333                                                 case '\u1D86': 
1334                                                 // Ã¡Â¶â€   [LATIN SMALL LETTER M WITH PALATAL HOOK]
1335                                                 case '\u1E3F': 
1336                                                 // Ã¡Â¸Â¿  [LATIN SMALL LETTER M WITH ACUTE]
1337                                                 case '\u1E41': 
1338                                                 // Ã¡Â¹ï¿½  [LATIN SMALL LETTER M WITH DOT ABOVE]
1339                                                 case '\u1E43': 
1340                                                 // Ã¡Â¹Æ’  [LATIN SMALL LETTER M WITH DOT BELOW]
1341                                                 case '\u24DC': 
1342                                                 // Ã¢â€œÅ“  [CIRCLED LATIN SMALL LETTER M]
1343                                                 case '\uFF4D':  // Ã¯Â½ï¿½  [FULLWIDTH LATIN SMALL LETTER M]
1344                                                         output[outputPos++] = 'm';
1345                                                         break;
1346                                                 
1347                                                 case '\u24A8':  // Ã¢â€™Â¨  [PARENTHESIZED LATIN SMALL LETTER M]
1348                                                         output[outputPos++] = '(';
1349                                                         output[outputPos++] = 'm';
1350                                                         output[outputPos++] = ')';
1351                                                         break;
1352                                                 
1353                                                 case '\u00D1': 
1354                                                 // Ãƒâ€˜  [LATIN CAPITAL LETTER N WITH TILDE]
1355                                                 case '\u0143': 
1356                                                 // Ã…Æ’  [LATIN CAPITAL LETTER N WITH ACUTE]
1357                                                 case '\u0145': 
1358                                                 // Ã……  [LATIN CAPITAL LETTER N WITH CEDILLA]
1359                                                 case '\u0147': 
1360                                                 // Ã…‡  [LATIN CAPITAL LETTER N WITH CARON]
1361                                                 case '\u014A': 
1362                                                 // Ã…Å   http://en.wikipedia.org/wiki/Eng_(letter)  [LATIN CAPITAL LETTER ENG]
1363                                                 case '\u019D': 
1364                                                 // Ã†ï¿½  [LATIN CAPITAL LETTER N WITH LEFT HOOK]
1365                                                 case '\u01F8': 
1366                                                 // Ã‡Â¸  [LATIN CAPITAL LETTER N WITH GRAVE]
1367                                                 case '\u0220': 
1368                                                 // ÃˆÂ   [LATIN CAPITAL LETTER N WITH LONG RIGHT LEG]
1369                                                 case '\u0274': 
1370                                                 // Ã‰Â´  [LATIN LETTER SMALL CAPITAL N]
1371                                                 case '\u1D0E': 
1372                                                 // Ã¡Â´Å½  [LATIN LETTER SMALL CAPITAL REVERSED N]
1373                                                 case '\u1E44': 
1374                                                 // Ã¡Â¹â€ž  [LATIN CAPITAL LETTER N WITH DOT ABOVE]
1375                                                 case '\u1E46': 
1376                                                 // Ã¡Â¹â€   [LATIN CAPITAL LETTER N WITH DOT BELOW]
1377                                                 case '\u1E48': 
1378                                                 // Ã¡Â¹Ë†  [LATIN CAPITAL LETTER N WITH LINE BELOW]
1379                                                 case '\u1E4A': 
1380                                                 // Ã¡Â¹Å   [LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW]
1381                                                 case '\u24C3': 
1382                                                 // Ã¢â€œÆ’  [CIRCLED LATIN CAPITAL LETTER N]
1383                                                 case '\uFF2E':  // Ã¯Â¼Â®  [FULLWIDTH LATIN CAPITAL LETTER N]
1384                                                         output[outputPos++] = 'N';
1385                                                         break;
1386                                                 
1387                                                 case '\u00F1': 
1388                                                 // ÃƒÂ±  [LATIN SMALL LETTER N WITH TILDE]
1389                                                 case '\u0144': 
1390                                                 // Ã…„  [LATIN SMALL LETTER N WITH ACUTE]
1391                                                 case '\u0146': 
1392                                                 // Ã…†  [LATIN SMALL LETTER N WITH CEDILLA]
1393                                                 case '\u0148': 
1394                                                 // Ã…ˆ  [LATIN SMALL LETTER N WITH CARON]
1395                                                 case '\u0149': 
1396                                                 // Ã…‰  [LATIN SMALL LETTER N PRECEDED BY APOSTROPHE]
1397                                                 case '\u014B': 
1398                                                 // Ã…‹  http://en.wikipedia.org/wiki/Eng_(letter)  [LATIN SMALL LETTER ENG]
1399                                                 case '\u019E': 
1400                                                 // Ã†Å¾  [LATIN SMALL LETTER N WITH LONG RIGHT LEG]
1401                                                 case '\u01F9': 
1402                                                 // Ã‡Â¹  [LATIN SMALL LETTER N WITH GRAVE]
1403                                                 case '\u0235': 
1404                                                 // ÃˆÂµ  [LATIN SMALL LETTER N WITH CURL]
1405                                                 case '\u0272': 
1406                                                 // Ã‰Â²  [LATIN SMALL LETTER N WITH LEFT HOOK]
1407                                                 case '\u0273': 
1408                                                 // Ã‰Â³  [LATIN SMALL LETTER N WITH RETROFLEX HOOK]
1409                                                 case '\u1D70': 
1410                                                 // Ã¡ÂµÂ°  [LATIN SMALL LETTER N WITH MIDDLE TILDE]
1411                                                 case '\u1D87': 
1412                                                 // Ã¡Â¶â€¡  [LATIN SMALL LETTER N WITH PALATAL HOOK]
1413                                                 case '\u1E45': 
1414                                                 // Ã¡Â¹â€¦  [LATIN SMALL LETTER N WITH DOT ABOVE]
1415                                                 case '\u1E47': 
1416                                                 // Ã¡Â¹â€¡  [LATIN SMALL LETTER N WITH DOT BELOW]
1417                                                 case '\u1E49': 
1418                                                 // Ã¡Â¹â€°  [LATIN SMALL LETTER N WITH LINE BELOW]
1419                                                 case '\u1E4B': 
1420                                                 // Ã¡Â¹â€¹  [LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW]
1421                                                 case '\u207F': 
1422                                                 // Ã¢ï¿½Â¿  [SUPERSCRIPT LATIN SMALL LETTER N]
1423                                                 case '\u24DD': 
1424                                                 // Ã¢â€œï¿½  [CIRCLED LATIN SMALL LETTER N]
1425                                                 case '\uFF4E':  // Ã¯Â½Å½  [FULLWIDTH LATIN SMALL LETTER N]
1426                                                         output[outputPos++] = 'n';
1427                                                         break;
1428                                                 
1429                                                 case '\u01CA':  // Ã‡Å   [LATIN CAPITAL LETTER NJ]
1430                                                         output[outputPos++] = 'N';
1431                                                         output[outputPos++] = 'J';
1432                                                         break;
1433                                                 
1434                                                 case '\u01CB':  // Ã‡â€¹  [LATIN CAPITAL LETTER N WITH SMALL LETTER J]
1435                                                         output[outputPos++] = 'N';
1436                                                         output[outputPos++] = 'j';
1437                                                         break;
1438                                                 
1439                                                 case '\u24A9':  // Ã¢â€™Â©  [PARENTHESIZED LATIN SMALL LETTER N]
1440                                                         output[outputPos++] = '(';
1441                                                         output[outputPos++] = 'n';
1442                                                         output[outputPos++] = ')';
1443                                                         break;
1444                                                 
1445                                                 case '\u01CC':  // Ã‡Å’  [LATIN SMALL LETTER NJ]
1446                                                         output[outputPos++] = 'n';
1447                                                         output[outputPos++] = 'j';
1448                                                         break;
1449                                                 
1450                                                 case '\u00D2': 
1451                                                 // Ãƒâ€™  [LATIN CAPITAL LETTER O WITH GRAVE]
1452                                                 case '\u00D3': 
1453                                                 // Ãƒâ€œ  [LATIN CAPITAL LETTER O WITH ACUTE]
1454                                                 case '\u00D4': 
1455                                                 // Ãƒï¿½?  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX]
1456                                                 case '\u00D5': 
1457                                                 // Ãƒâ€¢  [LATIN CAPITAL LETTER O WITH TILDE]
1458                                                 case '\u00D6': 
1459                                                 // Ãƒâ€“  [LATIN CAPITAL LETTER O WITH DIAERESIS]
1460                                                 case '\u00D8': 
1461                                                 // ÃƒËœ  [LATIN CAPITAL LETTER O WITH STROKE]
1462                                                 case '\u014C': 
1463                                                 // Ã…Å’  [LATIN CAPITAL LETTER O WITH MACRON]
1464                                                 case '\u014E': 
1465                                                 // Ã…Ž  [LATIN CAPITAL LETTER O WITH BREVE]
1466                                                 case '\u0150': 
1467                                                 // Ã…�  [LATIN CAPITAL LETTER O WITH DOUBLE ACUTE]
1468                                                 case '\u0186': 
1469                                                 // Ã†â€   [LATIN CAPITAL LETTER OPEN O]
1470                                                 case '\u019F': 
1471                                                 // Ã†Å¸  [LATIN CAPITAL LETTER O WITH MIDDLE TILDE]
1472                                                 case '\u01A0': 
1473                                                 // Ã†Â   [LATIN CAPITAL LETTER O WITH HORN]
1474                                                 case '\u01D1': 
1475                                                 // Ã‡â€˜  [LATIN CAPITAL LETTER O WITH CARON]
1476                                                 case '\u01EA': 
1477                                                 // Ã‡Âª  [LATIN CAPITAL LETTER O WITH OGONEK]
1478                                                 case '\u01EC': 
1479                                                 // Ã‡Â¬  [LATIN CAPITAL LETTER O WITH OGONEK AND MACRON]
1480                                                 case '\u01FE': 
1481                                                 // Ã‡Â¾  [LATIN CAPITAL LETTER O WITH STROKE AND ACUTE]
1482                                                 case '\u020C': 
1483                                                 // ÃˆÅ’  [LATIN CAPITAL LETTER O WITH DOUBLE GRAVE]
1484                                                 case '\u020E': 
1485                                                 // ÃˆÅ½  [LATIN CAPITAL LETTER O WITH INVERTED BREVE]
1486                                                 case '\u022A': 
1487                                                 // ÃˆÂª  [LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON]
1488                                                 case '\u022C': 
1489                                                 // ÃˆÂ¬  [LATIN CAPITAL LETTER O WITH TILDE AND MACRON]
1490                                                 case '\u022E': 
1491                                                 // ÃˆÂ®  [LATIN CAPITAL LETTER O WITH DOT ABOVE]
1492                                                 case '\u0230': 
1493                                                 // ÃˆÂ°  [LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON]
1494                                                 case '\u1D0F': 
1495                                                 // Ã¡Â´ï¿½  [LATIN LETTER SMALL CAPITAL O]
1496                                                 case '\u1D10': 
1497                                                 // Ã¡Â´ï¿½  [LATIN LETTER SMALL CAPITAL OPEN O]
1498                                                 case '\u1E4C': 
1499                                                 // Ã¡Â¹Å’  [LATIN CAPITAL LETTER O WITH TILDE AND ACUTE]
1500                                                 case '\u1E4E': 
1501                                                 // Ã¡Â¹Å½  [LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS]
1502                                                 case '\u1E50': 
1503                                                 // Ã¡Â¹ï¿½  [LATIN CAPITAL LETTER O WITH MACRON AND GRAVE]
1504                                                 case '\u1E52': 
1505                                                 // Ã¡Â¹â€™  [LATIN CAPITAL LETTER O WITH MACRON AND ACUTE]
1506                                                 case '\u1ECC': 
1507                                                 // Ã¡Â»Å’  [LATIN CAPITAL LETTER O WITH DOT BELOW]
1508                                                 case '\u1ECE': 
1509                                                 // Ã¡Â»Å½  [LATIN CAPITAL LETTER O WITH HOOK ABOVE]
1510                                                 case '\u1ED0': 
1511                                                 // Ã¡Â»ï¿½  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE]
1512                                                 case '\u1ED2': 
1513                                                 // Ã¡Â»â€™  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE]
1514                                                 case '\u1ED4': 
1515                                                 // Ã¡Â»ï¿½?  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE]
1516                                                 case '\u1ED6': 
1517                                                 // Ã¡Â»â€“  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE]
1518                                                 case '\u1ED8': 
1519                                                 // Ã¡Â»Ëœ  [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW]
1520                                                 case '\u1EDA': 
1521                                                 // Ã¡Â»Å¡  [LATIN CAPITAL LETTER O WITH HORN AND ACUTE]
1522                                                 case '\u1EDC': 
1523                                                 // Ã¡Â»Å“  [LATIN CAPITAL LETTER O WITH HORN AND GRAVE]
1524                                                 case '\u1EDE': 
1525                                                 // Ã¡Â»Å¾  [LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE]
1526                                                 case '\u1EE0': 
1527                                                 // Ã¡Â»Â   [LATIN CAPITAL LETTER O WITH HORN AND TILDE]
1528                                                 case '\u1EE2': 
1529                                                 // Ã¡Â»Â¢  [LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW]
1530                                                 case '\u24C4': 
1531                                                 // Ã¢â€œâ€ž  [CIRCLED LATIN CAPITAL LETTER O]
1532                                                 case '\uA74A': 
1533                                                 // Ãªï¿½Å   [LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY]
1534                                                 case '\uA74C': 
1535                                                 // Ãªï¿½Å’  [LATIN CAPITAL LETTER O WITH LOOP]
1536                                                 case '\uFF2F':  // Ã¯Â¼Â¯  [FULLWIDTH LATIN CAPITAL LETTER O]
1537                                                         output[outputPos++] = 'O';
1538                                                         break;
1539                                                 
1540                                                 case '\u00F2': 
1541                                                 // ÃƒÂ²  [LATIN SMALL LETTER O WITH GRAVE]
1542                                                 case '\u00F3': 
1543                                                 // ÃƒÂ³  [LATIN SMALL LETTER O WITH ACUTE]
1544                                                 case '\u00F4': 
1545                                                 // ÃƒÂ´  [LATIN SMALL LETTER O WITH CIRCUMFLEX]
1546                                                 case '\u00F5': 
1547                                                 // ÃƒÂµ  [LATIN SMALL LETTER O WITH TILDE]
1548                                                 case '\u00F6': 
1549                                                 // ÃƒÂ¶  [LATIN SMALL LETTER O WITH DIAERESIS]
1550                                                 case '\u00F8': 
1551                                                 // ÃƒÂ¸  [LATIN SMALL LETTER O WITH STROKE]
1552                                                 case '\u014D': 
1553                                                 // Ã…�  [LATIN SMALL LETTER O WITH MACRON]
1554                                                 case '\u014F': 
1555                                                 // Ã…�  [LATIN SMALL LETTER O WITH BREVE]
1556                                                 case '\u0151': 
1557                                                 // Ã…‘  [LATIN SMALL LETTER O WITH DOUBLE ACUTE]
1558                                                 case '\u01A1': 
1559                                                 // Ã†Â¡  [LATIN SMALL LETTER O WITH HORN]
1560                                                 case '\u01D2': 
1561                                                 // Ã‡â€™  [LATIN SMALL LETTER O WITH CARON]
1562                                                 case '\u01EB': 
1563                                                 // Ã‡Â«  [LATIN SMALL LETTER O WITH OGONEK]
1564                                                 case '\u01ED': 
1565                                                 // Ã‡Â­  [LATIN SMALL LETTER O WITH OGONEK AND MACRON]
1566                                                 case '\u01FF': 
1567                                                 // Ã‡Â¿  [LATIN SMALL LETTER O WITH STROKE AND ACUTE]
1568                                                 case '\u020D': 
1569                                                 // Ãˆï¿½  [LATIN SMALL LETTER O WITH DOUBLE GRAVE]
1570                                                 case '\u020F': 
1571                                                 // Ãˆï¿½  [LATIN SMALL LETTER O WITH INVERTED BREVE]
1572                                                 case '\u022B': 
1573                                                 // ÃˆÂ«  [LATIN SMALL LETTER O WITH DIAERESIS AND MACRON]
1574                                                 case '\u022D': 
1575                                                 // ÃˆÂ­  [LATIN SMALL LETTER O WITH TILDE AND MACRON]
1576                                                 case '\u022F': 
1577                                                 // ÃˆÂ¯  [LATIN SMALL LETTER O WITH DOT ABOVE]
1578                                                 case '\u0231': 
1579                                                 // ÃˆÂ±  [LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON]
1580                                                 case '\u0254': 
1581                                                 // Ã‰ï¿½?  [LATIN SMALL LETTER OPEN O]
1582                                                 case '\u0275': 
1583                                                 // Ã‰Âµ  [LATIN SMALL LETTER BARRED O]
1584                                                 case '\u1D16': 
1585                                                 // Ã¡Â´â€“  [LATIN SMALL LETTER TOP HALF O]
1586                                                 case '\u1D17': 
1587                                                 // Ã¡Â´â€”  [LATIN SMALL LETTER BOTTOM HALF O]
1588                                                 case '\u1D97': 
1589                                                 // Ã¡Â¶â€”  [LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK]
1590                                                 case '\u1E4D': 
1591                                                 // Ã¡Â¹ï¿½  [LATIN SMALL LETTER O WITH TILDE AND ACUTE]
1592                                                 case '\u1E4F': 
1593                                                 // Ã¡Â¹ï¿½  [LATIN SMALL LETTER O WITH TILDE AND DIAERESIS]
1594                                                 case '\u1E51': 
1595                                                 // Ã¡Â¹â€˜  [LATIN SMALL LETTER O WITH MACRON AND GRAVE]
1596                                                 case '\u1E53': 
1597                                                 // Ã¡Â¹â€œ  [LATIN SMALL LETTER O WITH MACRON AND ACUTE]
1598                                                 case '\u1ECD': 
1599                                                 // Ã¡Â»ï¿½  [LATIN SMALL LETTER O WITH DOT BELOW]
1600                                                 case '\u1ECF': 
1601                                                 // Ã¡Â»ï¿½  [LATIN SMALL LETTER O WITH HOOK ABOVE]
1602                                                 case '\u1ED1': 
1603                                                 // Ã¡Â»â€˜  [LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE]
1604                                                 case '\u1ED3': 
1605                                                 // Ã¡Â»â€œ  [LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE]
1606                                                 case '\u1ED5': 
1607                                                 // Ã¡Â»â€¢  [LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE]
1608                                                 case '\u1ED7': 
1609                                                 // Ã¡Â»â€”  [LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE]
1610                                                 case '\u1ED9': 
1611                                                 // Ã¡Â»â„¢  [LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW]
1612                                                 case '\u1EDB': 
1613                                                 // Ã¡Â»â€º  [LATIN SMALL LETTER O WITH HORN AND ACUTE]
1614                                                 case '\u1EDD': 
1615                                                 // Ã¡Â»ï¿½  [LATIN SMALL LETTER O WITH HORN AND GRAVE]
1616                                                 case '\u1EDF': 
1617                                                 // Ã¡Â»Å¸  [LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE]
1618                                                 case '\u1EE1': 
1619                                                 // Ã¡Â»Â¡  [LATIN SMALL LETTER O WITH HORN AND TILDE]
1620                                                 case '\u1EE3': 
1621                                                 // Ã¡Â»Â£  [LATIN SMALL LETTER O WITH HORN AND DOT BELOW]
1622                                                 case '\u2092': 
1623                                                 // Ã¢â€šâ€™  [LATIN SUBSCRIPT SMALL LETTER O]
1624                                                 case '\u24DE': 
1625                                                 // Ã¢â€œÅ¾  [CIRCLED LATIN SMALL LETTER O]
1626                                                 case '\u2C7A': 
1627                                                 // Ã¢Â±Âº  [LATIN SMALL LETTER O WITH LOW RING INSIDE]
1628                                                 case '\uA74B': 
1629                                                 // Ãªï¿½â€¹  [LATIN SMALL LETTER O WITH LONG STROKE OVERLAY]
1630                                                 case '\uA74D': 
1631                                                 // Ãªï¿½ï¿½  [LATIN SMALL LETTER O WITH LOOP]
1632                                                 case '\uFF4F':  // Ã¯Â½ï¿½  [FULLWIDTH LATIN SMALL LETTER O]
1633                                                         output[outputPos++] = 'o';
1634                                                         break;
1635                                                 
1636                                                 case '\u0152': 
1637                                                 // Ã…’  [LATIN CAPITAL LIGATURE OE]
1638                                                 case '\u0276':  // Ã‰Â¶  [LATIN LETTER SMALL CAPITAL OE]
1639                                                         output[outputPos++] = 'O';
1640                                                         output[outputPos++] = 'E';
1641                                                         break;
1642                                                 
1643                                                 case '\uA74E':  // Ãªï¿½Å½  [LATIN CAPITAL LETTER OO]
1644                                                         output[outputPos++] = 'O';
1645                                                         output[outputPos++] = 'O';
1646                                                         break;
1647                                                 
1648                                                 case '\u0222': 
1649                                                 // ÃˆÂ¢  http://en.wikipedia.org/wiki/OU  [LATIN CAPITAL LETTER OU]
1650                                                 case '\u1D15':  // Ã¡Â´â€¢  [LATIN LETTER SMALL CAPITAL OU]
1651                                                         output[outputPos++] = 'O';
1652                                                         output[outputPos++] = 'U';
1653                                                         break;
1654                                                 
1655                                                 case '\u24AA':  // Ã¢â€™Âª  [PARENTHESIZED LATIN SMALL LETTER O]
1656                                                         output[outputPos++] = '(';
1657                                                         output[outputPos++] = 'o';
1658                                                         output[outputPos++] = ')';
1659                                                         break;
1660                                                 
1661                                                 case '\u0153': 
1662                                                 // Ã…“  [LATIN SMALL LIGATURE OE]
1663                                                 case '\u1D14':  // Ã¡Â´ï¿½?  [LATIN SMALL LETTER TURNED OE]
1664                                                         output[outputPos++] = 'o';
1665                                                         output[outputPos++] = 'e';
1666                                                         break;
1667                                                 
1668                                                 case '\uA74F':  // Ãªï¿½ï¿½  [LATIN SMALL LETTER OO]
1669                                                         output[outputPos++] = 'o';
1670                                                         output[outputPos++] = 'o';
1671                                                         break;
1672                                                 
1673                                                 case '\u0223':  // ÃˆÂ£  http://en.wikipedia.org/wiki/OU  [LATIN SMALL LETTER OU]
1674                                                         output[outputPos++] = 'o';
1675                                                         output[outputPos++] = 'u';
1676                                                         break;
1677                                                 
1678                                                 case '\u01A4': 
1679                                                 // Ã†Â¤  [LATIN CAPITAL LETTER P WITH HOOK]
1680                                                 case '\u1D18': 
1681                                                 // Ã¡Â´Ëœ  [LATIN LETTER SMALL CAPITAL P]
1682                                                 case '\u1E54': 
1683                                                 // Ã¡Â¹ï¿½?  [LATIN CAPITAL LETTER P WITH ACUTE]
1684                                                 case '\u1E56': 
1685                                                 // Ã¡Â¹â€“  [LATIN CAPITAL LETTER P WITH DOT ABOVE]
1686                                                 case '\u24C5': 
1687                                                 // Ã¢â€œâ€¦  [CIRCLED LATIN CAPITAL LETTER P]
1688                                                 case '\u2C63': 
1689                                                 // Ã¢Â±Â£  [LATIN CAPITAL LETTER P WITH STROKE]
1690                                                 case '\uA750': 
1691                                                 // Ãªï¿½ï¿½  [LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER]
1692                                                 case '\uA752': 
1693                                                 // Ãªï¿½â€™  [LATIN CAPITAL LETTER P WITH FLOURISH]
1694                                                 case '\uA754': 
1695                                                 // Ãªï¿½ï¿½?  [LATIN CAPITAL LETTER P WITH SQUIRREL TAIL]
1696                                                 case '\uFF30':  // Ã¯Â¼Â°  [FULLWIDTH LATIN CAPITAL LETTER P]
1697                                                         output[outputPos++] = 'P';
1698                                                         break;
1699                                                 
1700                                                 case '\u01A5': 
1701                                                 // Ã†Â¥  [LATIN SMALL LETTER P WITH HOOK]
1702                                                 case '\u1D71': 
1703                                                 // Ã¡ÂµÂ±  [LATIN SMALL LETTER P WITH MIDDLE TILDE]
1704                                                 case '\u1D7D': 
1705                                                 // Ã¡ÂµÂ½  [LATIN SMALL LETTER P WITH STROKE]
1706                                                 case '\u1D88': 
1707                                                 // Ã¡Â¶Ë†  [LATIN SMALL LETTER P WITH PALATAL HOOK]
1708                                                 case '\u1E55': 
1709                                                 // Ã¡Â¹â€¢  [LATIN SMALL LETTER P WITH ACUTE]
1710                                                 case '\u1E57': 
1711                                                 // Ã¡Â¹â€”  [LATIN SMALL LETTER P WITH DOT ABOVE]
1712                                                 case '\u24DF': 
1713                                                 // Ã¢â€œÅ¸  [CIRCLED LATIN SMALL LETTER P]
1714                                                 case '\uA751': 
1715                                                 // Ãªï¿½â€˜  [LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER]
1716                                                 case '\uA753': 
1717                                                 // Ãªï¿½â€œ  [LATIN SMALL LETTER P WITH FLOURISH]
1718                                                 case '\uA755': 
1719                                                 // Ãªï¿½â€¢  [LATIN SMALL LETTER P WITH SQUIRREL TAIL]
1720                                                 case '\uA7FC': 
1721                                                 // ÃªÅ¸Â¼  [LATIN EPIGRAPHIC LETTER REVERSED P]
1722                                                 case '\uFF50':  // Ã¯Â½ï¿½  [FULLWIDTH LATIN SMALL LETTER P]
1723                                                         output[outputPos++] = 'p';
1724                                                         break;
1725                                                 
1726                                                 case '\u24AB':  // Ã¢â€™Â«  [PARENTHESIZED LATIN SMALL LETTER P]
1727                                                         output[outputPos++] = '(';
1728                                                         output[outputPos++] = 'p';
1729                                                         output[outputPos++] = ')';
1730                                                         break;
1731                                                 
1732                                                 case '\u024A': 
1733                                                 // Ã‰Å   [LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL]
1734                                                 case '\u24C6': 
1735                                                 // Ã¢â€œâ€   [CIRCLED LATIN CAPITAL LETTER Q]
1736                                                 case '\uA756': 
1737                                                 // Ãªï¿½â€“  [LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER]
1738                                                 case '\uA758': 
1739                                                 // Ãªï¿½Ëœ  [LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE]
1740                                                 case '\uFF31':  // Ã¯Â¼Â±  [FULLWIDTH LATIN CAPITAL LETTER Q]
1741                                                         output[outputPos++] = 'Q';
1742                                                         break;
1743                                                 
1744                                                 case '\u0138': 
1745                                                 // Ã„¸  http://en.wikipedia.org/wiki/Kra_(letter)  [LATIN SMALL LETTER KRA]
1746                                                 case '\u024B': 
1747                                                 // Ã‰â€¹  [LATIN SMALL LETTER Q WITH HOOK TAIL]
1748                                                 case '\u02A0': 
1749                                                 // ÃŠÂ   [LATIN SMALL LETTER Q WITH HOOK]
1750                                                 case '\u24E0': 
1751                                                 // Ã¢â€œÂ   [CIRCLED LATIN SMALL LETTER Q]
1752                                                 case '\uA757': 
1753                                                 // Ãªï¿½â€”  [LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER]
1754                                                 case '\uA759': 
1755                                                 // Ãªï¿½â„¢  [LATIN SMALL LETTER Q WITH DIAGONAL STROKE]
1756                                                 case '\uFF51':  // Ã¯Â½â€˜  [FULLWIDTH LATIN SMALL LETTER Q]
1757                                                         output[outputPos++] = 'q';
1758                                                         break;
1759                                                 
1760                                                 case '\u24AC':  // Ã¢â€™Â¬  [PARENTHESIZED LATIN SMALL LETTER Q]
1761                                                         output[outputPos++] = '(';
1762                                                         output[outputPos++] = 'q';
1763                                                         output[outputPos++] = ')';
1764                                                         break;
1765                                                 
1766                                                 case '\u0239':  // ÃˆÂ¹  [LATIN SMALL LETTER QP DIGRAPH]
1767                                                         output[outputPos++] = 'q';
1768                                                         output[outputPos++] = 'p';
1769                                                         break;
1770                                                 
1771                                                 case '\u0154': 
1772                                                 // Ã…�?  [LATIN CAPITAL LETTER R WITH ACUTE]
1773                                                 case '\u0156': 
1774                                                 // Ã…–  [LATIN CAPITAL LETTER R WITH CEDILLA]
1775                                                 case '\u0158': 
1776                                                 // Ã…Ëœ  [LATIN CAPITAL LETTER R WITH CARON]
1777                                                 case '\u0210': 
1778                                                 // Ãˆâ€™  [LATIN CAPITAL LETTER R WITH DOUBLE GRAVE]
1779                                                 case '\u0212': 
1780                                                 // Ãˆâ€™  [LATIN CAPITAL LETTER R WITH INVERTED BREVE]
1781                                                 case '\u024C': 
1782                                                 // Ã‰Å’  [LATIN CAPITAL LETTER R WITH STROKE]
1783                                                 case '\u0280': 
1784                                                 // ÃŠâ‚¬  [LATIN LETTER SMALL CAPITAL R]
1785                                                 case '\u0281': 
1786                                                 // ÃŠï¿½  [LATIN LETTER SMALL CAPITAL INVERTED R]
1787                                                 case '\u1D19': 
1788                                                 // Ã¡Â´â„¢  [LATIN LETTER SMALL CAPITAL REVERSED R]
1789                                                 case '\u1D1A': 
1790                                                 // Ã¡Â´Å¡  [LATIN LETTER SMALL CAPITAL TURNED R]
1791                                                 case '\u1E58': 
1792                                                 // Ã¡Â¹Ëœ  [LATIN CAPITAL LETTER R WITH DOT ABOVE]
1793                                                 case '\u1E5A': 
1794                                                 // Ã¡Â¹Å¡  [LATIN CAPITAL LETTER R WITH DOT BELOW]
1795                                                 case '\u1E5C': 
1796                                                 // Ã¡Â¹Å“  [LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON]
1797                                                 case '\u1E5E': 
1798                                                 // Ã¡Â¹Å¾  [LATIN CAPITAL LETTER R WITH LINE BELOW]
1799                                                 case '\u24C7': 
1800                                                 // Ã¢â€œâ€¡  [CIRCLED LATIN CAPITAL LETTER R]
1801                                                 case '\u2C64': 
1802                                                 // Ã¢Â±Â¤  [LATIN CAPITAL LETTER R WITH TAIL]
1803                                                 case '\uA75A': 
1804                                                 // Ãªï¿½Å¡  [LATIN CAPITAL LETTER R ROTUNDA]
1805                                                 case '\uA782': 
1806                                                 // ÃªÅ¾â€š  [LATIN CAPITAL LETTER INSULAR R]
1807                                                 case '\uFF32':  // Ã¯Â¼Â²  [FULLWIDTH LATIN CAPITAL LETTER R]
1808                                                         output[outputPos++] = 'R';
1809                                                         break;
1810                                                 
1811                                                 case '\u0155': 
1812                                                 // Ã…•  [LATIN SMALL LETTER R WITH ACUTE]
1813                                                 case '\u0157': 
1814                                                 // Ã…—  [LATIN SMALL LETTER R WITH CEDILLA]
1815                                                 case '\u0159': 
1816                                                 // Ã…â„¢  [LATIN SMALL LETTER R WITH CARON]
1817                                                 case '\u0211': 
1818                                                 // Ãˆâ€˜  [LATIN SMALL LETTER R WITH DOUBLE GRAVE]
1819                                                 case '\u0213': 
1820                                                 // Ãˆâ€œ  [LATIN SMALL LETTER R WITH INVERTED BREVE]
1821                                                 case '\u024D': 
1822                                                 // Ã‰ï¿½  [LATIN SMALL LETTER R WITH STROKE]
1823                                                 case '\u027C': 
1824                                                 // Ã‰Â¼  [LATIN SMALL LETTER R WITH LONG LEG]
1825                                                 case '\u027D': 
1826                                                 // Ã‰Â½  [LATIN SMALL LETTER R WITH TAIL]
1827                                                 case '\u027E': 
1828                                                 // Ã‰Â¾  [LATIN SMALL LETTER R WITH FISHHOOK]
1829                                                 case '\u027F': 
1830                                                 // Ã‰Â¿  [LATIN SMALL LETTER REVERSED R WITH FISHHOOK]
1831                                                 case '\u1D63': 
1832                                                 // Ã¡ÂµÂ£  [LATIN SUBSCRIPT SMALL LETTER R]
1833                                                 case '\u1D72': 
1834                                                 // Ã¡ÂµÂ²  [LATIN SMALL LETTER R WITH MIDDLE TILDE]
1835                                                 case '\u1D73': 
1836                                                 // Ã¡ÂµÂ³  [LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE]
1837                                                 case '\u1D89': 
1838                                                 // Ã¡Â¶â€°  [LATIN SMALL LETTER R WITH PALATAL HOOK]
1839                                                 case '\u1E59': 
1840                                                 // Ã¡Â¹â„¢  [LATIN SMALL LETTER R WITH DOT ABOVE]
1841                                                 case '\u1E5B': 
1842                                                 // Ã¡Â¹â€º  [LATIN SMALL LETTER R WITH DOT BELOW]
1843                                                 case '\u1E5D': 
1844                                                 // Ã¡Â¹ï¿½  [LATIN SMALL LETTER R WITH DOT BELOW AND MACRON]
1845                                                 case '\u1E5F': 
1846                                                 // Ã¡Â¹Å¸  [LATIN SMALL LETTER R WITH LINE BELOW]
1847                                                 case '\u24E1': 
1848                                                 // Ã¢â€œÂ¡  [CIRCLED LATIN SMALL LETTER R]
1849                                                 case '\uA75B': 
1850                                                 // Ãªï¿½â€º  [LATIN SMALL LETTER R ROTUNDA]
1851                                                 case '\uA783': 
1852                                                 // ÃªÅ¾Æ’  [LATIN SMALL LETTER INSULAR R]
1853                                                 case '\uFF52':  // Ã¯Â½â€™  [FULLWIDTH LATIN SMALL LETTER R]
1854                                                         output[outputPos++] = 'r';
1855                                                         break;
1856                                                 
1857                                                 case '\u24AD':  // Ã¢â€™Â­  [PARENTHESIZED LATIN SMALL LETTER R]
1858                                                         output[outputPos++] = '(';
1859                                                         output[outputPos++] = 'r';
1860                                                         output[outputPos++] = ')';
1861                                                         break;
1862                                                 
1863                                                 case '\u015A': 
1864                                                 // Ã…Å¡  [LATIN CAPITAL LETTER S WITH ACUTE]
1865                                                 case '\u015C': 
1866                                                 // Ã…Å“  [LATIN CAPITAL LETTER S WITH CIRCUMFLEX]
1867                                                 case '\u015E': 
1868                                                 // Ã…ž  [LATIN CAPITAL LETTER S WITH CEDILLA]
1869                                                 case '\u0160': 
1870                                                 // Ã…   [LATIN CAPITAL LETTER S WITH CARON]
1871                                                 case '\u0218': 
1872                                                 // ÃˆËœ  [LATIN CAPITAL LETTER S WITH COMMA BELOW]
1873                                                 case '\u1E60': 
1874                                                 // Ã¡Â¹Â   [LATIN CAPITAL LETTER S WITH DOT ABOVE]
1875                                                 case '\u1E62': 
1876                                                 // Ã¡Â¹Â¢  [LATIN CAPITAL LETTER S WITH DOT BELOW]
1877                                                 case '\u1E64': 
1878                                                 // Ã¡Â¹Â¤  [LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE]
1879                                                 case '\u1E66': 
1880                                                 // Ã¡Â¹Â¦  [LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE]
1881                                                 case '\u1E68': 
1882                                                 // Ã¡Â¹Â¨  [LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE]
1883                                                 case '\u24C8': 
1884                                                 // Ã¢â€œË†  [CIRCLED LATIN CAPITAL LETTER S]
1885                                                 case '\uA731': 
1886                                                 // ÃªÅ“±  [LATIN LETTER SMALL CAPITAL S]
1887                                                 case '\uA785': 
1888                                                 // ÃªÅ¾â€¦  [LATIN SMALL LETTER INSULAR S]
1889                                                 case '\uFF33':  // Ã¯Â¼Â³  [FULLWIDTH LATIN CAPITAL LETTER S]
1890                                                         output[outputPos++] = 'S';
1891                                                         break;
1892                                                 
1893                                                 case '\u015B': 
1894                                                 // Ã…›  [LATIN SMALL LETTER S WITH ACUTE]
1895                                                 case '\u015D': 
1896                                                 // Ã…�  [LATIN SMALL LETTER S WITH CIRCUMFLEX]
1897                                                 case '\u015F': 
1898                                                 // Ã…Ÿ  [LATIN SMALL LETTER S WITH CEDILLA]
1899                                                 case '\u0161': 
1900                                                 // Ã…¡  [LATIN SMALL LETTER S WITH CARON]
1901                                                 case '\u017F': 
1902                                                 // Ã…¿  http://en.wikipedia.org/wiki/Long_S  [LATIN SMALL LETTER LONG S]
1903                                                 case '\u0219': 
1904                                                 // Ãˆâ„¢  [LATIN SMALL LETTER S WITH COMMA BELOW]
1905                                                 case '\u023F': 
1906                                                 // ÃˆÂ¿  [LATIN SMALL LETTER S WITH SWASH TAIL]
1907                                                 case '\u0282': 
1908                                                 // ÃŠâ€š  [LATIN SMALL LETTER S WITH HOOK]
1909                                                 case '\u1D74': 
1910                                                 // Ã¡ÂµÂ´  [LATIN SMALL LETTER S WITH MIDDLE TILDE]
1911                                                 case '\u1D8A': 
1912                                                 // Ã¡Â¶Å   [LATIN SMALL LETTER S WITH PALATAL HOOK]
1913                                                 case '\u1E61': 
1914                                                 // Ã¡Â¹Â¡  [LATIN SMALL LETTER S WITH DOT ABOVE]
1915                                                 case '\u1E63': 
1916                                                 // Ã¡Â¹Â£  [LATIN SMALL LETTER S WITH DOT BELOW]
1917                                                 case '\u1E65': 
1918                                                 // Ã¡Â¹Â¥  [LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE]
1919                                                 case '\u1E67': 
1920                                                 // Ã¡Â¹Â§  [LATIN SMALL LETTER S WITH CARON AND DOT ABOVE]
1921                                                 case '\u1E69': 
1922                                                 // Ã¡Â¹Â©  [LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE]
1923                                                 case '\u1E9C': 
1924                                                 // Ã¡ÂºÅ“  [LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE]
1925                                                 case '\u1E9D': 
1926                                                 // Ã¡Âºï¿½  [LATIN SMALL LETTER LONG S WITH HIGH STROKE]
1927                                                 case '\u24E2': 
1928                                                 // Ã¢â€œÂ¢  [CIRCLED LATIN SMALL LETTER S]
1929                                                 case '\uA784': 
1930                                                 // ÃªÅ¾â€ž  [LATIN CAPITAL LETTER INSULAR S]
1931                                                 case '\uFF53':  // Ã¯Â½â€œ  [FULLWIDTH LATIN SMALL LETTER S]
1932                                                         output[outputPos++] = 's';
1933                                                         break;
1934                                                 
1935                                                 case '\u1E9E':  // Ã¡ÂºÅ¾  [LATIN CAPITAL LETTER SHARP S]
1936                                                         output[outputPos++] = 'S';
1937                                                         output[outputPos++] = 'S';
1938                                                         break;
1939                                                 
1940                                                 case '\u24AE':  // Ã¢â€™Â®  [PARENTHESIZED LATIN SMALL LETTER S]
1941                                                         output[outputPos++] = '(';
1942                                                         output[outputPos++] = 's';
1943                                                         output[outputPos++] = ')';
1944                                                         break;
1945                                                 
1946                                                 case '\u00DF':  // ÃƒÅ¸  [LATIN SMALL LETTER SHARP S]
1947                                                         output[outputPos++] = 's';
1948                                                         output[outputPos++] = 's';
1949                                                         break;
1950                                                 
1951                                                 case '\uFB06':  // Ã¯Â¬â€   [LATIN SMALL LIGATURE ST]
1952                                                         output[outputPos++] = 's';
1953                                                         output[outputPos++] = 't';
1954                                                         break;
1955                                                 
1956                                                 case '\u0162': 
1957                                                 // Ã…¢  [LATIN CAPITAL LETTER T WITH CEDILLA]
1958                                                 case '\u0164': 
1959                                                 // Ã…¤  [LATIN CAPITAL LETTER T WITH CARON]
1960                                                 case '\u0166': 
1961                                                 // Ã…¦  [LATIN CAPITAL LETTER T WITH STROKE]
1962                                                 case '\u01AC': 
1963                                                 // Ã†Â¬  [LATIN CAPITAL LETTER T WITH HOOK]
1964                                                 case '\u01AE': 
1965                                                 // Ã†Â®  [LATIN CAPITAL LETTER T WITH RETROFLEX HOOK]
1966                                                 case '\u021A': 
1967                                                 // ÃˆÅ¡  [LATIN CAPITAL LETTER T WITH COMMA BELOW]
1968                                                 case '\u023E': 
1969                                                 // ÃˆÂ¾  [LATIN CAPITAL LETTER T WITH DIAGONAL STROKE]
1970                                                 case '\u1D1B': 
1971                                                 // Ã¡Â´â€º  [LATIN LETTER SMALL CAPITAL T]
1972                                                 case '\u1E6A': 
1973                                                 // Ã¡Â¹Âª  [LATIN CAPITAL LETTER T WITH DOT ABOVE]
1974                                                 case '\u1E6C': 
1975                                                 // Ã¡Â¹Â¬  [LATIN CAPITAL LETTER T WITH DOT BELOW]
1976                                                 case '\u1E6E': 
1977                                                 // Ã¡Â¹Â®  [LATIN CAPITAL LETTER T WITH LINE BELOW]
1978                                                 case '\u1E70': 
1979                                                 // Ã¡Â¹Â°  [LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW]
1980                                                 case '\u24C9': 
1981                                                 // Ã¢â€œâ€°  [CIRCLED LATIN CAPITAL LETTER T]
1982                                                 case '\uA786': 
1983                                                 // ÃªÅ¾â€   [LATIN CAPITAL LETTER INSULAR T]
1984                                                 case '\uFF34':  // Ã¯Â¼Â´  [FULLWIDTH LATIN CAPITAL LETTER T]
1985                                                         output[outputPos++] = 'T';
1986                                                         break;
1987                                                 
1988                                                 case '\u0163': 
1989                                                 // Ã…£  [LATIN SMALL LETTER T WITH CEDILLA]
1990                                                 case '\u0165': 
1991                                                 // Ã…Â¥  [LATIN SMALL LETTER T WITH CARON]
1992                                                 case '\u0167': 
1993                                                 // Ã…§  [LATIN SMALL LETTER T WITH STROKE]
1994                                                 case '\u01AB': 
1995                                                 // Ã†Â«  [LATIN SMALL LETTER T WITH PALATAL HOOK]
1996                                                 case '\u01AD': 
1997                                                 // Ã†Â­  [LATIN SMALL LETTER T WITH HOOK]
1998                                                 case '\u021B': 
1999                                                 // Ãˆâ€º  [LATIN SMALL LETTER T WITH COMMA BELOW]
2000                                                 case '\u0236': 
2001                                                 // ÃˆÂ¶  [LATIN SMALL LETTER T WITH CURL]
2002                                                 case '\u0287': 
2003                                                 // ÃŠâ€¡  [LATIN SMALL LETTER TURNED T]
2004                                                 case '\u0288': 
2005                                                 // ÃŠË†  [LATIN SMALL LETTER T WITH RETROFLEX HOOK]
2006                                                 case '\u1D75': 
2007                                                 // Ã¡ÂµÂµ  [LATIN SMALL LETTER T WITH MIDDLE TILDE]
2008                                                 case '\u1E6B': 
2009                                                 // Ã¡Â¹Â«  [LATIN SMALL LETTER T WITH DOT ABOVE]
2010                                                 case '\u1E6D': 
2011                                                 // Ã¡Â¹Â­  [LATIN SMALL LETTER T WITH DOT BELOW]
2012                                                 case '\u1E6F': 
2013                                                 // Ã¡Â¹Â¯  [LATIN SMALL LETTER T WITH LINE BELOW]
2014                                                 case '\u1E71': 
2015                                                 // Ã¡Â¹Â±  [LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW]
2016                                                 case '\u1E97': 
2017                                                 // Ã¡Âºâ€”  [LATIN SMALL LETTER T WITH DIAERESIS]
2018                                                 case '\u24E3': 
2019                                                 // Ã¢â€œÂ£  [CIRCLED LATIN SMALL LETTER T]
2020                                                 case '\u2C66': 
2021                                                 // Ã¢Â±Â¦  [LATIN SMALL LETTER T WITH DIAGONAL STROKE]
2022                                                 case '\uFF54':  // Ã¯Â½ï¿½?  [FULLWIDTH LATIN SMALL LETTER T]
2023                                                         output[outputPos++] = 't';
2024                                                         break;
2025                                                 
2026                                                 case '\u00DE': 
2027                                                 // ÃƒÅ¾  [LATIN CAPITAL LETTER THORN]
2028                                                 case '\uA766':  // Ãªï¿½Â¦  [LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER]
2029                                                         output[outputPos++] = 'T';
2030                                                         output[outputPos++] = 'H';
2031                                                         break;
2032                                                 
2033                                                 case '\uA728':  // ÃªÅ“¨  [LATIN CAPITAL LETTER TZ]
2034                                                         output[outputPos++] = 'T';
2035                                                         output[outputPos++] = 'Z';
2036                                                         break;
2037                                                 
2038                                                 case '\u24AF':  // Ã¢â€™Â¯  [PARENTHESIZED LATIN SMALL LETTER T]
2039                                                         output[outputPos++] = '(';
2040                                                         output[outputPos++] = 't';
2041                                                         output[outputPos++] = ')';
2042                                                         break;
2043                                                 
2044                                                 case '\u02A8':  // ÃŠÂ¨  [LATIN SMALL LETTER TC DIGRAPH WITH CURL]
2045                                                         output[outputPos++] = 't';
2046                                                         output[outputPos++] = 'c';
2047                                                         break;
2048                                                 
2049                                                 case '\u00FE': 
2050                                                 // ÃƒÂ¾  [LATIN SMALL LETTER THORN]
2051                                                 case '\u1D7A': 
2052                                                 // Ã¡ÂµÂº  [LATIN SMALL LETTER TH WITH STRIKETHROUGH]
2053                                                 case '\uA767':  // Ãªï¿½Â§  [LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER]
2054                                                         output[outputPos++] = 't';
2055                                                         output[outputPos++] = 'h';
2056                                                         break;
2057                                                 
2058                                                 case '\u02A6':  // ÃŠÂ¦  [LATIN SMALL LETTER TS DIGRAPH]
2059                                                         output[outputPos++] = 't';
2060                                                         output[outputPos++] = 's';
2061                                                         break;
2062                                                 
2063                                                 case '\uA729':  // ÃªÅ“©  [LATIN SMALL LETTER TZ]
2064                                                         output[outputPos++] = 't';
2065                                                         output[outputPos++] = 'z';
2066                                                         break;
2067                                                 
2068                                                 case '\u00D9': 
2069                                                 // Ãƒâ„¢  [LATIN CAPITAL LETTER U WITH GRAVE]
2070                                                 case '\u00DA': 
2071                                                 // ÃƒÅ¡  [LATIN CAPITAL LETTER U WITH ACUTE]
2072                                                 case '\u00DB': 
2073                                                 // Ãƒâ€º  [LATIN CAPITAL LETTER U WITH CIRCUMFLEX]
2074                                                 case '\u00DC': 
2075                                                 // ÃƒÅ“  [LATIN CAPITAL LETTER U WITH DIAERESIS]
2076                                                 case '\u0168': 
2077                                                 // Ã…¨  [LATIN CAPITAL LETTER U WITH TILDE]
2078                                                 case '\u016A': 
2079                                                 // Ã…ª  [LATIN CAPITAL LETTER U WITH MACRON]
2080                                                 case '\u016C': 
2081                                                 // Ã…¬  [LATIN CAPITAL LETTER U WITH BREVE]
2082                                                 case '\u016E': 
2083                                                 // Ã…®  [LATIN CAPITAL LETTER U WITH RING ABOVE]
2084                                                 case '\u0170': 
2085                                                 // Ã…°  [LATIN CAPITAL LETTER U WITH DOUBLE ACUTE]
2086                                                 case '\u0172': 
2087                                                 // Ã…²  [LATIN CAPITAL LETTER U WITH OGONEK]
2088                                                 case '\u01AF': 
2089                                                 // Ã†Â¯  [LATIN CAPITAL LETTER U WITH HORN]
2090                                                 case '\u01D3': 
2091                                                 // Ã‡â€œ  [LATIN CAPITAL LETTER U WITH CARON]
2092                                                 case '\u01D5': 
2093                                                 // Ã‡â€¢  [LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON]
2094                                                 case '\u01D7': 
2095                                                 // Ã‡â€”  [LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE]
2096                                                 case '\u01D9': 
2097                                                 // Ã‡â„¢  [LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON]
2098                                                 case '\u01DB': 
2099                                                 // Ã‡â€º  [LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE]
2100                                                 case '\u0214': 
2101                                                 // Ãˆï¿½?  [LATIN CAPITAL LETTER U WITH DOUBLE GRAVE]
2102                                                 case '\u0216': 
2103                                                 // Ãˆâ€“  [LATIN CAPITAL LETTER U WITH INVERTED BREVE]
2104                                                 case '\u0244': 
2105                                                 // Ã‰â€ž  [LATIN CAPITAL LETTER U BAR]
2106                                                 case '\u1D1C': 
2107                                                 // Ã¡Â´Å“  [LATIN LETTER SMALL CAPITAL U]
2108                                                 case '\u1D7E': 
2109                                                 // Ã¡ÂµÂ¾  [LATIN SMALL CAPITAL LETTER U WITH STROKE]
2110                                                 case '\u1E72': 
2111                                                 // Ã¡Â¹Â²  [LATIN CAPITAL LETTER U WITH DIAERESIS BELOW]
2112                                                 case '\u1E74': 
2113                                                 // Ã¡Â¹Â´  [LATIN CAPITAL LETTER U WITH TILDE BELOW]
2114                                                 case '\u1E76': 
2115                                                 // Ã¡Â¹Â¶  [LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW]
2116                                                 case '\u1E78': 
2117                                                 // Ã¡Â¹Â¸  [LATIN CAPITAL LETTER U WITH TILDE AND ACUTE]
2118                                                 case '\u1E7A': 
2119                                                 // Ã¡Â¹Âº  [LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS]
2120                                                 case '\u1EE4': 
2121                                                 // Ã¡Â»Â¤  [LATIN CAPITAL LETTER U WITH DOT BELOW]
2122                                                 case '\u1EE6': 
2123                                                 // Ã¡Â»Â¦  [LATIN CAPITAL LETTER U WITH HOOK ABOVE]
2124                                                 case '\u1EE8': 
2125                                                 // Ã¡Â»Â¨  [LATIN CAPITAL LETTER U WITH HORN AND ACUTE]
2126                                                 case '\u1EEA': 
2127                                                 // Ã¡Â»Âª  [LATIN CAPITAL LETTER U WITH HORN AND GRAVE]
2128                                                 case '\u1EEC': 
2129                                                 // Ã¡Â»Â¬  [LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE]
2130                                                 case '\u1EEE': 
2131                                                 // Ã¡Â»Â®  [LATIN CAPITAL LETTER U WITH HORN AND TILDE]
2132                                                 case '\u1EF0': 
2133                                                 // Ã¡Â»Â°  [LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW]
2134                                                 case '\u24CA': 
2135                                                 // Ã¢â€œÅ   [CIRCLED LATIN CAPITAL LETTER U]
2136                                                 case '\uFF35':  // Ã¯Â¼Âµ  [FULLWIDTH LATIN CAPITAL LETTER U]
2137                                                         output[outputPos++] = 'U';
2138                                                         break;
2139                                                 
2140                                                 case '\u00F9': 
2141                                                 // ÃƒÂ¹  [LATIN SMALL LETTER U WITH GRAVE]
2142                                                 case '\u00FA': 
2143                                                 // ÃƒÂº  [LATIN SMALL LETTER U WITH ACUTE]
2144                                                 case '\u00FB': 
2145                                                 // ÃƒÂ»  [LATIN SMALL LETTER U WITH CIRCUMFLEX]
2146                                                 case '\u00FC': 
2147                                                 // ÃƒÂ¼  [LATIN SMALL LETTER U WITH DIAERESIS]
2148                                                 case '\u0169': 
2149                                                 // Ã…©  [LATIN SMALL LETTER U WITH TILDE]
2150                                                 case '\u016B': 
2151                                                 // Ã…«  [LATIN SMALL LETTER U WITH MACRON]
2152                                                 case '\u016D': 
2153                                                 // Ã…­  [LATIN SMALL LETTER U WITH BREVE]
2154                                                 case '\u016F': 
2155                                                 // Ã…¯  [LATIN SMALL LETTER U WITH RING ABOVE]
2156                                                 case '\u0171': 
2157                                                 // Ã…±  [LATIN SMALL LETTER U WITH DOUBLE ACUTE]
2158                                                 case '\u0173': 
2159                                                 // Ã…³  [LATIN SMALL LETTER U WITH OGONEK]
2160                                                 case '\u01B0': 
2161                                                 // Ã†Â°  [LATIN SMALL LETTER U WITH HORN]
2162                                                 case '\u01D4': 
2163                                                 // Ã‡ï¿½?  [LATIN SMALL LETTER U WITH CARON]
2164                                                 case '\u01D6': 
2165                                                 // Ã‡â€“  [LATIN SMALL LETTER U WITH DIAERESIS AND MACRON]
2166                                                 case '\u01D8': 
2167                                                 // Ã‡Ëœ  [LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE]
2168                                                 case '\u01DA': 
2169                                                 // Ã‡Å¡  [LATIN SMALL LETTER U WITH DIAERESIS AND CARON]
2170                                                 case '\u01DC': 
2171                                                 // Ã‡Å“  [LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE]
2172                                                 case '\u0215': 
2173                                                 // Ãˆâ€¢  [LATIN SMALL LETTER U WITH DOUBLE GRAVE]
2174                                                 case '\u0217': 
2175                                                 // Ãˆâ€”  [LATIN SMALL LETTER U WITH INVERTED BREVE]
2176                                                 case '\u0289': 
2177                                                 // ÃŠâ€°  [LATIN SMALL LETTER U BAR]
2178                                                 case '\u1D64': 
2179                                                 // Ã¡ÂµÂ¤  [LATIN SUBSCRIPT SMALL LETTER U]
2180                                                 case '\u1D99': 
2181                                                 // Ã¡Â¶â„¢  [LATIN SMALL LETTER U WITH RETROFLEX HOOK]
2182                                                 case '\u1E73': 
2183                                                 // Ã¡Â¹Â³  [LATIN SMALL LETTER U WITH DIAERESIS BELOW]
2184                                                 case '\u1E75': 
2185                                                 // Ã¡Â¹Âµ  [LATIN SMALL LETTER U WITH TILDE BELOW]
2186                                                 case '\u1E77': 
2187                                                 // Ã¡Â¹Â·  [LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW]
2188                                                 case '\u1E79': 
2189                                                 // Ã¡Â¹Â¹  [LATIN SMALL LETTER U WITH TILDE AND ACUTE]
2190                                                 case '\u1E7B': 
2191                                                 // Ã¡Â¹Â»  [LATIN SMALL LETTER U WITH MACRON AND DIAERESIS]
2192                                                 case '\u1EE5': 
2193                                                 // Ã¡Â»Â¥  [LATIN SMALL LETTER U WITH DOT BELOW]
2194                                                 case '\u1EE7': 
2195                                                 // Ã¡Â»Â§  [LATIN SMALL LETTER U WITH HOOK ABOVE]
2196                                                 case '\u1EE9': 
2197                                                 // Ã¡Â»Â©  [LATIN SMALL LETTER U WITH HORN AND ACUTE]
2198                                                 case '\u1EEB': 
2199                                                 // Ã¡Â»Â«  [LATIN SMALL LETTER U WITH HORN AND GRAVE]
2200                                                 case '\u1EED': 
2201                                                 // Ã¡Â»Â­  [LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE]
2202                                                 case '\u1EEF': 
2203                                                 // Ã¡Â»Â¯  [LATIN SMALL LETTER U WITH HORN AND TILDE]
2204                                                 case '\u1EF1': 
2205                                                 // Ã¡Â»Â±  [LATIN SMALL LETTER U WITH HORN AND DOT BELOW]
2206                                                 case '\u24E4': 
2207                                                 // Ã¢â€œÂ¤  [CIRCLED LATIN SMALL LETTER U]
2208                                                 case '\uFF55':  // Ã¯Â½â€¢  [FULLWIDTH LATIN SMALL LETTER U]
2209                                                         output[outputPos++] = 'u';
2210                                                         break;
2211                                                 
2212                                                 case '\u24B0':  // Ã¢â€™Â°  [PARENTHESIZED LATIN SMALL LETTER U]
2213                                                         output[outputPos++] = '(';
2214                                                         output[outputPos++] = 'u';
2215                                                         output[outputPos++] = ')';
2216                                                         break;
2217                                                 
2218                                                 case '\u1D6B':  // Ã¡ÂµÂ«  [LATIN SMALL LETTER UE]
2219                                                         output[outputPos++] = 'u';
2220                                                         output[outputPos++] = 'e';
2221                                                         break;
2222                                                 
2223                                                 case '\u01B2': 
2224                                                 // Ã†Â²  [LATIN CAPITAL LETTER V WITH HOOK]
2225                                                 case '\u0245': 
2226                                                 // Ã‰â€¦  [LATIN CAPITAL LETTER TURNED V]
2227                                                 case '\u1D20': 
2228                                                 // Ã¡Â´Â   [LATIN LETTER SMALL CAPITAL V]
2229                                                 case '\u1E7C': 
2230                                                 // Ã¡Â¹Â¼  [LATIN CAPITAL LETTER V WITH TILDE]
2231                                                 case '\u1E7E': 
2232                                                 // Ã¡Â¹Â¾  [LATIN CAPITAL LETTER V WITH DOT BELOW]
2233                                                 case '\u1EFC': 
2234                                                 // Ã¡Â»Â¼  [LATIN CAPITAL LETTER MIDDLE-WELSH V]
2235                                                 case '\u24CB': 
2236                                                 // Ã¢â€œâ€¹  [CIRCLED LATIN CAPITAL LETTER V]
2237                                                 case '\uA75E': 
2238                                                 // Ãªï¿½Å¾  [LATIN CAPITAL LETTER V WITH DIAGONAL STROKE]
2239                                                 case '\uA768': 
2240                                                 // Ãªï¿½Â¨  [LATIN CAPITAL LETTER VEND]
2241                                                 case '\uFF36':  // Ã¯Â¼Â¶  [FULLWIDTH LATIN CAPITAL LETTER V]
2242                                                         output[outputPos++] = 'V';
2243                                                         break;
2244                                                 
2245                                                 case '\u028B': 
2246                                                 // ÃŠâ€¹  [LATIN SMALL LETTER V WITH HOOK]
2247                                                 case '\u028C': 
2248                                                 // ÃŠÅ’  [LATIN SMALL LETTER TURNED V]
2249                                                 case '\u1D65': 
2250                                                 // Ã¡ÂµÂ¥  [LATIN SUBSCRIPT SMALL LETTER V]
2251                                                 case '\u1D8C': 
2252                                                 // Ã¡Â¶Å’  [LATIN SMALL LETTER V WITH PALATAL HOOK]
2253                                                 case '\u1E7D': 
2254                                                 // Ã¡Â¹Â½  [LATIN SMALL LETTER V WITH TILDE]
2255                                                 case '\u1E7F': 
2256                                                 // Ã¡Â¹Â¿  [LATIN SMALL LETTER V WITH DOT BELOW]
2257                                                 case '\u24E5': 
2258                                                 // Ã¢â€œÂ¥  [CIRCLED LATIN SMALL LETTER V]
2259                                                 case '\u2C71': 
2260                                                 // Ã¢Â±Â±  [LATIN SMALL LETTER V WITH RIGHT HOOK]
2261                                                 case '\u2C74': 
2262                                                 // Ã¢Â±Â´  [LATIN SMALL LETTER V WITH CURL]
2263                                                 case '\uA75F': 
2264                                                 // Ãªï¿½Å¸  [LATIN SMALL LETTER V WITH DIAGONAL STROKE]
2265                                                 case '\uFF56':  // Ã¯Â½â€“  [FULLWIDTH LATIN SMALL LETTER V]
2266                                                         output[outputPos++] = 'v';
2267                                                         break;
2268                                                 
2269                                                 case '\uA760':  // Ãªï¿½Â   [LATIN CAPITAL LETTER VY]
2270                                                         output[outputPos++] = 'V';
2271                                                         output[outputPos++] = 'Y';
2272                                                         break;
2273                                                 
2274                                                 case '\u24B1':  // Ã¢â€™Â±  [PARENTHESIZED LATIN SMALL LETTER V]
2275                                                         output[outputPos++] = '(';
2276                                                         output[outputPos++] = 'v';
2277                                                         output[outputPos++] = ')';
2278                                                         break;
2279                                                 
2280                                                 case '\uA761':  // Ãªï¿½Â¡  [LATIN SMALL LETTER VY]
2281                                                         output[outputPos++] = 'v';
2282                                                         output[outputPos++] = 'y';
2283                                                         break;
2284                                                 
2285                                                 case '\u0174': 
2286                                                 // Ã…´  [LATIN CAPITAL LETTER W WITH CIRCUMFLEX]
2287                                                 case '\u01F7': 
2288                                                 // Ã‡Â·  http://en.wikipedia.org/wiki/Wynn  [LATIN CAPITAL LETTER WYNN]
2289                                                 case '\u1D21': 
2290                                                 // Ã¡Â´Â¡  [LATIN LETTER SMALL CAPITAL W]
2291                                                 case '\u1E80': 
2292                                                 // Ã¡Âºâ‚¬  [LATIN CAPITAL LETTER W WITH GRAVE]
2293                                                 case '\u1E82': 
2294                                                 // Ã¡Âºâ€š  [LATIN CAPITAL LETTER W WITH ACUTE]
2295                                                 case '\u1E84': 
2296                                                 // Ã¡Âºâ€ž  [LATIN CAPITAL LETTER W WITH DIAERESIS]
2297                                                 case '\u1E86': 
2298                                                 // Ã¡Âºâ€   [LATIN CAPITAL LETTER W WITH DOT ABOVE]
2299                                                 case '\u1E88': 
2300                                                 // Ã¡ÂºË†  [LATIN CAPITAL LETTER W WITH DOT BELOW]
2301                                                 case '\u24CC': 
2302                                                 // Ã¢â€œÅ’  [CIRCLED LATIN CAPITAL LETTER W]
2303                                                 case '\u2C72': 
2304                                                 // Ã¢Â±Â²  [LATIN CAPITAL LETTER W WITH HOOK]
2305                                                 case '\uFF37':  // Ã¯Â¼Â·  [FULLWIDTH LATIN CAPITAL LETTER W]
2306                                                         output[outputPos++] = 'W';
2307                                                         break;
2308                                                 
2309                                                 case '\u0175': 
2310                                                 // Ã…µ  [LATIN SMALL LETTER W WITH CIRCUMFLEX]
2311                                                 case '\u01BF': 
2312                                                 // Ã†Â¿  http://en.wikipedia.org/wiki/Wynn  [LATIN LETTER WYNN]
2313                                                 case '\u028D': 
2314                                                 // ÃŠï¿½  [LATIN SMALL LETTER TURNED W]
2315                                                 case '\u1E81': 
2316                                                 // Ã¡Âºï¿½  [LATIN SMALL LETTER W WITH GRAVE]
2317                                                 case '\u1E83': 
2318                                                 // Ã¡ÂºÆ’  [LATIN SMALL LETTER W WITH ACUTE]
2319                                                 case '\u1E85': 
2320                                                 // Ã¡Âºâ€¦  [LATIN SMALL LETTER W WITH DIAERESIS]
2321                                                 case '\u1E87': 
2322                                                 // Ã¡Âºâ€¡  [LATIN SMALL LETTER W WITH DOT ABOVE]
2323                                                 case '\u1E89': 
2324                                                 // Ã¡Âºâ€°  [LATIN SMALL LETTER W WITH DOT BELOW]
2325                                                 case '\u1E98': 
2326                                                 // Ã¡ÂºËœ  [LATIN SMALL LETTER W WITH RING ABOVE]
2327                                                 case '\u24E6': 
2328                                                 // Ã¢â€œÂ¦  [CIRCLED LATIN SMALL LETTER W]
2329                                                 case '\u2C73': 
2330                                                 // Ã¢Â±Â³  [LATIN SMALL LETTER W WITH HOOK]
2331                                                 case '\uFF57':  // Ã¯Â½â€”  [FULLWIDTH LATIN SMALL LETTER W]
2332                                                         output[outputPos++] = 'w';
2333                                                         break;
2334                                                 
2335                                                 case '\u24B2':  // Ã¢â€™Â²  [PARENTHESIZED LATIN SMALL LETTER W]
2336                                                         output[outputPos++] = '(';
2337                                                         output[outputPos++] = 'w';
2338                                                         output[outputPos++] = ')';
2339                                                         break;
2340                                                 
2341                                                 case '\u1E8A': 
2342                                                 // Ã¡ÂºÅ   [LATIN CAPITAL LETTER X WITH DOT ABOVE]
2343                                                 case '\u1E8C': 
2344                                                 // Ã¡ÂºÅ’  [LATIN CAPITAL LETTER X WITH DIAERESIS]
2345                                                 case '\u24CD': 
2346                                                 // Ã¢â€œï¿½  [CIRCLED LATIN CAPITAL LETTER X]
2347                                                 case '\uFF38':  // Ã¯Â¼Â¸  [FULLWIDTH LATIN CAPITAL LETTER X]
2348                                                         output[outputPos++] = 'X';
2349                                                         break;
2350                                                 
2351                                                 case '\u1D8D': 
2352                                                 // Ã¡Â¶ï¿½  [LATIN SMALL LETTER X WITH PALATAL HOOK]
2353                                                 case '\u1E8B': 
2354                                                 // Ã¡Âºâ€¹  [LATIN SMALL LETTER X WITH DOT ABOVE]
2355                                                 case '\u1E8D': 
2356                                                 // Ã¡Âºï¿½  [LATIN SMALL LETTER X WITH DIAERESIS]
2357                                                 case '\u2093': 
2358                                                 // Ã¢â€šâ€œ  [LATIN SUBSCRIPT SMALL LETTER X]
2359                                                 case '\u24E7': 
2360                                                 // Ã¢â€œÂ§  [CIRCLED LATIN SMALL LETTER X]
2361                                                 case '\uFF58':  // Ã¯Â½Ëœ  [FULLWIDTH LATIN SMALL LETTER X]
2362                                                         output[outputPos++] = 'x';
2363                                                         break;
2364                                                 
2365                                                 case '\u24B3':  // Ã¢â€™Â³  [PARENTHESIZED LATIN SMALL LETTER X]
2366                                                         output[outputPos++] = '(';
2367                                                         output[outputPos++] = 'x';
2368                                                         output[outputPos++] = ')';
2369                                                         break;
2370                                                 
2371                                                 case '\u00DD': 
2372                                                 // Ãƒï¿½  [LATIN CAPITAL LETTER Y WITH ACUTE]
2373                                                 case '\u0176': 
2374                                                 // Ã…¶  [LATIN CAPITAL LETTER Y WITH CIRCUMFLEX]
2375                                                 case '\u0178': 
2376                                                 // Ã…¸  [LATIN CAPITAL LETTER Y WITH DIAERESIS]
2377                                                 case '\u01B3': 
2378                                                 // Ã†Â³  [LATIN CAPITAL LETTER Y WITH HOOK]
2379                                                 case '\u0232': 
2380                                                 // ÃˆÂ²  [LATIN CAPITAL LETTER Y WITH MACRON]
2381                                                 case '\u024E': 
2382                                                 // Ã‰Å½  [LATIN CAPITAL LETTER Y WITH STROKE]
2383                                                 case '\u028F': 
2384                                                 // ÃŠï¿½  [LATIN LETTER SMALL CAPITAL Y]
2385                                                 case '\u1E8E': 
2386                                                 // Ã¡ÂºÅ½  [LATIN CAPITAL LETTER Y WITH DOT ABOVE]
2387                                                 case '\u1EF2': 
2388                                                 // Ã¡Â»Â²  [LATIN CAPITAL LETTER Y WITH GRAVE]
2389                                                 case '\u1EF4': 
2390                                                 // Ã¡Â»Â´  [LATIN CAPITAL LETTER Y WITH DOT BELOW]
2391                                                 case '\u1EF6': 
2392                                                 // Ã¡Â»Â¶  [LATIN CAPITAL LETTER Y WITH HOOK ABOVE]
2393                                                 case '\u1EF8': 
2394                                                 // Ã¡Â»Â¸  [LATIN CAPITAL LETTER Y WITH TILDE]
2395                                                 case '\u1EFE': 
2396                                                 // Ã¡Â»Â¾  [LATIN CAPITAL LETTER Y WITH LOOP]
2397                                                 case '\u24CE': 
2398                                                 // Ã¢â€œÅ½  [CIRCLED LATIN CAPITAL LETTER Y]
2399                                                 case '\uFF39':  // Ã¯Â¼Â¹  [FULLWIDTH LATIN CAPITAL LETTER Y]
2400                                                         output[outputPos++] = 'Y';
2401                                                         break;
2402                                                 
2403                                                 case '\u00FD': 
2404                                                 // ÃƒÂ½  [LATIN SMALL LETTER Y WITH ACUTE]
2405                                                 case '\u00FF': 
2406                                                 // ÃƒÂ¿  [LATIN SMALL LETTER Y WITH DIAERESIS]
2407                                                 case '\u0177': 
2408                                                 // Ã…·  [LATIN SMALL LETTER Y WITH CIRCUMFLEX]
2409                                                 case '\u01B4': 
2410                                                 // Ã†Â´  [LATIN SMALL LETTER Y WITH HOOK]
2411                                                 case '\u0233': 
2412                                                 // ÃˆÂ³  [LATIN SMALL LETTER Y WITH MACRON]
2413                                                 case '\u024F': 
2414                                                 // Ã‰ï¿½  [LATIN SMALL LETTER Y WITH STROKE]
2415                                                 case '\u028E': 
2416                                                 // ÃŠÅ½  [LATIN SMALL LETTER TURNED Y]
2417                                                 case '\u1E8F': 
2418                                                 // Ã¡Âºï¿½  [LATIN SMALL LETTER Y WITH DOT ABOVE]
2419                                                 case '\u1E99': 
2420                                                 // Ã¡Âºâ„¢  [LATIN SMALL LETTER Y WITH RING ABOVE]
2421                                                 case '\u1EF3': 
2422                                                 // Ã¡Â»Â³  [LATIN SMALL LETTER Y WITH GRAVE]
2423                                                 case '\u1EF5': 
2424                                                 // Ã¡Â»Âµ  [LATIN SMALL LETTER Y WITH DOT BELOW]
2425                                                 case '\u1EF7': 
2426                                                 // Ã¡Â»Â·  [LATIN SMALL LETTER Y WITH HOOK ABOVE]
2427                                                 case '\u1EF9': 
2428                                                 // Ã¡Â»Â¹  [LATIN SMALL LETTER Y WITH TILDE]
2429                                                 case '\u1EFF': 
2430                                                 // Ã¡Â»Â¿  [LATIN SMALL LETTER Y WITH LOOP]
2431                                                 case '\u24E8': 
2432                                                 // Ã¢â€œÂ¨  [CIRCLED LATIN SMALL LETTER Y]
2433                                                 case '\uFF59':  // Ã¯Â½â„¢  [FULLWIDTH LATIN SMALL LETTER Y]
2434                                                         output[outputPos++] = 'y';
2435                                                         break;
2436                                                 
2437                                                 case '\u24B4':  // Ã¢â€™Â´  [PARENTHESIZED LATIN SMALL LETTER Y]
2438                                                         output[outputPos++] = '(';
2439                                                         output[outputPos++] = 'y';
2440                                                         output[outputPos++] = ')';
2441                                                         break;
2442                                                 
2443                                                 case '\u0179': 
2444                                                 // Ã…¹  [LATIN CAPITAL LETTER Z WITH ACUTE]
2445                                                 case '\u017B': 
2446                                                 // Ã…»  [LATIN CAPITAL LETTER Z WITH DOT ABOVE]
2447                                                 case '\u017D': 
2448                                                 // Ã…½  [LATIN CAPITAL LETTER Z WITH CARON]
2449                                                 case '\u01B5': 
2450                                                 // Ã†Âµ  [LATIN CAPITAL LETTER Z WITH STROKE]
2451                                                 case '\u021C': 
2452                                                 // ÃˆÅ“  http://en.wikipedia.org/wiki/Yogh  [LATIN CAPITAL LETTER YOGH]
2453                                                 case '\u0224': 
2454                                                 // ÃˆÂ¤  [LATIN CAPITAL LETTER Z WITH HOOK]
2455                                                 case '\u1D22': 
2456                                                 // Ã¡Â´Â¢  [LATIN LETTER SMALL CAPITAL Z]
2457                                                 case '\u1E90': 
2458                                                 // Ã¡Âºï¿½  [LATIN CAPITAL LETTER Z WITH CIRCUMFLEX]
2459                                                 case '\u1E92': 
2460                                                 // Ã¡Âºâ€™  [LATIN CAPITAL LETTER Z WITH DOT BELOW]
2461                                                 case '\u1E94': 
2462                                                 // Ã¡Âºï¿½?  [LATIN CAPITAL LETTER Z WITH LINE BELOW]
2463                                                 case '\u24CF': 
2464                                                 // Ã¢â€œï¿½  [CIRCLED LATIN CAPITAL LETTER Z]
2465                                                 case '\u2C6B': 
2466                                                 // Ã¢Â±Â«  [LATIN CAPITAL LETTER Z WITH DESCENDER]
2467                                                 case '\uA762': 
2468                                                 // Ãªï¿½Â¢  [LATIN CAPITAL LETTER VISIGOTHIC Z]
2469                                                 case '\uFF3A':  // Ã¯Â¼Âº  [FULLWIDTH LATIN CAPITAL LETTER Z]
2470                                                         output[outputPos++] = 'Z';
2471                                                         break;
2472                                                 
2473                                                 case '\u017A': 
2474                                                 // Ã…º  [LATIN SMALL LETTER Z WITH ACUTE]
2475                                                 case '\u017C': 
2476                                                 // Ã…¼  [LATIN SMALL LETTER Z WITH DOT ABOVE]
2477                                                 case '\u017E': 
2478                                                 // Ã…¾  [LATIN SMALL LETTER Z WITH CARON]
2479                                                 case '\u01B6': 
2480                                                 // Ã†Â¶  [LATIN SMALL LETTER Z WITH STROKE]
2481                                                 case '\u021D': 
2482                                                 // Ãˆï¿½  http://en.wikipedia.org/wiki/Yogh  [LATIN SMALL LETTER YOGH]
2483                                                 case '\u0225': 
2484                                                 // ÃˆÂ¥  [LATIN SMALL LETTER Z WITH HOOK]
2485                                                 case '\u0240': 
2486                                                 // Ã‰â‚¬  [LATIN SMALL LETTER Z WITH SWASH TAIL]
2487                                                 case '\u0290': 
2488                                                 // ÃŠï¿½  [LATIN SMALL LETTER Z WITH RETROFLEX HOOK]
2489                                                 case '\u0291': 
2490                                                 // ÃŠâ€˜  [LATIN SMALL LETTER Z WITH CURL]
2491                                                 case '\u1D76': 
2492                                                 // Ã¡ÂµÂ¶  [LATIN SMALL LETTER Z WITH MIDDLE TILDE]
2493                                                 case '\u1D8E': 
2494                                                 // Ã¡Â¶Å½  [LATIN SMALL LETTER Z WITH PALATAL HOOK]
2495                                                 case '\u1E91': 
2496                                                 // Ã¡Âºâ€˜  [LATIN SMALL LETTER Z WITH CIRCUMFLEX]
2497                                                 case '\u1E93': 
2498                                                 // Ã¡Âºâ€œ  [LATIN SMALL LETTER Z WITH DOT BELOW]
2499                                                 case '\u1E95': 
2500                                                 // Ã¡Âºâ€¢  [LATIN SMALL LETTER Z WITH LINE BELOW]
2501                                                 case '\u24E9': 
2502                                                 // Ã¢â€œÂ©  [CIRCLED LATIN SMALL LETTER Z]
2503                                                 case '\u2C6C': 
2504                                                 // Ã¢Â±Â¬  [LATIN SMALL LETTER Z WITH DESCENDER]
2505                                                 case '\uA763': 
2506                                                 // Ãªï¿½Â£  [LATIN SMALL LETTER VISIGOTHIC Z]
2507                                                 case '\uFF5A':  // Ã¯Â½Å¡  [FULLWIDTH LATIN SMALL LETTER Z]
2508                                                         output[outputPos++] = 'z';
2509                                                         break;
2510                                                 
2511                                                 case '\u24B5':  // Ã¢â€™Âµ  [PARENTHESIZED LATIN SMALL LETTER Z]
2512                                                         output[outputPos++] = '(';
2513                                                         output[outputPos++] = 'z';
2514                                                         output[outputPos++] = ')';
2515                                                         break;
2516                                                 
2517                                                 case '\u2070': 
2518                                                 // Ã¢ï¿½Â°  [SUPERSCRIPT ZERO]
2519                                                 case '\u2080': 
2520                                                 // Ã¢â€šâ‚¬  [SUBSCRIPT ZERO]
2521                                                 case '\u24EA': 
2522                                                 // Ã¢â€œÂª  [CIRCLED DIGIT ZERO]
2523                                                 case '\u24FF': 
2524                                                 // Ã¢â€œÂ¿  [NEGATIVE CIRCLED DIGIT ZERO]
2525                                                 case '\uFF10':  // Ã¯Â¼ï¿½  [FULLWIDTH DIGIT ZERO]
2526                                                         output[outputPos++] = '0';
2527                                                         break;
2528                                                 
2529                                                 case '\u00B9': 
2530                                                 // Ã‚¹  [SUPERSCRIPT ONE]
2531                                                 case '\u2081': 
2532                                                 // Ã¢â€šï¿½  [SUBSCRIPT ONE]
2533                                                 case '\u2460': 
2534                                                 // Ã¢â€˜Â   [CIRCLED DIGIT ONE]
2535                                                 case '\u24F5': 
2536                                                 // Ã¢â€œÂµ  [DOUBLE CIRCLED DIGIT ONE]
2537                                                 case '\u2776': 
2538                                                 // Ã¢ï¿½Â¶  [DINGBAT NEGATIVE CIRCLED DIGIT ONE]
2539                                                 case '\u2780': 
2540                                                 // Ã¢Å¾â‚¬  [DINGBAT CIRCLED SANS-SERIF DIGIT ONE]
2541                                                 case '\u278A': 
2542                                                 // Ã¢Å¾Å   [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE]
2543                                                 case '\uFF11':  // Ã¯Â¼â€˜  [FULLWIDTH DIGIT ONE]
2544                                                         output[outputPos++] = '1';
2545                                                         break;
2546                                                 
2547                                                 case '\u2488':  // Ã¢â€™Ë†  [DIGIT ONE FULL STOP]
2548                                                         output[outputPos++] = '1';
2549                                                         output[outputPos++] = '.';
2550                                                         break;
2551                                                 
2552                                                 case '\u2474':  // Ã¢â€˜Â´  [PARENTHESIZED DIGIT ONE]
2553                                                         output[outputPos++] = '(';
2554                                                         output[outputPos++] = '1';
2555                                                         output[outputPos++] = ')';
2556                                                         break;
2557                                                 
2558                                                 case '\u00B2': 
2559                                                 // Ã‚²  [SUPERSCRIPT TWO]
2560                                                 case '\u2082': 
2561                                                 // Ã¢â€šâ€š  [SUBSCRIPT TWO]
2562                                                 case '\u2461': 
2563                                                 // Ã¢â€˜Â¡  [CIRCLED DIGIT TWO]
2564                                                 case '\u24F6': 
2565                                                 // Ã¢â€œÂ¶  [DOUBLE CIRCLED DIGIT TWO]
2566                                                 case '\u2777': 
2567                                                 // Ã¢ï¿½Â·  [DINGBAT NEGATIVE CIRCLED DIGIT TWO]
2568                                                 case '\u2781': 
2569                                                 // Ã¢Å¾ï¿½  [DINGBAT CIRCLED SANS-SERIF DIGIT TWO]
2570                                                 case '\u278B': 
2571                                                 // Ã¢Å¾â€¹  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO]
2572                                                 case '\uFF12':  // Ã¯Â¼â€™  [FULLWIDTH DIGIT TWO]
2573                                                         output[outputPos++] = '2';
2574                                                         break;
2575                                                 
2576                                                 case '\u2489':  // Ã¢â€™â€°  [DIGIT TWO FULL STOP]
2577                                                         output[outputPos++] = '2';
2578                                                         output[outputPos++] = '.';
2579                                                         break;
2580                                                 
2581                                                 case '\u2475':  // Ã¢â€˜Âµ  [PARENTHESIZED DIGIT TWO]
2582                                                         output[outputPos++] = '(';
2583                                                         output[outputPos++] = '2';
2584                                                         output[outputPos++] = ')';
2585                                                         break;
2586                                                 
2587                                                 case '\u00B3': 
2588                                                 // Ã‚³  [SUPERSCRIPT THREE]
2589                                                 case '\u2083': 
2590                                                 // Ã¢â€šÆ’  [SUBSCRIPT THREE]
2591                                                 case '\u2462': 
2592                                                 // Ã¢â€˜Â¢  [CIRCLED DIGIT THREE]
2593                                                 case '\u24F7': 
2594                                                 // Ã¢â€œÂ·  [DOUBLE CIRCLED DIGIT THREE]
2595                                                 case '\u2778': 
2596                                                 // Ã¢ï¿½Â¸  [DINGBAT NEGATIVE CIRCLED DIGIT THREE]
2597                                                 case '\u2782': 
2598                                                 // Ã¢Å¾â€š  [DINGBAT CIRCLED SANS-SERIF DIGIT THREE]
2599                                                 case '\u278C': 
2600                                                 // Ã¢Å¾Å’  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE]
2601                                                 case '\uFF13':  // Ã¯Â¼â€œ  [FULLWIDTH DIGIT THREE]
2602                                                         output[outputPos++] = '3';
2603                                                         break;
2604                                                 
2605                                                 case '\u248A':  // Ã¢â€™Å   [DIGIT THREE FULL STOP]
2606                                                         output[outputPos++] = '3';
2607                                                         output[outputPos++] = '.';
2608                                                         break;
2609                                                 
2610                                                 case '\u2476':  // Ã¢â€˜Â¶  [PARENTHESIZED DIGIT THREE]
2611                                                         output[outputPos++] = '(';
2612                                                         output[outputPos++] = '3';
2613                                                         output[outputPos++] = ')';
2614                                                         break;
2615                                                 
2616                                                 case '\u2074': 
2617                                                 // Ã¢ï¿½Â´  [SUPERSCRIPT FOUR]
2618                                                 case '\u2084': 
2619                                                 // Ã¢â€šâ€ž  [SUBSCRIPT FOUR]
2620                                                 case '\u2463': 
2621                                                 // Ã¢â€˜Â£  [CIRCLED DIGIT FOUR]
2622                                                 case '\u24F8': 
2623                                                 // Ã¢â€œÂ¸  [DOUBLE CIRCLED DIGIT FOUR]
2624                                                 case '\u2779': 
2625                                                 // Ã¢ï¿½Â¹  [DINGBAT NEGATIVE CIRCLED DIGIT FOUR]
2626                                                 case '\u2783': 
2627                                                 // Ã¢Å¾Æ’  [DINGBAT CIRCLED SANS-SERIF DIGIT FOUR]
2628                                                 case '\u278D': 
2629                                                 // Ã¢Å¾ï¿½  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR]
2630                                                 case '\uFF14':  // Ã¯Â¼ï¿½?  [FULLWIDTH DIGIT FOUR]
2631                                                         output[outputPos++] = '4';
2632                                                         break;
2633                                                 
2634                                                 case '\u248B':  // Ã¢â€™â€¹  [DIGIT FOUR FULL STOP]
2635                                                         output[outputPos++] = '4';
2636                                                         output[outputPos++] = '.';
2637                                                         break;
2638                                                 
2639                                                 case '\u2477':  // Ã¢â€˜Â·  [PARENTHESIZED DIGIT FOUR]
2640                                                         output[outputPos++] = '(';
2641                                                         output[outputPos++] = '4';
2642                                                         output[outputPos++] = ')';
2643                                                         break;
2644                                                 
2645                                                 case '\u2075': 
2646                                                 // Ã¢ï¿½Âµ  [SUPERSCRIPT FIVE]
2647                                                 case '\u2085': 
2648                                                 // Ã¢â€šâ€¦  [SUBSCRIPT FIVE]
2649                                                 case '\u2464': 
2650                                                 // Ã¢â€˜Â¤  [CIRCLED DIGIT FIVE]
2651                                                 case '\u24F9': 
2652                                                 // Ã¢â€œÂ¹  [DOUBLE CIRCLED DIGIT FIVE]
2653                                                 case '\u277A': 
2654                                                 // Ã¢ï¿½Âº  [DINGBAT NEGATIVE CIRCLED DIGIT FIVE]
2655                                                 case '\u2784': 
2656                                                 // Ã¢Å¾â€ž  [DINGBAT CIRCLED SANS-SERIF DIGIT FIVE]
2657                                                 case '\u278E': 
2658                                                 // Ã¢Å¾Å½  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE]
2659                                                 case '\uFF15':  // Ã¯Â¼â€¢  [FULLWIDTH DIGIT FIVE]
2660                                                         output[outputPos++] = '5';
2661                                                         break;
2662                                                 
2663                                                 case '\u248C':  // Ã¢â€™Å’  [DIGIT FIVE FULL STOP]
2664                                                         output[outputPos++] = '5';
2665                                                         output[outputPos++] = '.';
2666                                                         break;
2667                                                 
2668                                                 case '\u2478':  // Ã¢â€˜Â¸  [PARENTHESIZED DIGIT FIVE]
2669                                                         output[outputPos++] = '(';
2670                                                         output[outputPos++] = '5';
2671                                                         output[outputPos++] = ')';
2672                                                         break;
2673                                                 
2674                                                 case '\u2076': 
2675                                                 // Ã¢ï¿½Â¶  [SUPERSCRIPT SIX]
2676                                                 case '\u2086': 
2677                                                 // Ã¢â€šâ€   [SUBSCRIPT SIX]
2678                                                 case '\u2465': 
2679                                                 // Ã¢â€˜Â¥  [CIRCLED DIGIT SIX]
2680                                                 case '\u24FA': 
2681                                                 // Ã¢â€œÂº  [DOUBLE CIRCLED DIGIT SIX]
2682                                                 case '\u277B': 
2683                                                 // Ã¢ï¿½Â»  [DINGBAT NEGATIVE CIRCLED DIGIT SIX]
2684                                                 case '\u2785': 
2685                                                 // Ã¢Å¾â€¦  [DINGBAT CIRCLED SANS-SERIF DIGIT SIX]
2686                                                 case '\u278F': 
2687                                                 // Ã¢Å¾ï¿½  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX]
2688                                                 case '\uFF16':  // Ã¯Â¼â€“  [FULLWIDTH DIGIT SIX]
2689                                                         output[outputPos++] = '6';
2690                                                         break;
2691                                                 
2692                                                 case '\u248D':  // Ã¢â€™ï¿½  [DIGIT SIX FULL STOP]
2693                                                         output[outputPos++] = '6';
2694                                                         output[outputPos++] = '.';
2695                                                         break;
2696                                                 
2697                                                 case '\u2479':  // Ã¢â€˜Â¹  [PARENTHESIZED DIGIT SIX]
2698                                                         output[outputPos++] = '(';
2699                                                         output[outputPos++] = '6';
2700                                                         output[outputPos++] = ')';
2701                                                         break;
2702                                                 
2703                                                 case '\u2077': 
2704                                                 // Ã¢ï¿½Â·  [SUPERSCRIPT SEVEN]
2705                                                 case '\u2087': 
2706                                                 // Ã¢â€šâ€¡  [SUBSCRIPT SEVEN]
2707                                                 case '\u2466': 
2708                                                 // Ã¢â€˜Â¦  [CIRCLED DIGIT SEVEN]
2709                                                 case '\u24FB': 
2710                                                 // Ã¢â€œÂ»  [DOUBLE CIRCLED DIGIT SEVEN]
2711                                                 case '\u277C': 
2712                                                 // Ã¢ï¿½Â¼  [DINGBAT NEGATIVE CIRCLED DIGIT SEVEN]
2713                                                 case '\u2786': 
2714                                                 // Ã¢Å¾â€   [DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN]
2715                                                 case '\u2790': 
2716                                                 // Ã¢Å¾ï¿½  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN]
2717                                                 case '\uFF17':  // Ã¯Â¼â€”  [FULLWIDTH DIGIT SEVEN]
2718                                                         output[outputPos++] = '7';
2719                                                         break;
2720                                                 
2721                                                 case '\u248E':  // Ã¢â€™Å½  [DIGIT SEVEN FULL STOP]
2722                                                         output[outputPos++] = '7';
2723                                                         output[outputPos++] = '.';
2724                                                         break;
2725                                                 
2726                                                 case '\u247A':  // Ã¢â€˜Âº  [PARENTHESIZED DIGIT SEVEN]
2727                                                         output[outputPos++] = '(';
2728                                                         output[outputPos++] = '7';
2729                                                         output[outputPos++] = ')';
2730                                                         break;
2731                                                 
2732                                                 case '\u2078': 
2733                                                 // Ã¢ï¿½Â¸  [SUPERSCRIPT EIGHT]
2734                                                 case '\u2088': 
2735                                                 // Ã¢â€šË†  [SUBSCRIPT EIGHT]
2736                                                 case '\u2467': 
2737                                                 // Ã¢â€˜Â§  [CIRCLED DIGIT EIGHT]
2738                                                 case '\u24FC': 
2739                                                 // Ã¢â€œÂ¼  [DOUBLE CIRCLED DIGIT EIGHT]
2740                                                 case '\u277D': 
2741                                                 // Ã¢ï¿½Â½  [DINGBAT NEGATIVE CIRCLED DIGIT EIGHT]
2742                                                 case '\u2787': 
2743                                                 // Ã¢Å¾â€¡  [DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT]
2744                                                 case '\u2791': 
2745                                                 // Ã¢Å¾â€˜  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT]
2746                                                 case '\uFF18':  // Ã¯Â¼Ëœ  [FULLWIDTH DIGIT EIGHT]
2747                                                         output[outputPos++] = '8';
2748                                                         break;
2749                                                 
2750                                                 case '\u248F':  // Ã¢â€™ï¿½  [DIGIT EIGHT FULL STOP]
2751                                                         output[outputPos++] = '8';
2752                                                         output[outputPos++] = '.';
2753                                                         break;
2754                                                 
2755                                                 case '\u247B':  // Ã¢â€˜Â»  [PARENTHESIZED DIGIT EIGHT]
2756                                                         output[outputPos++] = '(';
2757                                                         output[outputPos++] = '8';
2758                                                         output[outputPos++] = ')';
2759                                                         break;
2760                                                 
2761                                                 case '\u2079': 
2762                                                 // Ã¢ï¿½Â¹  [SUPERSCRIPT NINE]
2763                                                 case '\u2089': 
2764                                                 // Ã¢â€šâ€°  [SUBSCRIPT NINE]
2765                                                 case '\u2468': 
2766                                                 // Ã¢â€˜Â¨  [CIRCLED DIGIT NINE]
2767                                                 case '\u24FD': 
2768                                                 // Ã¢â€œÂ½  [DOUBLE CIRCLED DIGIT NINE]
2769                                                 case '\u277E': 
2770                                                 // Ã¢ï¿½Â¾  [DINGBAT NEGATIVE CIRCLED DIGIT NINE]
2771                                                 case '\u2788': 
2772                                                 // Ã¢Å¾Ë†  [DINGBAT CIRCLED SANS-SERIF DIGIT NINE]
2773                                                 case '\u2792': 
2774                                                 // Ã¢Å¾â€™  [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE]
2775                                                 case '\uFF19':  // Ã¯Â¼â„¢  [FULLWIDTH DIGIT NINE]
2776                                                         output[outputPos++] = '9';
2777                                                         break;
2778                                                 
2779                                                 case '\u2490':  // Ã¢â€™ï¿½  [DIGIT NINE FULL STOP]
2780                                                         output[outputPos++] = '9';
2781                                                         output[outputPos++] = '.';
2782                                                         break;
2783                                                 
2784                                                 case '\u247C':  // Ã¢â€˜Â¼  [PARENTHESIZED DIGIT NINE]
2785                                                         output[outputPos++] = '(';
2786                                                         output[outputPos++] = '9';
2787                                                         output[outputPos++] = ')';
2788                                                         break;
2789                                                 
2790                                                 case '\u2469': 
2791                                                 // Ã¢â€˜Â©  [CIRCLED NUMBER TEN]
2792                                                 case '\u24FE': 
2793                                                 // Ã¢â€œÂ¾  [DOUBLE CIRCLED NUMBER TEN]
2794                                                 case '\u277F': 
2795                                                 // Ã¢ï¿½Â¿  [DINGBAT NEGATIVE CIRCLED NUMBER TEN]
2796                                                 case '\u2789': 
2797                                                 // Ã¢Å¾â€°  [DINGBAT CIRCLED SANS-SERIF NUMBER TEN]
2798                                                 case '\u2793':  // Ã¢Å¾â€œ  [DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN]
2799                                                         output[outputPos++] = '1';
2800                                                         output[outputPos++] = '0';
2801                                                         break;
2802                                                 
2803                                                 case '\u2491':  // Ã¢â€™â€˜  [NUMBER TEN FULL STOP]
2804                                                         output[outputPos++] = '1';
2805                                                         output[outputPos++] = '0';
2806                                                         output[outputPos++] = '.';
2807                                                         break;
2808                                                 
2809                                                 case '\u247D':  // Ã¢â€˜Â½  [PARENTHESIZED NUMBER TEN]
2810                                                         output[outputPos++] = '(';
2811                                                         output[outputPos++] = '1';
2812                                                         output[outputPos++] = '0';
2813                                                         output[outputPos++] = ')';
2814                                                         break;
2815                                                 
2816                                                 case '\u246A': 
2817                                                 // Ã¢â€˜Âª  [CIRCLED NUMBER ELEVEN]
2818                                                 case '\u24EB':  // Ã¢â€œÂ«  [NEGATIVE CIRCLED NUMBER ELEVEN]
2819                                                         output[outputPos++] = '1';
2820                                                         output[outputPos++] = '1';
2821                                                         break;
2822                                                 
2823                                                 case '\u2492':  // Ã¢â€™â€™  [NUMBER ELEVEN FULL STOP]
2824                                                         output[outputPos++] = '1';
2825                                                         output[outputPos++] = '1';
2826                                                         output[outputPos++] = '.';
2827                                                         break;
2828                                                 
2829                                                 case '\u247E':  // Ã¢â€˜Â¾  [PARENTHESIZED NUMBER ELEVEN]
2830                                                         output[outputPos++] = '(';
2831                                                         output[outputPos++] = '1';
2832                                                         output[outputPos++] = '1';
2833                                                         output[outputPos++] = ')';
2834                                                         break;
2835                                                 
2836                                                 case '\u246B': 
2837                                                 // Ã¢â€˜Â«  [CIRCLED NUMBER TWELVE]
2838                                                 case '\u24EC':  // Ã¢â€œÂ¬  [NEGATIVE CIRCLED NUMBER TWELVE]
2839                                                         output[outputPos++] = '1';
2840                                                         output[outputPos++] = '2';
2841                                                         break;
2842                                                 
2843                                                 case '\u2493':  // Ã¢â€™â€œ  [NUMBER TWELVE FULL STOP]
2844                                                         output[outputPos++] = '1';
2845                                                         output[outputPos++] = '2';
2846                                                         output[outputPos++] = '.';
2847                                                         break;
2848                                                 
2849                                                 case '\u247F':  // Ã¢â€˜Â¿  [PARENTHESIZED NUMBER TWELVE]
2850                                                         output[outputPos++] = '(';
2851                                                         output[outputPos++] = '1';
2852                                                         output[outputPos++] = '2';
2853                                                         output[outputPos++] = ')';
2854                                                         break;
2855                                                 
2856                                                 case '\u246C': 
2857                                                 // Ã¢â€˜Â¬  [CIRCLED NUMBER THIRTEEN]
2858                                                 case '\u24ED':  // Ã¢â€œÂ­  [NEGATIVE CIRCLED NUMBER THIRTEEN]
2859                                                         output[outputPos++] = '1';
2860                                                         output[outputPos++] = '3';
2861                                                         break;
2862                                                 
2863                                                 case '\u2494':  // Ã¢â€™ï¿½?  [NUMBER THIRTEEN FULL STOP]
2864                                                         output[outputPos++] = '1';
2865                                                         output[outputPos++] = '3';
2866                                                         output[outputPos++] = '.';
2867                                                         break;
2868                                                 
2869                                                 case '\u2480':  // Ã¢â€™â‚¬  [PARENTHESIZED NUMBER THIRTEEN]
2870                                                         output[outputPos++] = '(';
2871                                                         output[outputPos++] = '1';
2872                                                         output[outputPos++] = '3';
2873                                                         output[outputPos++] = ')';
2874                                                         break;
2875                                                 
2876                                                 case '\u246D': 
2877                                                 // Ã¢â€˜Â­  [CIRCLED NUMBER FOURTEEN]
2878                                                 case '\u24EE':  // Ã¢â€œÂ®  [NEGATIVE CIRCLED NUMBER FOURTEEN]
2879                                                         output[outputPos++] = '1';
2880                                                         output[outputPos++] = '4';
2881                                                         break;
2882                                                 
2883                                                 case '\u2495':  // Ã¢â€™â€¢  [NUMBER FOURTEEN FULL STOP]
2884                                                         output[outputPos++] = '1';
2885                                                         output[outputPos++] = '4';
2886                                                         output[outputPos++] = '.';
2887                                                         break;
2888                                                 
2889                                                 case '\u2481':  // Ã¢â€™ï¿½  [PARENTHESIZED NUMBER FOURTEEN]
2890                                                         output[outputPos++] = '(';
2891                                                         output[outputPos++] = '1';
2892                                                         output[outputPos++] = '4';
2893                                                         output[outputPos++] = ')';
2894                                                         break;
2895                                                 
2896                                                 case '\u246E': 
2897                                                 // Ã¢â€˜Â®  [CIRCLED NUMBER FIFTEEN]
2898                                                 case '\u24EF':  // Ã¢â€œÂ¯  [NEGATIVE CIRCLED NUMBER FIFTEEN]
2899                                                         output[outputPos++] = '1';
2900                                                         output[outputPos++] = '5';
2901                                                         break;
2902                                                 
2903                                                 case '\u2496':  // Ã¢â€™â€“  [NUMBER FIFTEEN FULL STOP]
2904                                                         output[outputPos++] = '1';
2905                                                         output[outputPos++] = '5';
2906                                                         output[outputPos++] = '.';
2907                                                         break;
2908                                                 
2909                                                 case '\u2482':  // Ã¢â€™â€š  [PARENTHESIZED NUMBER FIFTEEN]
2910                                                         output[outputPos++] = '(';
2911                                                         output[outputPos++] = '1';
2912                                                         output[outputPos++] = '5';
2913                                                         output[outputPos++] = ')';
2914                                                         break;
2915                                                 
2916                                                 case '\u246F': 
2917                                                 // Ã¢â€˜Â¯  [CIRCLED NUMBER SIXTEEN]
2918                                                 case '\u24F0':  // Ã¢â€œÂ°  [NEGATIVE CIRCLED NUMBER SIXTEEN]
2919                                                         output[outputPos++] = '1';
2920                                                         output[outputPos++] = '6';
2921                                                         break;
2922                                                 
2923                                                 case '\u2497':  // Ã¢â€™â€”  [NUMBER SIXTEEN FULL STOP]
2924                                                         output[outputPos++] = '1';
2925                                                         output[outputPos++] = '6';
2926                                                         output[outputPos++] = '.';
2927                                                         break;
2928                                                 
2929                                                 case '\u2483':  // Ã¢â€™Æ’  [PARENTHESIZED NUMBER SIXTEEN]
2930                                                         output[outputPos++] = '(';
2931                                                         output[outputPos++] = '1';
2932                                                         output[outputPos++] = '6';
2933                                                         output[outputPos++] = ')';
2934                                                         break;
2935                                                 
2936                                                 case '\u2470': 
2937                                                 // Ã¢â€˜Â°  [CIRCLED NUMBER SEVENTEEN]
2938                                                 case '\u24F1':  // Ã¢â€œÂ±  [NEGATIVE CIRCLED NUMBER SEVENTEEN]
2939                                                         output[outputPos++] = '1';
2940                                                         output[outputPos++] = '7';
2941                                                         break;
2942                                                 
2943                                                 case '\u2498':  // Ã¢â€™Ëœ  [NUMBER SEVENTEEN FULL STOP]
2944                                                         output[outputPos++] = '1';
2945                                                         output[outputPos++] = '7';
2946                                                         output[outputPos++] = '.';
2947                                                         break;
2948                                                 
2949                                                 case '\u2484':  // Ã¢â€™â€ž  [PARENTHESIZED NUMBER SEVENTEEN]
2950                                                         output[outputPos++] = '(';
2951                                                         output[outputPos++] = '1';
2952                                                         output[outputPos++] = '7';
2953                                                         output[outputPos++] = ')';
2954                                                         break;
2955                                                 
2956                                                 case '\u2471': 
2957                                                 // Ã¢â€˜Â±  [CIRCLED NUMBER EIGHTEEN]
2958                                                 case '\u24F2':  // Ã¢â€œÂ²  [NEGATIVE CIRCLED NUMBER EIGHTEEN]
2959                                                         output[outputPos++] = '1';
2960                                                         output[outputPos++] = '8';
2961                                                         break;
2962                                                 
2963                                                 case '\u2499':  // Ã¢â€™â„¢  [NUMBER EIGHTEEN FULL STOP]
2964                                                         output[outputPos++] = '1';
2965                                                         output[outputPos++] = '8';
2966                                                         output[outputPos++] = '.';
2967                                                         break;
2968                                                 
2969                                                 case '\u2485':  // Ã¢â€™â€¦  [PARENTHESIZED NUMBER EIGHTEEN]
2970                                                         output[outputPos++] = '(';
2971                                                         output[outputPos++] = '1';
2972                                                         output[outputPos++] = '8';
2973                                                         output[outputPos++] = ')';
2974                                                         break;
2975                                                 
2976                                                 case '\u2472': 
2977                                                 // Ã¢â€˜Â²  [CIRCLED NUMBER NINETEEN]
2978                                                 case '\u24F3':  // Ã¢â€œÂ³  [NEGATIVE CIRCLED NUMBER NINETEEN]
2979                                                         output[outputPos++] = '1';
2980                                                         output[outputPos++] = '9';
2981                                                         break;
2982                                                 
2983                                                 case '\u249A':  // Ã¢â€™Å¡  [NUMBER NINETEEN FULL STOP]
2984                                                         output[outputPos++] = '1';
2985                                                         output[outputPos++] = '9';
2986                                                         output[outputPos++] = '.';
2987                                                         break;
2988                                                 
2989                                                 case '\u2486':  // Ã¢â€™â€   [PARENTHESIZED NUMBER NINETEEN]
2990                                                         output[outputPos++] = '(';
2991                                                         output[outputPos++] = '1';
2992                                                         output[outputPos++] = '9';
2993                                                         output[outputPos++] = ')';
2994                                                         break;
2995                                                 
2996                                                 case '\u2473': 
2997                                                 // Ã¢â€˜Â³  [CIRCLED NUMBER TWENTY]
2998                                                 case '\u24F4':  // Ã¢â€œÂ´  [NEGATIVE CIRCLED NUMBER TWENTY]
2999                                                         output[outputPos++] = '2';
3000                                                         output[outputPos++] = '0';
3001                                                         break;
3002                                                 
3003                                                 case '\u249B':  // Ã¢â€™â€º  [NUMBER TWENTY FULL STOP]
3004                                                         output[outputPos++] = '2';
3005                                                         output[outputPos++] = '0';
3006                                                         output[outputPos++] = '.';
3007                                                         break;
3008                                                 
3009                                                 case '\u2487':  // Ã¢â€™â€¡  [PARENTHESIZED NUMBER TWENTY]
3010                                                         output[outputPos++] = '(';
3011                                                         output[outputPos++] = '2';
3012                                                         output[outputPos++] = '0';
3013                                                         output[outputPos++] = ')';
3014                                                         break;
3015                                                 
3016                                                 case '\u00AB': 
3017                                                 // Ã‚«  [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK]
3018                                                 case '\u00BB': 
3019                                                 // Ã‚»  [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK]
3020                                                 case '\u201C': 
3021                                                 // Ã¢â‚¬Å“  [LEFT DOUBLE QUOTATION MARK]
3022                                                 case '\u201D': 
3023                                                 // Ã¢â‚¬ï¿½  [RIGHT DOUBLE QUOTATION MARK]
3024                                                 case '\u201E': 
3025                                                 // Ã¢â‚¬Å¾  [DOUBLE LOW-9 QUOTATION MARK]
3026                                                 case '\u2033': 
3027                                                 // Ã¢â‚¬Â³  [DOUBLE PRIME]
3028                                                 case '\u2036': 
3029                                                 // Ã¢â‚¬Â¶  [REVERSED DOUBLE PRIME]
3030                                                 case '\u275D': 
3031                                                 // Ã¢ï¿½ï¿½  [HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT]
3032                                                 case '\u275E': 
3033                                                 // Ã¢ï¿½Å¾  [HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT]
3034                                                 case '\u276E': 
3035                                                 // Ã¢ï¿½Â®  [HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT]
3036                                                 case '\u276F': 
3037                                                 // Ã¢ï¿½Â¯  [HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT]
3038                                                 case '\uFF02':  // Ã¯Â¼â€š  [FULLWIDTH QUOTATION MARK]
3039                                                         output[outputPos++] = '"';
3040                                                         break;
3041                                                 
3042                                                 case '\u2018': 
3043                                                 // Ã¢â‚¬Ëœ  [LEFT SINGLE QUOTATION MARK]
3044                                                 case '\u2019': 
3045                                                 // Ã¢â‚¬â„¢  [RIGHT SINGLE QUOTATION MARK]
3046                                                 case '\u201A': 
3047                                                 // Ã¢â‚¬Å¡  [SINGLE LOW-9 QUOTATION MARK]
3048                                                 case '\u201B': 
3049                                                 // Ã¢â‚¬â€º  [SINGLE HIGH-REVERSED-9 QUOTATION MARK]
3050                                                 case '\u2032': 
3051                                                 // Ã¢â‚¬Â²  [PRIME]
3052                                                 case '\u2035': 
3053                                                 // Ã¢â‚¬Âµ  [REVERSED PRIME]
3054                                                 case '\u2039': 
3055                                                 // Ã¢â‚¬Â¹  [SINGLE LEFT-POINTING ANGLE QUOTATION MARK]
3056                                                 case '\u203A': 
3057                                                 // Ã¢â‚¬Âº  [SINGLE RIGHT-POINTING ANGLE QUOTATION MARK]
3058                                                 case '\u275B': 
3059                                                 // Ã¢ï¿½â€º  [HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT]
3060                                                 case '\u275C': 
3061                                                 // Ã¢ï¿½Å“  [HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT]
3062                                                 case '\uFF07':  // Ã¯Â¼â€¡  [FULLWIDTH APOSTROPHE]
3063                                                         output[outputPos++] = '\'';
3064                                                         break;
3065                                                 
3066                                                 case '\u2010': 
3067                                                 // Ã¢â‚¬ï¿½  [HYPHEN]
3068                                                 case '\u2011': 
3069                                                 // Ã¢â‚¬â€˜  [NON-BREAKING HYPHEN]
3070                                                 case '\u2012': 
3071                                                 // Ã¢â‚¬â€™  [FIGURE DASH]
3072                                                 case '\u2013': 
3073                                                 // Ã¢â‚¬â€œ  [EN DASH]
3074                                                 case '\u2014': 
3075                                                 // Ã¢â‚¬ï¿½?  [EM DASH]
3076                                                 case '\u207B': 
3077                                                 // Ã¢ï¿½Â»  [SUPERSCRIPT MINUS]
3078                                                 case '\u208B': 
3079                                                 // Ã¢â€šâ€¹  [SUBSCRIPT MINUS]
3080                                                 case '\uFF0D':  // Ã¯Â¼ï¿½  [FULLWIDTH HYPHEN-MINUS]
3081                                                         output[outputPos++] = '-';
3082                                                         break;
3083                                                 
3084                                                 case '\u2045': 
3085                                                 // Ã¢ï¿½â€¦  [LEFT SQUARE BRACKET WITH QUILL]
3086                                                 case '\u2772': 
3087                                                 // Ã¢ï¿½Â²  [LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT]
3088                                                 case '\uFF3B':  // Ã¯Â¼Â»  [FULLWIDTH LEFT SQUARE BRACKET]
3089                                                         output[outputPos++] = '[';
3090                                                         break;
3091                                                 
3092                                                 case '\u2046': 
3093                                                 // Ã¢ï¿½â€   [RIGHT SQUARE BRACKET WITH QUILL]
3094                                                 case '\u2773': 
3095                                                 // Ã¢ï¿½Â³  [LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT]
3096                                                 case '\uFF3D':  // Ã¯Â¼Â½  [FULLWIDTH RIGHT SQUARE BRACKET]
3097                                                         output[outputPos++] = ']';
3098                                                         break;
3099                                                 
3100                                                 case '\u207D': 
3101                                                 // Ã¢ï¿½Â½  [SUPERSCRIPT LEFT PARENTHESIS]
3102                                                 case '\u208D': 
3103                                                 // Ã¢â€šï¿½  [SUBSCRIPT LEFT PARENTHESIS]
3104                                                 case '\u2768': 
3105                                                 // Ã¢ï¿½Â¨  [MEDIUM LEFT PARENTHESIS ORNAMENT]
3106                                                 case '\u276A': 
3107                                                 // Ã¢ï¿½Âª  [MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT]
3108                                                 case '\uFF08':  // Ã¯Â¼Ë†  [FULLWIDTH LEFT PARENTHESIS]
3109                                                         output[outputPos++] = '(';
3110                                                         break;
3111                                                 
3112                                                 case '\u2E28':  // Ã¢Â¸Â¨  [LEFT DOUBLE PARENTHESIS]
3113                                                         output[outputPos++] = '(';
3114                                                         output[outputPos++] = '(';
3115                                                         break;
3116                                                 
3117                                                 case '\u207E': 
3118                                                 // Ã¢ï¿½Â¾  [SUPERSCRIPT RIGHT PARENTHESIS]
3119                                                 case '\u208E': 
3120                                                 // Ã¢â€šÅ½  [SUBSCRIPT RIGHT PARENTHESIS]
3121                                                 case '\u2769': 
3122                                                 // Ã¢ï¿½Â©  [MEDIUM RIGHT PARENTHESIS ORNAMENT]
3123                                                 case '\u276B': 
3124                                                 // Ã¢ï¿½Â«  [MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT]
3125                                                 case '\uFF09':  // Ã¯Â¼â€°  [FULLWIDTH RIGHT PARENTHESIS]
3126                                                         output[outputPos++] = ')';
3127                                                         break;
3128                                                 
3129                                                 case '\u2E29':  // Ã¢Â¸Â©  [RIGHT DOUBLE PARENTHESIS]
3130                                                         output[outputPos++] = ')';
3131                                                         output[outputPos++] = ')';
3132                                                         break;
3133                                                 
3134                                                 case '\u276C': 
3135                                                 // Ã¢ï¿½Â¬  [MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT]
3136                                                 case '\u2770': 
3137                                                 // Ã¢ï¿½Â°  [HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT]
3138                                                 case '\uFF1C':  // Ã¯Â¼Å“  [FULLWIDTH LESS-THAN SIGN]
3139                                                         output[outputPos++] = '<';
3140                                                         break;
3141                                                 
3142                                                 case '\u276D': 
3143                                                 // Ã¢ï¿½Â­  [MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT]
3144                                                 case '\u2771': 
3145                                                 // Ã¢ï¿½Â±  [HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT]
3146                                                 case '\uFF1E':  // Ã¯Â¼Å¾  [FULLWIDTH GREATER-THAN SIGN]
3147                                                         output[outputPos++] = '>';
3148                                                         break;
3149                                                 
3150                                                 case '\u2774': 
3151                                                 // Ã¢ï¿½Â´  [MEDIUM LEFT CURLY BRACKET ORNAMENT]
3152                                                 case '\uFF5B':  // Ã¯Â½â€º  [FULLWIDTH LEFT CURLY BRACKET]
3153                                                         output[outputPos++] = '{';
3154                                                         break;
3155                                                 
3156                                                 case '\u2775': 
3157                                                 // Ã¢ï¿½Âµ  [MEDIUM RIGHT CURLY BRACKET ORNAMENT]
3158                                                 case '\uFF5D':  // Ã¯Â½ï¿½  [FULLWIDTH RIGHT CURLY BRACKET]
3159                                                         output[outputPos++] = '}';
3160                                                         break;
3161                                                 
3162                                                 case '\u207A': 
3163                                                 // Ã¢ï¿½Âº  [SUPERSCRIPT PLUS SIGN]
3164                                                 case '\u208A': 
3165                                                 // Ã¢â€šÅ   [SUBSCRIPT PLUS SIGN]
3166                                                 case '\uFF0B':  // Ã¯Â¼â€¹  [FULLWIDTH PLUS SIGN]
3167                                                         output[outputPos++] = '+';
3168                                                         break;
3169                                                 
3170                                                 case '\u207C': 
3171                                                 // Ã¢ï¿½Â¼  [SUPERSCRIPT EQUALS SIGN]
3172                                                 case '\u208C': 
3173                                                 // Ã¢â€šÅ’  [SUBSCRIPT EQUALS SIGN]
3174                                                 case '\uFF1D':  // Ã¯Â¼ï¿½  [FULLWIDTH EQUALS SIGN]
3175                                                         output[outputPos++] = '=';
3176                                                         break;
3177                                                 
3178                                                 case '\uFF01':  // Ã¯Â¼ï¿½  [FULLWIDTH EXCLAMATION MARK]
3179                                                         output[outputPos++] = '!';
3180                                                         break;
3181                                                 
3182                                                 case '\u203C':  // Ã¢â‚¬Â¼  [DOUBLE EXCLAMATION MARK]
3183                                                         output[outputPos++] = '!';
3184                                                         output[outputPos++] = '!';
3185                                                         break;
3186                                                 
3187                                                 case '\u2049':  // Ã¢ï¿½â€°  [EXCLAMATION QUESTION MARK]
3188                                                         output[outputPos++] = '!';
3189                                                         output[outputPos++] = '?';
3190                                                         break;
3191                                                 
3192                                                 case '\uFF03':  // Ã¯Â¼Æ’  [FULLWIDTH NUMBER SIGN]
3193                                                         output[outputPos++] = '#';
3194                                                         break;
3195                                                 
3196                                                 case '\uFF04':  // Ã¯Â¼â€ž  [FULLWIDTH DOLLAR SIGN]
3197                                                         output[outputPos++] = '$';
3198                                                         break;
3199                                                 
3200                                                 case '\u2052': 
3201                                                 // Ã¢ï¿½â€™  [COMMERCIAL MINUS SIGN]
3202                                                 case '\uFF05':  // Ã¯Â¼â€¦  [FULLWIDTH PERCENT SIGN]
3203                                                         output[outputPos++] = '%';
3204                                                         break;
3205                                                 
3206                                                 case '\uFF06':  // Ã¯Â¼â€   [FULLWIDTH AMPERSAND]
3207                                                         output[outputPos++] = '&';
3208                                                         break;
3209                                                 
3210                                                 case '\u204E': 
3211                                                 // Ã¢ï¿½Å½  [LOW ASTERISK]
3212                                                 case '\uFF0A':  // Ã¯Â¼Å   [FULLWIDTH ASTERISK]
3213                                                         output[outputPos++] = '*';
3214                                                         break;
3215                                                 
3216                                                 case '\uFF0C':  // Ã¯Â¼Å’  [FULLWIDTH COMMA]
3217                                                         output[outputPos++] = ',';
3218                                                         break;
3219                                                 
3220                                                 case '\uFF0E':  // Ã¯Â¼Å½  [FULLWIDTH FULL STOP]
3221                                                         output[outputPos++] = '.';
3222                                                         break;
3223                                                 
3224                                                 case '\u2044': 
3225                                                 // Ã¢ï¿½â€ž  [FRACTION SLASH]
3226                                                 case '\uFF0F':  // Ã¯Â¼ï¿½  [FULLWIDTH SOLIDUS]
3227                                                         output[outputPos++] = '/';
3228                                                         break;
3229                                                 
3230                                                 case '\uFF1A':  // Ã¯Â¼Å¡  [FULLWIDTH COLON]
3231                                                         output[outputPos++] = ':';
3232                                                         break;
3233                                                 
3234                                                 case '\u204F': 
3235                                                 // Ã¢ï¿½ï¿½  [REVERSED SEMICOLON]
3236                                                 case '\uFF1B':  // Ã¯Â¼â€º  [FULLWIDTH SEMICOLON]
3237                                                         output[outputPos++] = ';';
3238                                                         break;
3239                                                 
3240                                                 case '\uFF1F':  // Ã¯Â¼Å¸  [FULLWIDTH QUESTION MARK]
3241                                                         output[outputPos++] = '?';
3242                                                         break;
3243                                                 
3244                                                 case '\u2047':  // Ã¢ï¿½â€¡  [DOUBLE QUESTION MARK]
3245                                                         output[outputPos++] = '?';
3246                                                         output[outputPos++] = '?';
3247                                                         break;
3248                                                 
3249                                                 case '\u2048':  // Ã¢ï¿½Ë†  [QUESTION EXCLAMATION MARK]
3250                                                         output[outputPos++] = '?';
3251                                                         output[outputPos++] = '!';
3252                                                         break;
3253                                                 
3254                                                 case '\uFF20':  // Ã¯Â¼Â   [FULLWIDTH COMMERCIAL AT]
3255                                                         output[outputPos++] = '@';
3256                                                         break;
3257                                                 
3258                                                 case '\uFF3C':  // Ã¯Â¼Â¼  [FULLWIDTH REVERSE SOLIDUS]
3259                                                         output[outputPos++] = '\\';
3260                                                         break;
3261                                                 
3262                                                 case '\u2038': 
3263                                                 // Ã¢â‚¬Â¸  [CARET]
3264                                                 case '\uFF3E':  // Ã¯Â¼Â¾  [FULLWIDTH CIRCUMFLEX ACCENT]
3265                                                         output[outputPos++] = '^';
3266                                                         break;
3267                                                 
3268                                                 case '\uFF3F':  // Ã¯Â¼Â¿  [FULLWIDTH LOW LINE]
3269                                                         output[outputPos++] = '_';
3270                                                         break;
3271                                                 
3272                                                 case '\u2053': 
3273                                                 // Ã¢ï¿½â€œ  [SWUNG DASH]
3274                                                 case '\uFF5E':  // Ã¯Â½Å¾  [FULLWIDTH TILDE]
3275                                                         output[outputPos++] = '~';
3276                                                         break;
3277                                                 
3278                                                 default: 
3279                                                         output[outputPos++] = c;
3280                                                         break;
3281                                                 
3282                                         }
3283                                 }
3284                         }
3285                 }
3286         }
3287 }