Merge pull request #309 from i59/patch-1
[mono.git] / mcs / class / I18N / MidEast / CP28596.cs
index 1ee3db0eb1b19934239d16803dc17c188bda6380..17f03bab90ea9dc1815a70e4d97e2be0a4a862a2 100644 (file)
  * OTHER DEALINGS IN THE SOFTWARE.
  */
 
-// Generated from "ibm-1089.ucm".
+// Generated from "windows-28596-2000.ucm".
 
 namespace I18N.MidEast
 {
 
 using System;
+using System.Text;
 using I18N.Common;
 
+[Serializable]
 public class CP28596 : ByteEncoding
 {
        public CP28596()
@@ -65,29 +67,34 @@ public class CP28596 : ByteEncoding
                '\u008A', '\u008B', '\u008C', '\u008D', '\u008E', '\u008F', 
                '\u0090', '\u0091', '\u0092', '\u0093', '\u0094', '\u0095', 
                '\u0096', '\u0097', '\u0098', '\u0099', '\u009A', '\u009B', 
-               '\u009C', '\u009D', '\u009E', '\u009F', '\u00A0', '\u003F', 
-               '\u003F', '\u003F', '\u00A4', '\u003F', '\u003F', '\u003F', 
-               '\u003F', '\u003F', '\u003F', '\u003F', '\u060C', '\u00AD', 
-               '\u003F', '\u003F', '\u003F', '\u003F', '\u003F', '\u003F', 
-               '\u003F', '\u003F', '\u003F', '\u003F', '\u003F', '\u003F', 
-               '\u003F', '\u061B', '\u003F', '\u003F', '\u003F', '\u061F', 
-               '\u003F', '\u0621', '\u0622', '\u0623', '\u0624', '\u0625', 
+               '\u009C', '\u009D', '\u009E', '\u009F', '\u00A0', '\uF7C8', 
+               '\uF7C9', '\uF7CA', '\u00A4', '\uF7CB', '\uF7CC', '\uF7CD', 
+               '\uF7CE', '\uF7CF', '\uF7D0', '\uF7D1', '\u060C', '\u00AD', 
+               '\uF7D2', '\uF7D3', '\uF7D4', '\uF7D5', '\uF7D6', '\uF7D7', 
+               '\uF7D8', '\uF7D9', '\uF7DA', '\uF7DB', '\uF7DC', '\uF7DD', 
+               '\uF7DE', '\u061B', '\uF7DF', '\uF7E0', '\uF7E1', '\u061F', 
+               '\uF7E2', '\u0621', '\u0622', '\u0623', '\u0624', '\u0625', 
                '\u0626', '\u0627', '\u0628', '\u0629', '\u062A', '\u062B', 
                '\u062C', '\u062D', '\u062E', '\u062F', '\u0630', '\u0631', 
                '\u0632', '\u0633', '\u0634', '\u0635', '\u0636', '\u0637', 
-               '\u0638', '\u0639', '\u063A', '\u003F', '\u003F', '\u003F', 
-               '\u003F', '\u003F', '\u0640', '\u0641', '\u0642', '\u0643', 
+               '\u0638', '\u0639', '\u063A', '\uF7E3', '\uF7E4', '\uF7E5', 
+               '\uF7E6', '\uF7E7', '\u0640', '\u0641', '\u0642', '\u0643', 
                '\u0644', '\u0645', '\u0646', '\u0647', '\u0648', '\u0649', 
                '\u064A', '\u064B', '\u064C', '\u064D', '\u064E', '\u064F', 
-               '\u0650', '\u0651', '\u0652', '\u003F', '\u003F', '\u003F', 
-               '\u003F', '\u003F', '\u003F', '\u003F', '\u003F', '\u003F', 
-               '\u003F', '\u003F', '\u003F', '\u003F', 
+               '\u0650', '\u0651', '\u0652', '\uF7E8', '\uF7E9', '\uF7EA', 
+               '\uF7EB', '\uF7EC', '\uF7ED', '\uF7EE', '\uF7EF', '\uF7F0', 
+               '\uF7F1', '\uF7F2', '\uF7F3', '\uF7F4', 
        };
 
-       protected override void ToBytes(char[] chars, int charIndex, int charCount,
-                                       byte[] bytes, int byteIndex)
+       protected unsafe override void ToBytes(char* chars, int charCount,
+                                       byte* bytes, int byteCount)
        {
                int ch;
+               int charIndex = 0;
+               int byteIndex = 0;
+#if NET_2_0
+               EncoderFallbackBuffer buffer = null;
+#endif
                while(charCount > 0)
                {
                        ch = (int)(chars[charIndex++]);
@@ -96,6 +103,257 @@ public class CP28596 : ByteEncoding
                                case 0x00A4:
                                case 0x00AD:
                                        break;
+                               case 0x00A1: ch = 0x21; break;
+                               case 0x00A2: ch = 0x63; break;
+                               case 0x00A5: ch = 0x59; break;
+                               case 0x00A6: ch = 0x7C; break;
+                               case 0x00A9: ch = 0x43; break;
+                               case 0x00AA: ch = 0x61; break;
+                               case 0x00AB: ch = 0x3C; break;
+                               case 0x00AE: ch = 0x52; break;
+                               case 0x00B2: ch = 0x32; break;
+                               case 0x00B3: ch = 0x33; break;
+                               case 0x00B7: ch = 0x2E; break;
+                               case 0x00B8: ch = 0x2C; break;
+                               case 0x00B9: ch = 0x31; break;
+                               case 0x00BA: ch = 0x6F; break;
+                               case 0x00BB: ch = 0x3E; break;
+                               case 0x00C0: ch = 0x41; break;
+                               case 0x00C1: ch = 0x41; break;
+                               case 0x00C2: ch = 0x41; break;
+                               case 0x00C3: ch = 0x41; break;
+                               case 0x00C4: ch = 0x41; break;
+                               case 0x00C5: ch = 0x41; break;
+                               case 0x00C6: ch = 0x41; break;
+                               case 0x00C7: ch = 0x43; break;
+                               case 0x00C8: ch = 0x45; break;
+                               case 0x00C9: ch = 0x45; break;
+                               case 0x00CA: ch = 0x45; break;
+                               case 0x00CB: ch = 0x45; break;
+                               case 0x00CC: ch = 0x49; break;
+                               case 0x00CD: ch = 0x49; break;
+                               case 0x00CE: ch = 0x49; break;
+                               case 0x00CF: ch = 0x49; break;
+                               case 0x00D0: ch = 0x44; break;
+                               case 0x00D1: ch = 0x4E; break;
+                               case 0x00D2: ch = 0x4F; break;
+                               case 0x00D3: ch = 0x4F; break;
+                               case 0x00D4: ch = 0x4F; break;
+                               case 0x00D5: ch = 0x4F; break;
+                               case 0x00D6: ch = 0x4F; break;
+                               case 0x00D8: ch = 0x4F; break;
+                               case 0x00D9: ch = 0x55; break;
+                               case 0x00DA: ch = 0x55; break;
+                               case 0x00DB: ch = 0x55; break;
+                               case 0x00DC: ch = 0x55; break;
+                               case 0x00DD: ch = 0x59; break;
+                               case 0x00E0: ch = 0x61; break;
+                               case 0x00E1: ch = 0x61; break;
+                               case 0x00E2: ch = 0x61; break;
+                               case 0x00E3: ch = 0x61; break;
+                               case 0x00E4: ch = 0x61; break;
+                               case 0x00E5: ch = 0x61; break;
+                               case 0x00E6: ch = 0x61; break;
+                               case 0x00E7: ch = 0x63; break;
+                               case 0x00E8: ch = 0x65; break;
+                               case 0x00E9: ch = 0x65; break;
+                               case 0x00EA: ch = 0x65; break;
+                               case 0x00EB: ch = 0x65; break;
+                               case 0x00EC: ch = 0x69; break;
+                               case 0x00ED: ch = 0x69; break;
+                               case 0x00EE: ch = 0x69; break;
+                               case 0x00EF: ch = 0x69; break;
+                               case 0x00F1: ch = 0x6E; break;
+                               case 0x00F2: ch = 0x6F; break;
+                               case 0x00F3: ch = 0x6F; break;
+                               case 0x00F4: ch = 0x6F; break;
+                               case 0x00F5: ch = 0x6F; break;
+                               case 0x00F6: ch = 0x6F; break;
+                               case 0x00F8: ch = 0x6F; break;
+                               case 0x00F9: ch = 0x75; break;
+                               case 0x00FA: ch = 0x75; break;
+                               case 0x00FB: ch = 0x75; break;
+                               case 0x00FC: ch = 0x75; break;
+                               case 0x00FD: ch = 0x79; break;
+                               case 0x00FF: ch = 0x79; break;
+                               case 0x0100: ch = 0x41; break;
+                               case 0x0101: ch = 0x61; break;
+                               case 0x0102: ch = 0x41; break;
+                               case 0x0103: ch = 0x61; break;
+                               case 0x0104: ch = 0x41; break;
+                               case 0x0105: ch = 0x61; break;
+                               case 0x0106: ch = 0x43; break;
+                               case 0x0107: ch = 0x63; break;
+                               case 0x0108: ch = 0x43; break;
+                               case 0x0109: ch = 0x63; break;
+                               case 0x010A: ch = 0x43; break;
+                               case 0x010B: ch = 0x63; break;
+                               case 0x010C: ch = 0x43; break;
+                               case 0x010D: ch = 0x63; break;
+                               case 0x010E: ch = 0x44; break;
+                               case 0x010F: ch = 0x64; break;
+                               case 0x0110: ch = 0x44; break;
+                               case 0x0111: ch = 0x64; break;
+                               case 0x0112: ch = 0x45; break;
+                               case 0x0113: ch = 0x65; break;
+                               case 0x0114: ch = 0x45; break;
+                               case 0x0115: ch = 0x65; break;
+                               case 0x0116: ch = 0x45; break;
+                               case 0x0117: ch = 0x65; break;
+                               case 0x0118: ch = 0x45; break;
+                               case 0x0119: ch = 0x65; break;
+                               case 0x011A: ch = 0x45; break;
+                               case 0x011B: ch = 0x65; break;
+                               case 0x011C: ch = 0x47; break;
+                               case 0x011D: ch = 0x67; break;
+                               case 0x011E: ch = 0x47; break;
+                               case 0x011F: ch = 0x67; break;
+                               case 0x0120: ch = 0x47; break;
+                               case 0x0121: ch = 0x67; break;
+                               case 0x0122: ch = 0x47; break;
+                               case 0x0123: ch = 0x67; break;
+                               case 0x0124: ch = 0x48; break;
+                               case 0x0125: ch = 0x68; break;
+                               case 0x0126: ch = 0x48; break;
+                               case 0x0127: ch = 0x68; break;
+                               case 0x0128: ch = 0x49; break;
+                               case 0x0129: ch = 0x69; break;
+                               case 0x012A: ch = 0x49; break;
+                               case 0x012B: ch = 0x69; break;
+                               case 0x012C: ch = 0x49; break;
+                               case 0x012D: ch = 0x69; break;
+                               case 0x012E: ch = 0x49; break;
+                               case 0x012F: ch = 0x69; break;
+                               case 0x0130: ch = 0x49; break;
+                               case 0x0131: ch = 0x69; break;
+                               case 0x0134: ch = 0x4A; break;
+                               case 0x0135: ch = 0x6A; break;
+                               case 0x0136: ch = 0x4B; break;
+                               case 0x0137: ch = 0x6B; break;
+                               case 0x0139: ch = 0x4C; break;
+                               case 0x013A: ch = 0x6C; break;
+                               case 0x013B: ch = 0x4C; break;
+                               case 0x013C: ch = 0x6C; break;
+                               case 0x013D: ch = 0x4C; break;
+                               case 0x013E: ch = 0x6C; break;
+                               case 0x0141: ch = 0x4C; break;
+                               case 0x0142: ch = 0x6C; break;
+                               case 0x0143: ch = 0x4E; break;
+                               case 0x0144: ch = 0x6E; break;
+                               case 0x0145: ch = 0x4E; break;
+                               case 0x0146: ch = 0x6E; break;
+                               case 0x0147: ch = 0x4E; break;
+                               case 0x0148: ch = 0x6E; break;
+                               case 0x014C: ch = 0x4F; break;
+                               case 0x014D: ch = 0x6F; break;
+                               case 0x014E: ch = 0x4F; break;
+                               case 0x014F: ch = 0x6F; break;
+                               case 0x0150: ch = 0x4F; break;
+                               case 0x0151: ch = 0x6F; break;
+                               case 0x0152: ch = 0x4F; break;
+                               case 0x0153: ch = 0x6F; break;
+                               case 0x0154: ch = 0x52; break;
+                               case 0x0155: ch = 0x72; break;
+                               case 0x0156: ch = 0x52; break;
+                               case 0x0157: ch = 0x72; break;
+                               case 0x0158: ch = 0x52; break;
+                               case 0x0159: ch = 0x72; break;
+                               case 0x015A: ch = 0x53; break;
+                               case 0x015B: ch = 0x73; break;
+                               case 0x015C: ch = 0x53; break;
+                               case 0x015D: ch = 0x73; break;
+                               case 0x015E: ch = 0x53; break;
+                               case 0x015F: ch = 0x73; break;
+                               case 0x0160: ch = 0x53; break;
+                               case 0x0161: ch = 0x73; break;
+                               case 0x0162: ch = 0x54; break;
+                               case 0x0163: ch = 0x74; break;
+                               case 0x0164: ch = 0x54; break;
+                               case 0x0165: ch = 0x74; break;
+                               case 0x0166: ch = 0x54; break;
+                               case 0x0167: ch = 0x74; break;
+                               case 0x0168: ch = 0x55; break;
+                               case 0x0169: ch = 0x75; break;
+                               case 0x016A: ch = 0x55; break;
+                               case 0x016B: ch = 0x75; break;
+                               case 0x016C: ch = 0x55; break;
+                               case 0x016D: ch = 0x75; break;
+                               case 0x016E: ch = 0x55; break;
+                               case 0x016F: ch = 0x75; break;
+                               case 0x0170: ch = 0x55; break;
+                               case 0x0171: ch = 0x75; break;
+                               case 0x0172: ch = 0x55; break;
+                               case 0x0173: ch = 0x75; break;
+                               case 0x0174: ch = 0x57; break;
+                               case 0x0175: ch = 0x77; break;
+                               case 0x0176: ch = 0x59; break;
+                               case 0x0177: ch = 0x79; break;
+                               case 0x0178: ch = 0x59; break;
+                               case 0x0179: ch = 0x5A; break;
+                               case 0x017A: ch = 0x7A; break;
+                               case 0x017B: ch = 0x5A; break;
+                               case 0x017C: ch = 0x7A; break;
+                               case 0x017D: ch = 0x5A; break;
+                               case 0x017E: ch = 0x7A; break;
+                               case 0x0180: ch = 0x62; break;
+                               case 0x0189: ch = 0x44; break;
+                               case 0x0191: ch = 0x46; break;
+                               case 0x0192: ch = 0x66; break;
+                               case 0x0197: ch = 0x49; break;
+                               case 0x019A: ch = 0x6C; break;
+                               case 0x019F: ch = 0x4F; break;
+                               case 0x01A0: ch = 0x4F; break;
+                               case 0x01A1: ch = 0x6F; break;
+                               case 0x01AB: ch = 0x74; break;
+                               case 0x01AE: ch = 0x54; break;
+                               case 0x01AF: ch = 0x55; break;
+                               case 0x01B0: ch = 0x75; break;
+                               case 0x01B6: ch = 0x7A; break;
+                               case 0x01CD: ch = 0x41; break;
+                               case 0x01CE: ch = 0x61; break;
+                               case 0x01CF: ch = 0x49; break;
+                               case 0x01D0: ch = 0x69; break;
+                               case 0x01D1: ch = 0x4F; break;
+                               case 0x01D2: ch = 0x6F; break;
+                               case 0x01D3: ch = 0x55; break;
+                               case 0x01D4: ch = 0x75; break;
+                               case 0x01D5: ch = 0x55; break;
+                               case 0x01D6: ch = 0x75; break;
+                               case 0x01D7: ch = 0x55; break;
+                               case 0x01D8: ch = 0x75; break;
+                               case 0x01D9: ch = 0x55; break;
+                               case 0x01DA: ch = 0x75; break;
+                               case 0x01DB: ch = 0x55; break;
+                               case 0x01DC: ch = 0x75; break;
+                               case 0x01DE: ch = 0x41; break;
+                               case 0x01DF: ch = 0x61; break;
+                               case 0x01E4: ch = 0x47; break;
+                               case 0x01E5: ch = 0x67; break;
+                               case 0x01E6: ch = 0x47; break;
+                               case 0x01E7: ch = 0x67; break;
+                               case 0x01E8: ch = 0x4B; break;
+                               case 0x01E9: ch = 0x6B; break;
+                               case 0x01EA: ch = 0x4F; break;
+                               case 0x01EB: ch = 0x6F; break;
+                               case 0x01EC: ch = 0x4F; break;
+                               case 0x01ED: ch = 0x6F; break;
+                               case 0x01F0: ch = 0x6A; break;
+                               case 0x0261: ch = 0x67; break;
+                               case 0x02B9: ch = 0x27; break;
+                               case 0x02BA: ch = 0x22; break;
+                               case 0x02BC: ch = 0x27; break;
+                               case 0x02C4: ch = 0x5E; break;
+                               case 0x02C6: ch = 0x5E; break;
+                               case 0x02C8: ch = 0x27; break;
+                               case 0x02CB: ch = 0x60; break;
+                               case 0x02CD: ch = 0x5F; break;
+                               case 0x02DC: ch = 0x7E; break;
+                               case 0x0300: ch = 0x60; break;
+                               case 0x0302: ch = 0x5E; break;
+                               case 0x0303: ch = 0x7E; break;
+                               case 0x030E: ch = 0x22; break;
+                               case 0x0331: ch = 0x5F; break;
+                               case 0x0332: ch = 0x5F; break;
                                case 0x060C: ch = 0xAC; break;
                                case 0x061B: ch = 0xBB; break;
                                case 0x061F: ch = 0xBF; break;
@@ -148,167 +406,195 @@ public class CP28596 : ByteEncoding
                                case 0x0652:
                                        ch -= 0x0560;
                                        break;
-                               case 0x0660:
-                               case 0x0661:
-                               case 0x0662:
-                               case 0x0663:
-                               case 0x0664:
-                               case 0x0665:
-                               case 0x0666:
-                               case 0x0667:
-                               case 0x0668:
-                               case 0x0669:
-                                       ch -= 0x0630;
+                               case 0x2000: ch = 0x20; break;
+                               case 0x2001: ch = 0x20; break;
+                               case 0x2002: ch = 0x20; break;
+                               case 0x2003: ch = 0x20; break;
+                               case 0x2004: ch = 0x20; break;
+                               case 0x2005: ch = 0x20; break;
+                               case 0x2006: ch = 0x20; break;
+                               case 0x2010: ch = 0x2D; break;
+                               case 0x2011: ch = 0x2D; break;
+                               case 0x2013: ch = 0x2D; break;
+                               case 0x2014: ch = 0x2D; break;
+                               case 0x2018: ch = 0x27; break;
+                               case 0x2019: ch = 0x27; break;
+                               case 0x201A: ch = 0x2C; break;
+                               case 0x201C: ch = 0x22; break;
+                               case 0x201D: ch = 0x22; break;
+                               case 0x201E: ch = 0x22; break;
+                               case 0x2022: ch = 0x2E; break;
+                               case 0x2026: ch = 0x2E; break;
+                               case 0x2032: ch = 0x27; break;
+                               case 0x2035: ch = 0x60; break;
+                               case 0x2039: ch = 0x3C; break;
+                               case 0x203A: ch = 0x3E; break;
+                               case 0x2122: ch = 0x54; break;
+                               case 0xF7C8: ch = 0xA1; break;
+                               case 0xF7C9: ch = 0xA2; break;
+                               case 0xF7CA: ch = 0xA3; break;
+                               case 0xF7CB:
+                               case 0xF7CC:
+                               case 0xF7CD:
+                               case 0xF7CE:
+                               case 0xF7CF:
+                               case 0xF7D0:
+                               case 0xF7D1:
+                                       ch -= 0xF726;
+                                       break;
+                               case 0xF7D2:
+                               case 0xF7D3:
+                               case 0xF7D4:
+                               case 0xF7D5:
+                               case 0xF7D6:
+                               case 0xF7D7:
+                               case 0xF7D8:
+                               case 0xF7D9:
+                               case 0xF7DA:
+                               case 0xF7DB:
+                               case 0xF7DC:
+                               case 0xF7DD:
+                               case 0xF7DE:
+                                       ch -= 0xF724;
+                                       break;
+                               case 0xF7DF: ch = 0xBC; break;
+                               case 0xF7E0: ch = 0xBD; break;
+                               case 0xF7E1: ch = 0xBE; break;
+                               case 0xF7E2: ch = 0xC0; break;
+                               case 0xF7E3:
+                               case 0xF7E4:
+                               case 0xF7E5:
+                               case 0xF7E6:
+                               case 0xF7E7:
+                                       ch -= 0xF708;
+                                       break;
+                               case 0xF7E8:
+                               case 0xF7E9:
+                               case 0xF7EA:
+                               case 0xF7EB:
+                               case 0xF7EC:
+                               case 0xF7ED:
+                               case 0xF7EE:
+                               case 0xF7EF:
+                               case 0xF7F0:
+                               case 0xF7F1:
+                               case 0xF7F2:
+                               case 0xF7F3:
+                               case 0xF7F4:
+                                       ch -= 0xF6F5;
+                                       break;
+                               case 0xFF01:
+                               case 0xFF02:
+                               case 0xFF03:
+                               case 0xFF04:
+                               case 0xFF05:
+                               case 0xFF06:
+                               case 0xFF07:
+                               case 0xFF08:
+                               case 0xFF09:
+                               case 0xFF0A:
+                               case 0xFF0B:
+                               case 0xFF0C:
+                               case 0xFF0D:
+                               case 0xFF0E:
+                               case 0xFF0F:
+                               case 0xFF10:
+                               case 0xFF11:
+                               case 0xFF12:
+                               case 0xFF13:
+                               case 0xFF14:
+                               case 0xFF15:
+                               case 0xFF16:
+                               case 0xFF17:
+                               case 0xFF18:
+                               case 0xFF19:
+                               case 0xFF1A:
+                               case 0xFF1B:
+                               case 0xFF1C:
+                               case 0xFF1D:
+                               case 0xFF1E:
+                                       ch -= 0xFEE0;
+                                       break;
+                               case 0xFF20:
+                               case 0xFF21:
+                               case 0xFF22:
+                               case 0xFF23:
+                               case 0xFF24:
+                               case 0xFF25:
+                               case 0xFF26:
+                               case 0xFF27:
+                               case 0xFF28:
+                               case 0xFF29:
+                               case 0xFF2A:
+                               case 0xFF2B:
+                               case 0xFF2C:
+                               case 0xFF2D:
+                               case 0xFF2E:
+                               case 0xFF2F:
+                               case 0xFF30:
+                               case 0xFF31:
+                               case 0xFF32:
+                               case 0xFF33:
+                               case 0xFF34:
+                               case 0xFF35:
+                               case 0xFF36:
+                               case 0xFF37:
+                               case 0xFF38:
+                               case 0xFF39:
+                               case 0xFF3A:
+                               case 0xFF3B:
+                               case 0xFF3C:
+                               case 0xFF3D:
+                               case 0xFF3E:
+                               case 0xFF3F:
+                               case 0xFF40:
+                               case 0xFF41:
+                               case 0xFF42:
+                               case 0xFF43:
+                               case 0xFF44:
+                               case 0xFF45:
+                               case 0xFF46:
+                               case 0xFF47:
+                               case 0xFF48:
+                               case 0xFF49:
+                               case 0xFF4A:
+                               case 0xFF4B:
+                               case 0xFF4C:
+                               case 0xFF4D:
+                               case 0xFF4E:
+                               case 0xFF4F:
+                               case 0xFF50:
+                               case 0xFF51:
+                               case 0xFF52:
+                               case 0xFF53:
+                               case 0xFF54:
+                               case 0xFF55:
+                               case 0xFF56:
+                               case 0xFF57:
+                               case 0xFF58:
+                               case 0xFF59:
+                               case 0xFF5A:
+                               case 0xFF5B:
+                               case 0xFF5C:
+                               case 0xFF5D:
+                               case 0xFF5E:
+                                       ch -= 0xFEE0;
                                        break;
-                               case 0x066A: ch = 0x25; break;
-                               case 0x066B: ch = 0x2C; break;
-                               case 0x066C: ch = 0x2E; break;
-                               case 0x066D: ch = 0x2A; break;
-                               case 0xFE70: ch = 0xEB; break;
-                               case 0xFE71: ch = 0xEB; break;
-                               case 0xFE72: ch = 0xEC; break;
-                               case 0xFE74: ch = 0xED; break;
-                               case 0xFE76: ch = 0xEE; break;
-                               case 0xFE77: ch = 0xEE; break;
-                               case 0xFE78: ch = 0xEF; break;
-                               case 0xFE79: ch = 0xEF; break;
-                               case 0xFE7A: ch = 0xF0; break;
-                               case 0xFE7B: ch = 0xF0; break;
-                               case 0xFE7C: ch = 0xF1; break;
-                               case 0xFE7D: ch = 0xF1; break;
-                               case 0xFE7E: ch = 0xF2; break;
-                               case 0xFE7F: ch = 0xF2; break;
-                               case 0xFE80: ch = 0xC1; break;
-                               case 0xFE81: ch = 0xC2; break;
-                               case 0xFE82: ch = 0xC2; break;
-                               case 0xFE83: ch = 0xC3; break;
-                               case 0xFE84: ch = 0xC3; break;
-                               case 0xFE85: ch = 0xC4; break;
-                               case 0xFE86: ch = 0xC4; break;
-                               case 0xFE87: ch = 0xC5; break;
-                               case 0xFE88: ch = 0xC5; break;
-                               case 0xFE89: ch = 0xC6; break;
-                               case 0xFE8A: ch = 0xC6; break;
-                               case 0xFE8B: ch = 0xC6; break;
-                               case 0xFE8C: ch = 0xC6; break;
-                               case 0xFE8D: ch = 0xC7; break;
-                               case 0xFE8E: ch = 0xC7; break;
-                               case 0xFE8F: ch = 0xC8; break;
-                               case 0xFE90: ch = 0xC8; break;
-                               case 0xFE91: ch = 0xC8; break;
-                               case 0xFE92: ch = 0xC8; break;
-                               case 0xFE93: ch = 0xC9; break;
-                               case 0xFE94: ch = 0xC9; break;
-                               case 0xFE95: ch = 0xCA; break;
-                               case 0xFE96: ch = 0xCA; break;
-                               case 0xFE97: ch = 0xCA; break;
-                               case 0xFE98: ch = 0xCA; break;
-                               case 0xFE99: ch = 0xCB; break;
-                               case 0xFE9A: ch = 0xCB; break;
-                               case 0xFE9B: ch = 0xCB; break;
-                               case 0xFE9C: ch = 0xCB; break;
-                               case 0xFE9D: ch = 0xCC; break;
-                               case 0xFE9E: ch = 0xCC; break;
-                               case 0xFE9F: ch = 0xCC; break;
-                               case 0xFEA0: ch = 0xCC; break;
-                               case 0xFEA1: ch = 0xCD; break;
-                               case 0xFEA2: ch = 0xCD; break;
-                               case 0xFEA3: ch = 0xCD; break;
-                               case 0xFEA4: ch = 0xCD; break;
-                               case 0xFEA5: ch = 0xCE; break;
-                               case 0xFEA6: ch = 0xCE; break;
-                               case 0xFEA7: ch = 0xCE; break;
-                               case 0xFEA8: ch = 0xCE; break;
-                               case 0xFEA9: ch = 0xCF; break;
-                               case 0xFEAA: ch = 0xCF; break;
-                               case 0xFEAB: ch = 0xD0; break;
-                               case 0xFEAC: ch = 0xD0; break;
-                               case 0xFEAD: ch = 0xD1; break;
-                               case 0xFEAE: ch = 0xD1; break;
-                               case 0xFEAF: ch = 0xD2; break;
-                               case 0xFEB0: ch = 0xD2; break;
-                               case 0xFEB1: ch = 0xD3; break;
-                               case 0xFEB2: ch = 0xD3; break;
-                               case 0xFEB3: ch = 0xD3; break;
-                               case 0xFEB4: ch = 0xD3; break;
-                               case 0xFEB5: ch = 0xD4; break;
-                               case 0xFEB6: ch = 0xD4; break;
-                               case 0xFEB7: ch = 0xD4; break;
-                               case 0xFEB8: ch = 0xD4; break;
-                               case 0xFEB9: ch = 0xD5; break;
-                               case 0xFEBA: ch = 0xD5; break;
-                               case 0xFEBB: ch = 0xD5; break;
-                               case 0xFEBC: ch = 0xD5; break;
-                               case 0xFEBD: ch = 0xD6; break;
-                               case 0xFEBE: ch = 0xD6; break;
-                               case 0xFEBF: ch = 0xD6; break;
-                               case 0xFEC0: ch = 0xD6; break;
-                               case 0xFEC1: ch = 0xD7; break;
-                               case 0xFEC2: ch = 0xD7; break;
-                               case 0xFEC3: ch = 0xD7; break;
-                               case 0xFEC4: ch = 0xD7; break;
-                               case 0xFEC5: ch = 0xD8; break;
-                               case 0xFEC6: ch = 0xD8; break;
-                               case 0xFEC7: ch = 0xD8; break;
-                               case 0xFEC8: ch = 0xD8; break;
-                               case 0xFEC9: ch = 0xD9; break;
-                               case 0xFECA: ch = 0xD9; break;
-                               case 0xFECB: ch = 0xD9; break;
-                               case 0xFECC: ch = 0xD9; break;
-                               case 0xFECD: ch = 0xDA; break;
-                               case 0xFECE: ch = 0xDA; break;
-                               case 0xFECF: ch = 0xDA; break;
-                               case 0xFED0: ch = 0xDA; break;
-                               case 0xFED1: ch = 0xE1; break;
-                               case 0xFED2: ch = 0xE1; break;
-                               case 0xFED3: ch = 0xE1; break;
-                               case 0xFED4: ch = 0xE1; break;
-                               case 0xFED5: ch = 0xE2; break;
-                               case 0xFED6: ch = 0xE2; break;
-                               case 0xFED7: ch = 0xE2; break;
-                               case 0xFED8: ch = 0xE2; break;
-                               case 0xFED9: ch = 0xE3; break;
-                               case 0xFEDA: ch = 0xE3; break;
-                               case 0xFEDB: ch = 0xE3; break;
-                               case 0xFEDC: ch = 0xE3; break;
-                               case 0xFEDD: ch = 0xE4; break;
-                               case 0xFEDE: ch = 0xE4; break;
-                               case 0xFEDF: ch = 0xE4; break;
-                               case 0xFEE0: ch = 0xE4; break;
-                               case 0xFEE1: ch = 0xE5; break;
-                               case 0xFEE2: ch = 0xE5; break;
-                               case 0xFEE3: ch = 0xE5; break;
-                               case 0xFEE4: ch = 0xE5; break;
-                               case 0xFEE5: ch = 0xE6; break;
-                               case 0xFEE6: ch = 0xE6; break;
-                               case 0xFEE7: ch = 0xE6; break;
-                               case 0xFEE8: ch = 0xE6; break;
-                               case 0xFEE9: ch = 0xE7; break;
-                               case 0xFEEA: ch = 0xE7; break;
-                               case 0xFEEB: ch = 0xE7; break;
-                               case 0xFEEC: ch = 0xE7; break;
-                               case 0xFEED: ch = 0xE8; break;
-                               case 0xFEEE: ch = 0xE8; break;
-                               case 0xFEEF: ch = 0xE9; break;
-                               case 0xFEF0: ch = 0xE9; break;
-                               case 0xFEF1: ch = 0xEA; break;
-                               case 0xFEF2: ch = 0xEA; break;
-                               case 0xFEF3: ch = 0xEA; break;
-                               case 0xFEF4: ch = 0xEA; break;
                                default:
-                               {
-                                       if(ch >= 0xFF01 && ch <= 0xFF5E)
-                                               ch -= 0xFEE0;
-                                       else
+#if NET_2_0
+                                       HandleFallback (ref buffer, chars, ref charIndex, ref charCount, bytes, ref byteIndex, ref byteCount);
+#else
                                                ch = 0x3F;
-                               }
-                               break;
+#endif
+                                       break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
+                       --byteCount;
                }
        }
 
+       /*
        protected override void ToBytes(String s, int charIndex, int charCount,
                                        byte[] bytes, int byteIndex)
        {
@@ -321,6 +607,257 @@ public class CP28596 : ByteEncoding
                                case 0x00A4:
                                case 0x00AD:
                                        break;
+                               case 0x00A1: ch = 0x21; break;
+                               case 0x00A2: ch = 0x63; break;
+                               case 0x00A5: ch = 0x59; break;
+                               case 0x00A6: ch = 0x7C; break;
+                               case 0x00A9: ch = 0x43; break;
+                               case 0x00AA: ch = 0x61; break;
+                               case 0x00AB: ch = 0x3C; break;
+                               case 0x00AE: ch = 0x52; break;
+                               case 0x00B2: ch = 0x32; break;
+                               case 0x00B3: ch = 0x33; break;
+                               case 0x00B7: ch = 0x2E; break;
+                               case 0x00B8: ch = 0x2C; break;
+                               case 0x00B9: ch = 0x31; break;
+                               case 0x00BA: ch = 0x6F; break;
+                               case 0x00BB: ch = 0x3E; break;
+                               case 0x00C0: ch = 0x41; break;
+                               case 0x00C1: ch = 0x41; break;
+                               case 0x00C2: ch = 0x41; break;
+                               case 0x00C3: ch = 0x41; break;
+                               case 0x00C4: ch = 0x41; break;
+                               case 0x00C5: ch = 0x41; break;
+                               case 0x00C6: ch = 0x41; break;
+                               case 0x00C7: ch = 0x43; break;
+                               case 0x00C8: ch = 0x45; break;
+                               case 0x00C9: ch = 0x45; break;
+                               case 0x00CA: ch = 0x45; break;
+                               case 0x00CB: ch = 0x45; break;
+                               case 0x00CC: ch = 0x49; break;
+                               case 0x00CD: ch = 0x49; break;
+                               case 0x00CE: ch = 0x49; break;
+                               case 0x00CF: ch = 0x49; break;
+                               case 0x00D0: ch = 0x44; break;
+                               case 0x00D1: ch = 0x4E; break;
+                               case 0x00D2: ch = 0x4F; break;
+                               case 0x00D3: ch = 0x4F; break;
+                               case 0x00D4: ch = 0x4F; break;
+                               case 0x00D5: ch = 0x4F; break;
+                               case 0x00D6: ch = 0x4F; break;
+                               case 0x00D8: ch = 0x4F; break;
+                               case 0x00D9: ch = 0x55; break;
+                               case 0x00DA: ch = 0x55; break;
+                               case 0x00DB: ch = 0x55; break;
+                               case 0x00DC: ch = 0x55; break;
+                               case 0x00DD: ch = 0x59; break;
+                               case 0x00E0: ch = 0x61; break;
+                               case 0x00E1: ch = 0x61; break;
+                               case 0x00E2: ch = 0x61; break;
+                               case 0x00E3: ch = 0x61; break;
+                               case 0x00E4: ch = 0x61; break;
+                               case 0x00E5: ch = 0x61; break;
+                               case 0x00E6: ch = 0x61; break;
+                               case 0x00E7: ch = 0x63; break;
+                               case 0x00E8: ch = 0x65; break;
+                               case 0x00E9: ch = 0x65; break;
+                               case 0x00EA: ch = 0x65; break;
+                               case 0x00EB: ch = 0x65; break;
+                               case 0x00EC: ch = 0x69; break;
+                               case 0x00ED: ch = 0x69; break;
+                               case 0x00EE: ch = 0x69; break;
+                               case 0x00EF: ch = 0x69; break;
+                               case 0x00F1: ch = 0x6E; break;
+                               case 0x00F2: ch = 0x6F; break;
+                               case 0x00F3: ch = 0x6F; break;
+                               case 0x00F4: ch = 0x6F; break;
+                               case 0x00F5: ch = 0x6F; break;
+                               case 0x00F6: ch = 0x6F; break;
+                               case 0x00F8: ch = 0x6F; break;
+                               case 0x00F9: ch = 0x75; break;
+                               case 0x00FA: ch = 0x75; break;
+                               case 0x00FB: ch = 0x75; break;
+                               case 0x00FC: ch = 0x75; break;
+                               case 0x00FD: ch = 0x79; break;
+                               case 0x00FF: ch = 0x79; break;
+                               case 0x0100: ch = 0x41; break;
+                               case 0x0101: ch = 0x61; break;
+                               case 0x0102: ch = 0x41; break;
+                               case 0x0103: ch = 0x61; break;
+                               case 0x0104: ch = 0x41; break;
+                               case 0x0105: ch = 0x61; break;
+                               case 0x0106: ch = 0x43; break;
+                               case 0x0107: ch = 0x63; break;
+                               case 0x0108: ch = 0x43; break;
+                               case 0x0109: ch = 0x63; break;
+                               case 0x010A: ch = 0x43; break;
+                               case 0x010B: ch = 0x63; break;
+                               case 0x010C: ch = 0x43; break;
+                               case 0x010D: ch = 0x63; break;
+                               case 0x010E: ch = 0x44; break;
+                               case 0x010F: ch = 0x64; break;
+                               case 0x0110: ch = 0x44; break;
+                               case 0x0111: ch = 0x64; break;
+                               case 0x0112: ch = 0x45; break;
+                               case 0x0113: ch = 0x65; break;
+                               case 0x0114: ch = 0x45; break;
+                               case 0x0115: ch = 0x65; break;
+                               case 0x0116: ch = 0x45; break;
+                               case 0x0117: ch = 0x65; break;
+                               case 0x0118: ch = 0x45; break;
+                               case 0x0119: ch = 0x65; break;
+                               case 0x011A: ch = 0x45; break;
+                               case 0x011B: ch = 0x65; break;
+                               case 0x011C: ch = 0x47; break;
+                               case 0x011D: ch = 0x67; break;
+                               case 0x011E: ch = 0x47; break;
+                               case 0x011F: ch = 0x67; break;
+                               case 0x0120: ch = 0x47; break;
+                               case 0x0121: ch = 0x67; break;
+                               case 0x0122: ch = 0x47; break;
+                               case 0x0123: ch = 0x67; break;
+                               case 0x0124: ch = 0x48; break;
+                               case 0x0125: ch = 0x68; break;
+                               case 0x0126: ch = 0x48; break;
+                               case 0x0127: ch = 0x68; break;
+                               case 0x0128: ch = 0x49; break;
+                               case 0x0129: ch = 0x69; break;
+                               case 0x012A: ch = 0x49; break;
+                               case 0x012B: ch = 0x69; break;
+                               case 0x012C: ch = 0x49; break;
+                               case 0x012D: ch = 0x69; break;
+                               case 0x012E: ch = 0x49; break;
+                               case 0x012F: ch = 0x69; break;
+                               case 0x0130: ch = 0x49; break;
+                               case 0x0131: ch = 0x69; break;
+                               case 0x0134: ch = 0x4A; break;
+                               case 0x0135: ch = 0x6A; break;
+                               case 0x0136: ch = 0x4B; break;
+                               case 0x0137: ch = 0x6B; break;
+                               case 0x0139: ch = 0x4C; break;
+                               case 0x013A: ch = 0x6C; break;
+                               case 0x013B: ch = 0x4C; break;
+                               case 0x013C: ch = 0x6C; break;
+                               case 0x013D: ch = 0x4C; break;
+                               case 0x013E: ch = 0x6C; break;
+                               case 0x0141: ch = 0x4C; break;
+                               case 0x0142: ch = 0x6C; break;
+                               case 0x0143: ch = 0x4E; break;
+                               case 0x0144: ch = 0x6E; break;
+                               case 0x0145: ch = 0x4E; break;
+                               case 0x0146: ch = 0x6E; break;
+                               case 0x0147: ch = 0x4E; break;
+                               case 0x0148: ch = 0x6E; break;
+                               case 0x014C: ch = 0x4F; break;
+                               case 0x014D: ch = 0x6F; break;
+                               case 0x014E: ch = 0x4F; break;
+                               case 0x014F: ch = 0x6F; break;
+                               case 0x0150: ch = 0x4F; break;
+                               case 0x0151: ch = 0x6F; break;
+                               case 0x0152: ch = 0x4F; break;
+                               case 0x0153: ch = 0x6F; break;
+                               case 0x0154: ch = 0x52; break;
+                               case 0x0155: ch = 0x72; break;
+                               case 0x0156: ch = 0x52; break;
+                               case 0x0157: ch = 0x72; break;
+                               case 0x0158: ch = 0x52; break;
+                               case 0x0159: ch = 0x72; break;
+                               case 0x015A: ch = 0x53; break;
+                               case 0x015B: ch = 0x73; break;
+                               case 0x015C: ch = 0x53; break;
+                               case 0x015D: ch = 0x73; break;
+                               case 0x015E: ch = 0x53; break;
+                               case 0x015F: ch = 0x73; break;
+                               case 0x0160: ch = 0x53; break;
+                               case 0x0161: ch = 0x73; break;
+                               case 0x0162: ch = 0x54; break;
+                               case 0x0163: ch = 0x74; break;
+                               case 0x0164: ch = 0x54; break;
+                               case 0x0165: ch = 0x74; break;
+                               case 0x0166: ch = 0x54; break;
+                               case 0x0167: ch = 0x74; break;
+                               case 0x0168: ch = 0x55; break;
+                               case 0x0169: ch = 0x75; break;
+                               case 0x016A: ch = 0x55; break;
+                               case 0x016B: ch = 0x75; break;
+                               case 0x016C: ch = 0x55; break;
+                               case 0x016D: ch = 0x75; break;
+                               case 0x016E: ch = 0x55; break;
+                               case 0x016F: ch = 0x75; break;
+                               case 0x0170: ch = 0x55; break;
+                               case 0x0171: ch = 0x75; break;
+                               case 0x0172: ch = 0x55; break;
+                               case 0x0173: ch = 0x75; break;
+                               case 0x0174: ch = 0x57; break;
+                               case 0x0175: ch = 0x77; break;
+                               case 0x0176: ch = 0x59; break;
+                               case 0x0177: ch = 0x79; break;
+                               case 0x0178: ch = 0x59; break;
+                               case 0x0179: ch = 0x5A; break;
+                               case 0x017A: ch = 0x7A; break;
+                               case 0x017B: ch = 0x5A; break;
+                               case 0x017C: ch = 0x7A; break;
+                               case 0x017D: ch = 0x5A; break;
+                               case 0x017E: ch = 0x7A; break;
+                               case 0x0180: ch = 0x62; break;
+                               case 0x0189: ch = 0x44; break;
+                               case 0x0191: ch = 0x46; break;
+                               case 0x0192: ch = 0x66; break;
+                               case 0x0197: ch = 0x49; break;
+                               case 0x019A: ch = 0x6C; break;
+                               case 0x019F: ch = 0x4F; break;
+                               case 0x01A0: ch = 0x4F; break;
+                               case 0x01A1: ch = 0x6F; break;
+                               case 0x01AB: ch = 0x74; break;
+                               case 0x01AE: ch = 0x54; break;
+                               case 0x01AF: ch = 0x55; break;
+                               case 0x01B0: ch = 0x75; break;
+                               case 0x01B6: ch = 0x7A; break;
+                               case 0x01CD: ch = 0x41; break;
+                               case 0x01CE: ch = 0x61; break;
+                               case 0x01CF: ch = 0x49; break;
+                               case 0x01D0: ch = 0x69; break;
+                               case 0x01D1: ch = 0x4F; break;
+                               case 0x01D2: ch = 0x6F; break;
+                               case 0x01D3: ch = 0x55; break;
+                               case 0x01D4: ch = 0x75; break;
+                               case 0x01D5: ch = 0x55; break;
+                               case 0x01D6: ch = 0x75; break;
+                               case 0x01D7: ch = 0x55; break;
+                               case 0x01D8: ch = 0x75; break;
+                               case 0x01D9: ch = 0x55; break;
+                               case 0x01DA: ch = 0x75; break;
+                               case 0x01DB: ch = 0x55; break;
+                               case 0x01DC: ch = 0x75; break;
+                               case 0x01DE: ch = 0x41; break;
+                               case 0x01DF: ch = 0x61; break;
+                               case 0x01E4: ch = 0x47; break;
+                               case 0x01E5: ch = 0x67; break;
+                               case 0x01E6: ch = 0x47; break;
+                               case 0x01E7: ch = 0x67; break;
+                               case 0x01E8: ch = 0x4B; break;
+                               case 0x01E9: ch = 0x6B; break;
+                               case 0x01EA: ch = 0x4F; break;
+                               case 0x01EB: ch = 0x6F; break;
+                               case 0x01EC: ch = 0x4F; break;
+                               case 0x01ED: ch = 0x6F; break;
+                               case 0x01F0: ch = 0x6A; break;
+                               case 0x0261: ch = 0x67; break;
+                               case 0x02B9: ch = 0x27; break;
+                               case 0x02BA: ch = 0x22; break;
+                               case 0x02BC: ch = 0x27; break;
+                               case 0x02C4: ch = 0x5E; break;
+                               case 0x02C6: ch = 0x5E; break;
+                               case 0x02C8: ch = 0x27; break;
+                               case 0x02CB: ch = 0x60; break;
+                               case 0x02CD: ch = 0x5F; break;
+                               case 0x02DC: ch = 0x7E; break;
+                               case 0x0300: ch = 0x60; break;
+                               case 0x0302: ch = 0x5E; break;
+                               case 0x0303: ch = 0x7E; break;
+                               case 0x030E: ch = 0x22; break;
+                               case 0x0331: ch = 0x5F; break;
+                               case 0x0332: ch = 0x5F; break;
                                case 0x060C: ch = 0xAC; break;
                                case 0x061B: ch = 0xBB; break;
                                case 0x061F: ch = 0xBF; break;
@@ -373,169 +910,191 @@ public class CP28596 : ByteEncoding
                                case 0x0652:
                                        ch -= 0x0560;
                                        break;
-                               case 0x0660:
-                               case 0x0661:
-                               case 0x0662:
-                               case 0x0663:
-                               case 0x0664:
-                               case 0x0665:
-                               case 0x0666:
-                               case 0x0667:
-                               case 0x0668:
-                               case 0x0669:
-                                       ch -= 0x0630;
+                               case 0x2000: ch = 0x20; break;
+                               case 0x2001: ch = 0x20; break;
+                               case 0x2002: ch = 0x20; break;
+                               case 0x2003: ch = 0x20; break;
+                               case 0x2004: ch = 0x20; break;
+                               case 0x2005: ch = 0x20; break;
+                               case 0x2006: ch = 0x20; break;
+                               case 0x2010: ch = 0x2D; break;
+                               case 0x2011: ch = 0x2D; break;
+                               case 0x2013: ch = 0x2D; break;
+                               case 0x2014: ch = 0x2D; break;
+                               case 0x2018: ch = 0x27; break;
+                               case 0x2019: ch = 0x27; break;
+                               case 0x201A: ch = 0x2C; break;
+                               case 0x201C: ch = 0x22; break;
+                               case 0x201D: ch = 0x22; break;
+                               case 0x201E: ch = 0x22; break;
+                               case 0x2022: ch = 0x2E; break;
+                               case 0x2026: ch = 0x2E; break;
+                               case 0x2032: ch = 0x27; break;
+                               case 0x2035: ch = 0x60; break;
+                               case 0x2039: ch = 0x3C; break;
+                               case 0x203A: ch = 0x3E; break;
+                               case 0x2122: ch = 0x54; break;
+                               case 0xF7C8: ch = 0xA1; break;
+                               case 0xF7C9: ch = 0xA2; break;
+                               case 0xF7CA: ch = 0xA3; break;
+                               case 0xF7CB:
+                               case 0xF7CC:
+                               case 0xF7CD:
+                               case 0xF7CE:
+                               case 0xF7CF:
+                               case 0xF7D0:
+                               case 0xF7D1:
+                                       ch -= 0xF726;
                                        break;
-                               case 0x066A: ch = 0x25; break;
-                               case 0x066B: ch = 0x2C; break;
-                               case 0x066C: ch = 0x2E; break;
-                               case 0x066D: ch = 0x2A; break;
-                               case 0xFE70: ch = 0xEB; break;
-                               case 0xFE71: ch = 0xEB; break;
-                               case 0xFE72: ch = 0xEC; break;
-                               case 0xFE74: ch = 0xED; break;
-                               case 0xFE76: ch = 0xEE; break;
-                               case 0xFE77: ch = 0xEE; break;
-                               case 0xFE78: ch = 0xEF; break;
-                               case 0xFE79: ch = 0xEF; break;
-                               case 0xFE7A: ch = 0xF0; break;
-                               case 0xFE7B: ch = 0xF0; break;
-                               case 0xFE7C: ch = 0xF1; break;
-                               case 0xFE7D: ch = 0xF1; break;
-                               case 0xFE7E: ch = 0xF2; break;
-                               case 0xFE7F: ch = 0xF2; break;
-                               case 0xFE80: ch = 0xC1; break;
-                               case 0xFE81: ch = 0xC2; break;
-                               case 0xFE82: ch = 0xC2; break;
-                               case 0xFE83: ch = 0xC3; break;
-                               case 0xFE84: ch = 0xC3; break;
-                               case 0xFE85: ch = 0xC4; break;
-                               case 0xFE86: ch = 0xC4; break;
-                               case 0xFE87: ch = 0xC5; break;
-                               case 0xFE88: ch = 0xC5; break;
-                               case 0xFE89: ch = 0xC6; break;
-                               case 0xFE8A: ch = 0xC6; break;
-                               case 0xFE8B: ch = 0xC6; break;
-                               case 0xFE8C: ch = 0xC6; break;
-                               case 0xFE8D: ch = 0xC7; break;
-                               case 0xFE8E: ch = 0xC7; break;
-                               case 0xFE8F: ch = 0xC8; break;
-                               case 0xFE90: ch = 0xC8; break;
-                               case 0xFE91: ch = 0xC8; break;
-                               case 0xFE92: ch = 0xC8; break;
-                               case 0xFE93: ch = 0xC9; break;
-                               case 0xFE94: ch = 0xC9; break;
-                               case 0xFE95: ch = 0xCA; break;
-                               case 0xFE96: ch = 0xCA; break;
-                               case 0xFE97: ch = 0xCA; break;
-                               case 0xFE98: ch = 0xCA; break;
-                               case 0xFE99: ch = 0xCB; break;
-                               case 0xFE9A: ch = 0xCB; break;
-                               case 0xFE9B: ch = 0xCB; break;
-                               case 0xFE9C: ch = 0xCB; break;
-                               case 0xFE9D: ch = 0xCC; break;
-                               case 0xFE9E: ch = 0xCC; break;
-                               case 0xFE9F: ch = 0xCC; break;
-                               case 0xFEA0: ch = 0xCC; break;
-                               case 0xFEA1: ch = 0xCD; break;
-                               case 0xFEA2: ch = 0xCD; break;
-                               case 0xFEA3: ch = 0xCD; break;
-                               case 0xFEA4: ch = 0xCD; break;
-                               case 0xFEA5: ch = 0xCE; break;
-                               case 0xFEA6: ch = 0xCE; break;
-                               case 0xFEA7: ch = 0xCE; break;
-                               case 0xFEA8: ch = 0xCE; break;
-                               case 0xFEA9: ch = 0xCF; break;
-                               case 0xFEAA: ch = 0xCF; break;
-                               case 0xFEAB: ch = 0xD0; break;
-                               case 0xFEAC: ch = 0xD0; break;
-                               case 0xFEAD: ch = 0xD1; break;
-                               case 0xFEAE: ch = 0xD1; break;
-                               case 0xFEAF: ch = 0xD2; break;
-                               case 0xFEB0: ch = 0xD2; break;
-                               case 0xFEB1: ch = 0xD3; break;
-                               case 0xFEB2: ch = 0xD3; break;
-                               case 0xFEB3: ch = 0xD3; break;
-                               case 0xFEB4: ch = 0xD3; break;
-                               case 0xFEB5: ch = 0xD4; break;
-                               case 0xFEB6: ch = 0xD4; break;
-                               case 0xFEB7: ch = 0xD4; break;
-                               case 0xFEB8: ch = 0xD4; break;
-                               case 0xFEB9: ch = 0xD5; break;
-                               case 0xFEBA: ch = 0xD5; break;
-                               case 0xFEBB: ch = 0xD5; break;
-                               case 0xFEBC: ch = 0xD5; break;
-                               case 0xFEBD: ch = 0xD6; break;
-                               case 0xFEBE: ch = 0xD6; break;
-                               case 0xFEBF: ch = 0xD6; break;
-                               case 0xFEC0: ch = 0xD6; break;
-                               case 0xFEC1: ch = 0xD7; break;
-                               case 0xFEC2: ch = 0xD7; break;
-                               case 0xFEC3: ch = 0xD7; break;
-                               case 0xFEC4: ch = 0xD7; break;
-                               case 0xFEC5: ch = 0xD8; break;
-                               case 0xFEC6: ch = 0xD8; break;
-                               case 0xFEC7: ch = 0xD8; break;
-                               case 0xFEC8: ch = 0xD8; break;
-                               case 0xFEC9: ch = 0xD9; break;
-                               case 0xFECA: ch = 0xD9; break;
-                               case 0xFECB: ch = 0xD9; break;
-                               case 0xFECC: ch = 0xD9; break;
-                               case 0xFECD: ch = 0xDA; break;
-                               case 0xFECE: ch = 0xDA; break;
-                               case 0xFECF: ch = 0xDA; break;
-                               case 0xFED0: ch = 0xDA; break;
-                               case 0xFED1: ch = 0xE1; break;
-                               case 0xFED2: ch = 0xE1; break;
-                               case 0xFED3: ch = 0xE1; break;
-                               case 0xFED4: ch = 0xE1; break;
-                               case 0xFED5: ch = 0xE2; break;
-                               case 0xFED6: ch = 0xE2; break;
-                               case 0xFED7: ch = 0xE2; break;
-                               case 0xFED8: ch = 0xE2; break;
-                               case 0xFED9: ch = 0xE3; break;
-                               case 0xFEDA: ch = 0xE3; break;
-                               case 0xFEDB: ch = 0xE3; break;
-                               case 0xFEDC: ch = 0xE3; break;
-                               case 0xFEDD: ch = 0xE4; break;
-                               case 0xFEDE: ch = 0xE4; break;
-                               case 0xFEDF: ch = 0xE4; break;
-                               case 0xFEE0: ch = 0xE4; break;
-                               case 0xFEE1: ch = 0xE5; break;
-                               case 0xFEE2: ch = 0xE5; break;
-                               case 0xFEE3: ch = 0xE5; break;
-                               case 0xFEE4: ch = 0xE5; break;
-                               case 0xFEE5: ch = 0xE6; break;
-                               case 0xFEE6: ch = 0xE6; break;
-                               case 0xFEE7: ch = 0xE6; break;
-                               case 0xFEE8: ch = 0xE6; break;
-                               case 0xFEE9: ch = 0xE7; break;
-                               case 0xFEEA: ch = 0xE7; break;
-                               case 0xFEEB: ch = 0xE7; break;
-                               case 0xFEEC: ch = 0xE7; break;
-                               case 0xFEED: ch = 0xE8; break;
-                               case 0xFEEE: ch = 0xE8; break;
-                               case 0xFEEF: ch = 0xE9; break;
-                               case 0xFEF0: ch = 0xE9; break;
-                               case 0xFEF1: ch = 0xEA; break;
-                               case 0xFEF2: ch = 0xEA; break;
-                               case 0xFEF3: ch = 0xEA; break;
-                               case 0xFEF4: ch = 0xEA; break;
-                               default:
-                               {
-                                       if(ch >= 0xFF01 && ch <= 0xFF5E)
-                                               ch -= 0xFEE0;
-                                       else
-                                               ch = 0x3F;
-                               }
-                               break;
+                               case 0xF7D2:
+                               case 0xF7D3:
+                               case 0xF7D4:
+                               case 0xF7D5:
+                               case 0xF7D6:
+                               case 0xF7D7:
+                               case 0xF7D8:
+                               case 0xF7D9:
+                               case 0xF7DA:
+                               case 0xF7DB:
+                               case 0xF7DC:
+                               case 0xF7DD:
+                               case 0xF7DE:
+                                       ch -= 0xF724;
+                                       break;
+                               case 0xF7DF: ch = 0xBC; break;
+                               case 0xF7E0: ch = 0xBD; break;
+                               case 0xF7E1: ch = 0xBE; break;
+                               case 0xF7E2: ch = 0xC0; break;
+                               case 0xF7E3:
+                               case 0xF7E4:
+                               case 0xF7E5:
+                               case 0xF7E6:
+                               case 0xF7E7:
+                                       ch -= 0xF708;
+                                       break;
+                               case 0xF7E8:
+                               case 0xF7E9:
+                               case 0xF7EA:
+                               case 0xF7EB:
+                               case 0xF7EC:
+                               case 0xF7ED:
+                               case 0xF7EE:
+                               case 0xF7EF:
+                               case 0xF7F0:
+                               case 0xF7F1:
+                               case 0xF7F2:
+                               case 0xF7F3:
+                               case 0xF7F4:
+                                       ch -= 0xF6F5;
+                                       break;
+                               case 0xFF01:
+                               case 0xFF02:
+                               case 0xFF03:
+                               case 0xFF04:
+                               case 0xFF05:
+                               case 0xFF06:
+                               case 0xFF07:
+                               case 0xFF08:
+                               case 0xFF09:
+                               case 0xFF0A:
+                               case 0xFF0B:
+                               case 0xFF0C:
+                               case 0xFF0D:
+                               case 0xFF0E:
+                               case 0xFF0F:
+                               case 0xFF10:
+                               case 0xFF11:
+                               case 0xFF12:
+                               case 0xFF13:
+                               case 0xFF14:
+                               case 0xFF15:
+                               case 0xFF16:
+                               case 0xFF17:
+                               case 0xFF18:
+                               case 0xFF19:
+                               case 0xFF1A:
+                               case 0xFF1B:
+                               case 0xFF1C:
+                               case 0xFF1D:
+                               case 0xFF1E:
+                                       ch -= 0xFEE0;
+                                       break;
+                               case 0xFF20:
+                               case 0xFF21:
+                               case 0xFF22:
+                               case 0xFF23:
+                               case 0xFF24:
+                               case 0xFF25:
+                               case 0xFF26:
+                               case 0xFF27:
+                               case 0xFF28:
+                               case 0xFF29:
+                               case 0xFF2A:
+                               case 0xFF2B:
+                               case 0xFF2C:
+                               case 0xFF2D:
+                               case 0xFF2E:
+                               case 0xFF2F:
+                               case 0xFF30:
+                               case 0xFF31:
+                               case 0xFF32:
+                               case 0xFF33:
+                               case 0xFF34:
+                               case 0xFF35:
+                               case 0xFF36:
+                               case 0xFF37:
+                               case 0xFF38:
+                               case 0xFF39:
+                               case 0xFF3A:
+                               case 0xFF3B:
+                               case 0xFF3C:
+                               case 0xFF3D:
+                               case 0xFF3E:
+                               case 0xFF3F:
+                               case 0xFF40:
+                               case 0xFF41:
+                               case 0xFF42:
+                               case 0xFF43:
+                               case 0xFF44:
+                               case 0xFF45:
+                               case 0xFF46:
+                               case 0xFF47:
+                               case 0xFF48:
+                               case 0xFF49:
+                               case 0xFF4A:
+                               case 0xFF4B:
+                               case 0xFF4C:
+                               case 0xFF4D:
+                               case 0xFF4E:
+                               case 0xFF4F:
+                               case 0xFF50:
+                               case 0xFF51:
+                               case 0xFF52:
+                               case 0xFF53:
+                               case 0xFF54:
+                               case 0xFF55:
+                               case 0xFF56:
+                               case 0xFF57:
+                               case 0xFF58:
+                               case 0xFF59:
+                               case 0xFF5A:
+                               case 0xFF5B:
+                               case 0xFF5C:
+                               case 0xFF5D:
+                               case 0xFF5E:
+                                       ch -= 0xFEE0;
+                                       break;
+                               default: ch = 0x3F; break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
                }
        }
+       */
 
 }; // class CP28596
 
+[Serializable]
 public class ENCiso_8859_6 : CP28596
 {
        public ENCiso_8859_6() : base() {}