directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From elecha...@apache.org
Subject svn commit: r490535 [2/3] - in /directory/trunks/shared/ldap/src: main/java/org/apache/directory/shared/ldap/schema/ main/java/org/apache/directory/shared/ldap/util/unicode/ test/java/org/apache/directory/shared/ldap/schema/
Date Wed, 27 Dec 2006 16:36:51 GMT

Added: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/PrepareString.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/PrepareString.java?view=auto&rev=490535
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/PrepareString.java (added)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/schema/PrepareString.java Wed Dec 27 08:36:50 2006
@@ -0,0 +1,6365 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+
+package org.apache.directory.shared.ldap.schema;
+
+import java.io.IOException;
+
+import org.apache.directory.shared.ldap.util.unicode.InvalidCharacterException;
+// import org.apache.directory.shared.ldap.util.unicode.Normalizer;
+
+/**
+ * 
+ * This class implements the 6 steps described in RFC 4518
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class PrepareString
+{
+    /** ALl the possible combining marks */
+    private static final char[][] COMBINING_MARKS = new char[][] 
+        {
+            { 0x0300, 0x034F }, { 0x0360, 0x036F }, { 0x0483, 0x0486 },  { 0x0488, 0x0489 }, 
+            { 0x0591, 0x05A1 }, { 0x05A3, 0x05B9 }, { 0x05BB, 0x05BC }, { 0x05BF, 0x05BF }, 
+            { 0x05C1, 0x05C2 }, { 0x05C4, 0x05C4 }, { 0x064B, 0x0655 }, { 0x0670, 0x0670 }, 
+            { 0x06D6, 0x06DC }, { 0x06DE, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED }, 
+            { 0x0711, 0x0711 }, { 0x0730, 0x074A }, { 0x07A6, 0x07B0 }, { 0x0901, 0x0903 }, 
+            { 0x093C, 0x093C }, { 0x093E, 0x094F }, { 0x0951, 0x0954 }, { 0x0962, 0x0963 },
+            { 0x0981, 0x0983 }, { 0x09BC, 0x09BC }, { 0x09BE, 0x09C4 }, { 0x09C7, 0x09C8 }, 
+            { 0x09CB, 0x09CD }, { 0x09D7, 0x09D7 }, { 0x09E2, 0x09E3 }, { 0x0A02, 0x0A02 }, 
+            { 0x0A3C, 0x0A3C }, { 0x0A3E, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D },
+            { 0x0A70, 0x0A71 }, { 0x0A81, 0x0A83 }, { 0x0ABC, 0x0ABC }, { 0x0ABE, 0x0AC5 }, 
+            { 0x0AC7, 0x0AC9 }, { 0x0ACB, 0x0ACD }, { 0x0B01, 0x0B03 }, { 0x0B3C, 0x0B3C },
+            { 0x0B3E, 0x0B43 }, { 0x0B47, 0x0B48 }, { 0x0B4B, 0x0B4D }, { 0x0B56, 0x0B57 },
+            { 0x0B82, 0x0B82 }, { 0x0BBE, 0x0BC2 }, { 0x0BC6, 0x0BC8 }, { 0x0BCA, 0x0BCD }, 
+            { 0x0BD7, 0x0BD7 }, { 0x0C01, 0x0C03 }, { 0x0C3E, 0x0C44 }, { 0x0C46, 0x0C48 }, 
+            { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0C82, 0x0C83 }, { 0x0CBE, 0x0CC4 }, 
+            { 0x0CC6, 0x0CC8 }, { 0x0CCA, 0x0CCD }, { 0x0CD5, 0x0CD6 }, { 0x0D02, 0x0D03 },
+            { 0x0D3E, 0x0D43 }, { 0x0D46, 0x0D48 }, { 0x0D4A, 0x0D4D }, { 0x0D57, 0x0D57 },
+            { 0x0D82, 0x0D83 }, { 0x0DCA, 0x0DCA }, { 0x0DCF, 0x0DD4 }, { 0x0DD6, 0x0DD6 },
+            { 0x0DD8, 0x0DDF }, { 0x0DF2, 0x0DF3 }, { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A },
+            { 0x0E47, 0x0E4E }, { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC }, 
+            { 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 },
+            { 0x0F39, 0x0F39 }, { 0x0F3E, 0x0F3F }, { 0x0F71, 0x0F84 }, { 0x0F86, 0x0F87 }, 
+            { 0x0F90, 0x0F97 }, { 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102C, 0x1032 }, 
+            { 0x1036, 0x1039 }, { 0x1056, 0x1059 }, { 0x1712, 0x1714 }, { 0x1732, 0x1734 }, 
+            { 0x1752, 0x1753 }, { 0x1772, 0x1773 }, { 0x17B4, 0x17D3 }, { 0x180B, 0x180D }, 
+            { 0x18A9, 0x18A9 }, { 0x20D0, 0x20EA }, { 0x302A, 0x302F }, { 0x3099, 0x309A }, 
+            { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F }, { 0xFE20, 0xFE23 }
+        };
+    
+    /**
+     * Tells if a char is a combining mark.
+     *
+     * @param c The char to check
+     * @return <code>true> if the char is a combining mark, false otherwise
+     */
+    private static boolean isCombiningMark( char c )
+    {
+        for ( char[] interval:COMBINING_MARKS )
+        {
+            if ( ( c >= interval[0] ) && ( c <= interval[1] ) )
+            {
+                return true;
+            }
+        }
+        
+        return false;
+    }
+    
+    /**
+     * 
+     * TODO normalize.
+     *
+     * @param str
+     * @return
+     * @throws IOException
+     */
+    public static StringBuilder normalize( String str ) throws IOException
+    {
+        return null; //Normalizer.normalize( str, Normalizer.Form.KC );
+    }
+    
+    /**
+     * Execute the mapping step of the string preparation :
+     * - suppress useless chars
+     * - transform to spaces
+     * - lowercase
+     * 
+     * @param str The string to transform
+     * @return The transformed string
+     */
+    public static String map( String str )
+    {
+        return ( str == null ? null : map( str.toCharArray() ).toString() );
+    }
+    
+    /**
+     * Execute the mapping step of the string preparation :
+     * - suppress useless chars
+     * - transform to spaces
+     * - lowercase
+     * 
+     * @param array The char array to transform
+     * @return The transformed StringBuilder
+     */
+    public static StringBuilder map( char[] array )
+    {
+        if ( array == null )
+        {
+            return null;
+        }
+
+        StringBuilder sb = new StringBuilder( array.length );
+        
+        for ( char c:array )
+        {
+            // First, eliminate surrogates, and replace them by FFFD char
+            if ( ( c >= 0xD800 ) && ( c <= 0xDFFF ) )
+            {
+                sb.append( (char)0xFFFD );
+                continue;
+            }
+            
+            switch ( c )
+            {
+                case 0x0000:
+                case 0x0001:
+                case 0x0002:
+                case 0x0003:
+                case 0x0004:
+                case 0x0005:
+                case 0x0006:
+                case 0x0007:
+                case 0x0008:
+                    break;
+                    
+                case 0x0009:
+                case 0x000A:
+                case 0x000B:
+                case 0x000C:
+                case 0x000D:
+                    sb.append( (char)0x20 );
+                    break;
+                    
+                case 0x000E:
+                case 0x000F:
+                case 0x0010:
+                case 0x0011:
+                case 0x0012:
+                case 0x0013:
+                case 0x0014:
+                case 0x0015:
+                case 0x0016:
+                case 0x0017:
+                case 0x0018:
+                case 0x0019:
+                case 0x001A:
+                case 0x001B:
+                case 0x001C:
+                case 0x001D:
+                case 0x001E:
+                case 0x001F:
+                    break;
+
+                case 0x0041 : 
+                case 0x0042 : 
+                case 0x0043 : 
+                case 0x0044 : 
+                case 0x0045 : 
+                case 0x0046 : 
+                case 0x0047 : 
+                case 0x0048 : 
+                case 0x0049 : 
+                case 0x004A : 
+                case 0x004B : 
+                case 0x004C : 
+                case 0x004D : 
+                case 0x004E : 
+                case 0x004F : 
+                case 0x0050 : 
+                case 0x0051 : 
+                case 0x0052 : 
+                case 0x0053 : 
+                case 0x0054 : 
+                case 0x0055 : 
+                case 0x0056 : 
+                case 0x0057 : 
+                case 0x0058 : 
+                case 0x0059 : 
+                case 0x005A : 
+                    sb.append( (char)( c | 0x0020 ) );
+                    break;
+        
+                case 0x007F:
+                case 0x0080:
+                case 0x0081:
+                case 0x0082:
+                case 0x0083:
+                case 0x0084:
+                    break;
+                    
+                case 0x0085:
+                    sb.append( (char)0x20 );
+                    break;
+
+                case 0x0086:
+                case 0x0087:
+                case 0x0088:
+                case 0x0089:
+                case 0x008A:
+                case 0x008B:
+                case 0x008C:
+                case 0x008D:
+                case 0x008E:
+                case 0x008F:
+                case 0x0090:
+                case 0x0091:
+                case 0x0092:
+                case 0x0093:
+                case 0x0094:
+                case 0x0095:
+                case 0x0096:
+                case 0x0097:
+                case 0x0098:
+                case 0x0099:
+                case 0x009A:
+                case 0x009B:
+                case 0x009C:
+                case 0x009D:
+                case 0x009E:
+                case 0x009F:
+                    break;
+                    
+                case 0x00A0:
+                    sb.append( (char)0x20 );
+                    break;
+
+                case 0x00AD:
+                    break;
+
+                    
+                case 0x00B5 : 
+                    sb.append( (char)0x03BC );
+                    break;
+        
+                case 0x00C0 : 
+                case 0x00C1 : 
+                case 0x00C2 : 
+                case 0x00C3 : 
+                case 0x00C4 : 
+                case 0x00C5 : 
+                case 0x00C6 : 
+                case 0x00C7 : 
+                case 0x00C8 : 
+                case 0x00C9 : 
+                case 0x00CA : 
+                case 0x00CB : 
+                case 0x00CC : 
+                case 0x00CD : 
+                case 0x00CE : 
+                case 0x00CF : 
+                case 0x00D0 : 
+                case 0x00D1 : 
+                case 0x00D2 : 
+                case 0x00D3 : 
+                case 0x00D4 : 
+                case 0x00D5 : 
+                case 0x00D6 : 
+                case 0x00D8 : 
+                case 0x00D9 : 
+                case 0x00DA : 
+                case 0x00DB : 
+                case 0x00DC : 
+                case 0x00DD : 
+                case 0x00DE : 
+                    sb.append( (char)( c | 0x0020 ) );
+                    break;
+        
+                case 0x00DF : 
+                    sb.append( (char)0x0073 );
+                    sb.append( (char)0x0073 );
+                    break;
+        
+                case 0x0100 : 
+                    sb.append( (char)0x0101 );
+                    break;
+        
+                case 0x0102 : 
+                    sb.append( (char)0x0103 );
+                    break;
+        
+                case 0x0104 : 
+                    sb.append( (char)0x0105 );
+                    break;
+        
+                case 0x0106 : 
+                    sb.append( (char)0x0107 );
+                    break;
+        
+                case 0x0108 : 
+                    sb.append( (char)0x0109 );
+                    break;
+        
+                case 0x010A : 
+                    sb.append( (char)0x010B );
+                    break;
+        
+                case 0x010C : 
+                    sb.append( (char)0x010D );
+                    break;
+        
+                case 0x010E : 
+                    sb.append( (char)0x010F );
+                    break;
+        
+                case 0x0110 : 
+                    sb.append( (char)0x0111 );
+                    break;
+        
+                case 0x0112 : 
+                    sb.append( (char)0x0113 );
+                    break;
+        
+                case 0x0114 : 
+                    sb.append( (char)0x0115 );
+                    break;
+        
+                case 0x0116 : 
+                    sb.append( (char)0x0117 );
+                    break;
+        
+                case 0x0118 : 
+                    sb.append( (char)0x0119 );
+                    break;
+        
+                case 0x011A : 
+                    sb.append( (char)0x011B );
+                    break;
+        
+                case 0x011C : 
+                    sb.append( (char)0x011D );
+                    break;
+        
+                case 0x011E : 
+                    sb.append( (char)0x011F );
+                    break;
+        
+                case 0x0120 : 
+                    sb.append( (char)0x0121 );
+                    break;
+        
+                case 0x0122 : 
+                    sb.append( (char)0x0123 );
+                    break;
+        
+                case 0x0124 : 
+                    sb.append( (char)0x0125 );
+                    break;
+        
+                case 0x0126 : 
+                    sb.append( (char)0x0127 );
+                    break;
+        
+                case 0x0128 : 
+                    sb.append( (char)0x0129 );
+                    break;
+        
+                case 0x012A : 
+                    sb.append( (char)0x012B );
+                    break;
+        
+                case 0x012C : 
+                    sb.append( (char)0x012D );
+                    break;
+        
+                case 0x012E : 
+                    sb.append( (char)0x012F );
+                    break;
+        
+                case 0x0130 : 
+                    sb.append( (char)0x0069 );
+                    sb.append( (char)0x0307 );
+                    break;
+        
+                case 0x0132 : 
+                    sb.append( (char)0x0133 );
+                    break;
+        
+                case 0x0134 : 
+                    sb.append( (char)0x0135 );
+                    break;
+        
+                case 0x0136 : 
+                    sb.append( (char)0x0137 );
+                    break;
+        
+                case 0x0139 : 
+                    sb.append( (char)0x013A );
+                    break;
+        
+                case 0x013B : 
+                    sb.append( (char)0x013C );
+                    break;
+        
+                case 0x013D : 
+                    sb.append( (char)0x013E );
+                    break;
+        
+                case 0x013F : 
+                    sb.append( (char)0x0140 );
+                    break;
+        
+                case 0x0141 : 
+                    sb.append( (char)0x0142 );
+                    break;
+        
+                case 0x0143 : 
+                    sb.append( (char)0x0144 );
+                    break;
+        
+                case 0x0145 : 
+                    sb.append( (char)0x0146 );
+                    break;
+        
+                case 0x0147 : 
+                    sb.append( (char)0x0148 );
+                    break;
+        
+                case 0x0149 : 
+                    sb.append( (char)0x02BC );
+                    sb.append( (char)0x006E );
+                    break;
+        
+                case 0x014A : 
+                    sb.append( (char)0x014B );
+                    break;
+        
+                case 0x014C : 
+                    sb.append( (char)0x014D );
+                    break;
+        
+                case 0x014E : 
+                    sb.append( (char)0x014F );
+                    break;
+        
+                case 0x0150 : 
+                    sb.append( (char)0x0151 );
+                    break;
+        
+                case 0x0152 : 
+                    sb.append( (char)0x0153 );
+                    break;
+        
+                case 0x0154 : 
+                    sb.append( (char)0x0155 );
+                    break;
+        
+                case 0x0156 : 
+                    sb.append( (char)0x0157 );
+                    break;
+        
+                case 0x0158 : 
+                    sb.append( (char)0x0159 );
+                    break;
+        
+                case 0x015A : 
+                    sb.append( (char)0x015B );
+                    break;
+        
+                case 0x015C : 
+                    sb.append( (char)0x015D );
+                    break;
+        
+                case 0x015E : 
+                    sb.append( (char)0x015F );
+                    break;
+        
+                case 0x0160 : 
+                    sb.append( (char)0x0161 );
+                    break;
+        
+                case 0x0162 : 
+                    sb.append( (char)0x0163 );
+                    break;
+        
+                case 0x0164 : 
+                    sb.append( (char)0x0165 );
+                    break;
+        
+                case 0x0166 : 
+                    sb.append( (char)0x0167 );
+                    break;
+        
+                case 0x0168 : 
+                    sb.append( (char)0x0169 );
+                    break;
+        
+                case 0x016A : 
+                    sb.append( (char)0x016B );
+                    break;
+        
+                case 0x016C : 
+                    sb.append( (char)0x016D );
+                    break;
+        
+                case 0x016E : 
+                    sb.append( (char)0x016F );
+                    break;
+        
+                case 0x0170 : 
+                    sb.append( (char)0x0171 );
+                    break;
+        
+                case 0x0172 : 
+                    sb.append( (char)0x0173 );
+                    break;
+        
+                case 0x0174 : 
+                    sb.append( (char)0x0175 );
+                    break;
+        
+                case 0x0176 : 
+                    sb.append( (char)0x0177 );
+                    break;
+        
+                case 0x0178 : 
+                    sb.append( (char)0x00FF );
+                    break;
+        
+                case 0x0179 : 
+                    sb.append( (char)0x017A );
+                    break;
+        
+                case 0x017B : 
+                    sb.append( (char)0x017C );
+                    break;
+        
+                case 0x017D : 
+                    sb.append( (char)0x017E );
+                    break;
+        
+                case 0x017F : 
+                    sb.append( (char)0x0073 );
+                    break;
+        
+                case 0x0181 : 
+                    sb.append( (char)0x0253 );
+                    break;
+        
+                case 0x0182 : 
+                    sb.append( (char)0x0183 );
+                    break;
+        
+                case 0x0184 : 
+                    sb.append( (char)0x0185 );
+                    break;
+        
+                case 0x0186 : 
+                    sb.append( (char)0x0254 );
+                    break;
+        
+                case 0x0187 : 
+                    sb.append( (char)0x0188 );
+                    break;
+        
+                case 0x0189 : 
+                    sb.append( (char)0x0256 );
+                    break;
+        
+                case 0x018A : 
+                    sb.append( (char)0x0257 );
+                    break;
+        
+                case 0x018B : 
+                    sb.append( (char)0x018C );
+                    break;
+        
+                case 0x018E : 
+                    sb.append( (char)0x01DD );
+                    break;
+        
+                case 0x018F : 
+                    sb.append( (char)0x0259 );
+                    break;
+        
+                case 0x0190 : 
+                    sb.append( (char)0x025B );
+                    break;
+        
+                case 0x0191 : 
+                    sb.append( (char)0x0192 );
+                    break;
+        
+                case 0x0193 : 
+                    sb.append( (char)0x0260 );
+                    break;
+        
+                case 0x0194 : 
+                    sb.append( (char)0x0263 );
+                    break;
+        
+                case 0x0196 : 
+                    sb.append( (char)0x0269 );
+                    break;
+        
+                case 0x0197 : 
+                    sb.append( (char)0x0268 );
+                    break;
+        
+                case 0x0198 : 
+                    sb.append( (char)0x0199 );
+                    break;
+        
+                case 0x019C : 
+                    sb.append( (char)0x026F );
+                    break;
+        
+                case 0x019D : 
+                    sb.append( (char)0x0272 );
+                    break;
+        
+                case 0x019F : 
+                    sb.append( (char)0x0275 );
+                    break;
+        
+                case 0x01A0 : 
+                    sb.append( (char)0x01A1 );
+                    break;
+        
+                case 0x01A2 : 
+                    sb.append( (char)0x01A3 );
+                    break;
+        
+                case 0x01A4 : 
+                    sb.append( (char)0x01A5 );
+                    break;
+        
+                case 0x01A6 : 
+                    sb.append( (char)0x0280 );
+                    break;
+        
+                case 0x01A7 : 
+                    sb.append( (char)0x01A8 );
+                    break;
+        
+                case 0x01A9 : 
+                    sb.append( (char)0x0283 );
+                    break;
+        
+                case 0x01AC : 
+                    sb.append( (char)0x01AD );
+                    break;
+        
+                case 0x01AE : 
+                    sb.append( (char)0x0288 );
+                    break;
+        
+                case 0x01AF : 
+                    sb.append( (char)0x01B0 );
+                    break;
+        
+                case 0x01B1 : 
+                    sb.append( (char)0x028A );
+                    break;
+        
+                case 0x01B2 : 
+                    sb.append( (char)0x028B );
+                    break;
+        
+                case 0x01B3 : 
+                    sb.append( (char)0x01B4 );
+                    break;
+        
+                case 0x01B5 : 
+                    sb.append( (char)0x01B6 );
+                    break;
+        
+                case 0x01B7 : 
+                    sb.append( (char)0x0292 );
+                    break;
+        
+                case 0x01B8 : 
+                    sb.append( (char)0x01B9 );
+                    break;
+        
+                case 0x01BC : 
+                    sb.append( (char)0x01BD );
+                    break;
+        
+                case 0x01C4 : 
+                    sb.append( (char)0x01C6 );
+                    break;
+        
+                case 0x01C5 : 
+                    sb.append( (char)0x01C6 );
+                    break;
+        
+                case 0x01C7 : 
+                    sb.append( (char)0x01C9 );
+                    break;
+        
+                case 0x01C8 : 
+                    sb.append( (char)0x01C9 );
+                    break;
+        
+                case 0x01CA : 
+                    sb.append( (char)0x01CC );
+                    break;
+        
+                case 0x01CB : 
+                    sb.append( (char)0x01CC );
+                    break;
+        
+                case 0x01CD : 
+                    sb.append( (char)0x01CE );
+                    break;
+        
+                case 0x01CF : 
+                    sb.append( (char)0x01D0 );
+                    break;
+        
+                case 0x01D1 : 
+                    sb.append( (char)0x01D2 );
+                    break;
+        
+                case 0x01D3 : 
+                    sb.append( (char)0x01D4 );
+                    break;
+        
+                case 0x01D5 : 
+                    sb.append( (char)0x01D6 );
+                    break;
+        
+                case 0x01D7 : 
+                    sb.append( (char)0x01D8 );
+                    break;
+        
+                case 0x01D9 : 
+                    sb.append( (char)0x01DA );
+                    break;
+        
+                case 0x01DB : 
+                    sb.append( (char)0x01DC );
+                    break;
+        
+                case 0x01DE : 
+                    sb.append( (char)0x01DF );
+                    break;
+        
+                case 0x01E0 : 
+                    sb.append( (char)0x01E1 );
+                    break;
+        
+                case 0x01E2 : 
+                    sb.append( (char)0x01E3 );
+                    break;
+        
+                case 0x01E4 : 
+                    sb.append( (char)0x01E5 );
+                    break;
+        
+                case 0x01E6 : 
+                    sb.append( (char)0x01E7 );
+                    break;
+        
+                case 0x01E8 : 
+                    sb.append( (char)0x01E9 );
+                    break;
+        
+                case 0x01EA : 
+                    sb.append( (char)0x01EB );
+                    break;
+        
+                case 0x01EC : 
+                    sb.append( (char)0x01ED );
+                    break;
+        
+                case 0x01EE : 
+                    sb.append( (char)0x01EF );
+                    break;
+        
+                case 0x01F0 : 
+                    sb.append( (char)0x006A );
+                    sb.append( (char)0x030C );
+                    break;
+        
+                case 0x01F1 : 
+                    sb.append( (char)0x01F3 );
+                    break;
+        
+                case 0x01F2 : 
+                    sb.append( (char)0x01F3 );
+                    break;
+        
+                case 0x01F4 : 
+                    sb.append( (char)0x01F5 );
+                    break;
+        
+                case 0x01F6 : 
+                    sb.append( (char)0x0195 );
+                    break;
+        
+                case 0x01F7 : 
+                    sb.append( (char)0x01BF );
+                    break;
+        
+                case 0x01F8 : 
+                    sb.append( (char)0x01F9 );
+                    break;
+        
+                case 0x01FA : 
+                    sb.append( (char)0x01FB );
+                    break;
+        
+                case 0x01FC : 
+                    sb.append( (char)0x01FD );
+                    break;
+        
+                case 0x01FE : 
+                    sb.append( (char)0x01FF );
+                    break;
+        
+                case 0x0200 : 
+                    sb.append( (char)0x0201 );
+                    break;
+        
+                case 0x0202 : 
+                    sb.append( (char)0x0203 );
+                    break;
+        
+                case 0x0204 : 
+                    sb.append( (char)0x0205 );
+                    break;
+        
+                case 0x0206 : 
+                    sb.append( (char)0x0207 );
+                    break;
+        
+                case 0x0208 : 
+                    sb.append( (char)0x0209 );
+                    break;
+        
+                case 0x020A : 
+                    sb.append( (char)0x020B );
+                    break;
+        
+                case 0x020C : 
+                    sb.append( (char)0x020D );
+                    break;
+        
+                case 0x020E : 
+                    sb.append( (char)0x020F );
+                    break;
+        
+                case 0x0210 : 
+                    sb.append( (char)0x0211 );
+                    break;
+        
+                case 0x0212 : 
+                    sb.append( (char)0x0213 );
+                    break;
+        
+                case 0x0214 : 
+                    sb.append( (char)0x0215 );
+                    break;
+        
+                case 0x0216 : 
+                    sb.append( (char)0x0217 );
+                    break;
+        
+                case 0x0218 : 
+                    sb.append( (char)0x0219 );
+                    break;
+        
+                case 0x021A : 
+                    sb.append( (char)0x021B );
+                    break;
+        
+                case 0x021C : 
+                    sb.append( (char)0x021D );
+                    break;
+        
+                case 0x021E : 
+                    sb.append( (char)0x021F );
+                    break;
+        
+                case 0x0220 : 
+                    sb.append( (char)0x019E );
+                    break;
+        
+                case 0x0222 : 
+                    sb.append( (char)0x0223 );
+                    break;
+        
+                case 0x0224 : 
+                    sb.append( (char)0x0225 );
+                    break;
+        
+                case 0x0226 : 
+                    sb.append( (char)0x0227 );
+                    break;
+        
+                case 0x0228 : 
+                    sb.append( (char)0x0229 );
+                    break;
+        
+                case 0x022A : 
+                    sb.append( (char)0x022B );
+                    break;
+        
+                case 0x022C : 
+                    sb.append( (char)0x022D );
+                    break;
+        
+                case 0x022E : 
+                    sb.append( (char)0x022F );
+                    break;
+        
+                case 0x0230 : 
+                    sb.append( (char)0x0231 );
+                    break;
+        
+                case 0x0232 : 
+                    sb.append( (char)0x0233 );
+                    break;
+        
+                case 0x0345 : 
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x034F : 
+                    break;
+        
+                case 0x037A : 
+                    sb.append( (char)0x0020 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x0386 : 
+                    sb.append( (char)0x03AC );
+                    break;
+        
+                case 0x0388 : 
+                    sb.append( (char)0x03AD );
+                    break;
+        
+                case 0x0389 : 
+                    sb.append( (char)0x03AE );
+                    break;
+        
+                case 0x038A : 
+                    sb.append( (char)0x03AF );
+                    break;
+        
+                case 0x038C : 
+                    sb.append( (char)0x03CC );
+                    break;
+        
+                case 0x038E : 
+                    sb.append( (char)0x03CD );
+                    break;
+        
+                case 0x038F : 
+                    sb.append( (char)0x03CE );
+                    break;
+        
+                case 0x0390 : 
+                    sb.append( (char)0x03B9 );
+                    sb.append( (char)0x0308 );
+                    sb.append( (char)0x0301 );
+                    break;
+        
+                case 0x0391 : 
+                    sb.append( (char)0x03B1 );
+                    break;
+        
+                case 0x0392 : 
+                    sb.append( (char)0x03B2 );
+                    break;
+        
+                case 0x0393 : 
+                    sb.append( (char)0x03B3 );
+                    break;
+        
+                case 0x0394 : 
+                    sb.append( (char)0x03B4 );
+                    break;
+        
+                case 0x0395 : 
+                    sb.append( (char)0x03B5 );
+                    break;
+        
+                case 0x0396 : 
+                    sb.append( (char)0x03B6 );
+                    break;
+        
+                case 0x0397 : 
+                    sb.append( (char)0x03B7 );
+                    break;
+        
+                case 0x0398 : 
+                    sb.append( (char)0x03B8 );
+                    break;
+        
+                case 0x0399 : 
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x039A : 
+                    sb.append( (char)0x03BA );
+                    break;
+        
+                case 0x039B : 
+                    sb.append( (char)0x03BB );
+                    break;
+        
+                case 0x039C : 
+                    sb.append( (char)0x03BC );
+                    break;
+        
+                case 0x039D : 
+                    sb.append( (char)0x03BD );
+                    break;
+        
+                case 0x039E : 
+                    sb.append( (char)0x03BE );
+                    break;
+        
+                case 0x039F : 
+                    sb.append( (char)0x03BF );
+                    break;
+        
+                case 0x03A0 : 
+                    sb.append( (char)0x03C0 );
+                    break;
+        
+                case 0x03A1 : 
+                    sb.append( (char)0x03C1 );
+                    break;
+        
+                case 0x03A3 : 
+                    sb.append( (char)0x03C3 );
+                    break;
+        
+                case 0x03A4 : 
+                    sb.append( (char)0x03C4 );
+                    break;
+        
+                case 0x03A5 : 
+                    sb.append( (char)0x03C5 );
+                    break;
+        
+                case 0x03A6 : 
+                    sb.append( (char)0x03C6 );
+                    break;
+        
+                case 0x03A7 : 
+                    sb.append( (char)0x03C7 );
+                    break;
+        
+                case 0x03A8 : 
+                    sb.append( (char)0x03C8 );
+                    break;
+        
+                case 0x03A9 : 
+                    sb.append( (char)0x03C9 );
+                    break;
+        
+                case 0x03AA : 
+                    sb.append( (char)0x03CA );
+                    break;
+        
+                case 0x03AB : 
+                    sb.append( (char)0x03CB );
+                    break;
+        
+                case 0x03B0 : 
+                    sb.append( (char)0x03C5 );
+                    sb.append( (char)0x0308 );
+                    sb.append( (char)0x0301 );
+                    break;
+        
+                case 0x03C2 : 
+                    sb.append( (char)0x03C3 );
+                    break;
+        
+                case 0x03D0 : 
+                    sb.append( (char)0x03B2 );
+                    break;
+        
+                case 0x03D1 : 
+                    sb.append( (char)0x03B8 );
+                    break;
+        
+                case 0x03D2 : 
+                    sb.append( (char)0x03C5 );
+                    break;
+        
+                case 0x03D3 : 
+                    sb.append( (char)0x03CD );
+                    break;
+        
+                case 0x03D4 : 
+                    sb.append( (char)0x03CB );
+                    break;
+        
+                case 0x03D5 : 
+                    sb.append( (char)0x03C6 );
+                    break;
+        
+                case 0x03D6 : 
+                    sb.append( (char)0x03C0 );
+                    break;
+        
+                case 0x03D8 : 
+                    sb.append( (char)0x03D9 );
+                    break;
+        
+                case 0x03DA : 
+                    sb.append( (char)0x03DB );
+                    break;
+        
+                case 0x03DC : 
+                    sb.append( (char)0x03DD );
+                    break;
+        
+                case 0x03DE : 
+                    sb.append( (char)0x03DF );
+                    break;
+        
+                case 0x03E0 : 
+                    sb.append( (char)0x03E1 );
+                    break;
+        
+                case 0x03E2 : 
+                    sb.append( (char)0x03E3 );
+                    break;
+        
+                case 0x03E4 : 
+                    sb.append( (char)0x03E5 );
+                    break;
+        
+                case 0x03E6 : 
+                    sb.append( (char)0x03E7 );
+                    break;
+        
+                case 0x03E8 : 
+                    sb.append( (char)0x03E9 );
+                    break;
+        
+                case 0x03EA : 
+                    sb.append( (char)0x03EB );
+                    break;
+        
+                case 0x03EC : 
+                    sb.append( (char)0x03ED );
+                    break;
+        
+                case 0x03EE : 
+                    sb.append( (char)0x03EF );
+                    break;
+        
+                case 0x03F0 : 
+                    sb.append( (char)0x03BA );
+                    break;
+        
+                case 0x03F1 : 
+                    sb.append( (char)0x03C1 );
+                    break;
+        
+                case 0x03F2 : 
+                    sb.append( (char)0x03C3 );
+                    break;
+        
+                case 0x03F4 : 
+                    sb.append( (char)0x03B8 );
+                    break;
+        
+                case 0x03F5 : 
+                    sb.append( (char)0x03B5 );
+                    break;
+        
+                case 0x0400 : 
+                    sb.append( (char)0x0450 );
+                    break;
+        
+                case 0x0401 : 
+                    sb.append( (char)0x0451 );
+                    break;
+        
+                case 0x0402 : 
+                    sb.append( (char)0x0452 );
+                    break;
+        
+                case 0x0403 : 
+                    sb.append( (char)0x0453 );
+                    break;
+        
+                case 0x0404 : 
+                    sb.append( (char)0x0454 );
+                    break;
+        
+                case 0x0405 : 
+                    sb.append( (char)0x0455 );
+                    break;
+        
+                case 0x0406 : 
+                    sb.append( (char)0x0456 );
+                    break;
+        
+                case 0x0407 : 
+                    sb.append( (char)0x0457 );
+                    break;
+        
+                case 0x0408 : 
+                    sb.append( (char)0x0458 );
+                    break;
+        
+                case 0x0409 : 
+                    sb.append( (char)0x0459 );
+                    break;
+        
+                case 0x040A : 
+                    sb.append( (char)0x045A );
+                    break;
+        
+                case 0x040B : 
+                    sb.append( (char)0x045B );
+                    break;
+        
+                case 0x040C : 
+                    sb.append( (char)0x045C );
+                    break;
+        
+                case 0x040D : 
+                    sb.append( (char)0x045D );
+                    break;
+        
+                case 0x040E : 
+                    sb.append( (char)0x045E );
+                    break;
+        
+                case 0x040F : 
+                    sb.append( (char)0x045F );
+                    break;
+        
+                case 0x0410 : 
+                    sb.append( (char)0x0430 );
+                    break;
+        
+                case 0x0411 : 
+                    sb.append( (char)0x0431 );
+                    break;
+        
+                case 0x0412 : 
+                    sb.append( (char)0x0432 );
+                    break;
+        
+                case 0x0413 : 
+                    sb.append( (char)0x0433 );
+                    break;
+        
+                case 0x0414 : 
+                    sb.append( (char)0x0434 );
+                    break;
+        
+                case 0x0415 : 
+                    sb.append( (char)0x0435 );
+                    break;
+        
+                case 0x0416 : 
+                    sb.append( (char)0x0436 );
+                    break;
+        
+                case 0x0417 : 
+                    sb.append( (char)0x0437 );
+                    break;
+        
+                case 0x0418 : 
+                    sb.append( (char)0x0438 );
+                    break;
+        
+                case 0x0419 : 
+                    sb.append( (char)0x0439 );
+                    break;
+        
+                case 0x041A : 
+                    sb.append( (char)0x043A );
+                    break;
+        
+                case 0x041B : 
+                    sb.append( (char)0x043B );
+                    break;
+        
+                case 0x041C : 
+                    sb.append( (char)0x043C );
+                    break;
+        
+                case 0x041D : 
+                    sb.append( (char)0x043D );
+                    break;
+        
+                case 0x041E : 
+                    sb.append( (char)0x043E );
+                    break;
+        
+                case 0x041F : 
+                    sb.append( (char)0x043F );
+                    break;
+        
+                case 0x0420 : 
+                    sb.append( (char)0x0440 );
+                    break;
+        
+                case 0x0421 : 
+                    sb.append( (char)0x0441 );
+                    break;
+        
+                case 0x0422 : 
+                    sb.append( (char)0x0442 );
+                    break;
+        
+                case 0x0423 : 
+                    sb.append( (char)0x0443 );
+                    break;
+        
+                case 0x0424 : 
+                    sb.append( (char)0x0444 );
+                    break;
+        
+                case 0x0425 : 
+                    sb.append( (char)0x0445 );
+                    break;
+        
+                case 0x0426 : 
+                    sb.append( (char)0x0446 );
+                    break;
+        
+                case 0x0427 : 
+                    sb.append( (char)0x0447 );
+                    break;
+        
+                case 0x0428 : 
+                    sb.append( (char)0x0448 );
+                    break;
+        
+                case 0x0429 : 
+                    sb.append( (char)0x0449 );
+                    break;
+        
+                case 0x042A : 
+                    sb.append( (char)0x044A );
+                    break;
+        
+                case 0x042B : 
+                    sb.append( (char)0x044B );
+                    break;
+        
+                case 0x042C : 
+                    sb.append( (char)0x044C );
+                    break;
+        
+                case 0x042D : 
+                    sb.append( (char)0x044D );
+                    break;
+        
+                case 0x042E : 
+                    sb.append( (char)0x044E );
+                    break;
+        
+                case 0x042F : 
+                    sb.append( (char)0x044F );
+                    break;
+        
+                case 0x0460 : 
+                    sb.append( (char)0x0461 );
+                    break;
+        
+                case 0x0462 : 
+                    sb.append( (char)0x0463 );
+                    break;
+        
+                case 0x0464 : 
+                    sb.append( (char)0x0465 );
+                    break;
+        
+                case 0x0466 : 
+                    sb.append( (char)0x0467 );
+                    break;
+        
+                case 0x0468 : 
+                    sb.append( (char)0x0469 );
+                    break;
+        
+                case 0x046A : 
+                    sb.append( (char)0x046B );
+                    break;
+        
+                case 0x046C : 
+                    sb.append( (char)0x046D );
+                    break;
+        
+                case 0x046E : 
+                    sb.append( (char)0x046F );
+                    break;
+        
+                case 0x0470 : 
+                    sb.append( (char)0x0471 );
+                    break;
+        
+                case 0x0472 : 
+                    sb.append( (char)0x0473 );
+                    break;
+        
+                case 0x0474 : 
+                    sb.append( (char)0x0475 );
+                    break;
+        
+                case 0x0476 : 
+                    sb.append( (char)0x0477 );
+                    break;
+        
+                case 0x0478 : 
+                    sb.append( (char)0x0479 );
+                    break;
+        
+                case 0x047A : 
+                    sb.append( (char)0x047B );
+                    break;
+        
+                case 0x047C : 
+                    sb.append( (char)0x047D );
+                    break;
+        
+                case 0x047E : 
+                    sb.append( (char)0x047F );
+                    break;
+        
+                case 0x0480 : 
+                    sb.append( (char)0x0481 );
+                    break;
+        
+                case 0x048A : 
+                    sb.append( (char)0x048B );
+                    break;
+        
+                case 0x048C : 
+                    sb.append( (char)0x048D );
+                    break;
+        
+                case 0x048E : 
+                    sb.append( (char)0x048F );
+                    break;
+        
+                case 0x0490 : 
+                    sb.append( (char)0x0491 );
+                    break;
+        
+                case 0x0492 : 
+                    sb.append( (char)0x0493 );
+                    break;
+        
+                case 0x0494 : 
+                    sb.append( (char)0x0495 );
+                    break;
+        
+                case 0x0496 : 
+                    sb.append( (char)0x0497 );
+                    break;
+        
+                case 0x0498 : 
+                    sb.append( (char)0x0499 );
+                    break;
+        
+                case 0x049A : 
+                    sb.append( (char)0x049B );
+                    break;
+        
+                case 0x049C : 
+                    sb.append( (char)0x049D );
+                    break;
+        
+                case 0x049E : 
+                    sb.append( (char)0x049F );
+                    break;
+        
+                case 0x04A0 : 
+                    sb.append( (char)0x04A1 );
+                    break;
+        
+                case 0x04A2 : 
+                    sb.append( (char)0x04A3 );
+                    break;
+        
+                case 0x04A4 : 
+                    sb.append( (char)0x04A5 );
+                    break;
+        
+                case 0x04A6 : 
+                    sb.append( (char)0x04A7 );
+                    break;
+        
+                case 0x04A8 : 
+                    sb.append( (char)0x04A9 );
+                    break;
+        
+                case 0x04AA : 
+                    sb.append( (char)0x04AB );
+                    break;
+        
+                case 0x04AC : 
+                    sb.append( (char)0x04AD );
+                    break;
+        
+                case 0x04AE : 
+                    sb.append( (char)0x04AF );
+                    break;
+        
+                case 0x04B0 : 
+                    sb.append( (char)0x04B1 );
+                    break;
+        
+                case 0x04B2 : 
+                    sb.append( (char)0x04B3 );
+                    break;
+        
+                case 0x04B4 : 
+                    sb.append( (char)0x04B5 );
+                    break;
+        
+                case 0x04B6 : 
+                    sb.append( (char)0x04B7 );
+                    break;
+        
+                case 0x04B8 : 
+                    sb.append( (char)0x04B9 );
+                    break;
+        
+                case 0x04BA : 
+                    sb.append( (char)0x04BB );
+                    break;
+        
+                case 0x04BC : 
+                    sb.append( (char)0x04BD );
+                    break;
+        
+                case 0x04BE : 
+                    sb.append( (char)0x04BF );
+                    break;
+        
+                case 0x04C1 : 
+                    sb.append( (char)0x04C2 );
+                    break;
+        
+                case 0x04C3 : 
+                    sb.append( (char)0x04C4 );
+                    break;
+        
+                case 0x04C5 : 
+                    sb.append( (char)0x04C6 );
+                    break;
+        
+                case 0x04C7 : 
+                    sb.append( (char)0x04C8 );
+                    break;
+        
+                case 0x04C9 : 
+                    sb.append( (char)0x04CA );
+                    break;
+        
+                case 0x04CB : 
+                    sb.append( (char)0x04CC );
+                    break;
+        
+                case 0x04CD : 
+                    sb.append( (char)0x04CE );
+                    break;
+        
+                case 0x04D0 : 
+                    sb.append( (char)0x04D1 );
+                    break;
+        
+                case 0x04D2 : 
+                    sb.append( (char)0x04D3 );
+                    break;
+        
+                case 0x04D4 : 
+                    sb.append( (char)0x04D5 );
+                    break;
+        
+                case 0x04D6 : 
+                    sb.append( (char)0x04D7 );
+                    break;
+        
+                case 0x04D8 : 
+                    sb.append( (char)0x04D9 );
+                    break;
+        
+                case 0x04DA : 
+                    sb.append( (char)0x04DB );
+                    break;
+        
+                case 0x04DC : 
+                    sb.append( (char)0x04DD );
+                    break;
+        
+                case 0x04DE : 
+                    sb.append( (char)0x04DF );
+                    break;
+        
+                case 0x04E0 : 
+                    sb.append( (char)0x04E1 );
+                    break;
+        
+                case 0x04E2 : 
+                    sb.append( (char)0x04E3 );
+                    break;
+        
+                case 0x04E4 : 
+                    sb.append( (char)0x04E5 );
+                    break;
+        
+                case 0x04E6 : 
+                    sb.append( (char)0x04E7 );
+                    break;
+        
+                case 0x04E8 : 
+                    sb.append( (char)0x04E9 );
+                    break;
+        
+                case 0x04EA : 
+                    sb.append( (char)0x04EB );
+                    break;
+        
+                case 0x04EC : 
+                    sb.append( (char)0x04ED );
+                    break;
+        
+                case 0x04EE : 
+                    sb.append( (char)0x04EF );
+                    break;
+        
+                case 0x04F0 : 
+                    sb.append( (char)0x04F1 );
+                    break;
+        
+                case 0x04F2 : 
+                    sb.append( (char)0x04F3 );
+                    break;
+        
+                case 0x04F4 : 
+                    sb.append( (char)0x04F5 );
+                    break;
+        
+                case 0x04F8 : 
+                    sb.append( (char)0x04F9 );
+                    break;
+        
+                case 0x0500 : 
+                    sb.append( (char)0x0501 );
+                    break;
+        
+                case 0x0502 : 
+                    sb.append( (char)0x0503 );
+                    break;
+        
+                case 0x0504 : 
+                    sb.append( (char)0x0505 );
+                    break;
+        
+                case 0x0506 : 
+                    sb.append( (char)0x0507 );
+                    break;
+        
+                case 0x0508 : 
+                    sb.append( (char)0x0509 );
+                    break;
+        
+                case 0x050A : 
+                    sb.append( (char)0x050B );
+                    break;
+        
+                case 0x050C : 
+                    sb.append( (char)0x050D );
+                    break;
+        
+                case 0x050E : 
+                    sb.append( (char)0x050F );
+                    break;
+        
+                case 0x0531 : 
+                    sb.append( (char)0x0561 );
+                    break;
+        
+                case 0x0532 : 
+                    sb.append( (char)0x0562 );
+                    break;
+        
+                case 0x0533 : 
+                    sb.append( (char)0x0563 );
+                    break;
+        
+                case 0x0534 : 
+                    sb.append( (char)0x0564 );
+                    break;
+        
+                case 0x0535 : 
+                    sb.append( (char)0x0565 );
+                    break;
+        
+                case 0x0536 : 
+                    sb.append( (char)0x0566 );
+                    break;
+        
+                case 0x0537 : 
+                    sb.append( (char)0x0567 );
+                    break;
+        
+                case 0x0538 : 
+                    sb.append( (char)0x0568 );
+                    break;
+        
+                case 0x0539 : 
+                    sb.append( (char)0x0569 );
+                    break;
+        
+                case 0x053A : 
+                    sb.append( (char)0x056A );
+                    break;
+        
+                case 0x053B : 
+                    sb.append( (char)0x056B );
+                    break;
+        
+                case 0x053C : 
+                    sb.append( (char)0x056C );
+                    break;
+        
+                case 0x053D : 
+                    sb.append( (char)0x056D );
+                    break;
+        
+                case 0x053E : 
+                    sb.append( (char)0x056E );
+                    break;
+        
+                case 0x053F : 
+                    sb.append( (char)0x056F );
+                    break;
+        
+                case 0x0540 : 
+                    sb.append( (char)0x0570 );
+                    break;
+        
+                case 0x0541 : 
+                    sb.append( (char)0x0571 );
+                    break;
+        
+                case 0x0542 : 
+                    sb.append( (char)0x0572 );
+                    break;
+        
+                case 0x0543 : 
+                    sb.append( (char)0x0573 );
+                    break;
+        
+                case 0x0544 : 
+                    sb.append( (char)0x0574 );
+                    break;
+        
+                case 0x0545 : 
+                    sb.append( (char)0x0575 );
+                    break;
+        
+                case 0x0546 : 
+                    sb.append( (char)0x0576 );
+                    break;
+        
+                case 0x0547 : 
+                    sb.append( (char)0x0577 );
+                    break;
+        
+                case 0x0548 : 
+                    sb.append( (char)0x0578 );
+                    break;
+        
+                case 0x0549 : 
+                    sb.append( (char)0x0579 );
+                    break;
+        
+                case 0x054A : 
+                    sb.append( (char)0x057A );
+                    break;
+        
+                case 0x054B : 
+                    sb.append( (char)0x057B );
+                    break;
+        
+                case 0x054C : 
+                    sb.append( (char)0x057C );
+                    break;
+        
+                case 0x054D : 
+                    sb.append( (char)0x057D );
+                    break;
+        
+                case 0x054E : 
+                    sb.append( (char)0x057E );
+                    break;
+        
+                case 0x054F : 
+                    sb.append( (char)0x057F );
+                    break;
+        
+                case 0x0550 : 
+                    sb.append( (char)0x0580 );
+                    break;
+        
+                case 0x0551 : 
+                    sb.append( (char)0x0581 );
+                    break;
+        
+                case 0x0552 : 
+                    sb.append( (char)0x0582 );
+                    break;
+        
+                case 0x0553 : 
+                    sb.append( (char)0x0583 );
+                    break;
+        
+                case 0x0554 : 
+                    sb.append( (char)0x0584 );
+                    break;
+        
+                case 0x0555 : 
+                    sb.append( (char)0x0585 );
+                    break;
+        
+                case 0x0556 : 
+                    sb.append( (char)0x0586 );
+                    break;
+        
+                case 0x0587 : 
+                    sb.append( (char)0x0565 );
+                    sb.append( (char)0x0582 );
+                    break;
+        
+                case 0x06DD : 
+                    break;
+        
+                case 0x070F : 
+                    break;
+        
+                case 0x1680 :
+                    sb.append( (char)0x0020 );
+                    break;
+        
+                case 0x1806 : 
+                    break;
+        
+                case 0x180B : 
+                case 0x180C : 
+                case 0x180D : 
+                case 0x180E : 
+                    break;
+        
+                    
+                case 0x1E00 : 
+                    sb.append( (char)0x1E01 );
+                    break;
+        
+                case 0x1E02 : 
+                    sb.append( (char)0x1E03 );
+                    break;
+        
+                case 0x1E04 : 
+                    sb.append( (char)0x1E05 );
+                    break;
+        
+                case 0x1E06 : 
+                    sb.append( (char)0x1E07 );
+                    break;
+        
+                case 0x1E08 : 
+                    sb.append( (char)0x1E09 );
+                    break;
+        
+                case 0x1E0A : 
+                    sb.append( (char)0x1E0B );
+                    break;
+        
+                case 0x1E0C : 
+                    sb.append( (char)0x1E0D );
+                    break;
+        
+                case 0x1E0E : 
+                    sb.append( (char)0x1E0F );
+                    break;
+        
+                case 0x1E10 : 
+                    sb.append( (char)0x1E11 );
+                    break;
+        
+                case 0x1E12 : 
+                    sb.append( (char)0x1E13 );
+                    break;
+        
+                case 0x1E14 : 
+                    sb.append( (char)0x1E15 );
+                    break;
+        
+                case 0x1E16 : 
+                    sb.append( (char)0x1E17 );
+                    break;
+        
+                case 0x1E18 : 
+                    sb.append( (char)0x1E19 );
+                    break;
+        
+                case 0x1E1A : 
+                    sb.append( (char)0x1E1B );
+                    break;
+        
+                case 0x1E1C : 
+                    sb.append( (char)0x1E1D );
+                    break;
+        
+                case 0x1E1E : 
+                    sb.append( (char)0x1E1F );
+                    break;
+        
+                case 0x1E20 : 
+                    sb.append( (char)0x1E21 );
+                    break;
+        
+                case 0x1E22 : 
+                    sb.append( (char)0x1E23 );
+                    break;
+        
+                case 0x1E24 : 
+                    sb.append( (char)0x1E25 );
+                    break;
+        
+                case 0x1E26 : 
+                    sb.append( (char)0x1E27 );
+                    break;
+        
+                case 0x1E28 : 
+                    sb.append( (char)0x1E29 );
+                    break;
+        
+                case 0x1E2A : 
+                    sb.append( (char)0x1E2B );
+                    break;
+        
+                case 0x1E2C : 
+                    sb.append( (char)0x1E2D );
+                    break;
+        
+                case 0x1E2E : 
+                    sb.append( (char)0x1E2F );
+                    break;
+        
+                case 0x1E30 : 
+                    sb.append( (char)0x1E31 );
+                    break;
+        
+                case 0x1E32 : 
+                    sb.append( (char)0x1E33 );
+                    break;
+        
+                case 0x1E34 : 
+                    sb.append( (char)0x1E35 );
+                    break;
+        
+                case 0x1E36 : 
+                    sb.append( (char)0x1E37 );
+                    break;
+        
+                case 0x1E38 : 
+                    sb.append( (char)0x1E39 );
+                    break;
+        
+                case 0x1E3A : 
+                    sb.append( (char)0x1E3B );
+                    break;
+        
+                case 0x1E3C : 
+                    sb.append( (char)0x1E3D );
+                    break;
+        
+                case 0x1E3E : 
+                    sb.append( (char)0x1E3F );
+                    break;
+        
+                case 0x1E40 : 
+                    sb.append( (char)0x1E41 );
+                    break;
+        
+                case 0x1E42 : 
+                    sb.append( (char)0x1E43 );
+                    break;
+        
+                case 0x1E44 : 
+                    sb.append( (char)0x1E45 );
+                    break;
+        
+                case 0x1E46 : 
+                    sb.append( (char)0x1E47 );
+                    break;
+        
+                case 0x1E48 : 
+                    sb.append( (char)0x1E49 );
+                    break;
+        
+                case 0x1E4A : 
+                    sb.append( (char)0x1E4B );
+                    break;
+        
+                case 0x1E4C : 
+                    sb.append( (char)0x1E4D );
+                    break;
+        
+                case 0x1E4E : 
+                    sb.append( (char)0x1E4F );
+                    break;
+        
+                case 0x1E50 : 
+                    sb.append( (char)0x1E51 );
+                    break;
+        
+                case 0x1E52 : 
+                    sb.append( (char)0x1E53 );
+                    break;
+        
+                case 0x1E54 : 
+                    sb.append( (char)0x1E55 );
+                    break;
+        
+                case 0x1E56 : 
+                    sb.append( (char)0x1E57 );
+                    break;
+        
+                case 0x1E58 : 
+                    sb.append( (char)0x1E59 );
+                    break;
+        
+                case 0x1E5A : 
+                    sb.append( (char)0x1E5B );
+                    break;
+        
+                case 0x1E5C : 
+                    sb.append( (char)0x1E5D );
+                    break;
+        
+                case 0x1E5E : 
+                    sb.append( (char)0x1E5F );
+                    break;
+        
+                case 0x1E60 : 
+                    sb.append( (char)0x1E61 );
+                    break;
+        
+                case 0x1E62 : 
+                    sb.append( (char)0x1E63 );
+                    break;
+        
+                case 0x1E64 : 
+                    sb.append( (char)0x1E65 );
+                    break;
+        
+                case 0x1E66 : 
+                    sb.append( (char)0x1E67 );
+                    break;
+        
+                case 0x1E68 : 
+                    sb.append( (char)0x1E69 );
+                    break;
+        
+                case 0x1E6A : 
+                    sb.append( (char)0x1E6B );
+                    break;
+        
+                case 0x1E6C : 
+                    sb.append( (char)0x1E6D );
+                    break;
+        
+                case 0x1E6E : 
+                    sb.append( (char)0x1E6F );
+                    break;
+        
+                case 0x1E70 : 
+                    sb.append( (char)0x1E71 );
+                    break;
+        
+                case 0x1E72 : 
+                    sb.append( (char)0x1E73 );
+                    break;
+        
+                case 0x1E74 : 
+                    sb.append( (char)0x1E75 );
+                    break;
+        
+                case 0x1E76 : 
+                    sb.append( (char)0x1E77 );
+                    break;
+        
+                case 0x1E78 : 
+                    sb.append( (char)0x1E79 );
+                    break;
+        
+                case 0x1E7A : 
+                    sb.append( (char)0x1E7B );
+                    break;
+        
+                case 0x1E7C : 
+                    sb.append( (char)0x1E7D );
+                    break;
+        
+                case 0x1E7E : 
+                    sb.append( (char)0x1E7F );
+                    break;
+        
+                case 0x1E80 : 
+                    sb.append( (char)0x1E81 );
+                    break;
+        
+                case 0x1E82 : 
+                    sb.append( (char)0x1E83 );
+                    break;
+        
+                case 0x1E84 : 
+                    sb.append( (char)0x1E85 );
+                    break;
+        
+                case 0x1E86 : 
+                    sb.append( (char)0x1E87 );
+                    break;
+        
+                case 0x1E88 : 
+                    sb.append( (char)0x1E89 );
+                    break;
+        
+                case 0x1E8A : 
+                    sb.append( (char)0x1E8B );
+                    break;
+        
+                case 0x1E8C : 
+                    sb.append( (char)0x1E8D );
+                    break;
+        
+                case 0x1E8E : 
+                    sb.append( (char)0x1E8F );
+                    break;
+        
+                case 0x1E90 : 
+                    sb.append( (char)0x1E91 );
+                    break;
+        
+                case 0x1E92 : 
+                    sb.append( (char)0x1E93 );
+                    break;
+        
+                case 0x1E94 : 
+                    sb.append( (char)0x1E95 );
+                    break;
+        
+                case 0x1E96 : 
+                    sb.append( (char)0x0068 );
+                    sb.append( (char)0x0331 );
+                    break;
+        
+                case 0x1E97 : 
+                    sb.append( (char)0x0074 );
+                    sb.append( (char)0x0308 );
+                    break;
+        
+                case 0x1E98 : 
+                    sb.append( (char)0x0077 );
+                    sb.append( (char)0x030A );
+                    break;
+        
+                case 0x1E99 : 
+                    sb.append( (char)0x0079 );
+                    sb.append( (char)0x030A );
+                    break;
+        
+                case 0x1E9A : 
+                    sb.append( (char)0x0061 );
+                    sb.append( (char)0x02BE );
+                    break;
+        
+                case 0x1E9B : 
+                    sb.append( (char)0x1E61 );
+                    break;
+        
+                case 0x1EA0 : 
+                    sb.append( (char)0x1EA1 );
+                    break;
+        
+                case 0x1EA2 : 
+                    sb.append( (char)0x1EA3 );
+                    break;
+        
+                case 0x1EA4 : 
+                    sb.append( (char)0x1EA5 );
+                    break;
+        
+                case 0x1EA6 : 
+                    sb.append( (char)0x1EA7 );
+                    break;
+        
+                case 0x1EA8 : 
+                    sb.append( (char)0x1EA9 );
+                    break;
+        
+                case 0x1EAA : 
+                    sb.append( (char)0x1EAB );
+                    break;
+        
+                case 0x1EAC : 
+                    sb.append( (char)0x1EAD );
+                    break;
+        
+                case 0x1EAE : 
+                    sb.append( (char)0x1EAF );
+                    break;
+        
+                case 0x1EB0 : 
+                    sb.append( (char)0x1EB1 );
+                    break;
+        
+                case 0x1EB2 : 
+                    sb.append( (char)0x1EB3 );
+                    break;
+        
+                case 0x1EB4 : 
+                    sb.append( (char)0x1EB5 );
+                    break;
+        
+                case 0x1EB6 : 
+                    sb.append( (char)0x1EB7 );
+                    break;
+        
+                case 0x1EB8 : 
+                    sb.append( (char)0x1EB9 );
+                    break;
+        
+                case 0x1EBA : 
+                    sb.append( (char)0x1EBB );
+                    break;
+        
+                case 0x1EBC : 
+                    sb.append( (char)0x1EBD );
+                    break;
+        
+                case 0x1EBE : 
+                    sb.append( (char)0x1EBF );
+                    break;
+        
+                case 0x1EC0 : 
+                    sb.append( (char)0x1EC1 );
+                    break;
+        
+                case 0x1EC2 : 
+                    sb.append( (char)0x1EC3 );
+                    break;
+        
+                case 0x1EC4 : 
+                    sb.append( (char)0x1EC5 );
+                    break;
+        
+                case 0x1EC6 : 
+                    sb.append( (char)0x1EC7 );
+                    break;
+        
+                case 0x1EC8 : 
+                    sb.append( (char)0x1EC9 );
+                    break;
+        
+                case 0x1ECA : 
+                    sb.append( (char)0x1ECB );
+                    break;
+        
+                case 0x1ECC : 
+                    sb.append( (char)0x1ECD );
+                    break;
+        
+                case 0x1ECE : 
+                    sb.append( (char)0x1ECF );
+                    break;
+        
+                case 0x1ED0 : 
+                    sb.append( (char)0x1ED1 );
+                    break;
+        
+                case 0x1ED2 : 
+                    sb.append( (char)0x1ED3 );
+                    break;
+        
+                case 0x1ED4 : 
+                    sb.append( (char)0x1ED5 );
+                    break;
+        
+                case 0x1ED6 : 
+                    sb.append( (char)0x1ED7 );
+                    break;
+        
+                case 0x1ED8 : 
+                    sb.append( (char)0x1ED9 );
+                    break;
+        
+                case 0x1EDA : 
+                    sb.append( (char)0x1EDB );
+                    break;
+        
+                case 0x1EDC : 
+                    sb.append( (char)0x1EDD );
+                    break;
+        
+                case 0x1EDE : 
+                    sb.append( (char)0x1EDF );
+                    break;
+        
+                case 0x1EE0 : 
+                    sb.append( (char)0x1EE1 );
+                    break;
+        
+                case 0x1EE2 : 
+                    sb.append( (char)0x1EE3 );
+                    break;
+        
+                case 0x1EE4 : 
+                    sb.append( (char)0x1EE5 );
+                    break;
+        
+                case 0x1EE6 : 
+                    sb.append( (char)0x1EE7 );
+                    break;
+        
+                case 0x1EE8 : 
+                    sb.append( (char)0x1EE9 );
+                    break;
+        
+                case 0x1EEA : 
+                    sb.append( (char)0x1EEB );
+                    break;
+        
+                case 0x1EEC : 
+                    sb.append( (char)0x1EED );
+                    break;
+        
+                case 0x1EEE : 
+                    sb.append( (char)0x1EEF );
+                    break;
+        
+                case 0x1EF0 : 
+                    sb.append( (char)0x1EF1 );
+                    break;
+        
+                case 0x1EF2 : 
+                    sb.append( (char)0x1EF3 );
+                    break;
+        
+                case 0x1EF4 : 
+                    sb.append( (char)0x1EF5 );
+                    break;
+        
+                case 0x1EF6 : 
+                    sb.append( (char)0x1EF7 );
+                    break;
+        
+                case 0x1EF8 : 
+                    sb.append( (char)0x1EF9 );
+                    break;
+        
+                case 0x1F08 : 
+                    sb.append( (char)0x1F00 );
+                    break;
+        
+                case 0x1F09 : 
+                    sb.append( (char)0x1F01 );
+                    break;
+        
+                case 0x1F0A : 
+                    sb.append( (char)0x1F02 );
+                    break;
+        
+                case 0x1F0B : 
+                    sb.append( (char)0x1F03 );
+                    break;
+        
+                case 0x1F0C : 
+                    sb.append( (char)0x1F04 );
+                    break;
+        
+                case 0x1F0D : 
+                    sb.append( (char)0x1F05 );
+                    break;
+        
+                case 0x1F0E : 
+                    sb.append( (char)0x1F06 );
+                    break;
+        
+                case 0x1F0F : 
+                    sb.append( (char)0x1F07 );
+                    break;
+        
+                case 0x1F18 : 
+                    sb.append( (char)0x1F10 );
+                    break;
+        
+                case 0x1F19 : 
+                    sb.append( (char)0x1F11 );
+                    break;
+        
+                case 0x1F1A : 
+                    sb.append( (char)0x1F12 );
+                    break;
+        
+                case 0x1F1B : 
+                    sb.append( (char)0x1F13 );
+                    break;
+        
+                case 0x1F1C : 
+                    sb.append( (char)0x1F14 );
+                    break;
+        
+                case 0x1F1D : 
+                    sb.append( (char)0x1F15 );
+                    break;
+        
+                case 0x1F28 : 
+                    sb.append( (char)0x1F20 );
+                    break;
+        
+                case 0x1F29 : 
+                    sb.append( (char)0x1F21 );
+                    break;
+        
+                case 0x1F2A : 
+                    sb.append( (char)0x1F22 );
+                    break;
+        
+                case 0x1F2B : 
+                    sb.append( (char)0x1F23 );
+                    break;
+        
+                case 0x1F2C : 
+                    sb.append( (char)0x1F24 );
+                    break;
+        
+                case 0x1F2D : 
+                    sb.append( (char)0x1F25 );
+                    break;
+        
+                case 0x1F2E : 
+                    sb.append( (char)0x1F26 );
+                    break;
+        
+                case 0x1F2F : 
+                    sb.append( (char)0x1F27 );
+                    break;
+        
+                case 0x1F38 : 
+                    sb.append( (char)0x1F30 );
+                    break;
+        
+                case 0x1F39 : 
+                    sb.append( (char)0x1F31 );
+                    break;
+        
+                case 0x1F3A : 
+                    sb.append( (char)0x1F32 );
+                    break;
+        
+                case 0x1F3B : 
+                    sb.append( (char)0x1F33 );
+                    break;
+        
+                case 0x1F3C : 
+                    sb.append( (char)0x1F34 );
+                    break;
+        
+                case 0x1F3D : 
+                    sb.append( (char)0x1F35 );
+                    break;
+        
+                case 0x1F3E : 
+                    sb.append( (char)0x1F36 );
+                    break;
+        
+                case 0x1F3F : 
+                    sb.append( (char)0x1F37 );
+                    break;
+        
+                case 0x1F48 : 
+                    sb.append( (char)0x1F40 );
+                    break;
+        
+                case 0x1F49 : 
+                    sb.append( (char)0x1F41 );
+                    break;
+        
+                case 0x1F4A : 
+                    sb.append( (char)0x1F42 );
+                    break;
+        
+                case 0x1F4B : 
+                    sb.append( (char)0x1F43 );
+                    break;
+        
+                case 0x1F4C : 
+                    sb.append( (char)0x1F44 );
+                    break;
+        
+                case 0x1F4D : 
+                    sb.append( (char)0x1F45 );
+                    break;
+        
+                case 0x1F50 : 
+                    sb.append( (char)0x03C5 );
+                    sb.append( (char)0x0313 );
+                    break;
+        
+                case 0x1F52 : 
+                    sb.append( (char)0x03C5 );
+                    sb.append( (char)0x0313 );
+                    sb.append( (char)0x0300 );
+                    break;
+        
+                case 0x1F54 : 
+                    sb.append( (char)0x03C5 );
+                    sb.append( (char)0x0313 );
+                    sb.append( (char)0x0301 );
+                    break;
+        
+                case 0x1F56 : 
+                    sb.append( (char)0x03C5 );
+                    sb.append( (char)0x0313 );
+                    sb.append( (char)0x0342 );
+                    break;
+        
+                case 0x1F59 : 
+                    sb.append( (char)0x1F51 );
+                    break;
+        
+                case 0x1F5B : 
+                    sb.append( (char)0x1F53 );
+                    break;
+        
+                case 0x1F5D : 
+                    sb.append( (char)0x1F55 );
+                    break;
+        
+                case 0x1F5F : 
+                    sb.append( (char)0x1F57 );
+                    break;
+        
+                case 0x1F68 : 
+                    sb.append( (char)0x1F60 );
+                    break;
+        
+                case 0x1F69 : 
+                    sb.append( (char)0x1F61 );
+                    break;
+        
+                case 0x1F6A : 
+                    sb.append( (char)0x1F62 );
+                    break;
+        
+                case 0x1F6B : 
+                    sb.append( (char)0x1F63 );
+                    break;
+        
+                case 0x1F6C : 
+                    sb.append( (char)0x1F64 );
+                    break;
+        
+                case 0x1F6D : 
+                    sb.append( (char)0x1F65 );
+                    break;
+        
+                case 0x1F6E : 
+                    sb.append( (char)0x1F66 );
+                    break;
+        
+                case 0x1F6F : 
+                    sb.append( (char)0x1F67 );
+                    break;
+        
+                case 0x1F80 : 
+                    sb.append( (char)0x1F00 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F81 : 
+                    sb.append( (char)0x1F01 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F82 : 
+                    sb.append( (char)0x1F02 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F83 : 
+                    sb.append( (char)0x1F03 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F84 : 
+                    sb.append( (char)0x1F04 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F85 : 
+                    sb.append( (char)0x1F05 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F86 : 
+                    sb.append( (char)0x1F06 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F87 : 
+                    sb.append( (char)0x1F07 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F88 : 
+                    sb.append( (char)0x1F00 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F89 : 
+                    sb.append( (char)0x1F01 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F8A : 
+                    sb.append( (char)0x1F02 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F8B : 
+                    sb.append( (char)0x1F03 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F8C : 
+                    sb.append( (char)0x1F04 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F8D : 
+                    sb.append( (char)0x1F05 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F8E : 
+                    sb.append( (char)0x1F06 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F8F : 
+                    sb.append( (char)0x1F07 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F90 : 
+                    sb.append( (char)0x1F20 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F91 : 
+                    sb.append( (char)0x1F21 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F92 : 
+                    sb.append( (char)0x1F22 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F93 : 
+                    sb.append( (char)0x1F23 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F94 : 
+                    sb.append( (char)0x1F24 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F95 : 
+                    sb.append( (char)0x1F25 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F96 : 
+                    sb.append( (char)0x1F26 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F97 : 
+                    sb.append( (char)0x1F27 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F98 : 
+                    sb.append( (char)0x1F20 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F99 : 
+                    sb.append( (char)0x1F21 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F9A : 
+                    sb.append( (char)0x1F22 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F9B : 
+                    sb.append( (char)0x1F23 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F9C : 
+                    sb.append( (char)0x1F24 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F9D : 
+                    sb.append( (char)0x1F25 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F9E : 
+                    sb.append( (char)0x1F26 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1F9F : 
+                    sb.append( (char)0x1F27 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FA0 : 
+                    sb.append( (char)0x1F60 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FA1 : 
+                    sb.append( (char)0x1F61 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FA2 : 
+                    sb.append( (char)0x1F62 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FA3 : 
+                    sb.append( (char)0x1F63 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FA4 : 
+                    sb.append( (char)0x1F64 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FA5 : 
+                    sb.append( (char)0x1F65 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FA6 : 
+                    sb.append( (char)0x1F66 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FA7 : 
+                    sb.append( (char)0x1F67 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FA8 : 
+                    sb.append( (char)0x1F60 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FA9 : 
+                    sb.append( (char)0x1F61 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FAA : 
+                    sb.append( (char)0x1F62 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FAB : 
+                    sb.append( (char)0x1F63 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FAC : 
+                    sb.append( (char)0x1F64 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FAD : 
+                    sb.append( (char)0x1F65 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FAE : 
+                    sb.append( (char)0x1F66 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FAF : 
+                    sb.append( (char)0x1F67 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FB2 : 
+                    sb.append( (char)0x1F70 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FB3 : 
+                    sb.append( (char)0x03B1 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FB4 : 
+                    sb.append( (char)0x03AC );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FB6 : 
+                    sb.append( (char)0x03B1 );
+                    sb.append( (char)0x0342 );
+                    break;
+        
+                case 0x1FB7 : 
+                    sb.append( (char)0x03B1 );
+                    sb.append( (char)0x0342 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FB8 : 
+                    sb.append( (char)0x1FB0 );
+                    break;
+        
+                case 0x1FB9 : 
+                    sb.append( (char)0x1FB1 );
+                    break;
+        
+                case 0x1FBA : 
+                    sb.append( (char)0x1F70 );
+                    break;
+        
+                case 0x1FBB : 
+                    sb.append( (char)0x1F71 );
+                    break;
+        
+                case 0x1FBC : 
+                    sb.append( (char)0x03B1 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FBE : 
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FC2 : 
+                    sb.append( (char)0x1F74 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FC3 : 
+                    sb.append( (char)0x03B7 );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FC4 : 
+                    sb.append( (char)0x03AE );
+                    sb.append( (char)0x03B9 );
+                    break;
+        
+                case 0x1FC6 : 
+                    sb.append( (char)0x03B7 );
+                    sb.append( (char)0x0342 );
+                    break;
+        
+                case 0x1FC7 : 

[... 3445 lines stripped ...]


Mime
View raw message