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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
20 using TermAttribute = Mono.Lucene.Net.Analysis.Tokenattributes.TermAttribute;
21 using ArrayUtil = Mono.Lucene.Net.Util.ArrayUtil;
23 namespace Mono.Lucene.Net.Analysis
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.
30 /// Characters from the following Unicode blocks are converted; however, only
31 /// those characters with reasonable ASCII alternatives are converted:
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>
52 /// See: <a href="http://en.wikipedia.org/wiki/Latin_characters_in_Unicode">http://en.wikipedia.org/wiki/Latin_characters_in_Unicode</a>
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, 'À' will be replaced by
59 public sealed class ASCIIFoldingFilter:TokenFilter
61 public ASCIIFoldingFilter(TokenStream input):base(input)
63 termAtt = (TermAttribute) AddAttribute(typeof(TermAttribute));
66 private char[] output = new char[512];
67 private int outputPos;
68 private TermAttribute termAtt;
70 public override bool IncrementToken()
72 if (input.IncrementToken())
74 char[] buffer = termAtt.TermBuffer();
75 int length = termAtt.TermLength();
77 // If no characters actually require rewriting then we
78 // just return token as-is:
79 for (int i = 0; i < length; ++i)
84 FoldToASCII(buffer, length);
85 termAtt.SetTermBuffer(output, 0, outputPos);
97 /// <summary> Converts characters above ASCII to their ASCII equivalents. For example,
98 /// accents are removed from accented characters.
100 /// <param name="input">The string to fold
102 /// <param name="length">The number of characters in the input string
104 public void FoldToASCII(char[] input, int length)
106 // Worst-case length required:
107 int maxSizeNeeded = 4 * length;
108 if (output.Length < maxSizeNeeded)
110 output = new char[ArrayUtil.GetNextSize(maxSizeNeeded)];
115 for (int pos = 0; pos < length; ++pos)
119 // Quick test: if it's not in range then just keep current character
122 output[outputPos++] = c;
130 // À [LATIN CAPITAL LETTER A WITH GRAVE]
132 // � [LATIN CAPITAL LETTER A WITH ACUTE]
134 // Â [LATIN CAPITAL LETTER A WITH CIRCUMFLEX]
136 // Ã [LATIN CAPITAL LETTER A WITH TILDE]
138 // Ä [LATIN CAPITAL LETTER A WITH DIAERESIS]
140 // Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE]
142 // Ā [LATIN CAPITAL LETTER A WITH MACRON]
144 // Ä‚ [LATIN CAPITAL LETTER A WITH BREVE]
146 // Ä„ [LATIN CAPITAL LETTER A WITH OGONEK]
148 // � http://en.wikipedia.org/wiki/Schwa [LATIN CAPITAL LETTER SCHWA]
150 // � [LATIN CAPITAL LETTER A WITH CARON]
152 // Çž [LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON]
154 // Ç [LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON]
156 // Ǻ [LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE]
158 // Ȁ [LATIN CAPITAL LETTER A WITH DOUBLE GRAVE]
160 // È‚ [LATIN CAPITAL LETTER A WITH INVERTED BREVE]
162 // Ȧ [LATIN CAPITAL LETTER A WITH DOT ABOVE]
164 // Ⱥ [LATIN CAPITAL LETTER A WITH STROKE]
166 // á´€ [LATIN LETTER SMALL CAPITAL A]
168 // Ḁ [LATIN CAPITAL LETTER A WITH RING BELOW]
170 // Ạ[LATIN CAPITAL LETTER A WITH DOT BELOW]
172 // Ả [LATIN CAPITAL LETTER A WITH HOOK ABOVE]
174 // Ấ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE]
176 // Ầ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE]
178 // Ẩ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE]
180 // Ẫ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE]
182 // Ậ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW]
184 // Ắ [LATIN CAPITAL LETTER A WITH BREVE AND ACUTE]
186 // Ằ [LATIN CAPITAL LETTER A WITH BREVE AND GRAVE]
188 // Ẳ [LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE]
190 // Ẵ [LATIN CAPITAL LETTER A WITH BREVE AND TILDE]
192 // Ặ [LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW]
194 // â’¶ [CIRCLED LATIN CAPITAL LETTER A]
195 case '\uFF21': // A [FULLWIDTH LATIN CAPITAL LETTER A]
196 output[outputPos++] = 'A';
200 // à[LATIN SMALL LETTER A WITH GRAVE]
202 // á [LATIN SMALL LETTER A WITH ACUTE]
204 // â [LATIN SMALL LETTER A WITH CIRCUMFLEX]
206 // ã [LATIN SMALL LETTER A WITH TILDE]
208 // ä [LATIN SMALL LETTER A WITH DIAERESIS]
210 // å [LATIN SMALL LETTER A WITH RING ABOVE]
212 // � [LATIN SMALL LETTER A WITH MACRON]
214 // ă [LATIN SMALL LETTER A WITH BREVE]
216 // Ä… [LATIN SMALL LETTER A WITH OGONEK]
218 // ÇŽ [LATIN SMALL LETTER A WITH CARON]
220 // ÇŸ [LATIN SMALL LETTER A WITH DIAERESIS AND MACRON]
222 // Ç¡ [LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON]
224 // Ç» [LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE]
226 // � [LATIN SMALL LETTER A WITH DOUBLE GRAVE]
228 // ȃ [LATIN SMALL LETTER A WITH INVERTED BREVE]
230 // ȧ [LATIN SMALL LETTER A WITH DOT ABOVE]
232 // � [LATIN SMALL LETTER TURNED A]
234 // É™ [LATIN SMALL LETTER SCHWA]
236 // Éš [LATIN SMALL LETTER SCHWA WITH HOOK]
238 // � [LATIN SMALL LETTER A WITH RETROFLEX HOOK]
240 // ᶕ [LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK]
242 // ạ [LATIN SMALL LETTER A WITH RING BELOW]
244 // ả [LATIN SMALL LETTER A WITH RIGHT HALF RING]
246 // ạ [LATIN SMALL LETTER A WITH DOT BELOW]
248 // ả [LATIN SMALL LETTER A WITH HOOK ABOVE]
250 // ấ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE]
252 // ầ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE]
254 // ẩ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE]
256 // ẫ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE]
258 // Ạ[LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW]
260 // ắ [LATIN SMALL LETTER A WITH BREVE AND ACUTE]
262 // ằ [LATIN SMALL LETTER A WITH BREVE AND GRAVE]
264 // ẳ [LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE]
266 // ẵ [LATIN SMALL LETTER A WITH BREVE AND TILDE]
268 // ặ [LATIN SMALL LETTER A WITH BREVE AND DOT BELOW]
270 // � [LATIN SUBSCRIPT SMALL LETTER A]
272 // �? [LATIN SUBSCRIPT SMALL LETTER SCHWA]
274 // � [CIRCLED LATIN SMALL LETTER A]
276 // â±¥ [LATIN SMALL LETTER A WITH STROKE]
278 // Ɐ [LATIN CAPITAL LETTER TURNED A]
279 case '\uFF41': // � [FULLWIDTH LATIN SMALL LETTER A]
280 output[outputPos++] = 'a';
283 case '\uA732': // Ꜳ [LATIN CAPITAL LETTER AA]
284 output[outputPos++] = 'A';
285 output[outputPos++] = 'A';
289 // Æ[LATIN CAPITAL LETTER AE]
291 // Ǣ [LATIN CAPITAL LETTER AE WITH MACRON]
293 // Ǽ [LATIN CAPITAL LETTER AE WITH ACUTE]
294 case '\u1D01': // á´� [LATIN LETTER SMALL CAPITAL AE]
295 output[outputPos++] = 'A';
296 output[outputPos++] = 'E';
299 case '\uA734': // Ꜵ [LATIN CAPITAL LETTER AO]
300 output[outputPos++] = 'A';
301 output[outputPos++] = 'O';
304 case '\uA736': // Ꜷ [LATIN CAPITAL LETTER AU]
305 output[outputPos++] = 'A';
306 output[outputPos++] = 'U';
310 // Ꜹ [LATIN CAPITAL LETTER AV]
311 case '\uA73A': // Ꜻ [LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR]
312 output[outputPos++] = 'A';
313 output[outputPos++] = 'V';
316 case '\uA73C': // Ꜽ [LATIN CAPITAL LETTER AY]
317 output[outputPos++] = 'A';
318 output[outputPos++] = 'Y';
321 case '\u249C': // ⒜ [PARENTHESIZED LATIN SMALL LETTER A]
322 output[outputPos++] = '(';
323 output[outputPos++] = 'a';
324 output[outputPos++] = ')';
327 case '\uA733': // ꜳ [LATIN SMALL LETTER AA]
328 output[outputPos++] = 'a';
329 output[outputPos++] = 'a';
333 // æ [LATIN SMALL LETTER AE]
335 // ǣ [LATIN SMALL LETTER AE WITH MACRON]
337 // ǽ [LATIN SMALL LETTER AE WITH ACUTE]
338 case '\u1D02': // á´‚ [LATIN SMALL LETTER TURNED AE]
339 output[outputPos++] = 'a';
340 output[outputPos++] = 'e';
343 case '\uA735': // ꜵ [LATIN SMALL LETTER AO]
344 output[outputPos++] = 'a';
345 output[outputPos++] = 'o';
348 case '\uA737': // ꜷ [LATIN SMALL LETTER AU]
349 output[outputPos++] = 'a';
350 output[outputPos++] = 'u';
354 // ꜹ [LATIN SMALL LETTER AV]
355 case '\uA73B': // ꜻ [LATIN SMALL LETTER AV WITH HORIZONTAL BAR]
356 output[outputPos++] = 'a';
357 output[outputPos++] = 'v';
360 case '\uA73D': // ꜽ [LATIN SMALL LETTER AY]
361 output[outputPos++] = 'a';
362 output[outputPos++] = 'y';
366 // � [LATIN CAPITAL LETTER B WITH HOOK]
368 // Æ‚ [LATIN CAPITAL LETTER B WITH TOPBAR]
370 // Ƀ [LATIN CAPITAL LETTER B WITH STROKE]
372 // Ê™ [LATIN LETTER SMALL CAPITAL B]
374 // á´ƒ [LATIN LETTER SMALL CAPITAL BARRED B]
376 // Ḃ [LATIN CAPITAL LETTER B WITH DOT ABOVE]
378 // Ḅ [LATIN CAPITAL LETTER B WITH DOT BELOW]
380 // Ḇ[LATIN CAPITAL LETTER B WITH LINE BELOW]
382 // â’· [CIRCLED LATIN CAPITAL LETTER B]
383 case '\uFF22': // ï¼¢ [FULLWIDTH LATIN CAPITAL LETTER B]
384 output[outputPos++] = 'B';
388 // ƀ [LATIN SMALL LETTER B WITH STROKE]
390 // ƃ [LATIN SMALL LETTER B WITH TOPBAR]
392 // É“ [LATIN SMALL LETTER B WITH HOOK]
394 // ᵬ [LATIN SMALL LETTER B WITH MIDDLE TILDE]
396 // ᶀ [LATIN SMALL LETTER B WITH PALATAL HOOK]
398 // ḃ [LATIN SMALL LETTER B WITH DOT ABOVE]
400 // ḅ [LATIN SMALL LETTER B WITH DOT BELOW]
402 // ḇ [LATIN SMALL LETTER B WITH LINE BELOW]
404 // â“‘ [CIRCLED LATIN SMALL LETTER B]
405 case '\uFF42': // b [FULLWIDTH LATIN SMALL LETTER B]
406 output[outputPos++] = 'b';
409 case '\u249D': // â’� [PARENTHESIZED LATIN SMALL LETTER B]
410 output[outputPos++] = '(';
411 output[outputPos++] = 'b';
412 output[outputPos++] = ')';
416 // Ç [LATIN CAPITAL LETTER C WITH CEDILLA]
418 // Ć[LATIN CAPITAL LETTER C WITH ACUTE]
420 // Ĉ [LATIN CAPITAL LETTER C WITH CIRCUMFLEX]
422 // ÄŠ[LATIN CAPITAL LETTER C WITH DOT ABOVE]
424 // Č [LATIN CAPITAL LETTER C WITH CARON]
426 // Ƈ [LATIN CAPITAL LETTER C WITH HOOK]
428 // È» [LATIN CAPITAL LETTER C WITH STROKE]
430 // Ê— [LATIN LETTER STRETCHED C]
432 // á´„ [LATIN LETTER SMALL CAPITAL C]
434 // Ḉ [LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE]
436 // â’¸ [CIRCLED LATIN CAPITAL LETTER C]
437 case '\uFF23': // ï¼£ [FULLWIDTH LATIN CAPITAL LETTER C]
438 output[outputPos++] = 'C';
442 // ç [LATIN SMALL LETTER C WITH CEDILLA]
444 // ć [LATIN SMALL LETTER C WITH ACUTE]
446 // ĉ [LATIN SMALL LETTER C WITH CIRCUMFLEX]
448 // Ä‹ [LATIN SMALL LETTER C WITH DOT ABOVE]
450 // � [LATIN SMALL LETTER C WITH CARON]
452 // ƈ [LATIN SMALL LETTER C WITH HOOK]
454 // ȼ [LATIN SMALL LETTER C WITH STROKE]
456 // É• [LATIN SMALL LETTER C WITH CURL]
458 // ḉ [LATIN SMALL LETTER C WITH CEDILLA AND ACUTE]
460 // ↄ [LATIN SMALL LETTER REVERSED C]
462 // â“’ [CIRCLED LATIN SMALL LETTER C]
464 // Ꜿ [LATIN CAPITAL LETTER REVERSED C WITH DOT]
466 // ꜿ [LATIN SMALL LETTER REVERSED C WITH DOT]
467 case '\uFF43': // c [FULLWIDTH LATIN SMALL LETTER C]
468 output[outputPos++] = 'c';
471 case '\u249E': // â’ž [PARENTHESIZED LATIN SMALL LETTER C]
472 output[outputPos++] = '(';
473 output[outputPos++] = 'c';
474 output[outputPos++] = ')';
478 // � [LATIN CAPITAL LETTER ETH]
480 // ÄŽ [LATIN CAPITAL LETTER D WITH CARON]
482 // � [LATIN CAPITAL LETTER D WITH STROKE]
484 // Ɖ [LATIN CAPITAL LETTER AFRICAN D]
486 // ÆŠ[LATIN CAPITAL LETTER D WITH HOOK]
488 // Æ‹ [LATIN CAPITAL LETTER D WITH TOPBAR]
490 // á´… [LATIN LETTER SMALL CAPITAL D]
492 // á´†[LATIN LETTER SMALL CAPITAL ETH]
494 // Ḋ[LATIN CAPITAL LETTER D WITH DOT ABOVE]
496 // Ḍ [LATIN CAPITAL LETTER D WITH DOT BELOW]
498 // Ḏ [LATIN CAPITAL LETTER D WITH LINE BELOW]
500 // � [LATIN CAPITAL LETTER D WITH CEDILLA]
502 // Ḓ [LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW]
504 // â’¹ [CIRCLED LATIN CAPITAL LETTER D]
506 // � [LATIN CAPITAL LETTER INSULAR D]
507 case '\uFF24': // D [FULLWIDTH LATIN CAPITAL LETTER D]
508 output[outputPos++] = 'D';
512 // ð [LATIN SMALL LETTER ETH]
514 // � [LATIN SMALL LETTER D WITH CARON]
516 // Ä‘ [LATIN SMALL LETTER D WITH STROKE]
518 // ƌ [LATIN SMALL LETTER D WITH TOPBAR]
520 // È¡ [LATIN SMALL LETTER D WITH CURL]
522 // É– [LATIN SMALL LETTER D WITH TAIL]
524 // É— [LATIN SMALL LETTER D WITH HOOK]
526 // áµ [LATIN SMALL LETTER D WITH MIDDLE TILDE]
528 // � [LATIN SMALL LETTER D WITH PALATAL HOOK]
530 // ᶑ [LATIN SMALL LETTER D WITH HOOK AND TAIL]
532 // ḋ [LATIN SMALL LETTER D WITH DOT ABOVE]
534 // � [LATIN SMALL LETTER D WITH DOT BELOW]
536 // � [LATIN SMALL LETTER D WITH LINE BELOW]
538 // ḑ [LATIN SMALL LETTER D WITH CEDILLA]
540 // ḓ [LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW]
542 // â““ [CIRCLED LATIN SMALL LETTER D]
544 // � [LATIN SMALL LETTER INSULAR D]
545 case '\uFF44': // d [FULLWIDTH LATIN SMALL LETTER D]
546 output[outputPos++] = 'd';
550 // Ç„ [LATIN CAPITAL LETTER DZ WITH CARON]
551 case '\u01F1': // DZ [LATIN CAPITAL LETTER DZ]
552 output[outputPos++] = 'D';
553 output[outputPos++] = 'Z';
557 // Ç… [LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON]
558 case '\u01F2': // Dz [LATIN CAPITAL LETTER D WITH SMALL LETTER Z]
559 output[outputPos++] = 'D';
560 output[outputPos++] = 'z';
563 case '\u249F': // â’Ÿ [PARENTHESIZED LATIN SMALL LETTER D]
564 output[outputPos++] = '(';
565 output[outputPos++] = 'd';
566 output[outputPos++] = ')';
569 case '\u0238': // ȸ [LATIN SMALL LETTER DB DIGRAPH]
570 output[outputPos++] = 'd';
571 output[outputPos++] = 'b';
575 // dž[LATIN SMALL LETTER DZ WITH CARON]
577 // dz [LATIN SMALL LETTER DZ]
579 // ʣ [LATIN SMALL LETTER DZ DIGRAPH]
580 case '\u02A5': // ʥ [LATIN SMALL LETTER DZ DIGRAPH WITH CURL]
581 output[outputPos++] = 'd';
582 output[outputPos++] = 'z';
586 // È [LATIN CAPITAL LETTER E WITH GRAVE]
588 // É [LATIN CAPITAL LETTER E WITH ACUTE]
590 // Ê[LATIN CAPITAL LETTER E WITH CIRCUMFLEX]
592 // Ë [LATIN CAPITAL LETTER E WITH DIAERESIS]
594 // Ä’ [LATIN CAPITAL LETTER E WITH MACRON]
596 // �? [LATIN CAPITAL LETTER E WITH BREVE]
598 // Ä– [LATIN CAPITAL LETTER E WITH DOT ABOVE]
600 // Ę [LATIN CAPITAL LETTER E WITH OGONEK]
602 // Äš [LATIN CAPITAL LETTER E WITH CARON]
604 // ÆŽ [LATIN CAPITAL LETTER REVERSED E]
606 // � [LATIN CAPITAL LETTER OPEN E]
608 // È„ [LATIN CAPITAL LETTER E WITH DOUBLE GRAVE]
610 // Ȇ[LATIN CAPITAL LETTER E WITH INVERTED BREVE]
612 // Ȩ [LATIN CAPITAL LETTER E WITH CEDILLA]
614 // Ɇ[LATIN CAPITAL LETTER E WITH STROKE]
616 // á´‡ [LATIN LETTER SMALL CAPITAL E]
618 // �? [LATIN CAPITAL LETTER E WITH MACRON AND GRAVE]
620 // Ḗ [LATIN CAPITAL LETTER E WITH MACRON AND ACUTE]
622 // Ḙ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW]
624 // Ḛ [LATIN CAPITAL LETTER E WITH TILDE BELOW]
626 // Ḝ [LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE]
628 // Ẹ [LATIN CAPITAL LETTER E WITH DOT BELOW]
630 // Ẻ [LATIN CAPITAL LETTER E WITH HOOK ABOVE]
632 // Ẽ [LATIN CAPITAL LETTER E WITH TILDE]
634 // Ế [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE]
636 // Ề [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE]
638 // Ể [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE]
640 // Ễ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE]
642 // Ệ[LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW]
644 // â’º [CIRCLED LATIN CAPITAL LETTER E]
646 // â±» [LATIN LETTER SMALL CAPITAL TURNED E]
647 case '\uFF25': // ï¼¥ [FULLWIDTH LATIN CAPITAL LETTER E]
648 output[outputPos++] = 'E';
652 // è [LATIN SMALL LETTER E WITH GRAVE]
654 // é [LATIN SMALL LETTER E WITH ACUTE]
656 // ê [LATIN SMALL LETTER E WITH CIRCUMFLEX]
658 // ë [LATIN SMALL LETTER E WITH DIAERESIS]
660 // Ä“ [LATIN SMALL LETTER E WITH MACRON]
662 // Ä• [LATIN SMALL LETTER E WITH BREVE]
664 // Ä— [LATIN SMALL LETTER E WITH DOT ABOVE]
666 // Ä™ [LATIN SMALL LETTER E WITH OGONEK]
668 // Ä› [LATIN SMALL LETTER E WITH CARON]
670 // � [LATIN SMALL LETTER TURNED E]
672 // È… [LATIN SMALL LETTER E WITH DOUBLE GRAVE]
674 // ȇ [LATIN SMALL LETTER E WITH INVERTED BREVE]
676 // È© [LATIN SMALL LETTER E WITH CEDILLA]
678 // ɇ [LATIN SMALL LETTER E WITH STROKE]
680 // ɘ [LATIN SMALL LETTER REVERSED E]
682 // É› [LATIN SMALL LETTER OPEN E]
684 // ɜ [LATIN SMALL LETTER REVERSED OPEN E]
686 // � [LATIN SMALL LETTER REVERSED OPEN E WITH HOOK]
688 // Éž [LATIN SMALL LETTER CLOSED REVERSED OPEN E]
690 // Êš [LATIN SMALL LETTER CLOSED OPEN E]
692 // á´ˆ [LATIN SMALL LETTER TURNED OPEN E]
694 // ᶒ [LATIN SMALL LETTER E WITH RETROFLEX HOOK]
696 // ᶓ [LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK]
698 // �? [LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK]
700 // ḕ [LATIN SMALL LETTER E WITH MACRON AND GRAVE]
702 // ḗ [LATIN SMALL LETTER E WITH MACRON AND ACUTE]
704 // ḙ [LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW]
706 // ḛ [LATIN SMALL LETTER E WITH TILDE BELOW]
708 // � [LATIN SMALL LETTER E WITH CEDILLA AND BREVE]
710 // ẹ [LATIN SMALL LETTER E WITH DOT BELOW]
712 // ẻ [LATIN SMALL LETTER E WITH HOOK ABOVE]
714 // ẽ [LATIN SMALL LETTER E WITH TILDE]
716 // ế [LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE]
718 // � [LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE]
720 // ể [LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE]
722 // á»… [LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE]
724 // ệ [LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW]
726 // â‚‘ [LATIN SUBSCRIPT SMALL LETTER E]
728 // �? [CIRCLED LATIN SMALL LETTER E]
730 // ⱸ [LATIN SMALL LETTER E WITH NOTCH]
731 case '\uFF45': // ï½… [FULLWIDTH LATIN SMALL LETTER E]
732 output[outputPos++] = 'e';
735 case '\u24A0': // â’ [PARENTHESIZED LATIN SMALL LETTER E]
736 output[outputPos++] = '(';
737 output[outputPos++] = 'e';
738 output[outputPos++] = ')';
742 // Æ‘ [LATIN CAPITAL LETTER F WITH HOOK]
744 // Ḟ [LATIN CAPITAL LETTER F WITH DOT ABOVE]
746 // â’» [CIRCLED LATIN CAPITAL LETTER F]
748 // ꜰ [LATIN LETTER SMALL CAPITAL F]
750 // � [LATIN CAPITAL LETTER INSULAR F]
752 // ꟻ [LATIN EPIGRAPHIC LETTER REVERSED F]
753 case '\uFF26': // F [FULLWIDTH LATIN CAPITAL LETTER F]
754 output[outputPos++] = 'F';
758 // Æ’ [LATIN SMALL LETTER F WITH HOOK]
760 // áµ® [LATIN SMALL LETTER F WITH MIDDLE TILDE]
762 // ᶂ [LATIN SMALL LETTER F WITH PALATAL HOOK]
764 // ḟ [LATIN SMALL LETTER F WITH DOT ABOVE]
766 // ẛ [LATIN SMALL LETTER LONG S WITH DOT ABOVE]
768 // â“• [CIRCLED LATIN SMALL LETTER F]
770 // � [LATIN SMALL LETTER INSULAR F]
771 case '\uFF46': // f[FULLWIDTH LATIN SMALL LETTER F]
772 output[outputPos++] = 'f';
775 case '\u24A1': // â’¡ [PARENTHESIZED LATIN SMALL LETTER F]
776 output[outputPos++] = '(';
777 output[outputPos++] = 'f';
778 output[outputPos++] = ')';
781 case '\uFB00': // ff [LATIN SMALL LIGATURE FF]
782 output[outputPos++] = 'f';
783 output[outputPos++] = 'f';
786 case '\uFB03': // ffi [LATIN SMALL LIGATURE FFI]
787 output[outputPos++] = 'f';
788 output[outputPos++] = 'f';
789 output[outputPos++] = 'i';
792 case '\uFB04': // ffl [LATIN SMALL LIGATURE FFL]
793 output[outputPos++] = 'f';
794 output[outputPos++] = 'f';
795 output[outputPos++] = 'l';
798 case '\uFB01': // � [LATIN SMALL LIGATURE FI]
799 output[outputPos++] = 'f';
800 output[outputPos++] = 'i';
803 case '\uFB02': // fl [LATIN SMALL LIGATURE FL]
804 output[outputPos++] = 'f';
805 output[outputPos++] = 'l';
809 // Ĝ [LATIN CAPITAL LETTER G WITH CIRCUMFLEX]
811 // Äž [LATIN CAPITAL LETTER G WITH BREVE]
813 // Ä [LATIN CAPITAL LETTER G WITH DOT ABOVE]
815 // Ģ [LATIN CAPITAL LETTER G WITH CEDILLA]
817 // Æ“ [LATIN CAPITAL LETTER G WITH HOOK]
819 // Ǥ [LATIN CAPITAL LETTER G WITH STROKE]
821 // ǥ [LATIN SMALL LETTER G WITH STROKE]
823 // Ǧ [LATIN CAPITAL LETTER G WITH CARON]
825 // ǧ [LATIN SMALL LETTER G WITH CARON]
827 // Ç´ [LATIN CAPITAL LETTER G WITH ACUTE]
829 // ɢ [LATIN LETTER SMALL CAPITAL G]
831 // Ê› [LATIN LETTER SMALL CAPITAL G WITH HOOK]
833 // Ḡ[LATIN CAPITAL LETTER G WITH MACRON]
835 // â’¼ [CIRCLED LATIN CAPITAL LETTER G]
837 // � [LATIN CAPITAL LETTER INSULAR G]
839 // � [LATIN CAPITAL LETTER TURNED INSULAR G]
840 case '\uFF27': // G [FULLWIDTH LATIN CAPITAL LETTER G]
841 output[outputPos++] = 'G';
845 // � [LATIN SMALL LETTER G WITH CIRCUMFLEX]
847 // ÄŸ [LATIN SMALL LETTER G WITH BREVE]
849 // Ä¡ [LATIN SMALL LETTER G WITH DOT ABOVE]
851 // ģ [LATIN SMALL LETTER G WITH CEDILLA]
853 // ǵ [LATIN SMALL LETTER G WITH ACUTE]
855 // É [LATIN SMALL LETTER G WITH HOOK]
857 // É¡ [LATIN SMALL LETTER SCRIPT G]
859 // áµ· [LATIN SMALL LETTER TURNED G]
861 // áµ¹ [LATIN SMALL LETTER INSULAR G]
863 // ᶃ [LATIN SMALL LETTER G WITH PALATAL HOOK]
865 // ḡ [LATIN SMALL LETTER G WITH MACRON]
867 // â“– [CIRCLED LATIN SMALL LETTER G]
869 // � [LATIN SMALL LETTER TURNED INSULAR G]
870 case '\uFF47': // g [FULLWIDTH LATIN SMALL LETTER G]
871 output[outputPos++] = 'g';
874 case '\u24A2': // â’¢ [PARENTHESIZED LATIN SMALL LETTER G]
875 output[outputPos++] = '(';
876 output[outputPos++] = 'g';
877 output[outputPos++] = ')';
881 // Ĥ [LATIN CAPITAL LETTER H WITH CIRCUMFLEX]
883 // Ħ [LATIN CAPITAL LETTER H WITH STROKE]
885 // Èž [LATIN CAPITAL LETTER H WITH CARON]
887 // ʜ [LATIN LETTER SMALL CAPITAL H]
889 // Ḣ [LATIN CAPITAL LETTER H WITH DOT ABOVE]
891 // Ḥ [LATIN CAPITAL LETTER H WITH DOT BELOW]
893 // Ḧ [LATIN CAPITAL LETTER H WITH DIAERESIS]
895 // Ḩ [LATIN CAPITAL LETTER H WITH CEDILLA]
897 // Ḫ [LATIN CAPITAL LETTER H WITH BREVE BELOW]
899 // â’½ [CIRCLED LATIN CAPITAL LETTER H]
901 // Ⱨ [LATIN CAPITAL LETTER H WITH DESCENDER]
903 // â±µ [LATIN CAPITAL LETTER HALF H]
904 case '\uFF28': // H [FULLWIDTH LATIN CAPITAL LETTER H]
905 output[outputPos++] = 'H';
909 // ĥ [LATIN SMALL LETTER H WITH CIRCUMFLEX]
911 // ħ [LATIN SMALL LETTER H WITH STROKE]
913 // ÈŸ [LATIN SMALL LETTER H WITH CARON]
915 // ɥ [LATIN SMALL LETTER TURNED H]
917 // ɦ [LATIN SMALL LETTER H WITH HOOK]
919 // Ê® [LATIN SMALL LETTER TURNED H WITH FISHHOOK]
921 // ʯ [LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL]
923 // ḣ [LATIN SMALL LETTER H WITH DOT ABOVE]
925 // ḥ [LATIN SMALL LETTER H WITH DOT BELOW]
927 // ḧ [LATIN SMALL LETTER H WITH DIAERESIS]
929 // ḩ [LATIN SMALL LETTER H WITH CEDILLA]
931 // ḫ [LATIN SMALL LETTER H WITH BREVE BELOW]
933 // ẖ [LATIN SMALL LETTER H WITH LINE BELOW]
935 // â“— [CIRCLED LATIN SMALL LETTER H]
937 // ⱨ [LATIN SMALL LETTER H WITH DESCENDER]
939 // ⱶ [LATIN SMALL LETTER HALF H]
940 case '\uFF48': // h [FULLWIDTH LATIN SMALL LETTER H]
941 output[outputPos++] = 'h';
944 case '\u01F6': // Ƕ http://en.wikipedia.org/wiki/Hwair [LATIN CAPITAL LETTER HWAIR]
945 output[outputPos++] = 'H';
946 output[outputPos++] = 'V';
949 case '\u24A3': // â’£ [PARENTHESIZED LATIN SMALL LETTER H]
950 output[outputPos++] = '(';
951 output[outputPos++] = 'h';
952 output[outputPos++] = ')';
955 case '\u0195': // Æ• [LATIN SMALL LETTER HV]
956 output[outputPos++] = 'h';
957 output[outputPos++] = 'v';
961 // Ì [LATIN CAPITAL LETTER I WITH GRAVE]
963 // � [LATIN CAPITAL LETTER I WITH ACUTE]
965 // ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX]
967 // � [LATIN CAPITAL LETTER I WITH DIAERESIS]
969 // Ĩ [LATIN CAPITAL LETTER I WITH TILDE]
971 // Ī [LATIN CAPITAL LETTER I WITH MACRON]
973 // Ĭ [LATIN CAPITAL LETTER I WITH BREVE]
975 // Ä® [LATIN CAPITAL LETTER I WITH OGONEK]
977 // Ä° [LATIN CAPITAL LETTER I WITH DOT ABOVE]
979 // Æ– [LATIN CAPITAL LETTER IOTA]
981 // Æ— [LATIN CAPITAL LETTER I WITH STROKE]
983 // � [LATIN CAPITAL LETTER I WITH CARON]
985 // Ȉ [LATIN CAPITAL LETTER I WITH DOUBLE GRAVE]
987 // ÈŠ[LATIN CAPITAL LETTER I WITH INVERTED BREVE]
989 // ɪ [LATIN LETTER SMALL CAPITAL I]
991 // áµ» [LATIN SMALL CAPITAL LETTER I WITH STROKE]
993 // Ḭ [LATIN CAPITAL LETTER I WITH TILDE BELOW]
995 // Ḯ [LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE]
997 // Ỉ [LATIN CAPITAL LETTER I WITH HOOK ABOVE]
999 // Ị[LATIN CAPITAL LETTER I WITH DOT BELOW]
1001 // â’¾ [CIRCLED LATIN CAPITAL LETTER I]
1003 // ꟾ [LATIN EPIGRAPHIC LETTER I LONGA]
1004 case '\uFF29': // I [FULLWIDTH LATIN CAPITAL LETTER I]
1005 output[outputPos++] = 'I';
1009 // ì [LATIN SMALL LETTER I WITH GRAVE]
1011 // à[LATIN SMALL LETTER I WITH ACUTE]
1013 // î [LATIN SMALL LETTER I WITH CIRCUMFLEX]
1015 // ï [LATIN SMALL LETTER I WITH DIAERESIS]
1017 // Ä© [LATIN SMALL LETTER I WITH TILDE]
1019 // Ä« [LATIN SMALL LETTER I WITH MACRON]
1021 // Ä [LATIN SMALL LETTER I WITH BREVE]
1023 // į [LATIN SMALL LETTER I WITH OGONEK]
1025 // ı [LATIN SMALL LETTER DOTLESS I]
1027 // � [LATIN SMALL LETTER I WITH CARON]
1029 // ȉ [LATIN SMALL LETTER I WITH DOUBLE GRAVE]
1031 // È‹ [LATIN SMALL LETTER I WITH INVERTED BREVE]
1033 // ɨ [LATIN SMALL LETTER I WITH STROKE]
1035 // á´‰ [LATIN SMALL LETTER TURNED I]
1037 // áµ¢ [LATIN SUBSCRIPT SMALL LETTER I]
1039 // áµ¼ [LATIN SMALL LETTER IOTA WITH STROKE]
1041 // ᶖ [LATIN SMALL LETTER I WITH RETROFLEX HOOK]
1043 // Ḡ[LATIN SMALL LETTER I WITH TILDE BELOW]
1045 // ḯ [LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE]
1047 // ỉ [LATIN SMALL LETTER I WITH HOOK ABOVE]
1049 // ị [LATIN SMALL LETTER I WITH DOT BELOW]
1051 // � [SUPERSCRIPT LATIN SMALL LETTER I]
1053 // ⓘ [CIRCLED LATIN SMALL LETTER I]
1054 case '\uFF49': // i [FULLWIDTH LATIN SMALL LETTER I]
1055 output[outputPos++] = 'i';
1058 case '\u0132': // IJ [LATIN CAPITAL LIGATURE IJ]
1059 output[outputPos++] = 'I';
1060 output[outputPos++] = 'J';
1063 case '\u24A4': // â’¤ [PARENTHESIZED LATIN SMALL LETTER I]
1064 output[outputPos++] = '(';
1065 output[outputPos++] = 'i';
1066 output[outputPos++] = ')';
1069 case '\u0133': // ij [LATIN SMALL LIGATURE IJ]
1070 output[outputPos++] = 'i';
1071 output[outputPos++] = 'j';
1075 // Ä´ [LATIN CAPITAL LETTER J WITH CIRCUMFLEX]
1077 // Ɉ [LATIN CAPITAL LETTER J WITH STROKE]
1079 // á´Š[LATIN LETTER SMALL CAPITAL J]
1081 // â’¿ [CIRCLED LATIN CAPITAL LETTER J]
1082 case '\uFF2A': // J [FULLWIDTH LATIN CAPITAL LETTER J]
1083 output[outputPos++] = 'J';
1087 // ĵ [LATIN SMALL LETTER J WITH CIRCUMFLEX]
1089 // Ç° [LATIN SMALL LETTER J WITH CARON]
1091 // È· [LATIN SMALL LETTER DOTLESS J]
1093 // ɉ [LATIN SMALL LETTER J WITH STROKE]
1095 // ÉŸ [LATIN SMALL LETTER DOTLESS J WITH STROKE]
1097 // Ê„ [LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK]
1099 // � [LATIN SMALL LETTER J WITH CROSSED-TAIL]
1101 // â“™ [CIRCLED LATIN SMALL LETTER J]
1103 // â±¼ [LATIN SUBSCRIPT SMALL LETTER J]
1104 case '\uFF4A': // j[FULLWIDTH LATIN SMALL LETTER J]
1105 output[outputPos++] = 'j';
1108 case '\u24A5': // â’¥ [PARENTHESIZED LATIN SMALL LETTER J]
1109 output[outputPos++] = '(';
1110 output[outputPos++] = 'j';
1111 output[outputPos++] = ')';
1115 // Ķ [LATIN CAPITAL LETTER K WITH CEDILLA]
1117 // Ƙ [LATIN CAPITAL LETTER K WITH HOOK]
1119 // Ǩ [LATIN CAPITAL LETTER K WITH CARON]
1121 // á´‹ [LATIN LETTER SMALL CAPITAL K]
1123 // Ḱ [LATIN CAPITAL LETTER K WITH ACUTE]
1125 // Ḳ [LATIN CAPITAL LETTER K WITH DOT BELOW]
1127 // Ḵ [LATIN CAPITAL LETTER K WITH LINE BELOW]
1129 // â“€ [CIRCLED LATIN CAPITAL LETTER K]
1131 // Ⱪ [LATIN CAPITAL LETTER K WITH DESCENDER]
1133 // � [LATIN CAPITAL LETTER K WITH STROKE]
1135 // � [LATIN CAPITAL LETTER K WITH DIAGONAL STROKE]
1137 // � [LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE]
1138 case '\uFF2B': // K [FULLWIDTH LATIN CAPITAL LETTER K]
1139 output[outputPos++] = 'K';
1143 // Ä· [LATIN SMALL LETTER K WITH CEDILLA]
1145 // Æ™ [LATIN SMALL LETTER K WITH HOOK]
1147 // Ç© [LATIN SMALL LETTER K WITH CARON]
1149 // Êž [LATIN SMALL LETTER TURNED K]
1151 // ᶄ [LATIN SMALL LETTER K WITH PALATAL HOOK]
1153 // ḱ [LATIN SMALL LETTER K WITH ACUTE]
1155 // ḳ [LATIN SMALL LETTER K WITH DOT BELOW]
1157 // ḵ [LATIN SMALL LETTER K WITH LINE BELOW]
1159 // â“š [CIRCLED LATIN SMALL LETTER K]
1161 // ⱪ [LATIN SMALL LETTER K WITH DESCENDER]
1163 // � [LATIN SMALL LETTER K WITH STROKE]
1165 // � [LATIN SMALL LETTER K WITH DIAGONAL STROKE]
1167 // � [LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE]
1168 case '\uFF4B': // k [FULLWIDTH LATIN SMALL LETTER K]
1169 output[outputPos++] = 'k';
1172 case '\u24A6': // â’¦ [PARENTHESIZED LATIN SMALL LETTER K]
1173 output[outputPos++] = '(';
1174 output[outputPos++] = 'k';
1175 output[outputPos++] = ')';
1179 // Ĺ [LATIN CAPITAL LETTER L WITH ACUTE]
1181 // Ä» [LATIN CAPITAL LETTER L WITH CEDILLA]
1183 // Ľ [LATIN CAPITAL LETTER L WITH CARON]
1185 // Ä¿ [LATIN CAPITAL LETTER L WITH MIDDLE DOT]
1187 // � [LATIN CAPITAL LETTER L WITH STROKE]
1189 // Ƚ [LATIN CAPITAL LETTER L WITH BAR]
1191 // ÊŸ [LATIN LETTER SMALL CAPITAL L]
1193 // ᴌ [LATIN LETTER SMALL CAPITAL L WITH STROKE]
1195 // Ḷ [LATIN CAPITAL LETTER L WITH DOT BELOW]
1197 // Ḹ [LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON]
1199 // Ḻ [LATIN CAPITAL LETTER L WITH LINE BELOW]
1201 // Ḽ [LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW]
1203 // � [CIRCLED LATIN CAPITAL LETTER L]
1205 // â± [LATIN CAPITAL LETTER L WITH DOUBLE BAR]
1207 // â±¢ [LATIN CAPITAL LETTER L WITH MIDDLE TILDE]
1209 // �[LATIN CAPITAL LETTER BROKEN L]
1211 // � [LATIN CAPITAL LETTER L WITH HIGH STROKE]
1213 // Ꞁ [LATIN CAPITAL LETTER TURNED L]
1214 case '\uFF2C': // L [FULLWIDTH LATIN CAPITAL LETTER L]
1215 output[outputPos++] = 'L';
1219 // ĺ [LATIN SMALL LETTER L WITH ACUTE]
1221 // ļ [LATIN SMALL LETTER L WITH CEDILLA]
1223 // ľ [LATIN SMALL LETTER L WITH CARON]
1225 // ŀ [LATIN SMALL LETTER L WITH MIDDLE DOT]
1227 // Å‚ [LATIN SMALL LETTER L WITH STROKE]
1229 // Æš [LATIN SMALL LETTER L WITH BAR]
1231 // È´ [LATIN SMALL LETTER L WITH CURL]
1233 // É« [LATIN SMALL LETTER L WITH MIDDLE TILDE]
1235 // ɬ [LATIN SMALL LETTER L WITH BELT]
1237 // É [LATIN SMALL LETTER L WITH RETROFLEX HOOK]
1239 // ᶅ [LATIN SMALL LETTER L WITH PALATAL HOOK]
1241 // ḷ [LATIN SMALL LETTER L WITH DOT BELOW]
1243 // ḹ [LATIN SMALL LETTER L WITH DOT BELOW AND MACRON]
1245 // ḻ [LATIN SMALL LETTER L WITH LINE BELOW]
1247 // ḽ [LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW]
1249 // â“› [CIRCLED LATIN SMALL LETTER L]
1251 // ⱡ [LATIN SMALL LETTER L WITH DOUBLE BAR]
1253 // � [LATIN SMALL LETTER BROKEN L]
1255 // � [LATIN SMALL LETTER L WITH HIGH STROKE]
1257 // � [LATIN SMALL LETTER TURNED L]
1258 case '\uFF4C': // l [FULLWIDTH LATIN SMALL LETTER L]
1259 output[outputPos++] = 'l';
1262 case '\u01C7': // LJ [LATIN CAPITAL LETTER LJ]
1263 output[outputPos++] = 'L';
1264 output[outputPos++] = 'J';
1267 case '\u1EFA': // Ỻ [LATIN CAPITAL LETTER MIDDLE-WELSH LL]
1268 output[outputPos++] = 'L';
1269 output[outputPos++] = 'L';
1272 case '\u01C8': // Lj [LATIN CAPITAL LETTER L WITH SMALL LETTER J]
1273 output[outputPos++] = 'L';
1274 output[outputPos++] = 'j';
1277 case '\u24A7': // â’§ [PARENTHESIZED LATIN SMALL LETTER L]
1278 output[outputPos++] = '(';
1279 output[outputPos++] = 'l';
1280 output[outputPos++] = ')';
1283 case '\u01C9': // lj [LATIN SMALL LETTER LJ]
1284 output[outputPos++] = 'l';
1285 output[outputPos++] = 'j';
1288 case '\u1EFB': // á»» [LATIN SMALL LETTER MIDDLE-WELSH LL]
1289 output[outputPos++] = 'l';
1290 output[outputPos++] = 'l';
1293 case '\u02AA': // ʪ [LATIN SMALL LETTER LS DIGRAPH]
1294 output[outputPos++] = 'l';
1295 output[outputPos++] = 's';
1298 case '\u02AB': // Ê« [LATIN SMALL LETTER LZ DIGRAPH]
1299 output[outputPos++] = 'l';
1300 output[outputPos++] = 'z';
1304 // Ɯ [LATIN CAPITAL LETTER TURNED M]
1306 // á´� [LATIN LETTER SMALL CAPITAL M]
1308 // Ḿ [LATIN CAPITAL LETTER M WITH ACUTE]
1310 // á¹€ [LATIN CAPITAL LETTER M WITH DOT ABOVE]
1312 // Ṃ [LATIN CAPITAL LETTER M WITH DOT BELOW]
1314 // â“‚ [CIRCLED LATIN CAPITAL LETTER M]
1316 // â±® [LATIN CAPITAL LETTER M WITH HOOK]
1318 // ꟽ [LATIN EPIGRAPHIC LETTER INVERTED M]
1320 // ꟿ [LATIN EPIGRAPHIC LETTER ARCHAIC M]
1321 case '\uFF2D': // ï¼ [FULLWIDTH LATIN CAPITAL LETTER M]
1322 output[outputPos++] = 'M';
1326 // ɯ [LATIN SMALL LETTER TURNED M]
1328 // É° [LATIN SMALL LETTER TURNED M WITH LONG LEG]
1330 // ɱ [LATIN SMALL LETTER M WITH HOOK]
1332 // ᵯ [LATIN SMALL LETTER M WITH MIDDLE TILDE]
1334 // ᶆ[LATIN SMALL LETTER M WITH PALATAL HOOK]
1336 // ḿ [LATIN SMALL LETTER M WITH ACUTE]
1338 // � [LATIN SMALL LETTER M WITH DOT ABOVE]
1340 // ṃ [LATIN SMALL LETTER M WITH DOT BELOW]
1342 // ⓜ [CIRCLED LATIN SMALL LETTER M]
1343 case '\uFF4D': // � [FULLWIDTH LATIN SMALL LETTER M]
1344 output[outputPos++] = 'm';
1347 case '\u24A8': // â’¨ [PARENTHESIZED LATIN SMALL LETTER M]
1348 output[outputPos++] = '(';
1349 output[outputPos++] = 'm';
1350 output[outputPos++] = ')';
1354 // Ñ [LATIN CAPITAL LETTER N WITH TILDE]
1356 // Ã…Æ’ [LATIN CAPITAL LETTER N WITH ACUTE]
1358 // Å… [LATIN CAPITAL LETTER N WITH CEDILLA]
1360 // Ň [LATIN CAPITAL LETTER N WITH CARON]
1362 // Ã…Å http://en.wikipedia.org/wiki/Eng_(letter) [LATIN CAPITAL LETTER ENG]
1364 // � [LATIN CAPITAL LETTER N WITH LEFT HOOK]
1366 // Ǹ [LATIN CAPITAL LETTER N WITH GRAVE]
1368 // È [LATIN CAPITAL LETTER N WITH LONG RIGHT LEG]
1370 // É´ [LATIN LETTER SMALL CAPITAL N]
1372 // á´Ž [LATIN LETTER SMALL CAPITAL REVERSED N]
1374 // Ṅ [LATIN CAPITAL LETTER N WITH DOT ABOVE]
1376 // Ṇ[LATIN CAPITAL LETTER N WITH DOT BELOW]
1378 // Ṉ [LATIN CAPITAL LETTER N WITH LINE BELOW]
1380 // Ṋ[LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW]
1382 // Ⓝ [CIRCLED LATIN CAPITAL LETTER N]
1383 case '\uFF2E': // ï¼® [FULLWIDTH LATIN CAPITAL LETTER N]
1384 output[outputPos++] = 'N';
1388 // ñ [LATIN SMALL LETTER N WITH TILDE]
1390 // Å„ [LATIN SMALL LETTER N WITH ACUTE]
1392 // ņ[LATIN SMALL LETTER N WITH CEDILLA]
1394 // ň [LATIN SMALL LETTER N WITH CARON]
1396 // ʼn [LATIN SMALL LETTER N PRECEDED BY APOSTROPHE]
1398 // Å‹ http://en.wikipedia.org/wiki/Eng_(letter) [LATIN SMALL LETTER ENG]
1400 // Æž [LATIN SMALL LETTER N WITH LONG RIGHT LEG]
1402 // ǹ [LATIN SMALL LETTER N WITH GRAVE]
1404 // ȵ [LATIN SMALL LETTER N WITH CURL]
1406 // ɲ [LATIN SMALL LETTER N WITH LEFT HOOK]
1408 // ɳ [LATIN SMALL LETTER N WITH RETROFLEX HOOK]
1410 // áµ° [LATIN SMALL LETTER N WITH MIDDLE TILDE]
1412 // ᶇ [LATIN SMALL LETTER N WITH PALATAL HOOK]
1414 // á¹… [LATIN SMALL LETTER N WITH DOT ABOVE]
1416 // ṇ [LATIN SMALL LETTER N WITH DOT BELOW]
1418 // ṉ [LATIN SMALL LETTER N WITH LINE BELOW]
1420 // ṋ [LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW]
1422 // � [SUPERSCRIPT LATIN SMALL LETTER N]
1424 // � [CIRCLED LATIN SMALL LETTER N]
1425 case '\uFF4E': // n [FULLWIDTH LATIN SMALL LETTER N]
1426 output[outputPos++] = 'n';
1429 case '\u01CA': // ÇŠ[LATIN CAPITAL LETTER NJ]
1430 output[outputPos++] = 'N';
1431 output[outputPos++] = 'J';
1434 case '\u01CB': // Ç‹ [LATIN CAPITAL LETTER N WITH SMALL LETTER J]
1435 output[outputPos++] = 'N';
1436 output[outputPos++] = 'j';
1439 case '\u24A9': // â’© [PARENTHESIZED LATIN SMALL LETTER N]
1440 output[outputPos++] = '(';
1441 output[outputPos++] = 'n';
1442 output[outputPos++] = ')';
1445 case '\u01CC': // nj [LATIN SMALL LETTER NJ]
1446 output[outputPos++] = 'n';
1447 output[outputPos++] = 'j';
1451 // Ã’ [LATIN CAPITAL LETTER O WITH GRAVE]
1453 // Ó [LATIN CAPITAL LETTER O WITH ACUTE]
1455 // �? [LATIN CAPITAL LETTER O WITH CIRCUMFLEX]
1457 // Õ [LATIN CAPITAL LETTER O WITH TILDE]
1459 // Ö [LATIN CAPITAL LETTER O WITH DIAERESIS]
1461 // Ø [LATIN CAPITAL LETTER O WITH STROKE]
1463 // Ã…Å’ [LATIN CAPITAL LETTER O WITH MACRON]
1465 // ÅŽ [LATIN CAPITAL LETTER O WITH BREVE]
1467 // � [LATIN CAPITAL LETTER O WITH DOUBLE ACUTE]
1469 // Ɔ[LATIN CAPITAL LETTER OPEN O]
1471 // ÆŸ [LATIN CAPITAL LETTER O WITH MIDDLE TILDE]
1473 // Æ [LATIN CAPITAL LETTER O WITH HORN]
1475 // Ç‘ [LATIN CAPITAL LETTER O WITH CARON]
1477 // Ǫ [LATIN CAPITAL LETTER O WITH OGONEK]
1479 // Ǭ [LATIN CAPITAL LETTER O WITH OGONEK AND MACRON]
1481 // Ǿ [LATIN CAPITAL LETTER O WITH STROKE AND ACUTE]
1483 // Ȍ [LATIN CAPITAL LETTER O WITH DOUBLE GRAVE]
1485 // ÈŽ [LATIN CAPITAL LETTER O WITH INVERTED BREVE]
1487 // Ȫ [LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON]
1489 // Ȭ [LATIN CAPITAL LETTER O WITH TILDE AND MACRON]
1491 // È® [LATIN CAPITAL LETTER O WITH DOT ABOVE]
1493 // È° [LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON]
1495 // á´� [LATIN LETTER SMALL CAPITAL O]
1497 // á´� [LATIN LETTER SMALL CAPITAL OPEN O]
1499 // Ṍ [LATIN CAPITAL LETTER O WITH TILDE AND ACUTE]
1501 // Ṏ [LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS]
1503 // � [LATIN CAPITAL LETTER O WITH MACRON AND GRAVE]
1505 // á¹’ [LATIN CAPITAL LETTER O WITH MACRON AND ACUTE]
1507 // Ọ [LATIN CAPITAL LETTER O WITH DOT BELOW]
1509 // Ỏ [LATIN CAPITAL LETTER O WITH HOOK ABOVE]
1511 // � [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE]
1513 // á»’ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE]
1515 // �? [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE]
1517 // á»– [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE]
1519 // Ộ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW]
1521 // Ớ [LATIN CAPITAL LETTER O WITH HORN AND ACUTE]
1523 // Ờ [LATIN CAPITAL LETTER O WITH HORN AND GRAVE]
1525 // Ở [LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE]
1527 // á» [LATIN CAPITAL LETTER O WITH HORN AND TILDE]
1529 // Ợ [LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW]
1531 // â“„ [CIRCLED LATIN CAPITAL LETTER O]
1533 // �[LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY]
1535 // � [LATIN CAPITAL LETTER O WITH LOOP]
1536 case '\uFF2F': // O [FULLWIDTH LATIN CAPITAL LETTER O]
1537 output[outputPos++] = 'O';
1541 // ò [LATIN SMALL LETTER O WITH GRAVE]
1543 // ó [LATIN SMALL LETTER O WITH ACUTE]
1545 // ô [LATIN SMALL LETTER O WITH CIRCUMFLEX]
1547 // õ [LATIN SMALL LETTER O WITH TILDE]
1549 // ö [LATIN SMALL LETTER O WITH DIAERESIS]
1551 // ø [LATIN SMALL LETTER O WITH STROKE]
1553 // � [LATIN SMALL LETTER O WITH MACRON]
1555 // � [LATIN SMALL LETTER O WITH BREVE]
1557 // Å‘ [LATIN SMALL LETTER O WITH DOUBLE ACUTE]
1559 // Æ¡ [LATIN SMALL LETTER O WITH HORN]
1561 // Ç’ [LATIN SMALL LETTER O WITH CARON]
1563 // Ç« [LATIN SMALL LETTER O WITH OGONEK]
1565 // Ç [LATIN SMALL LETTER O WITH OGONEK AND MACRON]
1567 // Ç¿ [LATIN SMALL LETTER O WITH STROKE AND ACUTE]
1569 // � [LATIN SMALL LETTER O WITH DOUBLE GRAVE]
1571 // � [LATIN SMALL LETTER O WITH INVERTED BREVE]
1573 // È« [LATIN SMALL LETTER O WITH DIAERESIS AND MACRON]
1575 // È [LATIN SMALL LETTER O WITH TILDE AND MACRON]
1577 // ȯ [LATIN SMALL LETTER O WITH DOT ABOVE]
1579 // ȱ [LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON]
1581 // �? [LATIN SMALL LETTER OPEN O]
1583 // ɵ [LATIN SMALL LETTER BARRED O]
1585 // á´– [LATIN SMALL LETTER TOP HALF O]
1587 // á´— [LATIN SMALL LETTER BOTTOM HALF O]
1589 // ᶗ [LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK]
1591 // � [LATIN SMALL LETTER O WITH TILDE AND ACUTE]
1593 // � [LATIN SMALL LETTER O WITH TILDE AND DIAERESIS]
1595 // ṑ [LATIN SMALL LETTER O WITH MACRON AND GRAVE]
1597 // ṓ [LATIN SMALL LETTER O WITH MACRON AND ACUTE]
1599 // � [LATIN SMALL LETTER O WITH DOT BELOW]
1601 // � [LATIN SMALL LETTER O WITH HOOK ABOVE]
1603 // ố [LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE]
1605 // ồ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE]
1607 // ổ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE]
1609 // á»— [LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE]
1611 // á»™ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW]
1613 // á»› [LATIN SMALL LETTER O WITH HORN AND ACUTE]
1615 // � [LATIN SMALL LETTER O WITH HORN AND GRAVE]
1617 // ở [LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE]
1619 // ỡ [LATIN SMALL LETTER O WITH HORN AND TILDE]
1621 // ợ [LATIN SMALL LETTER O WITH HORN AND DOT BELOW]
1623 // â‚’ [LATIN SUBSCRIPT SMALL LETTER O]
1625 // â“ž [CIRCLED LATIN SMALL LETTER O]
1627 // ⱺ [LATIN SMALL LETTER O WITH LOW RING INSIDE]
1629 // � [LATIN SMALL LETTER O WITH LONG STROKE OVERLAY]
1631 // � [LATIN SMALL LETTER O WITH LOOP]
1632 case '\uFF4F': // � [FULLWIDTH LATIN SMALL LETTER O]
1633 output[outputPos++] = 'o';
1637 // Å’ [LATIN CAPITAL LIGATURE OE]
1638 case '\u0276': // ɶ [LATIN LETTER SMALL CAPITAL OE]
1639 output[outputPos++] = 'O';
1640 output[outputPos++] = 'E';
1643 case '\uA74E': // � [LATIN CAPITAL LETTER OO]
1644 output[outputPos++] = 'O';
1645 output[outputPos++] = 'O';
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';
1655 case '\u24AA': // â’ª [PARENTHESIZED LATIN SMALL LETTER O]
1656 output[outputPos++] = '(';
1657 output[outputPos++] = 'o';
1658 output[outputPos++] = ')';
1662 // Å“ [LATIN SMALL LIGATURE OE]
1663 case '\u1D14': // á´�? [LATIN SMALL LETTER TURNED OE]
1664 output[outputPos++] = 'o';
1665 output[outputPos++] = 'e';
1668 case '\uA74F': // � [LATIN SMALL LETTER OO]
1669 output[outputPos++] = 'o';
1670 output[outputPos++] = 'o';
1673 case '\u0223': // ȣ http://en.wikipedia.org/wiki/OU [LATIN SMALL LETTER OU]
1674 output[outputPos++] = 'o';
1675 output[outputPos++] = 'u';
1679 // Ƥ [LATIN CAPITAL LETTER P WITH HOOK]
1681 // á´˜ [LATIN LETTER SMALL CAPITAL P]
1683 // �? [LATIN CAPITAL LETTER P WITH ACUTE]
1685 // á¹– [LATIN CAPITAL LETTER P WITH DOT ABOVE]
1687 // â“… [CIRCLED LATIN CAPITAL LETTER P]
1689 // â±£ [LATIN CAPITAL LETTER P WITH STROKE]
1691 // � [LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER]
1693 // � [LATIN CAPITAL LETTER P WITH FLOURISH]
1695 // �? [LATIN CAPITAL LETTER P WITH SQUIRREL TAIL]
1696 case '\uFF30': // ï¼° [FULLWIDTH LATIN CAPITAL LETTER P]
1697 output[outputPos++] = 'P';
1701 // ƥ [LATIN SMALL LETTER P WITH HOOK]
1703 // áµ± [LATIN SMALL LETTER P WITH MIDDLE TILDE]
1705 // áµ½ [LATIN SMALL LETTER P WITH STROKE]
1707 // ᶈ [LATIN SMALL LETTER P WITH PALATAL HOOK]
1709 // ṕ [LATIN SMALL LETTER P WITH ACUTE]
1711 // á¹— [LATIN SMALL LETTER P WITH DOT ABOVE]
1713 // â“Ÿ [CIRCLED LATIN SMALL LETTER P]
1715 // � [LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER]
1717 // � [LATIN SMALL LETTER P WITH FLOURISH]
1719 // � [LATIN SMALL LETTER P WITH SQUIRREL TAIL]
1721 // ꟼ [LATIN EPIGRAPHIC LETTER REVERSED P]
1722 case '\uFF50': // � [FULLWIDTH LATIN SMALL LETTER P]
1723 output[outputPos++] = 'p';
1726 case '\u24AB': // â’« [PARENTHESIZED LATIN SMALL LETTER P]
1727 output[outputPos++] = '(';
1728 output[outputPos++] = 'p';
1729 output[outputPos++] = ')';
1733 // ÉŠ[LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL]
1735 // Ⓠ[CIRCLED LATIN CAPITAL LETTER Q]
1737 // � [LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER]
1739 // � [LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE]
1740 case '\uFF31': // ï¼± [FULLWIDTH LATIN CAPITAL LETTER Q]
1741 output[outputPos++] = 'Q';
1745 // ĸ http://en.wikipedia.org/wiki/Kra_(letter) [LATIN SMALL LETTER KRA]
1747 // É‹ [LATIN SMALL LETTER Q WITH HOOK TAIL]
1749 // Ê [LATIN SMALL LETTER Q WITH HOOK]
1751 // â“ [CIRCLED LATIN SMALL LETTER Q]
1753 // � [LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER]
1755 // � [LATIN SMALL LETTER Q WITH DIAGONAL STROKE]
1756 case '\uFF51': // q [FULLWIDTH LATIN SMALL LETTER Q]
1757 output[outputPos++] = 'q';
1760 case '\u24AC': // â’¬ [PARENTHESIZED LATIN SMALL LETTER Q]
1761 output[outputPos++] = '(';
1762 output[outputPos++] = 'q';
1763 output[outputPos++] = ')';
1766 case '\u0239': // ȹ [LATIN SMALL LETTER QP DIGRAPH]
1767 output[outputPos++] = 'q';
1768 output[outputPos++] = 'p';
1772 // �? [LATIN CAPITAL LETTER R WITH ACUTE]
1774 // Å– [LATIN CAPITAL LETTER R WITH CEDILLA]
1776 // Ř [LATIN CAPITAL LETTER R WITH CARON]
1778 // È’ [LATIN CAPITAL LETTER R WITH DOUBLE GRAVE]
1780 // È’ [LATIN CAPITAL LETTER R WITH INVERTED BREVE]
1782 // Ɍ [LATIN CAPITAL LETTER R WITH STROKE]
1784 // ʀ [LATIN LETTER SMALL CAPITAL R]
1786 // � [LATIN LETTER SMALL CAPITAL INVERTED R]
1788 // á´™ [LATIN LETTER SMALL CAPITAL REVERSED R]
1790 // á´š [LATIN LETTER SMALL CAPITAL TURNED R]
1792 // Ṙ [LATIN CAPITAL LETTER R WITH DOT ABOVE]
1794 // Ṛ [LATIN CAPITAL LETTER R WITH DOT BELOW]
1796 // Ṝ [LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON]
1798 // Ṟ [LATIN CAPITAL LETTER R WITH LINE BELOW]
1800 // Ⓡ [CIRCLED LATIN CAPITAL LETTER R]
1802 // Ɽ [LATIN CAPITAL LETTER R WITH TAIL]
1804 // � [LATIN CAPITAL LETTER R ROTUNDA]
1806 // êž‚ [LATIN CAPITAL LETTER INSULAR R]
1807 case '\uFF32': // ï¼² [FULLWIDTH LATIN CAPITAL LETTER R]
1808 output[outputPos++] = 'R';
1812 // Å• [LATIN SMALL LETTER R WITH ACUTE]
1814 // Å— [LATIN SMALL LETTER R WITH CEDILLA]
1816 // Ã…â„¢ [LATIN SMALL LETTER R WITH CARON]
1818 // È‘ [LATIN SMALL LETTER R WITH DOUBLE GRAVE]
1820 // È“ [LATIN SMALL LETTER R WITH INVERTED BREVE]
1822 // � [LATIN SMALL LETTER R WITH STROKE]
1824 // ɼ [LATIN SMALL LETTER R WITH LONG LEG]
1826 // ɽ [LATIN SMALL LETTER R WITH TAIL]
1828 // ɾ [LATIN SMALL LETTER R WITH FISHHOOK]
1830 // É¿ [LATIN SMALL LETTER REVERSED R WITH FISHHOOK]
1832 // áµ£ [LATIN SUBSCRIPT SMALL LETTER R]
1834 // áµ² [LATIN SMALL LETTER R WITH MIDDLE TILDE]
1836 // áµ³ [LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE]
1838 // ᶉ [LATIN SMALL LETTER R WITH PALATAL HOOK]
1840 // á¹™ [LATIN SMALL LETTER R WITH DOT ABOVE]
1842 // á¹› [LATIN SMALL LETTER R WITH DOT BELOW]
1844 // � [LATIN SMALL LETTER R WITH DOT BELOW AND MACRON]
1846 // ṟ [LATIN SMALL LETTER R WITH LINE BELOW]
1848 // â“¡ [CIRCLED LATIN SMALL LETTER R]
1850 // � [LATIN SMALL LETTER R ROTUNDA]
1852 // ꞃ [LATIN SMALL LETTER INSULAR R]
1853 case '\uFF52': // ï½’ [FULLWIDTH LATIN SMALL LETTER R]
1854 output[outputPos++] = 'r';
1857 case '\u24AD': // â’ [PARENTHESIZED LATIN SMALL LETTER R]
1858 output[outputPos++] = '(';
1859 output[outputPos++] = 'r';
1860 output[outputPos++] = ')';
1864 // Ã…Å¡ [LATIN CAPITAL LETTER S WITH ACUTE]
1866 // Ã…Å“ [LATIN CAPITAL LETTER S WITH CIRCUMFLEX]
1868 // Åž [LATIN CAPITAL LETTER S WITH CEDILLA]
1870 // Ã…Â [LATIN CAPITAL LETTER S WITH CARON]
1872 // Ș [LATIN CAPITAL LETTER S WITH COMMA BELOW]
1874 // á¹ [LATIN CAPITAL LETTER S WITH DOT ABOVE]
1876 // á¹¢ [LATIN CAPITAL LETTER S WITH DOT BELOW]
1878 // Ṥ [LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE]
1880 // Ṧ [LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE]
1882 // Ṩ [LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE]
1884 // Ⓢ [CIRCLED LATIN CAPITAL LETTER S]
1886 // ꜱ [LATIN LETTER SMALL CAPITAL S]
1888 // êž… [LATIN SMALL LETTER INSULAR S]
1889 case '\uFF33': // ï¼³ [FULLWIDTH LATIN CAPITAL LETTER S]
1890 output[outputPos++] = 'S';
1894 // Å› [LATIN SMALL LETTER S WITH ACUTE]
1896 // � [LATIN SMALL LETTER S WITH CIRCUMFLEX]
1898 // ÅŸ [LATIN SMALL LETTER S WITH CEDILLA]
1900 // Å¡ [LATIN SMALL LETTER S WITH CARON]
1902 // Å¿ http://en.wikipedia.org/wiki/Long_S [LATIN SMALL LETTER LONG S]
1904 // È™ [LATIN SMALL LETTER S WITH COMMA BELOW]
1906 // È¿ [LATIN SMALL LETTER S WITH SWASH TAIL]
1908 // Ê‚ [LATIN SMALL LETTER S WITH HOOK]
1910 // áµ´ [LATIN SMALL LETTER S WITH MIDDLE TILDE]
1912 // ᶊ[LATIN SMALL LETTER S WITH PALATAL HOOK]
1914 // ṡ [LATIN SMALL LETTER S WITH DOT ABOVE]
1916 // á¹£ [LATIN SMALL LETTER S WITH DOT BELOW]
1918 // á¹¥ [LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE]
1920 // ṧ [LATIN SMALL LETTER S WITH CARON AND DOT ABOVE]
1922 // ṩ [LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE]
1924 // ẜ [LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE]
1926 // � [LATIN SMALL LETTER LONG S WITH HIGH STROKE]
1928 // â“¢ [CIRCLED LATIN SMALL LETTER S]
1930 // êž„ [LATIN CAPITAL LETTER INSULAR S]
1931 case '\uFF53': // s [FULLWIDTH LATIN SMALL LETTER S]
1932 output[outputPos++] = 's';
1935 case '\u1E9E': // ẞ [LATIN CAPITAL LETTER SHARP S]
1936 output[outputPos++] = 'S';
1937 output[outputPos++] = 'S';
1940 case '\u24AE': // â’® [PARENTHESIZED LATIN SMALL LETTER S]
1941 output[outputPos++] = '(';
1942 output[outputPos++] = 's';
1943 output[outputPos++] = ')';
1946 case '\u00DF': // ß [LATIN SMALL LETTER SHARP S]
1947 output[outputPos++] = 's';
1948 output[outputPos++] = 's';
1951 case '\uFB06': // st[LATIN SMALL LIGATURE ST]
1952 output[outputPos++] = 's';
1953 output[outputPos++] = 't';
1957 // Ţ [LATIN CAPITAL LETTER T WITH CEDILLA]
1959 // Ť [LATIN CAPITAL LETTER T WITH CARON]
1961 // Ŧ [LATIN CAPITAL LETTER T WITH STROKE]
1963 // Ƭ [LATIN CAPITAL LETTER T WITH HOOK]
1965 // Æ® [LATIN CAPITAL LETTER T WITH RETROFLEX HOOK]
1967 // Èš [LATIN CAPITAL LETTER T WITH COMMA BELOW]
1969 // Ⱦ [LATIN CAPITAL LETTER T WITH DIAGONAL STROKE]
1971 // á´› [LATIN LETTER SMALL CAPITAL T]
1973 // Ṫ [LATIN CAPITAL LETTER T WITH DOT ABOVE]
1975 // Ṭ [LATIN CAPITAL LETTER T WITH DOT BELOW]
1977 // á¹® [LATIN CAPITAL LETTER T WITH LINE BELOW]
1979 // á¹° [LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW]
1981 // Ⓣ [CIRCLED LATIN CAPITAL LETTER T]
1983 // Ꞇ[LATIN CAPITAL LETTER INSULAR T]
1984 case '\uFF34': // ï¼´ [FULLWIDTH LATIN CAPITAL LETTER T]
1985 output[outputPos++] = 'T';
1989 // ţ [LATIN SMALL LETTER T WITH CEDILLA]
1991 // Ã…Â¥ [LATIN SMALL LETTER T WITH CARON]
1993 // ŧ [LATIN SMALL LETTER T WITH STROKE]
1995 // Æ« [LATIN SMALL LETTER T WITH PALATAL HOOK]
1997 // Æ [LATIN SMALL LETTER T WITH HOOK]
1999 // È› [LATIN SMALL LETTER T WITH COMMA BELOW]
2001 // ȶ [LATIN SMALL LETTER T WITH CURL]
2003 // ʇ [LATIN SMALL LETTER TURNED T]
2005 // ʈ [LATIN SMALL LETTER T WITH RETROFLEX HOOK]
2007 // áµµ [LATIN SMALL LETTER T WITH MIDDLE TILDE]
2009 // ṫ [LATIN SMALL LETTER T WITH DOT ABOVE]
2011 // á¹ [LATIN SMALL LETTER T WITH DOT BELOW]
2013 // ṯ [LATIN SMALL LETTER T WITH LINE BELOW]
2015 // á¹± [LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW]
2017 // ẗ [LATIN SMALL LETTER T WITH DIAERESIS]
2019 // â“£ [CIRCLED LATIN SMALL LETTER T]
2021 // ⱦ [LATIN SMALL LETTER T WITH DIAGONAL STROKE]
2022 case '\uFF54': // �? [FULLWIDTH LATIN SMALL LETTER T]
2023 output[outputPos++] = 't';
2027 // Þ [LATIN CAPITAL LETTER THORN]
2028 case '\uA766': // � [LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER]
2029 output[outputPos++] = 'T';
2030 output[outputPos++] = 'H';
2033 case '\uA728': // Ꜩ [LATIN CAPITAL LETTER TZ]
2034 output[outputPos++] = 'T';
2035 output[outputPos++] = 'Z';
2038 case '\u24AF': // â’¯ [PARENTHESIZED LATIN SMALL LETTER T]
2039 output[outputPos++] = '(';
2040 output[outputPos++] = 't';
2041 output[outputPos++] = ')';
2044 case '\u02A8': // ʨ [LATIN SMALL LETTER TC DIGRAPH WITH CURL]
2045 output[outputPos++] = 't';
2046 output[outputPos++] = 'c';
2050 // þ [LATIN SMALL LETTER THORN]
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';
2058 case '\u02A6': // ʦ [LATIN SMALL LETTER TS DIGRAPH]
2059 output[outputPos++] = 't';
2060 output[outputPos++] = 's';
2063 case '\uA729': // ꜩ [LATIN SMALL LETTER TZ]
2064 output[outputPos++] = 't';
2065 output[outputPos++] = 'z';
2069 // Ù [LATIN CAPITAL LETTER U WITH GRAVE]
2071 // Ú [LATIN CAPITAL LETTER U WITH ACUTE]
2073 // Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX]
2075 // Ü [LATIN CAPITAL LETTER U WITH DIAERESIS]
2077 // Ũ [LATIN CAPITAL LETTER U WITH TILDE]
2079 // Ū [LATIN CAPITAL LETTER U WITH MACRON]
2081 // Ŭ [LATIN CAPITAL LETTER U WITH BREVE]
2083 // Å® [LATIN CAPITAL LETTER U WITH RING ABOVE]
2085 // Å° [LATIN CAPITAL LETTER U WITH DOUBLE ACUTE]
2087 // Ų [LATIN CAPITAL LETTER U WITH OGONEK]
2089 // Ư [LATIN CAPITAL LETTER U WITH HORN]
2091 // Ç“ [LATIN CAPITAL LETTER U WITH CARON]
2093 // Ç• [LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON]
2095 // Ç— [LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE]
2097 // Ç™ [LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON]
2099 // Ç› [LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE]
2101 // �? [LATIN CAPITAL LETTER U WITH DOUBLE GRAVE]
2103 // È– [LATIN CAPITAL LETTER U WITH INVERTED BREVE]
2105 // É„ [LATIN CAPITAL LETTER U BAR]
2107 // ᴜ [LATIN LETTER SMALL CAPITAL U]
2109 // áµ¾ [LATIN SMALL CAPITAL LETTER U WITH STROKE]
2111 // á¹² [LATIN CAPITAL LETTER U WITH DIAERESIS BELOW]
2113 // á¹´ [LATIN CAPITAL LETTER U WITH TILDE BELOW]
2115 // Ṷ [LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW]
2117 // Ṹ [LATIN CAPITAL LETTER U WITH TILDE AND ACUTE]
2119 // Ṻ [LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS]
2121 // Ụ [LATIN CAPITAL LETTER U WITH DOT BELOW]
2123 // Ủ [LATIN CAPITAL LETTER U WITH HOOK ABOVE]
2125 // Ứ [LATIN CAPITAL LETTER U WITH HORN AND ACUTE]
2127 // Ừ [LATIN CAPITAL LETTER U WITH HORN AND GRAVE]
2129 // Ử [LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE]
2131 // á»® [LATIN CAPITAL LETTER U WITH HORN AND TILDE]
2133 // á»° [LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW]
2135 // â“Š[CIRCLED LATIN CAPITAL LETTER U]
2136 case '\uFF35': // ï¼µ [FULLWIDTH LATIN CAPITAL LETTER U]
2137 output[outputPos++] = 'U';
2141 // ù [LATIN SMALL LETTER U WITH GRAVE]
2143 // ú [LATIN SMALL LETTER U WITH ACUTE]
2145 // û [LATIN SMALL LETTER U WITH CIRCUMFLEX]
2147 // ü [LATIN SMALL LETTER U WITH DIAERESIS]
2149 // Å© [LATIN SMALL LETTER U WITH TILDE]
2151 // Å« [LATIN SMALL LETTER U WITH MACRON]
2153 // Ã…Â [LATIN SMALL LETTER U WITH BREVE]
2155 // ů [LATIN SMALL LETTER U WITH RING ABOVE]
2157 // ű [LATIN SMALL LETTER U WITH DOUBLE ACUTE]
2159 // ų [LATIN SMALL LETTER U WITH OGONEK]
2161 // Æ° [LATIN SMALL LETTER U WITH HORN]
2163 // �? [LATIN SMALL LETTER U WITH CARON]
2165 // Ç– [LATIN SMALL LETTER U WITH DIAERESIS AND MACRON]
2167 // ǘ [LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE]
2169 // Çš [LATIN SMALL LETTER U WITH DIAERESIS AND CARON]
2171 // ǜ [LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE]
2173 // È• [LATIN SMALL LETTER U WITH DOUBLE GRAVE]
2175 // È— [LATIN SMALL LETTER U WITH INVERTED BREVE]
2177 // ʉ [LATIN SMALL LETTER U BAR]
2179 // ᵤ [LATIN SUBSCRIPT SMALL LETTER U]
2181 // ᶙ [LATIN SMALL LETTER U WITH RETROFLEX HOOK]
2183 // á¹³ [LATIN SMALL LETTER U WITH DIAERESIS BELOW]
2185 // á¹µ [LATIN SMALL LETTER U WITH TILDE BELOW]
2187 // á¹· [LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW]
2189 // á¹¹ [LATIN SMALL LETTER U WITH TILDE AND ACUTE]
2191 // á¹» [LATIN SMALL LETTER U WITH MACRON AND DIAERESIS]
2193 // ụ [LATIN SMALL LETTER U WITH DOT BELOW]
2195 // ủ [LATIN SMALL LETTER U WITH HOOK ABOVE]
2197 // ứ [LATIN SMALL LETTER U WITH HORN AND ACUTE]
2199 // ừ [LATIN SMALL LETTER U WITH HORN AND GRAVE]
2201 // á» [LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE]
2203 // ữ [LATIN SMALL LETTER U WITH HORN AND TILDE]
2205 // á»± [LATIN SMALL LETTER U WITH HORN AND DOT BELOW]
2207 // ⓤ [CIRCLED LATIN SMALL LETTER U]
2208 case '\uFF55': // u [FULLWIDTH LATIN SMALL LETTER U]
2209 output[outputPos++] = 'u';
2212 case '\u24B0': // â’° [PARENTHESIZED LATIN SMALL LETTER U]
2213 output[outputPos++] = '(';
2214 output[outputPos++] = 'u';
2215 output[outputPos++] = ')';
2218 case '\u1D6B': // ᵫ [LATIN SMALL LETTER UE]
2219 output[outputPos++] = 'u';
2220 output[outputPos++] = 'e';
2224 // Ʋ [LATIN CAPITAL LETTER V WITH HOOK]
2226 // É… [LATIN CAPITAL LETTER TURNED V]
2228 // á´ [LATIN LETTER SMALL CAPITAL V]
2230 // á¹¼ [LATIN CAPITAL LETTER V WITH TILDE]
2232 // á¹¾ [LATIN CAPITAL LETTER V WITH DOT BELOW]
2234 // Ỽ [LATIN CAPITAL LETTER MIDDLE-WELSH V]
2236 // â“‹ [CIRCLED LATIN CAPITAL LETTER V]
2238 // � [LATIN CAPITAL LETTER V WITH DIAGONAL STROKE]
2240 // � [LATIN CAPITAL LETTER VEND]
2241 case '\uFF36': // V [FULLWIDTH LATIN CAPITAL LETTER V]
2242 output[outputPos++] = 'V';
2246 // Ê‹ [LATIN SMALL LETTER V WITH HOOK]
2248 // ʌ [LATIN SMALL LETTER TURNED V]
2250 // áµ¥ [LATIN SUBSCRIPT SMALL LETTER V]
2252 // ᶌ [LATIN SMALL LETTER V WITH PALATAL HOOK]
2254 // á¹½ [LATIN SMALL LETTER V WITH TILDE]
2256 // ṿ [LATIN SMALL LETTER V WITH DOT BELOW]
2258 // â“¥ [CIRCLED LATIN SMALL LETTER V]
2260 // â±± [LATIN SMALL LETTER V WITH RIGHT HOOK]
2262 // â±´ [LATIN SMALL LETTER V WITH CURL]
2264 // � [LATIN SMALL LETTER V WITH DIAGONAL STROKE]
2265 case '\uFF56': // ï½– [FULLWIDTH LATIN SMALL LETTER V]
2266 output[outputPos++] = 'v';
2269 case '\uA760': // �[LATIN CAPITAL LETTER VY]
2270 output[outputPos++] = 'V';
2271 output[outputPos++] = 'Y';
2274 case '\u24B1': // â’± [PARENTHESIZED LATIN SMALL LETTER V]
2275 output[outputPos++] = '(';
2276 output[outputPos++] = 'v';
2277 output[outputPos++] = ')';
2280 case '\uA761': // � [LATIN SMALL LETTER VY]
2281 output[outputPos++] = 'v';
2282 output[outputPos++] = 'y';
2286 // Å´ [LATIN CAPITAL LETTER W WITH CIRCUMFLEX]
2288 // Ç· http://en.wikipedia.org/wiki/Wynn [LATIN CAPITAL LETTER WYNN]
2290 // á´¡ [LATIN LETTER SMALL CAPITAL W]
2292 // Ẁ [LATIN CAPITAL LETTER W WITH GRAVE]
2294 // Ẃ [LATIN CAPITAL LETTER W WITH ACUTE]
2296 // Ẅ [LATIN CAPITAL LETTER W WITH DIAERESIS]
2298 // Ẇ[LATIN CAPITAL LETTER W WITH DOT ABOVE]
2300 // Ẉ [LATIN CAPITAL LETTER W WITH DOT BELOW]
2302 // Ⓦ [CIRCLED LATIN CAPITAL LETTER W]
2304 // â±² [LATIN CAPITAL LETTER W WITH HOOK]
2305 case '\uFF37': // ï¼· [FULLWIDTH LATIN CAPITAL LETTER W]
2306 output[outputPos++] = 'W';
2310 // ŵ [LATIN SMALL LETTER W WITH CIRCUMFLEX]
2312 // Æ¿ http://en.wikipedia.org/wiki/Wynn [LATIN LETTER WYNN]
2314 // � [LATIN SMALL LETTER TURNED W]
2316 // � [LATIN SMALL LETTER W WITH GRAVE]
2318 // ẃ [LATIN SMALL LETTER W WITH ACUTE]
2320 // ẅ [LATIN SMALL LETTER W WITH DIAERESIS]
2322 // ẇ [LATIN SMALL LETTER W WITH DOT ABOVE]
2324 // ẉ [LATIN SMALL LETTER W WITH DOT BELOW]
2326 // ẘ [LATIN SMALL LETTER W WITH RING ABOVE]
2328 // ⓦ [CIRCLED LATIN SMALL LETTER W]
2330 // â±³ [LATIN SMALL LETTER W WITH HOOK]
2331 case '\uFF57': // ï½— [FULLWIDTH LATIN SMALL LETTER W]
2332 output[outputPos++] = 'w';
2335 case '\u24B2': // â’² [PARENTHESIZED LATIN SMALL LETTER W]
2336 output[outputPos++] = '(';
2337 output[outputPos++] = 'w';
2338 output[outputPos++] = ')';
2342 // Ẋ[LATIN CAPITAL LETTER X WITH DOT ABOVE]
2344 // Ẍ [LATIN CAPITAL LETTER X WITH DIAERESIS]
2346 // � [CIRCLED LATIN CAPITAL LETTER X]
2347 case '\uFF38': // X [FULLWIDTH LATIN CAPITAL LETTER X]
2348 output[outputPos++] = 'X';
2352 // � [LATIN SMALL LETTER X WITH PALATAL HOOK]
2354 // ẋ [LATIN SMALL LETTER X WITH DOT ABOVE]
2356 // � [LATIN SMALL LETTER X WITH DIAERESIS]
2358 // â‚“ [LATIN SUBSCRIPT SMALL LETTER X]
2360 // ⓧ [CIRCLED LATIN SMALL LETTER X]
2361 case '\uFF58': // x [FULLWIDTH LATIN SMALL LETTER X]
2362 output[outputPos++] = 'x';
2365 case '\u24B3': // â’³ [PARENTHESIZED LATIN SMALL LETTER X]
2366 output[outputPos++] = '(';
2367 output[outputPos++] = 'x';
2368 output[outputPos++] = ')';
2372 // � [LATIN CAPITAL LETTER Y WITH ACUTE]
2374 // Ŷ [LATIN CAPITAL LETTER Y WITH CIRCUMFLEX]
2376 // Ÿ [LATIN CAPITAL LETTER Y WITH DIAERESIS]
2378 // Ƴ [LATIN CAPITAL LETTER Y WITH HOOK]
2380 // Ȳ [LATIN CAPITAL LETTER Y WITH MACRON]
2382 // ÉŽ [LATIN CAPITAL LETTER Y WITH STROKE]
2384 // � [LATIN LETTER SMALL CAPITAL Y]
2386 // Ẏ [LATIN CAPITAL LETTER Y WITH DOT ABOVE]
2388 // Ỳ [LATIN CAPITAL LETTER Y WITH GRAVE]
2390 // á»´ [LATIN CAPITAL LETTER Y WITH DOT BELOW]
2392 // Ỷ [LATIN CAPITAL LETTER Y WITH HOOK ABOVE]
2394 // Ỹ [LATIN CAPITAL LETTER Y WITH TILDE]
2396 // Ỿ [LATIN CAPITAL LETTER Y WITH LOOP]
2398 // â“Ž [CIRCLED LATIN CAPITAL LETTER Y]
2399 case '\uFF39': // ï¼¹ [FULLWIDTH LATIN CAPITAL LETTER Y]
2400 output[outputPos++] = 'Y';
2404 // ý [LATIN SMALL LETTER Y WITH ACUTE]
2406 // ÿ [LATIN SMALL LETTER Y WITH DIAERESIS]
2408 // Å· [LATIN SMALL LETTER Y WITH CIRCUMFLEX]
2410 // Æ´ [LATIN SMALL LETTER Y WITH HOOK]
2412 // ȳ [LATIN SMALL LETTER Y WITH MACRON]
2414 // � [LATIN SMALL LETTER Y WITH STROKE]
2416 // ÊŽ [LATIN SMALL LETTER TURNED Y]
2418 // � [LATIN SMALL LETTER Y WITH DOT ABOVE]
2420 // ẙ [LATIN SMALL LETTER Y WITH RING ABOVE]
2422 // ỳ [LATIN SMALL LETTER Y WITH GRAVE]
2424 // ỵ [LATIN SMALL LETTER Y WITH DOT BELOW]
2426 // á»· [LATIN SMALL LETTER Y WITH HOOK ABOVE]
2428 // ỹ [LATIN SMALL LETTER Y WITH TILDE]
2430 // ỿ [LATIN SMALL LETTER Y WITH LOOP]
2432 // ⓨ [CIRCLED LATIN SMALL LETTER Y]
2433 case '\uFF59': // ï½™ [FULLWIDTH LATIN SMALL LETTER Y]
2434 output[outputPos++] = 'y';
2437 case '\u24B4': // â’´ [PARENTHESIZED LATIN SMALL LETTER Y]
2438 output[outputPos++] = '(';
2439 output[outputPos++] = 'y';
2440 output[outputPos++] = ')';
2444 // Ź [LATIN CAPITAL LETTER Z WITH ACUTE]
2446 // Å» [LATIN CAPITAL LETTER Z WITH DOT ABOVE]
2448 // Ž [LATIN CAPITAL LETTER Z WITH CARON]
2450 // Ƶ [LATIN CAPITAL LETTER Z WITH STROKE]
2452 // Ȝ http://en.wikipedia.org/wiki/Yogh [LATIN CAPITAL LETTER YOGH]
2454 // Ȥ [LATIN CAPITAL LETTER Z WITH HOOK]
2456 // á´¢ [LATIN LETTER SMALL CAPITAL Z]
2458 // � [LATIN CAPITAL LETTER Z WITH CIRCUMFLEX]
2460 // Ẓ [LATIN CAPITAL LETTER Z WITH DOT BELOW]
2462 // �? [LATIN CAPITAL LETTER Z WITH LINE BELOW]
2464 // � [CIRCLED LATIN CAPITAL LETTER Z]
2466 // Ⱬ [LATIN CAPITAL LETTER Z WITH DESCENDER]
2468 // � [LATIN CAPITAL LETTER VISIGOTHIC Z]
2469 case '\uFF3A': // Z [FULLWIDTH LATIN CAPITAL LETTER Z]
2470 output[outputPos++] = 'Z';
2474 // ź [LATIN SMALL LETTER Z WITH ACUTE]
2476 // ż [LATIN SMALL LETTER Z WITH DOT ABOVE]
2478 // ž [LATIN SMALL LETTER Z WITH CARON]
2480 // ƶ [LATIN SMALL LETTER Z WITH STROKE]
2482 // � http://en.wikipedia.org/wiki/Yogh [LATIN SMALL LETTER YOGH]
2484 // ȥ [LATIN SMALL LETTER Z WITH HOOK]
2486 // ɀ [LATIN SMALL LETTER Z WITH SWASH TAIL]
2488 // � [LATIN SMALL LETTER Z WITH RETROFLEX HOOK]
2490 // Ê‘ [LATIN SMALL LETTER Z WITH CURL]
2492 // ᵶ [LATIN SMALL LETTER Z WITH MIDDLE TILDE]
2494 // ᶎ [LATIN SMALL LETTER Z WITH PALATAL HOOK]
2496 // ẑ [LATIN SMALL LETTER Z WITH CIRCUMFLEX]
2498 // ẓ [LATIN SMALL LETTER Z WITH DOT BELOW]
2500 // ẕ [LATIN SMALL LETTER Z WITH LINE BELOW]
2502 // â“© [CIRCLED LATIN SMALL LETTER Z]
2504 // ⱬ [LATIN SMALL LETTER Z WITH DESCENDER]
2506 // � [LATIN SMALL LETTER VISIGOTHIC Z]
2507 case '\uFF5A': // z [FULLWIDTH LATIN SMALL LETTER Z]
2508 output[outputPos++] = 'z';
2511 case '\u24B5': // â’µ [PARENTHESIZED LATIN SMALL LETTER Z]
2512 output[outputPos++] = '(';
2513 output[outputPos++] = 'z';
2514 output[outputPos++] = ')';
2518 // � [SUPERSCRIPT ZERO]
2520 // â‚€ [SUBSCRIPT ZERO]
2522 // ⓪ [CIRCLED DIGIT ZERO]
2524 // â“¿ [NEGATIVE CIRCLED DIGIT ZERO]
2525 case '\uFF10': // � [FULLWIDTH DIGIT ZERO]
2526 output[outputPos++] = '0';
2530 // ¹ [SUPERSCRIPT ONE]
2532 // � [SUBSCRIPT ONE]
2534 // â‘ [CIRCLED DIGIT ONE]
2536 // ⓵ [DOUBLE CIRCLED DIGIT ONE]
2538 // � [DINGBAT NEGATIVE CIRCLED DIGIT ONE]
2540 // ➀ [DINGBAT CIRCLED SANS-SERIF DIGIT ONE]
2542 // ➊[DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE]
2543 case '\uFF11': // 1 [FULLWIDTH DIGIT ONE]
2544 output[outputPos++] = '1';
2547 case '\u2488': // â’ˆ [DIGIT ONE FULL STOP]
2548 output[outputPos++] = '1';
2549 output[outputPos++] = '.';
2552 case '\u2474': // â‘´ [PARENTHESIZED DIGIT ONE]
2553 output[outputPos++] = '(';
2554 output[outputPos++] = '1';
2555 output[outputPos++] = ')';
2559 // ² [SUPERSCRIPT TWO]
2561 // â‚‚ [SUBSCRIPT TWO]
2563 // â‘¡ [CIRCLED DIGIT TWO]
2565 // ⓶ [DOUBLE CIRCLED DIGIT TWO]
2567 // � [DINGBAT NEGATIVE CIRCLED DIGIT TWO]
2569 // � [DINGBAT CIRCLED SANS-SERIF DIGIT TWO]
2571 // âž‹ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO]
2572 case '\uFF12': // ï¼’ [FULLWIDTH DIGIT TWO]
2573 output[outputPos++] = '2';
2576 case '\u2489': // â’‰ [DIGIT TWO FULL STOP]
2577 output[outputPos++] = '2';
2578 output[outputPos++] = '.';
2581 case '\u2475': // ⑵ [PARENTHESIZED DIGIT TWO]
2582 output[outputPos++] = '(';
2583 output[outputPos++] = '2';
2584 output[outputPos++] = ')';
2588 // ³ [SUPERSCRIPT THREE]
2590 // ₃ [SUBSCRIPT THREE]
2592 // â‘¢ [CIRCLED DIGIT THREE]
2594 // â“· [DOUBLE CIRCLED DIGIT THREE]
2596 // � [DINGBAT NEGATIVE CIRCLED DIGIT THREE]
2598 // âž‚ [DINGBAT CIRCLED SANS-SERIF DIGIT THREE]
2600 // ➌ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE]
2601 case '\uFF13': // 3 [FULLWIDTH DIGIT THREE]
2602 output[outputPos++] = '3';
2605 case '\u248A': // â’Š[DIGIT THREE FULL STOP]
2606 output[outputPos++] = '3';
2607 output[outputPos++] = '.';
2610 case '\u2476': // ⑶ [PARENTHESIZED DIGIT THREE]
2611 output[outputPos++] = '(';
2612 output[outputPos++] = '3';
2613 output[outputPos++] = ')';
2617 // � [SUPERSCRIPT FOUR]
2619 // â‚„ [SUBSCRIPT FOUR]
2621 // â‘£ [CIRCLED DIGIT FOUR]
2623 // ⓸ [DOUBLE CIRCLED DIGIT FOUR]
2625 // � [DINGBAT NEGATIVE CIRCLED DIGIT FOUR]
2627 // ➃ [DINGBAT CIRCLED SANS-SERIF DIGIT FOUR]
2629 // � [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR]
2630 case '\uFF14': // �? [FULLWIDTH DIGIT FOUR]
2631 output[outputPos++] = '4';
2634 case '\u248B': // â’‹ [DIGIT FOUR FULL STOP]
2635 output[outputPos++] = '4';
2636 output[outputPos++] = '.';
2639 case '\u2477': // â‘· [PARENTHESIZED DIGIT FOUR]
2640 output[outputPos++] = '(';
2641 output[outputPos++] = '4';
2642 output[outputPos++] = ')';
2646 // � [SUPERSCRIPT FIVE]
2648 // â‚… [SUBSCRIPT FIVE]
2650 // ⑤ [CIRCLED DIGIT FIVE]
2652 // ⓹ [DOUBLE CIRCLED DIGIT FIVE]
2654 // � [DINGBAT NEGATIVE CIRCLED DIGIT FIVE]
2656 // âž„ [DINGBAT CIRCLED SANS-SERIF DIGIT FIVE]
2658 // ➎ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE]
2659 case '\uFF15': // 5 [FULLWIDTH DIGIT FIVE]
2660 output[outputPos++] = '5';
2663 case '\u248C': // ⒌ [DIGIT FIVE FULL STOP]
2664 output[outputPos++] = '5';
2665 output[outputPos++] = '.';
2668 case '\u2478': // ⑸ [PARENTHESIZED DIGIT FIVE]
2669 output[outputPos++] = '(';
2670 output[outputPos++] = '5';
2671 output[outputPos++] = ')';
2675 // � [SUPERSCRIPT SIX]
2677 // ₆[SUBSCRIPT SIX]
2679 // â‘¥ [CIRCLED DIGIT SIX]
2681 // ⓺ [DOUBLE CIRCLED DIGIT SIX]
2683 // � [DINGBAT NEGATIVE CIRCLED DIGIT SIX]
2685 // âž… [DINGBAT CIRCLED SANS-SERIF DIGIT SIX]
2687 // � [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX]
2688 case '\uFF16': // ï¼– [FULLWIDTH DIGIT SIX]
2689 output[outputPos++] = '6';
2692 case '\u248D': // â’� [DIGIT SIX FULL STOP]
2693 output[outputPos++] = '6';
2694 output[outputPos++] = '.';
2697 case '\u2479': // ⑹ [PARENTHESIZED DIGIT SIX]
2698 output[outputPos++] = '(';
2699 output[outputPos++] = '6';
2700 output[outputPos++] = ')';
2704 // � [SUPERSCRIPT SEVEN]
2706 // ₇ [SUBSCRIPT SEVEN]
2708 // ⑦ [CIRCLED DIGIT SEVEN]
2710 // â“» [DOUBLE CIRCLED DIGIT SEVEN]
2712 // � [DINGBAT NEGATIVE CIRCLED DIGIT SEVEN]
2714 // ➆[DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN]
2716 // � [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN]
2717 case '\uFF17': // ï¼— [FULLWIDTH DIGIT SEVEN]
2718 output[outputPos++] = '7';
2721 case '\u248E': // â’Ž [DIGIT SEVEN FULL STOP]
2722 output[outputPos++] = '7';
2723 output[outputPos++] = '.';
2726 case '\u247A': // ⑺ [PARENTHESIZED DIGIT SEVEN]
2727 output[outputPos++] = '(';
2728 output[outputPos++] = '7';
2729 output[outputPos++] = ')';
2733 // � [SUPERSCRIPT EIGHT]
2735 // ₈ [SUBSCRIPT EIGHT]
2737 // ⑧ [CIRCLED DIGIT EIGHT]
2739 // ⓼ [DOUBLE CIRCLED DIGIT EIGHT]
2741 // � [DINGBAT NEGATIVE CIRCLED DIGIT EIGHT]
2743 // ➇ [DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT]
2745 // âž‘ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT]
2746 case '\uFF18': // 8 [FULLWIDTH DIGIT EIGHT]
2747 output[outputPos++] = '8';
2750 case '\u248F': // â’� [DIGIT EIGHT FULL STOP]
2751 output[outputPos++] = '8';
2752 output[outputPos++] = '.';
2755 case '\u247B': // â‘» [PARENTHESIZED DIGIT EIGHT]
2756 output[outputPos++] = '(';
2757 output[outputPos++] = '8';
2758 output[outputPos++] = ')';
2762 // � [SUPERSCRIPT NINE]
2764 // ₉ [SUBSCRIPT NINE]
2766 // ⑨ [CIRCLED DIGIT NINE]
2768 // ⓽ [DOUBLE CIRCLED DIGIT NINE]
2770 // � [DINGBAT NEGATIVE CIRCLED DIGIT NINE]
2772 // ➈ [DINGBAT CIRCLED SANS-SERIF DIGIT NINE]
2774 // âž’ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE]
2775 case '\uFF19': // ï¼™ [FULLWIDTH DIGIT NINE]
2776 output[outputPos++] = '9';
2779 case '\u2490': // â’� [DIGIT NINE FULL STOP]
2780 output[outputPos++] = '9';
2781 output[outputPos++] = '.';
2784 case '\u247C': // ⑼ [PARENTHESIZED DIGIT NINE]
2785 output[outputPos++] = '(';
2786 output[outputPos++] = '9';
2787 output[outputPos++] = ')';
2791 // â‘© [CIRCLED NUMBER TEN]
2793 // ⓾ [DOUBLE CIRCLED NUMBER TEN]
2795 // � [DINGBAT NEGATIVE CIRCLED NUMBER TEN]
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';
2803 case '\u2491': // â’‘ [NUMBER TEN FULL STOP]
2804 output[outputPos++] = '1';
2805 output[outputPos++] = '0';
2806 output[outputPos++] = '.';
2809 case '\u247D': // ⑽ [PARENTHESIZED NUMBER TEN]
2810 output[outputPos++] = '(';
2811 output[outputPos++] = '1';
2812 output[outputPos++] = '0';
2813 output[outputPos++] = ')';
2817 // ⑪ [CIRCLED NUMBER ELEVEN]
2818 case '\u24EB': // â“« [NEGATIVE CIRCLED NUMBER ELEVEN]
2819 output[outputPos++] = '1';
2820 output[outputPos++] = '1';
2823 case '\u2492': // â’’ [NUMBER ELEVEN FULL STOP]
2824 output[outputPos++] = '1';
2825 output[outputPos++] = '1';
2826 output[outputPos++] = '.';
2829 case '\u247E': // ⑾ [PARENTHESIZED NUMBER ELEVEN]
2830 output[outputPos++] = '(';
2831 output[outputPos++] = '1';
2832 output[outputPos++] = '1';
2833 output[outputPos++] = ')';
2837 // â‘« [CIRCLED NUMBER TWELVE]
2838 case '\u24EC': // ⓬ [NEGATIVE CIRCLED NUMBER TWELVE]
2839 output[outputPos++] = '1';
2840 output[outputPos++] = '2';
2843 case '\u2493': // â’“ [NUMBER TWELVE FULL STOP]
2844 output[outputPos++] = '1';
2845 output[outputPos++] = '2';
2846 output[outputPos++] = '.';
2849 case '\u247F': // â‘¿ [PARENTHESIZED NUMBER TWELVE]
2850 output[outputPos++] = '(';
2851 output[outputPos++] = '1';
2852 output[outputPos++] = '2';
2853 output[outputPos++] = ')';
2857 // ⑬ [CIRCLED NUMBER THIRTEEN]
2858 case '\u24ED': // â“ [NEGATIVE CIRCLED NUMBER THIRTEEN]
2859 output[outputPos++] = '1';
2860 output[outputPos++] = '3';
2863 case '\u2494': // â’�? [NUMBER THIRTEEN FULL STOP]
2864 output[outputPos++] = '1';
2865 output[outputPos++] = '3';
2866 output[outputPos++] = '.';
2869 case '\u2480': // â’€ [PARENTHESIZED NUMBER THIRTEEN]
2870 output[outputPos++] = '(';
2871 output[outputPos++] = '1';
2872 output[outputPos++] = '3';
2873 output[outputPos++] = ')';
2877 // â‘ [CIRCLED NUMBER FOURTEEN]
2878 case '\u24EE': // â“® [NEGATIVE CIRCLED NUMBER FOURTEEN]
2879 output[outputPos++] = '1';
2880 output[outputPos++] = '4';
2883 case '\u2495': // â’• [NUMBER FOURTEEN FULL STOP]
2884 output[outputPos++] = '1';
2885 output[outputPos++] = '4';
2886 output[outputPos++] = '.';
2889 case '\u2481': // â’� [PARENTHESIZED NUMBER FOURTEEN]
2890 output[outputPos++] = '(';
2891 output[outputPos++] = '1';
2892 output[outputPos++] = '4';
2893 output[outputPos++] = ')';
2897 // â‘® [CIRCLED NUMBER FIFTEEN]
2898 case '\u24EF': // ⓯ [NEGATIVE CIRCLED NUMBER FIFTEEN]
2899 output[outputPos++] = '1';
2900 output[outputPos++] = '5';
2903 case '\u2496': // â’– [NUMBER FIFTEEN FULL STOP]
2904 output[outputPos++] = '1';
2905 output[outputPos++] = '5';
2906 output[outputPos++] = '.';
2909 case '\u2482': // â’‚ [PARENTHESIZED NUMBER FIFTEEN]
2910 output[outputPos++] = '(';
2911 output[outputPos++] = '1';
2912 output[outputPos++] = '5';
2913 output[outputPos++] = ')';
2917 // ⑯ [CIRCLED NUMBER SIXTEEN]
2918 case '\u24F0': // â“° [NEGATIVE CIRCLED NUMBER SIXTEEN]
2919 output[outputPos++] = '1';
2920 output[outputPos++] = '6';
2923 case '\u2497': // â’— [NUMBER SIXTEEN FULL STOP]
2924 output[outputPos++] = '1';
2925 output[outputPos++] = '6';
2926 output[outputPos++] = '.';
2929 case '\u2483': // â’ƒ [PARENTHESIZED NUMBER SIXTEEN]
2930 output[outputPos++] = '(';
2931 output[outputPos++] = '1';
2932 output[outputPos++] = '6';
2933 output[outputPos++] = ')';
2937 // â‘° [CIRCLED NUMBER SEVENTEEN]
2938 case '\u24F1': // ⓱ [NEGATIVE CIRCLED NUMBER SEVENTEEN]
2939 output[outputPos++] = '1';
2940 output[outputPos++] = '7';
2943 case '\u2498': // â’˜ [NUMBER SEVENTEEN FULL STOP]
2944 output[outputPos++] = '1';
2945 output[outputPos++] = '7';
2946 output[outputPos++] = '.';
2949 case '\u2484': // â’„ [PARENTHESIZED NUMBER SEVENTEEN]
2950 output[outputPos++] = '(';
2951 output[outputPos++] = '1';
2952 output[outputPos++] = '7';
2953 output[outputPos++] = ')';
2957 // ⑱ [CIRCLED NUMBER EIGHTEEN]
2958 case '\u24F2': // ⓲ [NEGATIVE CIRCLED NUMBER EIGHTEEN]
2959 output[outputPos++] = '1';
2960 output[outputPos++] = '8';
2963 case '\u2499': // â’™ [NUMBER EIGHTEEN FULL STOP]
2964 output[outputPos++] = '1';
2965 output[outputPos++] = '8';
2966 output[outputPos++] = '.';
2969 case '\u2485': // â’… [PARENTHESIZED NUMBER EIGHTEEN]
2970 output[outputPos++] = '(';
2971 output[outputPos++] = '1';
2972 output[outputPos++] = '8';
2973 output[outputPos++] = ')';
2977 // ⑲ [CIRCLED NUMBER NINETEEN]
2978 case '\u24F3': // ⓳ [NEGATIVE CIRCLED NUMBER NINETEEN]
2979 output[outputPos++] = '1';
2980 output[outputPos++] = '9';
2983 case '\u249A': // â’š [NUMBER NINETEEN FULL STOP]
2984 output[outputPos++] = '1';
2985 output[outputPos++] = '9';
2986 output[outputPos++] = '.';
2989 case '\u2486': // â’†[PARENTHESIZED NUMBER NINETEEN]
2990 output[outputPos++] = '(';
2991 output[outputPos++] = '1';
2992 output[outputPos++] = '9';
2993 output[outputPos++] = ')';
2997 // ⑳ [CIRCLED NUMBER TWENTY]
2998 case '\u24F4': // â“´ [NEGATIVE CIRCLED NUMBER TWENTY]
2999 output[outputPos++] = '2';
3000 output[outputPos++] = '0';
3003 case '\u249B': // â’› [NUMBER TWENTY FULL STOP]
3004 output[outputPos++] = '2';
3005 output[outputPos++] = '0';
3006 output[outputPos++] = '.';
3009 case '\u2487': // â’‡ [PARENTHESIZED NUMBER TWENTY]
3010 output[outputPos++] = '(';
3011 output[outputPos++] = '2';
3012 output[outputPos++] = '0';
3013 output[outputPos++] = ')';
3017 // « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK]
3019 // » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK]
3021 // “ [LEFT DOUBLE QUOTATION MARK]
3023 // � [RIGHT DOUBLE QUOTATION MARK]
3025 // „ [DOUBLE LOW-9 QUOTATION MARK]
3027 // ″ [DOUBLE PRIME]
3029 // ‶ [REVERSED DOUBLE PRIME]
3031 // � [HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT]
3033 // � [HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT]
3035 // � [HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT]
3037 // � [HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT]
3038 case '\uFF02': // " [FULLWIDTH QUOTATION MARK]
3039 output[outputPos++] = '"';
3043 // ‘ [LEFT SINGLE QUOTATION MARK]
3045 // ’ [RIGHT SINGLE QUOTATION MARK]
3047 // ‚ [SINGLE LOW-9 QUOTATION MARK]
3049 // ‛ [SINGLE HIGH-REVERSED-9 QUOTATION MARK]
3053 // ‵ [REVERSED PRIME]
3055 // ‹ [SINGLE LEFT-POINTING ANGLE QUOTATION MARK]
3057 // › [SINGLE RIGHT-POINTING ANGLE QUOTATION MARK]
3059 // � [HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT]
3061 // � [HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT]
3062 case '\uFF07': // ' [FULLWIDTH APOSTROPHE]
3063 output[outputPos++] = '\'';
3067 // � [HYPHEN]
3069 // ‑ [NON-BREAKING HYPHEN]
3071 // ‒ [FIGURE DASH]
3073 // – [EN DASH]
3075 // �? [EM DASH]
3077 // � [SUPERSCRIPT MINUS]
3079 // â‚‹ [SUBSCRIPT MINUS]
3080 case '\uFF0D': // � [FULLWIDTH HYPHEN-MINUS]
3081 output[outputPos++] = '-';
3085 // � [LEFT SQUARE BRACKET WITH QUILL]
3087 // � [LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT]
3088 case '\uFF3B': // ï¼» [FULLWIDTH LEFT SQUARE BRACKET]
3089 output[outputPos++] = '[';
3093 // �[RIGHT SQUARE BRACKET WITH QUILL]
3095 // � [LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT]
3096 case '\uFF3D': // ï¼½ [FULLWIDTH RIGHT SQUARE BRACKET]
3097 output[outputPos++] = ']';
3101 // � [SUPERSCRIPT LEFT PARENTHESIS]
3103 // � [SUBSCRIPT LEFT PARENTHESIS]
3105 // � [MEDIUM LEFT PARENTHESIS ORNAMENT]
3107 // � [MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT]
3108 case '\uFF08': // ( [FULLWIDTH LEFT PARENTHESIS]
3109 output[outputPos++] = '(';
3112 case '\u2E28': // ⸨ [LEFT DOUBLE PARENTHESIS]
3113 output[outputPos++] = '(';
3114 output[outputPos++] = '(';
3118 // � [SUPERSCRIPT RIGHT PARENTHESIS]
3120 // â‚Ž [SUBSCRIPT RIGHT PARENTHESIS]
3122 // � [MEDIUM RIGHT PARENTHESIS ORNAMENT]
3124 // � [MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT]
3125 case '\uFF09': // ) [FULLWIDTH RIGHT PARENTHESIS]
3126 output[outputPos++] = ')';
3129 case '\u2E29': // ⸩ [RIGHT DOUBLE PARENTHESIS]
3130 output[outputPos++] = ')';
3131 output[outputPos++] = ')';
3135 // � [MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT]
3137 // � [HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT]
3138 case '\uFF1C': // < [FULLWIDTH LESS-THAN SIGN]
3139 output[outputPos++] = '<';
3143 // �[MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT]
3145 // � [HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT]
3146 case '\uFF1E': // > [FULLWIDTH GREATER-THAN SIGN]
3147 output[outputPos++] = '>';
3151 // � [MEDIUM LEFT CURLY BRACKET ORNAMENT]
3152 case '\uFF5B': // ï½› [FULLWIDTH LEFT CURLY BRACKET]
3153 output[outputPos++] = '{';
3157 // � [MEDIUM RIGHT CURLY BRACKET ORNAMENT]
3158 case '\uFF5D': // � [FULLWIDTH RIGHT CURLY BRACKET]
3159 output[outputPos++] = '}';
3163 // � [SUPERSCRIPT PLUS SIGN]
3165 // â‚Š[SUBSCRIPT PLUS SIGN]
3166 case '\uFF0B': // + [FULLWIDTH PLUS SIGN]
3167 output[outputPos++] = '+';
3171 // � [SUPERSCRIPT EQUALS SIGN]
3173 // ₌ [SUBSCRIPT EQUALS SIGN]
3174 case '\uFF1D': // � [FULLWIDTH EQUALS SIGN]
3175 output[outputPos++] = '=';
3178 case '\uFF01': // � [FULLWIDTH EXCLAMATION MARK]
3179 output[outputPos++] = '!';
3182 case '\u203C': // ‼ [DOUBLE EXCLAMATION MARK]
3183 output[outputPos++] = '!';
3184 output[outputPos++] = '!';
3187 case '\u2049': // � [EXCLAMATION QUESTION MARK]
3188 output[outputPos++] = '!';
3189 output[outputPos++] = '?';
3192 case '\uFF03': // # [FULLWIDTH NUMBER SIGN]
3193 output[outputPos++] = '#';
3196 case '\uFF04': // $ [FULLWIDTH DOLLAR SIGN]
3197 output[outputPos++] = '$';
3201 // � [COMMERCIAL MINUS SIGN]
3202 case '\uFF05': // ï¼… [FULLWIDTH PERCENT SIGN]
3203 output[outputPos++] = '%';
3206 case '\uFF06': // &[FULLWIDTH AMPERSAND]
3207 output[outputPos++] = '&';
3211 // � [LOW ASTERISK]
3212 case '\uFF0A': // *[FULLWIDTH ASTERISK]
3213 output[outputPos++] = '*';
3216 case '\uFF0C': // , [FULLWIDTH COMMA]
3217 output[outputPos++] = ',';
3220 case '\uFF0E': // . [FULLWIDTH FULL STOP]
3221 output[outputPos++] = '.';
3225 // � [FRACTION SLASH]
3226 case '\uFF0F': // � [FULLWIDTH SOLIDUS]
3227 output[outputPos++] = '/';
3230 case '\uFF1A': // : [FULLWIDTH COLON]
3231 output[outputPos++] = ':';
3235 // � [REVERSED SEMICOLON]
3236 case '\uFF1B': // ï¼› [FULLWIDTH SEMICOLON]
3237 output[outputPos++] = ';';
3240 case '\uFF1F': // ? [FULLWIDTH QUESTION MARK]
3241 output[outputPos++] = '?';
3244 case '\u2047': // � [DOUBLE QUESTION MARK]
3245 output[outputPos++] = '?';
3246 output[outputPos++] = '?';
3249 case '\u2048': // � [QUESTION EXCLAMATION MARK]
3250 output[outputPos++] = '?';
3251 output[outputPos++] = '!';
3254 case '\uFF20': // ï¼ [FULLWIDTH COMMERCIAL AT]
3255 output[outputPos++] = '@';
3258 case '\uFF3C': // ï¼¼ [FULLWIDTH REVERSE SOLIDUS]
3259 output[outputPos++] = '\\';
3264 case '\uFF3E': // ï¼¾ [FULLWIDTH CIRCUMFLEX ACCENT]
3265 output[outputPos++] = '^';
3268 case '\uFF3F': // _ [FULLWIDTH LOW LINE]
3269 output[outputPos++] = '_';
3273 // � [SWUNG DASH]
3274 case '\uFF5E': // ~ [FULLWIDTH TILDE]
3275 output[outputPos++] = '~';
3279 output[outputPos++] = c;