dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnetlib/I18N/Other CP10007.cs, NONE, 1.1 CP10


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnetlib/I18N/Other CP10007.cs, NONE, 1.1 CP10017.cs, NONE, 1.1 CP10021.cs, NONE, 1.1 mac-10007.ucm, NONE, 1.1 mac-10021.ucm, NONE, 1.1
Date: Fri, 15 Aug 2003 00:38:48 -0400

Update of /cvsroot/dotgnu-pnet/pnetlib/I18N/Other
In directory subversions:/tmp/cvs-serv31592/I18N/Other

Added Files:
        CP10007.cs CP10017.cs CP10021.cs mac-10007.ucm mac-10021.ucm 
Log Message:


Add some Mac-related code pages to I18N.


--- NEW FILE ---
/*
 * CP10007.cs - MAC - Cyrillic code page.
 *
 * Copyright (c) 2002  Southern Storm Software, Pty Ltd
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

// Generated from "mac-10007.ucm".

namespace I18N.Other
{

using System;
using I18N.Common;

public class CP10007 : ByteEncoding
{
        public CP10007()
                : base(10007, ToChars, "MAC - Cyrillic",
                       "windows-10007", "windows-10007", "windows-10007",
                       false, false, false, false, 1251)
        {}

        private static readonly char[] ToChars = {
                '\u0000', '\u0001', '\u0002', '\u0003', '\u0004', '\u0005', 
                '\u0006', '\u0007', '\u0008', '\u0009', '\u000A', '\u000B', 
                '\u000C', '\u000D', '\u000E', '\u000F', '\u0010', '\u0011', 
                '\u0012', '\u0013', '\u0014', '\u0015', '\u0016', '\u0017', 
                '\u0018', '\u0019', '\u001A', '\u001B', '\u001C', '\u001D', 
                '\u001E', '\u001F', '\u0020', '\u0021', '\u0022', '\u0023', 
                '\u0024', '\u0025', '\u0026', '\u0027', '\u0028', '\u0029', 
                '\u002A', '\u002B', '\u002C', '\u002D', '\u002E', '\u002F', 
                '\u0030', '\u0031', '\u0032', '\u0033', '\u0034', '\u0035', 
                '\u0036', '\u0037', '\u0038', '\u0039', '\u003A', '\u003B', 
                '\u003C', '\u003D', '\u003E', '\u003F', '\u0040', '\u0041', 
                '\u0042', '\u0043', '\u0044', '\u0045', '\u0046', '\u0047', 
                '\u0048', '\u0049', '\u004A', '\u004B', '\u004C', '\u004D', 
                '\u004E', '\u004F', '\u0050', '\u0051', '\u0052', '\u0053', 
                '\u0054', '\u0055', '\u0056', '\u0057', '\u0058', '\u0059', 
                '\u005A', '\u005B', '\u005C', '\u005D', '\u005E', '\u005F', 
                '\u0060', '\u0061', '\u0062', '\u0063', '\u0064', '\u0065', 
                '\u0066', '\u0067', '\u0068', '\u0069', '\u006A', '\u006B', 
                '\u006C', '\u006D', '\u006E', '\u006F', '\u0070', '\u0071', 
                '\u0072', '\u0073', '\u0074', '\u0075', '\u0076', '\u0077', 
                '\u0078', '\u0079', '\u007A', '\u007B', '\u007C', '\u007D', 
                '\u007E', '\u007F', '\u0410', '\u0411', '\u0412', '\u0413', 
                '\u0414', '\u0415', '\u0416', '\u0417', '\u0418', '\u0419', 
                '\u041A', '\u041B', '\u041C', '\u041D', '\u041E', '\u041F', 
                '\u0420', '\u0421', '\u0422', '\u0423', '\u0424', '\u0425', 
                '\u0426', '\u0427', '\u0428', '\u0429', '\u042A', '\u042B', 
                '\u042C', '\u042D', '\u042E', '\u042F', '\u2020', '\u00B0', 
                '\u0490', '\u00A3', '\u00A7', '\u2022', '\u00B6', '\u0406', 
                '\u00AE', '\u00A9', '\u2122', '\u0402', '\u0452', '\u2260', 
                '\u0403', '\u0453', '\u221E', '\u00B1', '\u2264', '\u2265', 
                '\u0456', '\u00B5', '\u0491', '\u0408', '\u0404', '\u0454', 
                '\u0407', '\u0457', '\u0409', '\u0459', '\u040A', '\u045A', 
                '\u0458', '\u0405', '\u00AC', '\u221A', '\u0192', '\u2248', 
                '\u2206', '\u00AB', '\u00BB', '\u2026', '\u00A0', '\u040B', 
                '\u045B', '\u040C', '\u045C', '\u0455', '\u2013', '\u2014', 
                '\u201C', '\u201D', '\u2018', '\u2019', '\u00F7', '\u201E', 
                '\u040E', '\u045E', '\u040F', '\u045F', '\u2116', '\u0401', 
                '\u0451', '\u044F', '\u0430', '\u0431', '\u0432', '\u0433', 
                '\u0434', '\u0435', '\u0436', '\u0437', '\u0438', '\u0439', 
                '\u043A', '\u043B', '\u043C', '\u043D', '\u043E', '\u043F', 
                '\u0440', '\u0441', '\u0442', '\u0443', '\u0444', '\u0445', 
                '\u0446', '\u0447', '\u0448', '\u0449', '\u044A', '\u044B', 
                '\u044C', '\u044D', '\u044E', '\u20AC', 
        };

        protected override void ToBytes(char[] chars, int charIndex, int 
charCount,
                                        byte[] bytes, int byteIndex)
        {
                int ch;
                while(charCount > 0)
                {
                        ch = (int)(chars[charIndex++]);
                        if(ch >= 0) switch(ch)
                        {
                                case 0x0020:
                                case 0x0021:
                                case 0x0022:
                                case 0x0023:
                                case 0x0024:
                                case 0x0025:
                                case 0x0026:
                                case 0x0027:
                                case 0x0028:
                                case 0x0029:
                                case 0x002A:
                                case 0x002B:
                                case 0x002C:
                                case 0x002D:
                                case 0x002E:
                                case 0x002F:
                                case 0x0030:
                                case 0x0031:
                                case 0x0032:
                                case 0x0033:
                                case 0x0034:
                                case 0x0035:
                                case 0x0036:
                                case 0x0037:
                                case 0x0038:
                                case 0x0039:
                                case 0x003A:
                                case 0x003B:
                                case 0x003C:
                                case 0x003D:
                                case 0x003E:
                                case 0x003F:
                                case 0x0040:
                                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:
                                case 0x005B:
                                case 0x005C:
                                case 0x005D:
                                case 0x005E:
                                case 0x005F:
                                case 0x0060:
                                case 0x0061:
                                case 0x0062:
                                case 0x0063:
                                case 0x0064:
                                case 0x0065:
                                case 0x0066:
                                case 0x0067:
                                case 0x0068:
                                case 0x0069:
                                case 0x006A:
                                case 0x006B:
                                case 0x006C:
                                case 0x006D:
                                case 0x006E:
                                case 0x006F:
                                case 0x0070:
                                case 0x0071:
                                case 0x0072:
                                case 0x0073:
                                case 0x0074:
                                case 0x0075:
                                case 0x0076:
                                case 0x0077:
                                case 0x0078:
                                case 0x0079:
                                case 0x007A:
                                case 0x007B:
                                case 0x007C:
                                case 0x007D:
                                case 0x007E:
                                case 0x00A3:
                                case 0x00A9:
                                case 0x00B1:
                                case 0x00B5:
                                        break;
                                case 0x00A0: ch = 0xCA; break;
                                case 0x00A7: ch = 0xA4; break;
                                case 0x00AB: ch = 0xC7; break;
                                case 0x00AC: ch = 0xC2; break;
                                case 0x00AE: ch = 0xA8; break;
                                case 0x00B0: ch = 0xA1; break;
                                case 0x00B6: ch = 0xA6; break;
                                case 0x00BB: ch = 0xC8; break;
                                case 0x00F7: ch = 0xD6; break;
                                case 0x0192: ch = 0xC4; break;
                                case 0x0401: ch = 0xDD; break;
                                case 0x0402: ch = 0xAB; break;
                                case 0x0403: ch = 0xAE; break;
                                case 0x0404: ch = 0xB8; break;
                                case 0x0405: ch = 0xC1; break;
                                case 0x0406: ch = 0xA7; break;
                                case 0x0407: ch = 0xBA; break;
                                case 0x0408: ch = 0xB7; break;
                                case 0x0409: ch = 0xBC; break;
                                case 0x040A: ch = 0xBE; break;
                                case 0x040B: ch = 0xCB; break;
                                case 0x040C: ch = 0xCD; break;
                                case 0x040E: ch = 0xD8; break;
                                case 0x040F: ch = 0xDA; break;
                                case 0x0410:
                                case 0x0411:
                                case 0x0412:
                                case 0x0413:
                                case 0x0414:
                                case 0x0415:
                                case 0x0416:
                                case 0x0417:
                                case 0x0418:
                                case 0x0419:
                                case 0x041A:
                                case 0x041B:
                                case 0x041C:
                                case 0x041D:
                                case 0x041E:
                                case 0x041F:
                                case 0x0420:
                                case 0x0421:
                                case 0x0422:
                                case 0x0423:
                                case 0x0424:
                                case 0x0425:
                                case 0x0426:
                                case 0x0427:
                                case 0x0428:
                                case 0x0429:
                                case 0x042A:
                                case 0x042B:
                                case 0x042C:
                                case 0x042D:
                                case 0x042E:
                                case 0x042F:
                                        ch -= 0x0390;
                                        break;
                                case 0x0430:
                                case 0x0431:
                                case 0x0432:
                                case 0x0433:
                                case 0x0434:
                                case 0x0435:
                                case 0x0436:
                                case 0x0437:
                                case 0x0438:
                                case 0x0439:
                                case 0x043A:
                                case 0x043B:
                                case 0x043C:
                                case 0x043D:
                                case 0x043E:
                                case 0x043F:
                                case 0x0440:
                                case 0x0441:
                                case 0x0442:
                                case 0x0443:
                                case 0x0444:
                                case 0x0445:
                                case 0x0446:
                                case 0x0447:
                                case 0x0448:
                                case 0x0449:
                                case 0x044A:
                                case 0x044B:
                                case 0x044C:
                                case 0x044D:
                                case 0x044E:
                                        ch -= 0x0350;
                                        break;
                                case 0x044F: ch = 0xDF; break;
                                case 0x0451: ch = 0xDE; break;
                                case 0x0452: ch = 0xAC; break;
                                case 0x0453: ch = 0xAF; break;
                                case 0x0454: ch = 0xB9; break;
                                case 0x0455: ch = 0xCF; break;
                                case 0x0456: ch = 0xB4; break;
                                case 0x0457: ch = 0xBB; break;
                                case 0x0458: ch = 0xC0; break;
                                case 0x0459: ch = 0xBD; break;
                                case 0x045A: ch = 0xBF; break;
                                case 0x045B: ch = 0xCC; break;
                                case 0x045C: ch = 0xCE; break;
                                case 0x045E: ch = 0xD9; break;
                                case 0x045F: ch = 0xDB; break;
                                case 0x0490: ch = 0xA2; break;
                                case 0x0491: ch = 0xB6; break;
                                case 0x2013: ch = 0xD0; break;
                                case 0x2014: ch = 0xD1; break;
                                case 0x2018: ch = 0xD4; break;
                                case 0x2019: ch = 0xD5; break;
                                case 0x201C: ch = 0xD2; break;
                                case 0x201D: ch = 0xD3; break;
                                case 0x201E: ch = 0xD7; break;
                                case 0x2020: ch = 0xA0; break;
                                case 0x2022: ch = 0xA5; break;
                                case 0x2026: ch = 0xC9; break;
                                case 0x20AC: ch = 0xFF; break;
                                case 0x2116: ch = 0xDC; break;
                                case 0x2122: ch = 0xAA; break;
                                case 0x2206: ch = 0xC6; break;
                                case 0x221A: ch = 0xC3; break;
                                case 0x221E: ch = 0xB0; break;
                                case 0x2248: ch = 0xC5; break;
                                case 0x2260: ch = 0xAD; break;
                                case 0x2264: ch = 0xB2; break;
                                case 0x2265: ch = 0xB3; break;
                                default: ch = 0x3F; break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
                }
        }

        protected override void ToBytes(String s, int charIndex, int charCount,
                                        byte[] bytes, int byteIndex)
        {
                int ch;
                while(charCount > 0)
                {
                        ch = (int)(s[charIndex++]);
                        if(ch >= 0) switch(ch)
                        {
                                case 0x0020:
                                case 0x0021:
                                case 0x0022:
                                case 0x0023:
                                case 0x0024:
                                case 0x0025:
                                case 0x0026:
                                case 0x0027:
                                case 0x0028:
                                case 0x0029:
                                case 0x002A:
                                case 0x002B:
                                case 0x002C:
                                case 0x002D:
                                case 0x002E:
                                case 0x002F:
                                case 0x0030:
                                case 0x0031:
                                case 0x0032:
                                case 0x0033:
                                case 0x0034:
                                case 0x0035:
                                case 0x0036:
                                case 0x0037:
                                case 0x0038:
                                case 0x0039:
                                case 0x003A:
                                case 0x003B:
                                case 0x003C:
                                case 0x003D:
                                case 0x003E:
                                case 0x003F:
                                case 0x0040:
                                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:
                                case 0x005B:
                                case 0x005C:
                                case 0x005D:
                                case 0x005E:
                                case 0x005F:
                                case 0x0060:
                                case 0x0061:
                                case 0x0062:
                                case 0x0063:
                                case 0x0064:
                                case 0x0065:
                                case 0x0066:
                                case 0x0067:
                                case 0x0068:
                                case 0x0069:
                                case 0x006A:
                                case 0x006B:
                                case 0x006C:
                                case 0x006D:
                                case 0x006E:
                                case 0x006F:
                                case 0x0070:
                                case 0x0071:
                                case 0x0072:
                                case 0x0073:
                                case 0x0074:
                                case 0x0075:
                                case 0x0076:
                                case 0x0077:
                                case 0x0078:
                                case 0x0079:
                                case 0x007A:
                                case 0x007B:
                                case 0x007C:
                                case 0x007D:
                                case 0x007E:
                                case 0x00A3:
                                case 0x00A9:
                                case 0x00B1:
                                case 0x00B5:
                                        break;
                                case 0x00A0: ch = 0xCA; break;
                                case 0x00A7: ch = 0xA4; break;
                                case 0x00AB: ch = 0xC7; break;
                                case 0x00AC: ch = 0xC2; break;
                                case 0x00AE: ch = 0xA8; break;
                                case 0x00B0: ch = 0xA1; break;
                                case 0x00B6: ch = 0xA6; break;
                                case 0x00BB: ch = 0xC8; break;
                                case 0x00F7: ch = 0xD6; break;
                                case 0x0192: ch = 0xC4; break;
                                case 0x0401: ch = 0xDD; break;
                                case 0x0402: ch = 0xAB; break;
                                case 0x0403: ch = 0xAE; break;
                                case 0x0404: ch = 0xB8; break;
                                case 0x0405: ch = 0xC1; break;
                                case 0x0406: ch = 0xA7; break;
                                case 0x0407: ch = 0xBA; break;
                                case 0x0408: ch = 0xB7; break;
                                case 0x0409: ch = 0xBC; break;
                                case 0x040A: ch = 0xBE; break;
                                case 0x040B: ch = 0xCB; break;
                                case 0x040C: ch = 0xCD; break;
                                case 0x040E: ch = 0xD8; break;
                                case 0x040F: ch = 0xDA; break;
                                case 0x0410:
                                case 0x0411:
                                case 0x0412:
                                case 0x0413:
                                case 0x0414:
                                case 0x0415:
                                case 0x0416:
                                case 0x0417:
                                case 0x0418:
                                case 0x0419:
                                case 0x041A:
                                case 0x041B:
                                case 0x041C:
                                case 0x041D:
                                case 0x041E:
                                case 0x041F:
                                case 0x0420:
                                case 0x0421:
                                case 0x0422:
                                case 0x0423:
                                case 0x0424:
                                case 0x0425:
                                case 0x0426:
                                case 0x0427:
                                case 0x0428:
                                case 0x0429:
                                case 0x042A:
                                case 0x042B:
                                case 0x042C:
                                case 0x042D:
                                case 0x042E:
                                case 0x042F:
                                        ch -= 0x0390;
                                        break;
                                case 0x0430:
                                case 0x0431:
                                case 0x0432:
                                case 0x0433:
                                case 0x0434:
                                case 0x0435:
                                case 0x0436:
                                case 0x0437:
                                case 0x0438:
                                case 0x0439:
                                case 0x043A:
                                case 0x043B:
                                case 0x043C:
                                case 0x043D:
                                case 0x043E:
                                case 0x043F:
                                case 0x0440:
                                case 0x0441:
                                case 0x0442:
                                case 0x0443:
                                case 0x0444:
                                case 0x0445:
                                case 0x0446:
                                case 0x0447:
                                case 0x0448:
                                case 0x0449:
                                case 0x044A:
                                case 0x044B:
                                case 0x044C:
                                case 0x044D:
                                case 0x044E:
                                        ch -= 0x0350;
                                        break;
                                case 0x044F: ch = 0xDF; break;
                                case 0x0451: ch = 0xDE; break;
                                case 0x0452: ch = 0xAC; break;
                                case 0x0453: ch = 0xAF; break;
                                case 0x0454: ch = 0xB9; break;
                                case 0x0455: ch = 0xCF; break;
                                case 0x0456: ch = 0xB4; break;
                                case 0x0457: ch = 0xBB; break;
                                case 0x0458: ch = 0xC0; break;
                                case 0x0459: ch = 0xBD; break;
                                case 0x045A: ch = 0xBF; break;
                                case 0x045B: ch = 0xCC; break;
                                case 0x045C: ch = 0xCE; break;
                                case 0x045E: ch = 0xD9; break;
                                case 0x045F: ch = 0xDB; break;
                                case 0x0490: ch = 0xA2; break;
                                case 0x0491: ch = 0xB6; break;
                                case 0x2013: ch = 0xD0; break;
                                case 0x2014: ch = 0xD1; break;
                                case 0x2018: ch = 0xD4; break;
                                case 0x2019: ch = 0xD5; break;
                                case 0x201C: ch = 0xD2; break;
                                case 0x201D: ch = 0xD3; break;
                                case 0x201E: ch = 0xD7; break;
                                case 0x2020: ch = 0xA0; break;
                                case 0x2022: ch = 0xA5; break;
                                case 0x2026: ch = 0xC9; break;
                                case 0x20AC: ch = 0xFF; break;
                                case 0x2116: ch = 0xDC; break;
                                case 0x2122: ch = 0xAA; break;
                                case 0x2206: ch = 0xC6; break;
                                case 0x221A: ch = 0xC3; break;
                                case 0x221E: ch = 0xB0; break;
                                case 0x2248: ch = 0xC5; break;
                                case 0x2260: ch = 0xAD; break;
                                case 0x2264: ch = 0xB2; break;
                                case 0x2265: ch = 0xB3; break;
                                default: ch = 0x3F; break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
                }
        }

}; // class CP10007

public class ENCwindows_10007 : CP10007
{
        public ENCwindows_10007() : base() {}

}; // class ENCwindows_10007

}; // namespace I18N.Other

--- NEW FILE ---
/*
 * CP10017.cs - MAC - Ukraine code page.
 *
 * Copyright (c) 2002  Southern Storm Software, Pty Ltd
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

// Generated from "mac-10007.ucm".

namespace I18N.Other
{

using System;
using I18N.Common;

public class CP10017 : ByteEncoding
{
        public CP10017()
                : base(10017, ToChars, "MAC - Ukraine",
                       "windows-10017", "windows-10017", "windows-10017",
                       false, false, false, false, 1251)
        {}

        private static readonly char[] ToChars = {
                '\u0000', '\u0001', '\u0002', '\u0003', '\u0004', '\u0005', 
                '\u0006', '\u0007', '\u0008', '\u0009', '\u000A', '\u000B', 
                '\u000C', '\u000D', '\u000E', '\u000F', '\u0010', '\u0011', 
                '\u0012', '\u0013', '\u0014', '\u0015', '\u0016', '\u0017', 
                '\u0018', '\u0019', '\u001A', '\u001B', '\u001C', '\u001D', 
                '\u001E', '\u001F', '\u0020', '\u0021', '\u0022', '\u0023', 
                '\u0024', '\u0025', '\u0026', '\u0027', '\u0028', '\u0029', 
                '\u002A', '\u002B', '\u002C', '\u002D', '\u002E', '\u002F', 
                '\u0030', '\u0031', '\u0032', '\u0033', '\u0034', '\u0035', 
                '\u0036', '\u0037', '\u0038', '\u0039', '\u003A', '\u003B', 
                '\u003C', '\u003D', '\u003E', '\u003F', '\u0040', '\u0041', 
                '\u0042', '\u0043', '\u0044', '\u0045', '\u0046', '\u0047', 
                '\u0048', '\u0049', '\u004A', '\u004B', '\u004C', '\u004D', 
                '\u004E', '\u004F', '\u0050', '\u0051', '\u0052', '\u0053', 
                '\u0054', '\u0055', '\u0056', '\u0057', '\u0058', '\u0059', 
                '\u005A', '\u005B', '\u005C', '\u005D', '\u005E', '\u005F', 
                '\u0060', '\u0061', '\u0062', '\u0063', '\u0064', '\u0065', 
                '\u0066', '\u0067', '\u0068', '\u0069', '\u006A', '\u006B', 
                '\u006C', '\u006D', '\u006E', '\u006F', '\u0070', '\u0071', 
                '\u0072', '\u0073', '\u0074', '\u0075', '\u0076', '\u0077', 
                '\u0078', '\u0079', '\u007A', '\u007B', '\u007C', '\u007D', 
                '\u007E', '\u007F', '\u0410', '\u0411', '\u0412', '\u0413', 
                '\u0414', '\u0415', '\u0416', '\u0417', '\u0418', '\u0419', 
                '\u041A', '\u041B', '\u041C', '\u041D', '\u041E', '\u041F', 
                '\u0420', '\u0421', '\u0422', '\u0423', '\u0424', '\u0425', 
                '\u0426', '\u0427', '\u0428', '\u0429', '\u042A', '\u042B', 
                '\u042C', '\u042D', '\u042E', '\u042F', '\u2020', '\u00B0', 
                '\u0490', '\u00A3', '\u00A7', '\u2022', '\u00B6', '\u0406', 
                '\u00AE', '\u00A9', '\u2122', '\u0402', '\u0452', '\u2260', 
                '\u0403', '\u0453', '\u221E', '\u00B1', '\u2264', '\u2265', 
                '\u0456', '\u00B5', '\u0491', '\u0408', '\u0404', '\u0454', 
                '\u0407', '\u0457', '\u0409', '\u0459', '\u040A', '\u045A', 
                '\u0458', '\u0405', '\u00AC', '\u221A', '\u0192', '\u2248', 
                '\u2206', '\u00AB', '\u00BB', '\u2026', '\u00A0', '\u040B', 
                '\u045B', '\u040C', '\u045C', '\u0455', '\u2013', '\u2014', 
                '\u201C', '\u201D', '\u2018', '\u2019', '\u00F7', '\u201E', 
                '\u040E', '\u045E', '\u040F', '\u045F', '\u2116', '\u0401', 
                '\u0451', '\u044F', '\u0430', '\u0431', '\u0432', '\u0433', 
                '\u0434', '\u0435', '\u0436', '\u0437', '\u0438', '\u0439', 
                '\u043A', '\u043B', '\u043C', '\u043D', '\u043E', '\u043F', 
                '\u0440', '\u0441', '\u0442', '\u0443', '\u0444', '\u0445', 
                '\u0446', '\u0447', '\u0448', '\u0449', '\u044A', '\u044B', 
                '\u044C', '\u044D', '\u044E', '\u20AC', 
        };

        protected override void ToBytes(char[] chars, int charIndex, int 
charCount,
                                        byte[] bytes, int byteIndex)
        {
                int ch;
                while(charCount > 0)
                {
                        ch = (int)(chars[charIndex++]);
                        if(ch >= 0) switch(ch)
                        {
                                case 0x0020:
                                case 0x0021:
                                case 0x0022:
                                case 0x0023:
                                case 0x0024:
                                case 0x0025:
                                case 0x0026:
                                case 0x0027:
                                case 0x0028:
                                case 0x0029:
                                case 0x002A:
                                case 0x002B:
                                case 0x002C:
                                case 0x002D:
                                case 0x002E:
                                case 0x002F:
                                case 0x0030:
                                case 0x0031:
                                case 0x0032:
                                case 0x0033:
                                case 0x0034:
                                case 0x0035:
                                case 0x0036:
                                case 0x0037:
                                case 0x0038:
                                case 0x0039:
                                case 0x003A:
                                case 0x003B:
                                case 0x003C:
                                case 0x003D:
                                case 0x003E:
                                case 0x003F:
                                case 0x0040:
                                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:
                                case 0x005B:
                                case 0x005C:
                                case 0x005D:
                                case 0x005E:
                                case 0x005F:
                                case 0x0060:
                                case 0x0061:
                                case 0x0062:
                                case 0x0063:
                                case 0x0064:
                                case 0x0065:
                                case 0x0066:
                                case 0x0067:
                                case 0x0068:
                                case 0x0069:
                                case 0x006A:
                                case 0x006B:
                                case 0x006C:
                                case 0x006D:
                                case 0x006E:
                                case 0x006F:
                                case 0x0070:
                                case 0x0071:
                                case 0x0072:
                                case 0x0073:
                                case 0x0074:
                                case 0x0075:
                                case 0x0076:
                                case 0x0077:
                                case 0x0078:
                                case 0x0079:
                                case 0x007A:
                                case 0x007B:
                                case 0x007C:
                                case 0x007D:
                                case 0x007E:
                                case 0x00A3:
                                case 0x00A9:
                                case 0x00B1:
                                case 0x00B5:
                                        break;
                                case 0x00A0: ch = 0xCA; break;
                                case 0x00A7: ch = 0xA4; break;
                                case 0x00AB: ch = 0xC7; break;
                                case 0x00AC: ch = 0xC2; break;
                                case 0x00AE: ch = 0xA8; break;
                                case 0x00B0: ch = 0xA1; break;
                                case 0x00B6: ch = 0xA6; break;
                                case 0x00BB: ch = 0xC8; break;
                                case 0x00F7: ch = 0xD6; break;
                                case 0x0192: ch = 0xC4; break;
                                case 0x0401: ch = 0xDD; break;
                                case 0x0402: ch = 0xAB; break;
                                case 0x0403: ch = 0xAE; break;
                                case 0x0404: ch = 0xB8; break;
                                case 0x0405: ch = 0xC1; break;
                                case 0x0406: ch = 0xA7; break;
                                case 0x0407: ch = 0xBA; break;
                                case 0x0408: ch = 0xB7; break;
                                case 0x0409: ch = 0xBC; break;
                                case 0x040A: ch = 0xBE; break;
                                case 0x040B: ch = 0xCB; break;
                                case 0x040C: ch = 0xCD; break;
                                case 0x040E: ch = 0xD8; break;
                                case 0x040F: ch = 0xDA; break;
                                case 0x0410:
                                case 0x0411:
                                case 0x0412:
                                case 0x0413:
                                case 0x0414:
                                case 0x0415:
                                case 0x0416:
                                case 0x0417:
                                case 0x0418:
                                case 0x0419:
                                case 0x041A:
                                case 0x041B:
                                case 0x041C:
                                case 0x041D:
                                case 0x041E:
                                case 0x041F:
                                case 0x0420:
                                case 0x0421:
                                case 0x0422:
                                case 0x0423:
                                case 0x0424:
                                case 0x0425:
                                case 0x0426:
                                case 0x0427:
                                case 0x0428:
                                case 0x0429:
                                case 0x042A:
                                case 0x042B:
                                case 0x042C:
                                case 0x042D:
                                case 0x042E:
                                case 0x042F:
                                        ch -= 0x0390;
                                        break;
                                case 0x0430:
                                case 0x0431:
                                case 0x0432:
                                case 0x0433:
                                case 0x0434:
                                case 0x0435:
                                case 0x0436:
                                case 0x0437:
                                case 0x0438:
                                case 0x0439:
                                case 0x043A:
                                case 0x043B:
                                case 0x043C:
                                case 0x043D:
                                case 0x043E:
                                case 0x043F:
                                case 0x0440:
                                case 0x0441:
                                case 0x0442:
                                case 0x0443:
                                case 0x0444:
                                case 0x0445:
                                case 0x0446:
                                case 0x0447:
                                case 0x0448:
                                case 0x0449:
                                case 0x044A:
                                case 0x044B:
                                case 0x044C:
                                case 0x044D:
                                case 0x044E:
                                        ch -= 0x0350;
                                        break;
                                case 0x044F: ch = 0xDF; break;
                                case 0x0451: ch = 0xDE; break;
                                case 0x0452: ch = 0xAC; break;
                                case 0x0453: ch = 0xAF; break;
                                case 0x0454: ch = 0xB9; break;
                                case 0x0455: ch = 0xCF; break;
                                case 0x0456: ch = 0xB4; break;
                                case 0x0457: ch = 0xBB; break;
                                case 0x0458: ch = 0xC0; break;
                                case 0x0459: ch = 0xBD; break;
                                case 0x045A: ch = 0xBF; break;
                                case 0x045B: ch = 0xCC; break;
                                case 0x045C: ch = 0xCE; break;
                                case 0x045E: ch = 0xD9; break;
                                case 0x045F: ch = 0xDB; break;
                                case 0x0490: ch = 0xA2; break;
                                case 0x0491: ch = 0xB6; break;
                                case 0x2013: ch = 0xD0; break;
                                case 0x2014: ch = 0xD1; break;
                                case 0x2018: ch = 0xD4; break;
                                case 0x2019: ch = 0xD5; break;
                                case 0x201C: ch = 0xD2; break;
                                case 0x201D: ch = 0xD3; break;
                                case 0x201E: ch = 0xD7; break;
                                case 0x2020: ch = 0xA0; break;
                                case 0x2022: ch = 0xA5; break;
                                case 0x2026: ch = 0xC9; break;
                                case 0x20AC: ch = 0xFF; break;
                                case 0x2116: ch = 0xDC; break;
                                case 0x2122: ch = 0xAA; break;
                                case 0x2206: ch = 0xC6; break;
                                case 0x221A: ch = 0xC3; break;
                                case 0x221E: ch = 0xB0; break;
                                case 0x2248: ch = 0xC5; break;
                                case 0x2260: ch = 0xAD; break;
                                case 0x2264: ch = 0xB2; break;
                                case 0x2265: ch = 0xB3; break;
                                default: ch = 0x3F; break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
                }
        }

        protected override void ToBytes(String s, int charIndex, int charCount,
                                        byte[] bytes, int byteIndex)
        {
                int ch;
                while(charCount > 0)
                {
                        ch = (int)(s[charIndex++]);
                        if(ch >= 0) switch(ch)
                        {
                                case 0x0020:
                                case 0x0021:
                                case 0x0022:
                                case 0x0023:
                                case 0x0024:
                                case 0x0025:
                                case 0x0026:
                                case 0x0027:
                                case 0x0028:
                                case 0x0029:
                                case 0x002A:
                                case 0x002B:
                                case 0x002C:
                                case 0x002D:
                                case 0x002E:
                                case 0x002F:
                                case 0x0030:
                                case 0x0031:
                                case 0x0032:
                                case 0x0033:
                                case 0x0034:
                                case 0x0035:
                                case 0x0036:
                                case 0x0037:
                                case 0x0038:
                                case 0x0039:
                                case 0x003A:
                                case 0x003B:
                                case 0x003C:
                                case 0x003D:
                                case 0x003E:
                                case 0x003F:
                                case 0x0040:
                                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:
                                case 0x005B:
                                case 0x005C:
                                case 0x005D:
                                case 0x005E:
                                case 0x005F:
                                case 0x0060:
                                case 0x0061:
                                case 0x0062:
                                case 0x0063:
                                case 0x0064:
                                case 0x0065:
                                case 0x0066:
                                case 0x0067:
                                case 0x0068:
                                case 0x0069:
                                case 0x006A:
                                case 0x006B:
                                case 0x006C:
                                case 0x006D:
                                case 0x006E:
                                case 0x006F:
                                case 0x0070:
                                case 0x0071:
                                case 0x0072:
                                case 0x0073:
                                case 0x0074:
                                case 0x0075:
                                case 0x0076:
                                case 0x0077:
                                case 0x0078:
                                case 0x0079:
                                case 0x007A:
                                case 0x007B:
                                case 0x007C:
                                case 0x007D:
                                case 0x007E:
                                case 0x00A3:
                                case 0x00A9:
                                case 0x00B1:
                                case 0x00B5:
                                        break;
                                case 0x00A0: ch = 0xCA; break;
                                case 0x00A7: ch = 0xA4; break;
                                case 0x00AB: ch = 0xC7; break;
                                case 0x00AC: ch = 0xC2; break;
                                case 0x00AE: ch = 0xA8; break;
                                case 0x00B0: ch = 0xA1; break;
                                case 0x00B6: ch = 0xA6; break;
                                case 0x00BB: ch = 0xC8; break;
                                case 0x00F7: ch = 0xD6; break;
                                case 0x0192: ch = 0xC4; break;
                                case 0x0401: ch = 0xDD; break;
                                case 0x0402: ch = 0xAB; break;
                                case 0x0403: ch = 0xAE; break;
                                case 0x0404: ch = 0xB8; break;
                                case 0x0405: ch = 0xC1; break;
                                case 0x0406: ch = 0xA7; break;
                                case 0x0407: ch = 0xBA; break;
                                case 0x0408: ch = 0xB7; break;
                                case 0x0409: ch = 0xBC; break;
                                case 0x040A: ch = 0xBE; break;
                                case 0x040B: ch = 0xCB; break;
                                case 0x040C: ch = 0xCD; break;
                                case 0x040E: ch = 0xD8; break;
                                case 0x040F: ch = 0xDA; break;
                                case 0x0410:
                                case 0x0411:
                                case 0x0412:
                                case 0x0413:
                                case 0x0414:
                                case 0x0415:
                                case 0x0416:
                                case 0x0417:
                                case 0x0418:
                                case 0x0419:
                                case 0x041A:
                                case 0x041B:
                                case 0x041C:
                                case 0x041D:
                                case 0x041E:
                                case 0x041F:
                                case 0x0420:
                                case 0x0421:
                                case 0x0422:
                                case 0x0423:
                                case 0x0424:
                                case 0x0425:
                                case 0x0426:
                                case 0x0427:
                                case 0x0428:
                                case 0x0429:
                                case 0x042A:
                                case 0x042B:
                                case 0x042C:
                                case 0x042D:
                                case 0x042E:
                                case 0x042F:
                                        ch -= 0x0390;
                                        break;
                                case 0x0430:
                                case 0x0431:
                                case 0x0432:
                                case 0x0433:
                                case 0x0434:
                                case 0x0435:
                                case 0x0436:
                                case 0x0437:
                                case 0x0438:
                                case 0x0439:
                                case 0x043A:
                                case 0x043B:
                                case 0x043C:
                                case 0x043D:
                                case 0x043E:
                                case 0x043F:
                                case 0x0440:
                                case 0x0441:
                                case 0x0442:
                                case 0x0443:
                                case 0x0444:
                                case 0x0445:
                                case 0x0446:
                                case 0x0447:
                                case 0x0448:
                                case 0x0449:
                                case 0x044A:
                                case 0x044B:
                                case 0x044C:
                                case 0x044D:
                                case 0x044E:
                                        ch -= 0x0350;
                                        break;
                                case 0x044F: ch = 0xDF; break;
                                case 0x0451: ch = 0xDE; break;
                                case 0x0452: ch = 0xAC; break;
                                case 0x0453: ch = 0xAF; break;
                                case 0x0454: ch = 0xB9; break;
                                case 0x0455: ch = 0xCF; break;
                                case 0x0456: ch = 0xB4; break;
                                case 0x0457: ch = 0xBB; break;
                                case 0x0458: ch = 0xC0; break;
                                case 0x0459: ch = 0xBD; break;
                                case 0x045A: ch = 0xBF; break;
                                case 0x045B: ch = 0xCC; break;
                                case 0x045C: ch = 0xCE; break;
                                case 0x045E: ch = 0xD9; break;
                                case 0x045F: ch = 0xDB; break;
                                case 0x0490: ch = 0xA2; break;
                                case 0x0491: ch = 0xB6; break;
                                case 0x2013: ch = 0xD0; break;
                                case 0x2014: ch = 0xD1; break;
                                case 0x2018: ch = 0xD4; break;
                                case 0x2019: ch = 0xD5; break;
                                case 0x201C: ch = 0xD2; break;
                                case 0x201D: ch = 0xD3; break;
                                case 0x201E: ch = 0xD7; break;
                                case 0x2020: ch = 0xA0; break;
                                case 0x2022: ch = 0xA5; break;
                                case 0x2026: ch = 0xC9; break;
                                case 0x20AC: ch = 0xFF; break;
                                case 0x2116: ch = 0xDC; break;
                                case 0x2122: ch = 0xAA; break;
                                case 0x2206: ch = 0xC6; break;
                                case 0x221A: ch = 0xC3; break;
                                case 0x221E: ch = 0xB0; break;
                                case 0x2248: ch = 0xC5; break;
                                case 0x2260: ch = 0xAD; break;
                                case 0x2264: ch = 0xB2; break;
                                case 0x2265: ch = 0xB3; break;
                                default: ch = 0x3F; break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
                }
        }

}; // class CP10017

public class ENCwindows_10017 : CP10017
{
        public ENCwindows_10017() : base() {}

}; // class ENCwindows_10017

}; // namespace I18N.Other

--- NEW FILE ---
/*
 * CP10021.cs - MAC - Thai code page.
 *
 * Copyright (c) 2002  Southern Storm Software, Pty Ltd
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

// Generated from "mac-10021.ucm".

namespace I18N.Other
{

using System;
using I18N.Common;

public class CP10021 : ByteEncoding
{
        public CP10021()
                : base(10021, ToChars, "MAC - Thai",
                       "windows-10021", "windows-10021", "windows-10021",
                       false, false, false, false, 874)
        {}

        private static readonly char[] ToChars = {
                '\u0000', '\u0001', '\u0002', '\u0003', '\u0004', '\u0005', 
                '\u0006', '\u0007', '\u0008', '\u0009', '\u000A', '\u000B', 
                '\u000C', '\u000D', '\u000E', '\u000F', '\u0010', '\u0011', 
                '\u0012', '\u0013', '\u0014', '\u0015', '\u0016', '\u0017', 
                '\u0018', '\u0019', '\u001A', '\u001B', '\u001C', '\u001D', 
                '\u001E', '\u001F', '\u0020', '\u0021', '\u0022', '\u0023', 
                '\u0024', '\u0025', '\u0026', '\u0027', '\u0028', '\u0029', 
                '\u002A', '\u002B', '\u002C', '\u002D', '\u002E', '\u002F', 
                '\u0030', '\u0031', '\u0032', '\u0033', '\u0034', '\u0035', 
                '\u0036', '\u0037', '\u0038', '\u0039', '\u003A', '\u003B', 
                '\u003C', '\u003D', '\u003E', '\u003F', '\u0040', '\u0041', 
                '\u0042', '\u0043', '\u0044', '\u0045', '\u0046', '\u0047', 
                '\u0048', '\u0049', '\u004A', '\u004B', '\u004C', '\u004D', 
                '\u004E', '\u004F', '\u0050', '\u0051', '\u0052', '\u0053', 
                '\u0054', '\u0055', '\u0056', '\u0057', '\u0058', '\u0059', 
                '\u005A', '\u005B', '\u005C', '\u005D', '\u005E', '\u005F', 
                '\u0060', '\u0061', '\u0062', '\u0063', '\u0064', '\u0065', 
                '\u0066', '\u0067', '\u0068', '\u0069', '\u006A', '\u006B', 
                '\u006C', '\u006D', '\u006E', '\u006F', '\u0070', '\u0071', 
                '\u0072', '\u0073', '\u0074', '\u0075', '\u0076', '\u0077', 
                '\u0078', '\u0079', '\u007A', '\u007B', '\u007C', '\u007D', 
                '\u007E', '\u007F', '\u00AB', '\u00BB', '\u2026', '\u0E48', 
                '\u0E49', '\u0E4A', '\u0E4B', '\u0E4C', '\u0E48', '\u0E49', 
                '\u0E4A', '\u0E4B', '\u0E4C', '\u201C', '\u201D', '\u0E4D', 
                '\u0090', '\u2022', '\u0E31', '\u0E47', '\u0E34', '\u0E35', 
                '\u0E36', '\u0E37', '\u0E48', '\u0E49', '\u0E4A', '\u0E4B', 
                '\u0E4C', '\u2018', '\u2019', '\u009F', '\u00A0', '\u0E01', 
                '\u0E02', '\u0E03', '\u0E04', '\u0E05', '\u0E06', '\u0E07', 
                '\u0E08', '\u0E09', '\u0E0A', '\u0E0B', '\u0E0C', '\u0E0D', 
                '\u0E0E', '\u0E0F', '\u0E10', '\u0E11', '\u0E12', '\u0E13', 
                '\u0E14', '\u0E15', '\u0E16', '\u0E17', '\u0E18', '\u0E19', 
                '\u0E1A', '\u0E1B', '\u0E1C', '\u0E1D', '\u0E1E', '\u0E1F', 
                '\u0E20', '\u0E21', '\u0E22', '\u0E23', '\u0E24', '\u0E25', 
                '\u0E26', '\u0E27', '\u0E28', '\u0E29', '\u0E2A', '\u0E2B', 
                '\u0E2C', '\u0E2D', '\u0E2E', '\u0E2F', '\u0E30', '\u0E31', 
                '\u0E32', '\u0E33', '\u0E34', '\u0E35', '\u0E36', '\u0E37', 
                '\u0E38', '\u0E39', '\u0E3A', '\u2060', '\u200B', '\u2013', 
                '\u2014', '\u0E3F', '\u0E40', '\u0E41', '\u0E42', '\u0E43', 
                '\u0E44', '\u0E45', '\u0E46', '\u0E47', '\u0E48', '\u0E49', 
                '\u0E4A', '\u0E4B', '\u0E4C', '\u0E4D', '\u2122', '\u0E4F', 
                '\u0E50', '\u0E51', '\u0E52', '\u0E53', '\u0E54', '\u0E55', 
                '\u0E56', '\u0E57', '\u0E58', '\u0E59', '\u00AE', '\u00A9', 
                '\u00FC', '\u00FD', '\u00FE', '\u00FF', 
        };

        protected override void ToBytes(char[] chars, int charIndex, int 
charCount,
                                        byte[] bytes, int byteIndex)
        {
                int ch;
                while(charCount > 0)
                {
                        ch = (int)(chars[charIndex++]);
                        if(ch >= 0) switch(ch)
                        {
                                case 0x0020:
                                case 0x0021:
                                case 0x0022:
                                case 0x0023:
                                case 0x0024:
                                case 0x0025:
                                case 0x0026:
                                case 0x0027:
                                case 0x0028:
                                case 0x0029:
                                case 0x002A:
                                case 0x002B:
                                case 0x002C:
                                case 0x002D:
                                case 0x002E:
                                case 0x002F:
                                case 0x0030:
                                case 0x0031:
                                case 0x0032:
                                case 0x0033:
                                case 0x0034:
                                case 0x0035:
                                case 0x0036:
                                case 0x0037:
                                case 0x0038:
                                case 0x0039:
                                case 0x003A:
                                case 0x003B:
                                case 0x003C:
                                case 0x003D:
                                case 0x003E:
                                case 0x003F:
                                case 0x0040:
                                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:
                                case 0x005B:
                                case 0x005C:
                                case 0x005D:
                                case 0x005E:
                                case 0x005F:
                                case 0x0060:
                                case 0x0061:
                                case 0x0062:
                                case 0x0063:
                                case 0x0064:
                                case 0x0065:
                                case 0x0066:
                                case 0x0067:
                                case 0x0068:
                                case 0x0069:
                                case 0x006A:
                                case 0x006B:
                                case 0x006C:
                                case 0x006D:
                                case 0x006E:
                                case 0x006F:
                                case 0x0070:
                                case 0x0071:
                                case 0x0072:
                                case 0x0073:
                                case 0x0074:
                                case 0x0075:
                                case 0x0076:
                                case 0x0077:
                                case 0x0078:
                                case 0x0079:
                                case 0x007A:
                                case 0x007B:
                                case 0x007C:
                                case 0x007D:
                                case 0x007E:
                                case 0x00A0:
                                        break;
                                case 0x00A9: ch = 0xFB; break;
                                case 0x00AB: ch = 0x80; break;
                                case 0x00AE: ch = 0xFA; break;
                                case 0x00BB: ch = 0x81; break;
                                case 0x0E01:
                                case 0x0E02:
                                case 0x0E03:
                                case 0x0E04:
                                case 0x0E05:
                                case 0x0E06:
                                case 0x0E07:
                                case 0x0E08:
                                case 0x0E09:
                                case 0x0E0A:
                                case 0x0E0B:
                                case 0x0E0C:
                                case 0x0E0D:
                                case 0x0E0E:
                                case 0x0E0F:
                                case 0x0E10:
                                case 0x0E11:
                                case 0x0E12:
                                case 0x0E13:
                                case 0x0E14:
                                case 0x0E15:
                                case 0x0E16:
                                case 0x0E17:
                                case 0x0E18:
                                case 0x0E19:
                                case 0x0E1A:
                                case 0x0E1B:
                                case 0x0E1C:
                                case 0x0E1D:
                                case 0x0E1E:
                                case 0x0E1F:
                                case 0x0E20:
                                case 0x0E21:
                                case 0x0E22:
                                case 0x0E23:
                                case 0x0E24:
                                case 0x0E25:
                                case 0x0E26:
                                case 0x0E27:
                                case 0x0E28:
                                case 0x0E29:
                                case 0x0E2A:
                                case 0x0E2B:
                                case 0x0E2C:
                                case 0x0E2D:
                                case 0x0E2E:
                                case 0x0E2F:
                                case 0x0E30:
                                case 0x0E31:
                                case 0x0E32:
                                case 0x0E33:
                                case 0x0E34:
                                case 0x0E35:
                                case 0x0E36:
                                case 0x0E37:
                                case 0x0E38:
                                case 0x0E39:
                                case 0x0E3A:
                                        ch -= 0x0D60;
                                        break;
                                case 0x0E3F:
                                case 0x0E40:
                                case 0x0E41:
                                case 0x0E42:
                                case 0x0E43:
                                case 0x0E44:
                                case 0x0E45:
                                case 0x0E46:
                                case 0x0E47:
                                case 0x0E48:
                                case 0x0E49:
                                case 0x0E4A:
                                case 0x0E4B:
                                case 0x0E4C:
                                case 0x0E4D:
                                        ch -= 0x0D60;
                                        break;
                                case 0x0E4F:
                                case 0x0E50:
                                case 0x0E51:
                                case 0x0E52:
                                case 0x0E53:
                                case 0x0E54:
                                case 0x0E55:
                                case 0x0E56:
                                case 0x0E57:
                                case 0x0E58:
                                case 0x0E59:
                                        ch -= 0x0D60;
                                        break;
                                case 0x200B: ch = 0xDC; break;
                                case 0x2013: ch = 0xDD; break;
                                case 0x2014: ch = 0xDE; break;
                                case 0x2018: ch = 0x9D; break;
                                case 0x2019: ch = 0x9E; break;
                                case 0x201C: ch = 0x8D; break;
                                case 0x201D: ch = 0x8E; break;
                                case 0x2022: ch = 0x91; break;
                                case 0x2026: ch = 0x82; break;
                                case 0x2060: ch = 0xDB; break;
                                case 0x2122: ch = 0xEE; break;
                                default: ch = 0x3F; break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
                }
        }

        protected override void ToBytes(String s, int charIndex, int charCount,
                                        byte[] bytes, int byteIndex)
        {
                int ch;
                while(charCount > 0)
                {
                        ch = (int)(s[charIndex++]);
                        if(ch >= 0) switch(ch)
                        {
                                case 0x0020:
                                case 0x0021:
                                case 0x0022:
                                case 0x0023:
                                case 0x0024:
                                case 0x0025:
                                case 0x0026:
                                case 0x0027:
                                case 0x0028:
                                case 0x0029:
                                case 0x002A:
                                case 0x002B:
                                case 0x002C:
                                case 0x002D:
                                case 0x002E:
                                case 0x002F:
                                case 0x0030:
                                case 0x0031:
                                case 0x0032:
                                case 0x0033:
                                case 0x0034:
                                case 0x0035:
                                case 0x0036:
                                case 0x0037:
                                case 0x0038:
                                case 0x0039:
                                case 0x003A:
                                case 0x003B:
                                case 0x003C:
                                case 0x003D:
                                case 0x003E:
                                case 0x003F:
                                case 0x0040:
                                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:
                                case 0x005B:
                                case 0x005C:
                                case 0x005D:
                                case 0x005E:
                                case 0x005F:
                                case 0x0060:
                                case 0x0061:
                                case 0x0062:
                                case 0x0063:
                                case 0x0064:
                                case 0x0065:
                                case 0x0066:
                                case 0x0067:
                                case 0x0068:
                                case 0x0069:
                                case 0x006A:
                                case 0x006B:
                                case 0x006C:
                                case 0x006D:
                                case 0x006E:
                                case 0x006F:
                                case 0x0070:
                                case 0x0071:
                                case 0x0072:
                                case 0x0073:
                                case 0x0074:
                                case 0x0075:
                                case 0x0076:
                                case 0x0077:
                                case 0x0078:
                                case 0x0079:
                                case 0x007A:
                                case 0x007B:
                                case 0x007C:
                                case 0x007D:
                                case 0x007E:
                                case 0x00A0:
                                        break;
                                case 0x00A9: ch = 0xFB; break;
                                case 0x00AB: ch = 0x80; break;
                                case 0x00AE: ch = 0xFA; break;
                                case 0x00BB: ch = 0x81; break;
                                case 0x0E01:
                                case 0x0E02:
                                case 0x0E03:
                                case 0x0E04:
                                case 0x0E05:
                                case 0x0E06:
                                case 0x0E07:
                                case 0x0E08:
                                case 0x0E09:
                                case 0x0E0A:
                                case 0x0E0B:
                                case 0x0E0C:
                                case 0x0E0D:
                                case 0x0E0E:
                                case 0x0E0F:
                                case 0x0E10:
                                case 0x0E11:
                                case 0x0E12:
                                case 0x0E13:
                                case 0x0E14:
                                case 0x0E15:
                                case 0x0E16:
                                case 0x0E17:
                                case 0x0E18:
                                case 0x0E19:
                                case 0x0E1A:
                                case 0x0E1B:
                                case 0x0E1C:
                                case 0x0E1D:
                                case 0x0E1E:
                                case 0x0E1F:
                                case 0x0E20:
                                case 0x0E21:
                                case 0x0E22:
                                case 0x0E23:
                                case 0x0E24:
                                case 0x0E25:
                                case 0x0E26:
                                case 0x0E27:
                                case 0x0E28:
                                case 0x0E29:
                                case 0x0E2A:
                                case 0x0E2B:
                                case 0x0E2C:
                                case 0x0E2D:
                                case 0x0E2E:
                                case 0x0E2F:
                                case 0x0E30:
                                case 0x0E31:
                                case 0x0E32:
                                case 0x0E33:
                                case 0x0E34:
                                case 0x0E35:
                                case 0x0E36:
                                case 0x0E37:
                                case 0x0E38:
                                case 0x0E39:
                                case 0x0E3A:
                                        ch -= 0x0D60;
                                        break;
                                case 0x0E3F:
                                case 0x0E40:
                                case 0x0E41:
                                case 0x0E42:
                                case 0x0E43:
                                case 0x0E44:
                                case 0x0E45:
                                case 0x0E46:
                                case 0x0E47:
                                case 0x0E48:
                                case 0x0E49:
                                case 0x0E4A:
                                case 0x0E4B:
                                case 0x0E4C:
                                case 0x0E4D:
                                        ch -= 0x0D60;
                                        break;
                                case 0x0E4F:
                                case 0x0E50:
                                case 0x0E51:
                                case 0x0E52:
                                case 0x0E53:
                                case 0x0E54:
                                case 0x0E55:
                                case 0x0E56:
                                case 0x0E57:
                                case 0x0E58:
                                case 0x0E59:
                                        ch -= 0x0D60;
                                        break;
                                case 0x200B: ch = 0xDC; break;
                                case 0x2013: ch = 0xDD; break;
                                case 0x2014: ch = 0xDE; break;
                                case 0x2018: ch = 0x9D; break;
                                case 0x2019: ch = 0x9E; break;
                                case 0x201C: ch = 0x8D; break;
                                case 0x201D: ch = 0x8E; break;
                                case 0x2022: ch = 0x91; break;
                                case 0x2026: ch = 0x82; break;
                                case 0x2060: ch = 0xDB; break;
                                case 0x2122: ch = 0xEE; break;
                                default: ch = 0x3F; break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
                }
        }

}; // class CP10021

public class ENCwindows_10021 : CP10021
{
        public ENCwindows_10021() : base() {}

}; // class ENCwindows_10021

}; // namespace I18N.Other

--- NEW FILE ---
#=======================================================================
#   File name:  CYRILLIC.TXT
#
#   Contents:   Map (external version) from Mac OS Cyrillic
#               character set to Unicode 2.1 through Unicode 3.2
#
#   Copyright:  (c) 1995-2002 by Apple Computer, Inc., all rights
#               reserved.
#
#   Contact:    address@hidden
#
#   Changes:
#
#      b3,c1 2002-Dec-19    Update URLs, notes. Matches internal
#                           utom<b2>.
#       b02  1999-Sep-22    Encoding changed for Mac OS 9.0 to merge
#                           with Mac OS Ukrainian and support EURO SIGN;
#                           Change mappings for 0xA2, 0xB6, and 0xFF.
#                           Update contact e-mail address. Matches
#                           internal utom<b2>, ufrm<b2>, and Text
#                           Encoding Converter version 1.5.
#       n05  1998-Feb-05    Update header comments to new format; no
#                           mapping changes.  Matches internal utom<n3>,
#                           ufrm<n13>, and Text Encoding Converter
#                           version 1.3.
#       n03  1995-Apr-15    First version (after fixing some typos).
#                           Matches internal ufrm<n5>.
#
# Standard header:
# ----------------
#
#   Apple, the Apple logo, and Macintosh are trademarks of Apple
#   Computer, Inc., registered in the United States and other countries.
#   Unicode is a trademark of Unicode Inc. For the sake of brevity,
#   throughout this document, "Macintosh" can be used to refer to
#   Macintosh computers and "Unicode" can be used to refer to the
#   Unicode standard.
#
#   Apple makes no warranty or representation, either express or
#   implied, with respect to these tables, their quality, accuracy, or
#   fitness for a particular purpose. In no event will Apple be liable
#   for direct, indirect, special, incidental, or consequential damages 
#   resulting from any defect or inaccuracy in this document or the
#   accompanying tables.
#
#   These mapping tables and character lists are subject to change.
#   The latest tables should be available from the following:
#
#   <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
#
#   For general information about Mac OS encodings and these mapping
#   tables, see the file "README.TXT".
#
# Format:
# -------
#
#   Three tab-separated columns;
#   '#' begins a comment which continues to the end of the line.
#     Column #1 is the Mac OS Cyrillic code (in hex as 0xNN)
#     Column #2 is the corresponding Unicode (in hex as 0xNNNN)
#     Column #3 is a comment containing the Unicode name
#
#   The entries are in Mac OS Cyrillic code order.
#
#   Control character mappings are not shown in this table, following
#   the conventions of the standard UTC mapping tables. However, the
#   Mac OS Cyrillic character set uses the standard control characters
#   at 0x00-0x1F and 0x7F.
#
# Notes on Mac OS Cyrillic:
# -------------------------
#
#   This is the "Euro sign" version of Mac Cyrillic for Mac OS 9.0 and
#   later. Before Mac OS 9.0, there were two separate Slavic Cyrillic
#   encodings:
#
#   1. The Cyrillic currency sign variant (used for localized Russian
#      and Bulgarian systems), which had the following:
#           0xA2  U+00A2 CENT SIGN
#           0xB6  U+2202 PARTIAL DIFFERENTIAL
#           0xFF  U+00A4 CURRENCY SIGN
#
#   2. The Ukrainian currency sign variant (used for localized Ukrainian
#      systems and the pre-9.0 Cyrillic Language Kit), which had the
#      following:
#           0xA2  U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
#           0xB6  U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
#           0xFF  U+00A4 CURRENCY SIGN
#
#   This new Cyrillic Euro sign version is based on the old Ukrainian
#   currency sign variant, with 0xFF changed to be EURO SIGN.
#
#   The Mac OS Cyrillic encoding includes the Cyrillic letter repertoire
#   of ISO 8859-5 (although not at the same code points). This covers
#   most of the Slavic languages written in Cyrillic script.
#
#   The Mac OS Cyrillic encoding also includes a number of characters
#   needed for the Mac OS user interface and localization (e.g.
#   ellipsis, bullet, copyright sign). All of the characters in Mac OS
#   Cyrillic that are also in the Mac OS Roman encoding are at the
#   same code point in both; this improves application compatibility.
#
#   Note: There is a common Ukrainian glyph variation in which the glyph
#   for CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I may or may not
#   have a dot above.
#
# Unicode mapping issues and notes:
# ---------------------------------
#
# Details of mapping changes in each version:
# -------------------------------------------
#
#   Changes from version n05 to version b02:
#
#   - Encoding changed for Mac OS 9.0 to merge with Mac OS Ukrainian and
#   support EURO SIGN. 0xA2 changed from U+00A2 to U+0490; 0xB6 changed
#   from U+2202 to U+0491; 0xFF changed from U+00A4 to U+20AC.
#
##################

0x20    0x0020  # SPACE
0x21    0x0021  # EXCLAMATION MARK
0x22    0x0022  # QUOTATION MARK
0x23    0x0023  # NUMBER SIGN
0x24    0x0024  # DOLLAR SIGN
0x25    0x0025  # PERCENT SIGN
0x26    0x0026  # AMPERSAND
0x27    0x0027  # APOSTROPHE
0x28    0x0028  # LEFT PARENTHESIS
0x29    0x0029  # RIGHT PARENTHESIS
0x2A    0x002A  # ASTERISK
0x2B    0x002B  # PLUS SIGN
0x2C    0x002C  # COMMA
0x2D    0x002D  # HYPHEN-MINUS
0x2E    0x002E  # FULL STOP
0x2F    0x002F  # SOLIDUS
0x30    0x0030  # DIGIT ZERO
0x31    0x0031  # DIGIT ONE
0x32    0x0032  # DIGIT TWO
0x33    0x0033  # DIGIT THREE
0x34    0x0034  # DIGIT FOUR
0x35    0x0035  # DIGIT FIVE
0x36    0x0036  # DIGIT SIX
0x37    0x0037  # DIGIT SEVEN
0x38    0x0038  # DIGIT EIGHT
0x39    0x0039  # DIGIT NINE
0x3A    0x003A  # COLON
0x3B    0x003B  # SEMICOLON
0x3C    0x003C  # LESS-THAN SIGN
0x3D    0x003D  # EQUALS SIGN
0x3E    0x003E  # GREATER-THAN SIGN
0x3F    0x003F  # QUESTION MARK
0x40    0x0040  # COMMERCIAL AT
0x41    0x0041  # LATIN CAPITAL LETTER A
0x42    0x0042  # LATIN CAPITAL LETTER B
0x43    0x0043  # LATIN CAPITAL LETTER C
0x44    0x0044  # LATIN CAPITAL LETTER D
0x45    0x0045  # LATIN CAPITAL LETTER E
0x46    0x0046  # LATIN CAPITAL LETTER F
0x47    0x0047  # LATIN CAPITAL LETTER G
0x48    0x0048  # LATIN CAPITAL LETTER H
0x49    0x0049  # LATIN CAPITAL LETTER I
0x4A    0x004A  # LATIN CAPITAL LETTER J
0x4B    0x004B  # LATIN CAPITAL LETTER K
0x4C    0x004C  # LATIN CAPITAL LETTER L
0x4D    0x004D  # LATIN CAPITAL LETTER M
0x4E    0x004E  # LATIN CAPITAL LETTER N
0x4F    0x004F  # LATIN CAPITAL LETTER O
0x50    0x0050  # LATIN CAPITAL LETTER P
0x51    0x0051  # LATIN CAPITAL LETTER Q
0x52    0x0052  # LATIN CAPITAL LETTER R
0x53    0x0053  # LATIN CAPITAL LETTER S
0x54    0x0054  # LATIN CAPITAL LETTER T
0x55    0x0055  # LATIN CAPITAL LETTER U
0x56    0x0056  # LATIN CAPITAL LETTER V
0x57    0x0057  # LATIN CAPITAL LETTER W
0x58    0x0058  # LATIN CAPITAL LETTER X
0x59    0x0059  # LATIN CAPITAL LETTER Y
0x5A    0x005A  # LATIN CAPITAL LETTER Z
0x5B    0x005B  # LEFT SQUARE BRACKET
0x5C    0x005C  # REVERSE SOLIDUS
0x5D    0x005D  # RIGHT SQUARE BRACKET
0x5E    0x005E  # CIRCUMFLEX ACCENT
0x5F    0x005F  # LOW LINE
0x60    0x0060  # GRAVE ACCENT
0x61    0x0061  # LATIN SMALL LETTER A
0x62    0x0062  # LATIN SMALL LETTER B
0x63    0x0063  # LATIN SMALL LETTER C
0x64    0x0064  # LATIN SMALL LETTER D
0x65    0x0065  # LATIN SMALL LETTER E
0x66    0x0066  # LATIN SMALL LETTER F
0x67    0x0067  # LATIN SMALL LETTER G
0x68    0x0068  # LATIN SMALL LETTER H
0x69    0x0069  # LATIN SMALL LETTER I
0x6A    0x006A  # LATIN SMALL LETTER J
0x6B    0x006B  # LATIN SMALL LETTER K
0x6C    0x006C  # LATIN SMALL LETTER L
0x6D    0x006D  # LATIN SMALL LETTER M
0x6E    0x006E  # LATIN SMALL LETTER N
0x6F    0x006F  # LATIN SMALL LETTER O
0x70    0x0070  # LATIN SMALL LETTER P
0x71    0x0071  # LATIN SMALL LETTER Q
0x72    0x0072  # LATIN SMALL LETTER R
0x73    0x0073  # LATIN SMALL LETTER S
0x74    0x0074  # LATIN SMALL LETTER T
0x75    0x0075  # LATIN SMALL LETTER U
0x76    0x0076  # LATIN SMALL LETTER V
0x77    0x0077  # LATIN SMALL LETTER W
0x78    0x0078  # LATIN SMALL LETTER X
0x79    0x0079  # LATIN SMALL LETTER Y
0x7A    0x007A  # LATIN SMALL LETTER Z
0x7B    0x007B  # LEFT CURLY BRACKET
0x7C    0x007C  # VERTICAL LINE
0x7D    0x007D  # RIGHT CURLY BRACKET
0x7E    0x007E  # TILDE
#
0x80    0x0410  # CYRILLIC CAPITAL LETTER A
0x81    0x0411  # CYRILLIC CAPITAL LETTER BE
0x82    0x0412  # CYRILLIC CAPITAL LETTER VE
0x83    0x0413  # CYRILLIC CAPITAL LETTER GHE
0x84    0x0414  # CYRILLIC CAPITAL LETTER DE
0x85    0x0415  # CYRILLIC CAPITAL LETTER IE
0x86    0x0416  # CYRILLIC CAPITAL LETTER ZHE
0x87    0x0417  # CYRILLIC CAPITAL LETTER ZE
0x88    0x0418  # CYRILLIC CAPITAL LETTER I
0x89    0x0419  # CYRILLIC CAPITAL LETTER SHORT I
0x8A    0x041A  # CYRILLIC CAPITAL LETTER KA
0x8B    0x041B  # CYRILLIC CAPITAL LETTER EL
0x8C    0x041C  # CYRILLIC CAPITAL LETTER EM
0x8D    0x041D  # CYRILLIC CAPITAL LETTER EN
0x8E    0x041E  # CYRILLIC CAPITAL LETTER O
0x8F    0x041F  # CYRILLIC CAPITAL LETTER PE
0x90    0x0420  # CYRILLIC CAPITAL LETTER ER
0x91    0x0421  # CYRILLIC CAPITAL LETTER ES
0x92    0x0422  # CYRILLIC CAPITAL LETTER TE
0x93    0x0423  # CYRILLIC CAPITAL LETTER U
0x94    0x0424  # CYRILLIC CAPITAL LETTER EF
0x95    0x0425  # CYRILLIC CAPITAL LETTER HA
0x96    0x0426  # CYRILLIC CAPITAL LETTER TSE
0x97    0x0427  # CYRILLIC CAPITAL LETTER CHE
0x98    0x0428  # CYRILLIC CAPITAL LETTER SHA
0x99    0x0429  # CYRILLIC CAPITAL LETTER SHCHA
0x9A    0x042A  # CYRILLIC CAPITAL LETTER HARD SIGN
0x9B    0x042B  # CYRILLIC CAPITAL LETTER YERU
0x9C    0x042C  # CYRILLIC CAPITAL LETTER SOFT SIGN
0x9D    0x042D  # CYRILLIC CAPITAL LETTER E
0x9E    0x042E  # CYRILLIC CAPITAL LETTER YU
0x9F    0x042F  # CYRILLIC CAPITAL LETTER YA
0xA0    0x2020  # DAGGER
0xA1    0x00B0  # DEGREE SIGN
0xA2    0x0490  # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
0xA3    0x00A3  # POUND SIGN
0xA4    0x00A7  # SECTION SIGN
0xA5    0x2022  # BULLET
0xA6    0x00B6  # PILCROW SIGN
0xA7    0x0406  # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
0xA8    0x00AE  # REGISTERED SIGN
0xA9    0x00A9  # COPYRIGHT SIGN
0xAA    0x2122  # TRADE MARK SIGN
0xAB    0x0402  # CYRILLIC CAPITAL LETTER DJE
0xAC    0x0452  # CYRILLIC SMALL LETTER DJE
0xAD    0x2260  # NOT EQUAL TO
0xAE    0x0403  # CYRILLIC CAPITAL LETTER GJE
0xAF    0x0453  # CYRILLIC SMALL LETTER GJE
0xB0    0x221E  # INFINITY
0xB1    0x00B1  # PLUS-MINUS SIGN
0xB2    0x2264  # LESS-THAN OR EQUAL TO
0xB3    0x2265  # GREATER-THAN OR EQUAL TO
0xB4    0x0456  # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
0xB5    0x00B5  # MICRO SIGN
0xB6    0x0491  # CYRILLIC SMALL LETTER GHE WITH UPTURN
0xB7    0x0408  # CYRILLIC CAPITAL LETTER JE
0xB8    0x0404  # CYRILLIC CAPITAL LETTER UKRAINIAN IE
0xB9    0x0454  # CYRILLIC SMALL LETTER UKRAINIAN IE
0xBA    0x0407  # CYRILLIC CAPITAL LETTER YI
0xBB    0x0457  # CYRILLIC SMALL LETTER YI
0xBC    0x0409  # CYRILLIC CAPITAL LETTER LJE
0xBD    0x0459  # CYRILLIC SMALL LETTER LJE
0xBE    0x040A  # CYRILLIC CAPITAL LETTER NJE
0xBF    0x045A  # CYRILLIC SMALL LETTER NJE
0xC0    0x0458  # CYRILLIC SMALL LETTER JE
0xC1    0x0405  # CYRILLIC CAPITAL LETTER DZE
0xC2    0x00AC  # NOT SIGN
0xC3    0x221A  # SQUARE ROOT
0xC4    0x0192  # LATIN SMALL LETTER F WITH HOOK
0xC5    0x2248  # ALMOST EQUAL TO
0xC6    0x2206  # INCREMENT
0xC7    0x00AB  # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xC8    0x00BB  # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xC9    0x2026  # HORIZONTAL ELLIPSIS
0xCA    0x00A0  # NO-BREAK SPACE
0xCB    0x040B  # CYRILLIC CAPITAL LETTER TSHE
0xCC    0x045B  # CYRILLIC SMALL LETTER TSHE
0xCD    0x040C  # CYRILLIC CAPITAL LETTER KJE
0xCE    0x045C  # CYRILLIC SMALL LETTER KJE
0xCF    0x0455  # CYRILLIC SMALL LETTER DZE
0xD0    0x2013  # EN DASH
0xD1    0x2014  # EM DASH
0xD2    0x201C  # LEFT DOUBLE QUOTATION MARK
0xD3    0x201D  # RIGHT DOUBLE QUOTATION MARK
0xD4    0x2018  # LEFT SINGLE QUOTATION MARK
0xD5    0x2019  # RIGHT SINGLE QUOTATION MARK
0xD6    0x00F7  # DIVISION SIGN
0xD7    0x201E  # DOUBLE LOW-9 QUOTATION MARK
0xD8    0x040E  # CYRILLIC CAPITAL LETTER SHORT U
0xD9    0x045E  # CYRILLIC SMALL LETTER SHORT U
0xDA    0x040F  # CYRILLIC CAPITAL LETTER DZHE
0xDB    0x045F  # CYRILLIC SMALL LETTER DZHE
0xDC    0x2116  # NUMERO SIGN
0xDD    0x0401  # CYRILLIC CAPITAL LETTER IO
0xDE    0x0451  # CYRILLIC SMALL LETTER IO
0xDF    0x044F  # CYRILLIC SMALL LETTER YA
0xE0    0x0430  # CYRILLIC SMALL LETTER A
0xE1    0x0431  # CYRILLIC SMALL LETTER BE
0xE2    0x0432  # CYRILLIC SMALL LETTER VE
0xE3    0x0433  # CYRILLIC SMALL LETTER GHE
0xE4    0x0434  # CYRILLIC SMALL LETTER DE
0xE5    0x0435  # CYRILLIC SMALL LETTER IE
0xE6    0x0436  # CYRILLIC SMALL LETTER ZHE
0xE7    0x0437  # CYRILLIC SMALL LETTER ZE
0xE8    0x0438  # CYRILLIC SMALL LETTER I
0xE9    0x0439  # CYRILLIC SMALL LETTER SHORT I
0xEA    0x043A  # CYRILLIC SMALL LETTER KA
0xEB    0x043B  # CYRILLIC SMALL LETTER EL
0xEC    0x043C  # CYRILLIC SMALL LETTER EM
0xED    0x043D  # CYRILLIC SMALL LETTER EN
0xEE    0x043E  # CYRILLIC SMALL LETTER O
0xEF    0x043F  # CYRILLIC SMALL LETTER PE
0xF0    0x0440  # CYRILLIC SMALL LETTER ER
0xF1    0x0441  # CYRILLIC SMALL LETTER ES
0xF2    0x0442  # CYRILLIC SMALL LETTER TE
0xF3    0x0443  # CYRILLIC SMALL LETTER U
0xF4    0x0444  # CYRILLIC SMALL LETTER EF
0xF5    0x0445  # CYRILLIC SMALL LETTER HA
0xF6    0x0446  # CYRILLIC SMALL LETTER TSE
0xF7    0x0447  # CYRILLIC SMALL LETTER CHE
0xF8    0x0448  # CYRILLIC SMALL LETTER SHA
0xF9    0x0449  # CYRILLIC SMALL LETTER SHCHA
0xFA    0x044A  # CYRILLIC SMALL LETTER HARD SIGN
0xFB    0x044B  # CYRILLIC SMALL LETTER YERU
0xFC    0x044C  # CYRILLIC SMALL LETTER SOFT SIGN
0xFD    0x044D  # CYRILLIC SMALL LETTER E
0xFE    0x044E  # CYRILLIC SMALL LETTER YU
0xFF    0x20AC  # EURO SIGN

--- NEW FILE ---
#=======================================================================
#   File name:  THAI.TXT
#
#   Contents:   Map (external version) from Mac OS Thai
#               character set to Unicode 3.2
#
#   Copyright:  (c) 1995-2002 by Apple Computer, Inc., all rights
#               reserved.
#
#   Contact:    address@hidden
#
#   Changes:
#
#      b3,c1 2002-Dec-19    Update mapping for 0xDB to use new Unicode
#                           3.2 WORD JOINER instead of ZWNBSP (BOM).
#                           Update URLs. Matches internal utom<b3>.
#       b02  1999-Sep-22    Update contact e-mail address. Matches
#                           internal utom<b1>, ufrm<b2>, and Text
#                           Encoding Converter version 1.5.
#       n07  1998-Feb-05    Update to match internal utom<n5>, ufrm<n13>
#                           and Text Encoding Converter version 1.3:
#                           Use standard Unicodes plus transcoding hints
#                           instead of single corporate characters; see
#                           details below. Also update header comments
#                           to new format.
#       n04  1995-Nov-17    First version (after fixing some typos).
#                           Matches internal ufrm<n6>.
#
# Standard header:
# ----------------
#
#   Apple, the Apple logo, and Macintosh are trademarks of Apple
#   Computer, Inc., registered in the United States and other countries.
#   Unicode is a trademark of Unicode Inc. For the sake of brevity,
#   throughout this document, "Macintosh" can be used to refer to
#   Macintosh computers and "Unicode" can be used to refer to the
#   Unicode standard.
#
#   Apple makes no warranty or representation, either express or
#   implied, with respect to these tables, their quality, accuracy, or
#   fitness for a particular purpose. In no event will Apple be liable
#   for direct, indirect, special, incidental, or consequential damages 
#   resulting from any defect or inaccuracy in this document or the
#   accompanying tables.
#
#   These mapping tables and character lists are subject to change.
#   The latest tables should be available from the following:
#
#   <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
#
#   For general information about Mac OS encodings and these mapping
#   tables, see the file "README.TXT".
#
# Format:
# -------
#
#   Three tab-separated columns;
#   '#' begins a comment which continues to the end of the line.
#     Column #1 is the Mac OS Thai code (in hex as 0xNN)
#     Column #2 is the corresponding Unicode or Unicode sequence
#       (in hex as 0xNNNN or 0xNNNN+0xNNNN).
#     Column #3 is a comment containing the Unicode name
#
#   The entries are in Mac OS Thai code order.
#
#   Some of these mappings require the use of corporate characters.
#   See the file "CORPCHAR.TXT" and notes below.
#
#   Control character mappings are not shown in this table, following
#   the conventions of the standard UTC mapping tables. However, the
#   Mac OS Thai character set uses the standard control characters at
#   0x00-0x1F and 0x7F.
#
# Notes on Mac OS Thai:
# ---------------------
#
#   Codes 0xA1-0xDA and 0xDF-0xFB are the character set from Thai
#   standard TIS 620-2533, except that the following changes are
#   made:
#     0xEE is TRADE MARK SIGN (instead of THAI CHARACTER YAMAKKAN)
#     0xFA is REGISTERED SIGN (instead of THAI CHARACTER ANGKHANKHU)
#     0xFB is COPYRIGHT SIGN (instead of THAI CHARACTER KHOMUT)
#
#   Codes 0x80-0x82, 0x8D-0x8E, 0x91, 0x9D-0x9E, and 0xDB-0xDE are
#   various additional punctuation marks (e.g. curly quotes,
#   ellipsis), no-break space, and two special characters "word join"
#   and "word break".
#
#   Codes 0x83-0x8C, 0x8F, and 0x92-0x9C are for positional variants
#   of the upper vowels, tone marks, and other signs at 0xD1,
#   0xD4-0xD7, and 0xE7-0xED. The positional variants would normally
#   be considered presentation forms only and not characters. In most
#   cases they are not typed directly; they are selected automatically
#   at display time by the WorldScript software. However, using the
#   Thai-DTP keyboard, the presentation forms can in fact be typed
#   directly using dead keys. Thus they must be treated as real
#   characters in the Mac OS Thai encoding. They are mapped using
#   variant tags; see below.
#
#   Several code points are undefined and unused (they cannot be
#   typed using any of the Mac OS Thai keyboard layouts): 0x90, 0x9F,
#   0xFC-0xFE. These are not shown in the table below.
#
# Unicode mapping issues and notes:
# ---------------------------------
#
#   The goals in the Apple mappings provided here are:
#   - Ensure roundtrip mapping from every character in the Mac OS Thai
#   character set to Unicode and back
#   - Use standard Unicode characters as much as possible, to maximize
#   interchangeability of the resulting Unicode text. Whenever possible,
#   avoid having content carried by private-use characters.
#
#   To satisfy both goals, we use private use characters to mark variants
#   that are similar to a sequence of one or more standard Unicode
#   characters.
#
#   Apple has defined a block of 32 corporate characters as "transcoding
#   hints." These are used in combination with standard Unicode characters
#   to force them to be treated in a special way for mapping to other
#   encodings; they have no other effect. Sixteen of these transcoding
#   hints are "grouping hints" - they indicate that the next 2-4 Unicode
#   characters should be treated as a single entity for transcoding. The
#   other sixteen transcoding hints are "variant tags" - they are like
#   combining characters, and can follow a standard Unicode (or a sequence
#   consisting of a base character and other combining characters) to
#   cause it to be treated in a special way for transcoding. These always
#   terminate a combining-character sequence.
#
#   The transcoding coding hints used in this mapping table are four
#   variant tags in the range 0xF873-75. Since these are combined with
#   standard Unicode characters, some characters in the Mac OS Thai
#   character set map to a sequence of two Unicodes instead of a single
#   Unicode character. For example, the Mac OS Thai character at 0x83 is a
#   low-left positional variant of THAI CHARACTER MAI EK (the standard
#   mapping is for the abstract character at 0xE8). So 0x83 is mapped to
#   0x0E48 (THAI CHARACTER MAI EK) + 0xF875 (a variant tag).
#
# Details of mapping changes in each version:
# -------------------------------------------
#
#   Changes from version b02 to version b03/c01:
#
#   - Update mapping for 0xDB to use new Unicode 3.2 character U+2060
#     WORD JOINER instead of U+FEFF ZERO WIDTH NO-BREAK SPACE (BOM)
#
#   Changes from version n04 to version n07:
#
#   - Changed mappings of the positional variants to use standard
#   Unicodes + transcoding hint, instead of using single corporate
#   zone characters. This affected the mappings for the following:
#   0x83-08C, 0x8F, 0x92-0x9C
#
#   - Just comment out unused code points in the table, instead
#   of mapping them to U+FFFD.
#
##################

0x20    0x0020  # SPACE
0x21    0x0021  # EXCLAMATION MARK
0x22    0x0022  # QUOTATION MARK
0x23    0x0023  # NUMBER SIGN
0x24    0x0024  # DOLLAR SIGN
0x25    0x0025  # PERCENT SIGN
0x26    0x0026  # AMPERSAND
0x27    0x0027  # APOSTROPHE
0x28    0x0028  # LEFT PARENTHESIS
0x29    0x0029  # RIGHT PARENTHESIS
0x2A    0x002A  # ASTERISK
0x2B    0x002B  # PLUS SIGN
0x2C    0x002C  # COMMA
0x2D    0x002D  # HYPHEN-MINUS
0x2E    0x002E  # FULL STOP
0x2F    0x002F  # SOLIDUS
0x30    0x0030  # DIGIT ZERO
0x31    0x0031  # DIGIT ONE
0x32    0x0032  # DIGIT TWO
0x33    0x0033  # DIGIT THREE
0x34    0x0034  # DIGIT FOUR
0x35    0x0035  # DIGIT FIVE
0x36    0x0036  # DIGIT SIX
0x37    0x0037  # DIGIT SEVEN
0x38    0x0038  # DIGIT EIGHT
0x39    0x0039  # DIGIT NINE
0x3A    0x003A  # COLON
0x3B    0x003B  # SEMICOLON
0x3C    0x003C  # LESS-THAN SIGN
0x3D    0x003D  # EQUALS SIGN
0x3E    0x003E  # GREATER-THAN SIGN
0x3F    0x003F  # QUESTION MARK
0x40    0x0040  # COMMERCIAL AT
0x41    0x0041  # LATIN CAPITAL LETTER A
0x42    0x0042  # LATIN CAPITAL LETTER B
0x43    0x0043  # LATIN CAPITAL LETTER C
0x44    0x0044  # LATIN CAPITAL LETTER D
0x45    0x0045  # LATIN CAPITAL LETTER E
0x46    0x0046  # LATIN CAPITAL LETTER F
0x47    0x0047  # LATIN CAPITAL LETTER G
0x48    0x0048  # LATIN CAPITAL LETTER H
0x49    0x0049  # LATIN CAPITAL LETTER I
0x4A    0x004A  # LATIN CAPITAL LETTER J
0x4B    0x004B  # LATIN CAPITAL LETTER K
0x4C    0x004C  # LATIN CAPITAL LETTER L
0x4D    0x004D  # LATIN CAPITAL LETTER M
0x4E    0x004E  # LATIN CAPITAL LETTER N
0x4F    0x004F  # LATIN CAPITAL LETTER O
0x50    0x0050  # LATIN CAPITAL LETTER P
0x51    0x0051  # LATIN CAPITAL LETTER Q
0x52    0x0052  # LATIN CAPITAL LETTER R
0x53    0x0053  # LATIN CAPITAL LETTER S
0x54    0x0054  # LATIN CAPITAL LETTER T
0x55    0x0055  # LATIN CAPITAL LETTER U
0x56    0x0056  # LATIN CAPITAL LETTER V
0x57    0x0057  # LATIN CAPITAL LETTER W
0x58    0x0058  # LATIN CAPITAL LETTER X
0x59    0x0059  # LATIN CAPITAL LETTER Y
0x5A    0x005A  # LATIN CAPITAL LETTER Z
0x5B    0x005B  # LEFT SQUARE BRACKET
0x5C    0x005C  # REVERSE SOLIDUS
0x5D    0x005D  # RIGHT SQUARE BRACKET
0x5E    0x005E  # CIRCUMFLEX ACCENT
0x5F    0x005F  # LOW LINE
0x60    0x0060  # GRAVE ACCENT
0x61    0x0061  # LATIN SMALL LETTER A
0x62    0x0062  # LATIN SMALL LETTER B
0x63    0x0063  # LATIN SMALL LETTER C
0x64    0x0064  # LATIN SMALL LETTER D
0x65    0x0065  # LATIN SMALL LETTER E
0x66    0x0066  # LATIN SMALL LETTER F
0x67    0x0067  # LATIN SMALL LETTER G
0x68    0x0068  # LATIN SMALL LETTER H
0x69    0x0069  # LATIN SMALL LETTER I
0x6A    0x006A  # LATIN SMALL LETTER J
0x6B    0x006B  # LATIN SMALL LETTER K
0x6C    0x006C  # LATIN SMALL LETTER L
0x6D    0x006D  # LATIN SMALL LETTER M
0x6E    0x006E  # LATIN SMALL LETTER N
0x6F    0x006F  # LATIN SMALL LETTER O
0x70    0x0070  # LATIN SMALL LETTER P
0x71    0x0071  # LATIN SMALL LETTER Q
0x72    0x0072  # LATIN SMALL LETTER R
0x73    0x0073  # LATIN SMALL LETTER S
0x74    0x0074  # LATIN SMALL LETTER T
0x75    0x0075  # LATIN SMALL LETTER U
0x76    0x0076  # LATIN SMALL LETTER V
0x77    0x0077  # LATIN SMALL LETTER W
0x78    0x0078  # LATIN SMALL LETTER X
0x79    0x0079  # LATIN SMALL LETTER Y
0x7A    0x007A  # LATIN SMALL LETTER Z
0x7B    0x007B  # LEFT CURLY BRACKET
0x7C    0x007C  # VERTICAL LINE
0x7D    0x007D  # RIGHT CURLY BRACKET
0x7E    0x007E  # TILDE
#
0x80    0x00AB  # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0x81    0x00BB  # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0x82    0x2026  # HORIZONTAL ELLIPSIS
0x83    0x0E48+0xF875   # THAI CHARACTER MAI EK, low left position
0x84    0x0E49+0xF875   # THAI CHARACTER MAI THO, low left position
0x85    0x0E4A+0xF875   # THAI CHARACTER MAI TRI, low left position
0x86    0x0E4B+0xF875   # THAI CHARACTER MAI CHATTAWA, low left position
0x87    0x0E4C+0xF875   # THAI CHARACTER THANTHAKHAT, low left position
0x88    0x0E48+0xF873   # THAI CHARACTER MAI EK, low position
0x89    0x0E49+0xF873   # THAI CHARACTER MAI THO, low position
0x8A    0x0E4A+0xF873   # THAI CHARACTER MAI TRI, low position
0x8B    0x0E4B+0xF873   # THAI CHARACTER MAI CHATTAWA, low position
0x8C    0x0E4C+0xF873   # THAI CHARACTER THANTHAKHAT, low position
0x8D    0x201C  # LEFT DOUBLE QUOTATION MARK
0x8E    0x201D  # RIGHT DOUBLE QUOTATION MARK
0x8F    0x0E4D+0xF874   # THAI CHARACTER NIKHAHIT, left position
#
0x91    0x2022  # BULLET
0x92    0x0E31+0xF874   # THAI CHARACTER MAI HAN-AKAT, left position
0x93    0x0E47+0xF874   # THAI CHARACTER MAITAIKHU, left position
0x94    0x0E34+0xF874   # THAI CHARACTER SARA I, left position
0x95    0x0E35+0xF874   # THAI CHARACTER SARA II, left position
0x96    0x0E36+0xF874   # THAI CHARACTER SARA UE, left position
0x97    0x0E37+0xF874   # THAI CHARACTER SARA UEE, left position
0x98    0x0E48+0xF874   # THAI CHARACTER MAI EK, left position
0x99    0x0E49+0xF874   # THAI CHARACTER MAI THO, left position
0x9A    0x0E4A+0xF874   # THAI CHARACTER MAI TRI, left position
0x9B    0x0E4B+0xF874   # THAI CHARACTER MAI CHATTAWA, left position
0x9C    0x0E4C+0xF874   # THAI CHARACTER THANTHAKHAT, left position
0x9D    0x2018  # LEFT SINGLE QUOTATION MARK
0x9E    0x2019  # RIGHT SINGLE QUOTATION MARK
#
0xA0    0x00A0  # NO-BREAK SPACE
0xA1    0x0E01  # THAI CHARACTER KO KAI
0xA2    0x0E02  # THAI CHARACTER KHO KHAI
0xA3    0x0E03  # THAI CHARACTER KHO KHUAT
0xA4    0x0E04  # THAI CHARACTER KHO KHWAI
0xA5    0x0E05  # THAI CHARACTER KHO KHON
0xA6    0x0E06  # THAI CHARACTER KHO RAKHANG
0xA7    0x0E07  # THAI CHARACTER NGO NGU
0xA8    0x0E08  # THAI CHARACTER CHO CHAN
0xA9    0x0E09  # THAI CHARACTER CHO CHING
0xAA    0x0E0A  # THAI CHARACTER CHO CHANG
0xAB    0x0E0B  # THAI CHARACTER SO SO
0xAC    0x0E0C  # THAI CHARACTER CHO CHOE
0xAD    0x0E0D  # THAI CHARACTER YO YING
0xAE    0x0E0E  # THAI CHARACTER DO CHADA
0xAF    0x0E0F  # THAI CHARACTER TO PATAK
0xB0    0x0E10  # THAI CHARACTER THO THAN
0xB1    0x0E11  # THAI CHARACTER THO NANGMONTHO
0xB2    0x0E12  # THAI CHARACTER THO PHUTHAO
0xB3    0x0E13  # THAI CHARACTER NO NEN
0xB4    0x0E14  # THAI CHARACTER DO DEK
0xB5    0x0E15  # THAI CHARACTER TO TAO
0xB6    0x0E16  # THAI CHARACTER THO THUNG
0xB7    0x0E17  # THAI CHARACTER THO THAHAN
0xB8    0x0E18  # THAI CHARACTER THO THONG
0xB9    0x0E19  # THAI CHARACTER NO NU
0xBA    0x0E1A  # THAI CHARACTER BO BAIMAI
0xBB    0x0E1B  # THAI CHARACTER PO PLA
0xBC    0x0E1C  # THAI CHARACTER PHO PHUNG
0xBD    0x0E1D  # THAI CHARACTER FO FA
0xBE    0x0E1E  # THAI CHARACTER PHO PHAN
0xBF    0x0E1F  # THAI CHARACTER FO FAN
0xC0    0x0E20  # THAI CHARACTER PHO SAMPHAO
0xC1    0x0E21  # THAI CHARACTER MO MA
0xC2    0x0E22  # THAI CHARACTER YO YAK
0xC3    0x0E23  # THAI CHARACTER RO RUA
0xC4    0x0E24  # THAI CHARACTER RU
0xC5    0x0E25  # THAI CHARACTER LO LING
0xC6    0x0E26  # THAI CHARACTER LU
0xC7    0x0E27  # THAI CHARACTER WO WAEN
0xC8    0x0E28  # THAI CHARACTER SO SALA
0xC9    0x0E29  # THAI CHARACTER SO RUSI
0xCA    0x0E2A  # THAI CHARACTER SO SUA
0xCB    0x0E2B  # THAI CHARACTER HO HIP
0xCC    0x0E2C  # THAI CHARACTER LO CHULA
0xCD    0x0E2D  # THAI CHARACTER O ANG
0xCE    0x0E2E  # THAI CHARACTER HO NOKHUK
0xCF    0x0E2F  # THAI CHARACTER PAIYANNOI
0xD0    0x0E30  # THAI CHARACTER SARA A
0xD1    0x0E31  # THAI CHARACTER MAI HAN-AKAT
0xD2    0x0E32  # THAI CHARACTER SARA AA
0xD3    0x0E33  # THAI CHARACTER SARA AM
0xD4    0x0E34  # THAI CHARACTER SARA I
0xD5    0x0E35  # THAI CHARACTER SARA II
0xD6    0x0E36  # THAI CHARACTER SARA UE
0xD7    0x0E37  # THAI CHARACTER SARA UEE
0xD8    0x0E38  # THAI CHARACTER SARA U
0xD9    0x0E39  # THAI CHARACTER SARA UU
0xDA    0x0E3A  # THAI CHARACTER PHINTHU
0xDB    0x2060  # WORD JOINER # for Unicode 3.2 and later
0xDC    0x200B  # ZERO WIDTH SPACE
0xDD    0x2013  # EN DASH
0xDE    0x2014  # EM DASH
0xDF    0x0E3F  # THAI CURRENCY SYMBOL BAHT
0xE0    0x0E40  # THAI CHARACTER SARA E
0xE1    0x0E41  # THAI CHARACTER SARA AE
0xE2    0x0E42  # THAI CHARACTER SARA O
0xE3    0x0E43  # THAI CHARACTER SARA AI MAIMUAN
0xE4    0x0E44  # THAI CHARACTER SARA AI MAIMALAI
0xE5    0x0E45  # THAI CHARACTER LAKKHANGYAO
0xE6    0x0E46  # THAI CHARACTER MAIYAMOK
0xE7    0x0E47  # THAI CHARACTER MAITAIKHU
0xE8    0x0E48  # THAI CHARACTER MAI EK
0xE9    0x0E49  # THAI CHARACTER MAI THO
0xEA    0x0E4A  # THAI CHARACTER MAI TRI
0xEB    0x0E4B  # THAI CHARACTER MAI CHATTAWA
0xEC    0x0E4C  # THAI CHARACTER THANTHAKHAT
0xED    0x0E4D  # THAI CHARACTER NIKHAHIT
0xEE    0x2122  # TRADE MARK SIGN
0xEF    0x0E4F  # THAI CHARACTER FONGMAN
0xF0    0x0E50  # THAI DIGIT ZERO
0xF1    0x0E51  # THAI DIGIT ONE
0xF2    0x0E52  # THAI DIGIT TWO
0xF3    0x0E53  # THAI DIGIT THREE
0xF4    0x0E54  # THAI DIGIT FOUR
0xF5    0x0E55  # THAI DIGIT FIVE
0xF6    0x0E56  # THAI DIGIT SIX
0xF7    0x0E57  # THAI DIGIT SEVEN
0xF8    0x0E58  # THAI DIGIT EIGHT
0xF9    0x0E59  # THAI DIGIT NINE
0xFA    0x00AE  # REGISTERED SIGN
0xFB    0x00A9  # COPYRIGHT SIGN





reply via email to

[Prev in Thread] Current Thread [Next in Thread]