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/MidEast CP10004.cs, NONE, 1.1 CP


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnetlib/I18N/MidEast CP10004.cs, NONE, 1.1 CP10005.cs, NONE, 1.1 CP10081.cs, NONE, 1.1 mac-10004.ucm, NONE, 1.1 mac-10005.ucm, NONE, 1.1 mac-10081.ucm, NONE, 1.1
Date: Fri, 15 Aug 2003 00:38:48 -0400

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

Added Files:
        CP10004.cs CP10005.cs CP10081.cs mac-10004.ucm mac-10005.ucm 
        mac-10081.ucm 
Log Message:


Add some Mac-related code pages to I18N.


--- NEW FILE ---
/*
 * CP10004.cs - MAC - Arabic 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-10004.ucm".

namespace I18N.MidEast
{

using System;
using I18N.Common;

public class CP10004 : ByteEncoding
{
        public CP10004()
                : base(10004, ToChars, "MAC - Arabic",
                       "windows-10004", "windows-10004", "windows-10004",
                       false, false, false, false, 1256)
        {}

        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', '\u00C4', '\u00A0', '\u00C7', '\u00C9', 
                '\u00D1', '\u00D6', '\u00DC', '\u00E1', '\u00E0', '\u00E2', 
                '\u00E4', '\u06BA', '\u00AB', '\u00E7', '\u00E9', '\u00E8', 
                '\u00EA', '\u00EB', '\u00ED', '\u2026', '\u00EE', '\u00EF', 
                '\u00F1', '\u00F3', '\u00BB', '\u00F4', '\u00F6', '\u00F7', 
                '\u00FA', '\u00F9', '\u00FB', '\u00FC', '\u0020', '\u0021', 
                '\u0022', '\u0023', '\u0024', '\u066A', '\u0026', '\u0027', 
                '\u0028', '\u0029', '\u002A', '\u002B', '\u060C', '\u002D', 
                '\u002E', '\u002F', '\u0660', '\u0661', '\u0662', '\u0663', 
                '\u0664', '\u0665', '\u0666', '\u0667', '\u0668', '\u0669', 
                '\u003A', '\u061B', '\u003C', '\u003D', '\u003E', '\u061F', 
                '\u274A', '\u0621', '\u0622', '\u0623', '\u0624', '\u0625', 
                '\u0626', '\u0627', '\u0628', '\u0629', '\u062A', '\u062B', 
                '\u062C', '\u062D', '\u062E', '\u062F', '\u0630', '\u0631', 
                '\u0632', '\u0633', '\u0634', '\u0635', '\u0636', '\u0637', 
                '\u0638', '\u0639', '\u063A', '\u005B', '\u005C', '\u005D', 
                '\u005E', '\u005F', '\u0640', '\u0641', '\u0642', '\u0643', 
                '\u0644', '\u0645', '\u0646', '\u0647', '\u0648', '\u0649', 
                '\u064A', '\u064B', '\u064C', '\u064D', '\u064E', '\u064F', 
                '\u0650', '\u0651', '\u0652', '\u067E', '\u0679', '\u0686', 
                '\u06D5', '\u06A4', '\u06AF', '\u0688', '\u0691', '\u007B', 
                '\u007C', '\u007D', '\u0698', '\u06D2', 
        };

        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 0x0025:
                                case 0x002C:
                                case 0x0030:
                                case 0x0031:
                                case 0x0032:
                                case 0x0033:
                                case 0x0034:
                                case 0x0035:
                                case 0x0036:
                                case 0x0037:
                                case 0x0038:
                                case 0x0039:
                                case 0x003B:
                                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 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 0x007E:
                                        break;
                                case 0x0020:
                                case 0x0021:
                                case 0x0022:
                                case 0x0023:
                                case 0x0024:
                                        ch += 0x0080;
                                        break;
                                case 0x0026:
                                case 0x0027:
                                case 0x0028:
                                case 0x0029:
                                case 0x002A:
                                case 0x002B:
                                        ch += 0x0080;
                                        break;
                                case 0x002D: ch = 0xAD; break;
                                case 0x002E: ch = 0xAE; break;
                                case 0x002F: ch = 0xAF; break;
                                case 0x003A: ch = 0xBA; break;
                                case 0x003C: ch = 0xBC; break;
                                case 0x003D: ch = 0xBD; break;
                                case 0x003E: ch = 0xBE; break;
                                case 0x005B:
                                case 0x005C:
                                case 0x005D:
                                case 0x005E:
                                case 0x005F:
                                        ch += 0x0080;
                                        break;
                                case 0x007B: ch = 0xFB; break;
                                case 0x007C: ch = 0xFC; break;
                                case 0x007D: ch = 0xFD; break;
                                case 0x00A0: ch = 0x81; break;
                                case 0x00AB: ch = 0x8C; break;
                                case 0x00BB: ch = 0x98; break;
                                case 0x00C4: ch = 0x80; break;
                                case 0x00C7: ch = 0x82; break;
                                case 0x00C9: ch = 0x83; break;
                                case 0x00D1: ch = 0x84; break;
                                case 0x00D6: ch = 0x85; break;
                                case 0x00DC: ch = 0x86; break;
                                case 0x00E0: ch = 0x88; break;
                                case 0x00E1: ch = 0x87; break;
                                case 0x00E2: ch = 0x89; break;
                                case 0x00E4: ch = 0x8A; break;
                                case 0x00E7: ch = 0x8D; break;
                                case 0x00E8: ch = 0x8F; break;
                                case 0x00E9: ch = 0x8E; break;
                                case 0x00EA: ch = 0x90; break;
                                case 0x00EB: ch = 0x91; break;
                                case 0x00ED: ch = 0x92; break;
                                case 0x00EE: ch = 0x94; break;
                                case 0x00EF: ch = 0x95; break;
                                case 0x00F1: ch = 0x96; break;
                                case 0x00F3: ch = 0x97; break;
                                case 0x00F4: ch = 0x99; break;
                                case 0x00F6: ch = 0x9A; break;
                                case 0x00F7: ch = 0x9B; break;
                                case 0x00F9: ch = 0x9D; break;
                                case 0x00FA: ch = 0x9C; break;
                                case 0x00FB: ch = 0x9E; break;
                                case 0x00FC: ch = 0x9F; break;
                                case 0x060C: ch = 0xAC; break;
                                case 0x061B: ch = 0xBB; break;
                                case 0x061F: ch = 0xBF; break;
                                case 0x0621:
                                case 0x0622:
                                case 0x0623:
                                case 0x0624:
                                case 0x0625:
                                case 0x0626:
                                case 0x0627:
                                case 0x0628:
                                case 0x0629:
                                case 0x062A:
                                case 0x062B:
                                case 0x062C:
                                case 0x062D:
                                case 0x062E:
                                case 0x062F:
                                case 0x0630:
                                case 0x0631:
                                case 0x0632:
                                case 0x0633:
                                case 0x0634:
                                case 0x0635:
                                case 0x0636:
                                case 0x0637:
                                case 0x0638:
                                case 0x0639:
                                case 0x063A:
                                        ch -= 0x0560;
                                        break;
                                case 0x0640:
                                case 0x0641:
                                case 0x0642:
                                case 0x0643:
                                case 0x0644:
                                case 0x0645:
                                case 0x0646:
                                case 0x0647:
                                case 0x0648:
                                case 0x0649:
                                case 0x064A:
                                case 0x064B:
                                case 0x064C:
                                case 0x064D:
                                case 0x064E:
                                case 0x064F:
                                case 0x0650:
                                case 0x0651:
                                case 0x0652:
                                        ch -= 0x0560;
                                        break;
                                case 0x0660:
                                case 0x0661:
                                case 0x0662:
                                case 0x0663:
                                case 0x0664:
                                case 0x0665:
                                case 0x0666:
                                case 0x0667:
                                case 0x0668:
                                case 0x0669:
                                        ch -= 0x05B0;
                                        break;
                                case 0x066A: ch = 0xA5; break;
                                case 0x0679: ch = 0xF4; break;
                                case 0x067E: ch = 0xF3; break;
                                case 0x0686: ch = 0xF5; break;
                                case 0x0688: ch = 0xF9; break;
                                case 0x0691: ch = 0xFA; break;
                                case 0x0698: ch = 0xFE; break;
                                case 0x06A4: ch = 0xF7; break;
                                case 0x06AF: ch = 0xF8; break;
                                case 0x06BA: ch = 0x8B; break;
                                case 0x06D2: ch = 0xFF; break;
                                case 0x06D5: ch = 0xF6; break;
                                case 0x2026: ch = 0x93; break;
                                case 0x274A: ch = 0xC0; 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 0x0025:
                                case 0x002C:
                                case 0x0030:
                                case 0x0031:
                                case 0x0032:
                                case 0x0033:
                                case 0x0034:
                                case 0x0035:
                                case 0x0036:
                                case 0x0037:
                                case 0x0038:
                                case 0x0039:
                                case 0x003B:
                                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 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 0x007E:
                                        break;
                                case 0x0020:
                                case 0x0021:
                                case 0x0022:
                                case 0x0023:
                                case 0x0024:
                                        ch += 0x0080;
                                        break;
                                case 0x0026:
                                case 0x0027:
                                case 0x0028:
                                case 0x0029:
                                case 0x002A:
                                case 0x002B:
                                        ch += 0x0080;
                                        break;
                                case 0x002D: ch = 0xAD; break;
                                case 0x002E: ch = 0xAE; break;
                                case 0x002F: ch = 0xAF; break;
                                case 0x003A: ch = 0xBA; break;
                                case 0x003C: ch = 0xBC; break;
                                case 0x003D: ch = 0xBD; break;
                                case 0x003E: ch = 0xBE; break;
                                case 0x005B:
                                case 0x005C:
                                case 0x005D:
                                case 0x005E:
                                case 0x005F:
                                        ch += 0x0080;
                                        break;
                                case 0x007B: ch = 0xFB; break;
                                case 0x007C: ch = 0xFC; break;
                                case 0x007D: ch = 0xFD; break;
                                case 0x00A0: ch = 0x81; break;
                                case 0x00AB: ch = 0x8C; break;
                                case 0x00BB: ch = 0x98; break;
                                case 0x00C4: ch = 0x80; break;
                                case 0x00C7: ch = 0x82; break;
                                case 0x00C9: ch = 0x83; break;
                                case 0x00D1: ch = 0x84; break;
                                case 0x00D6: ch = 0x85; break;
                                case 0x00DC: ch = 0x86; break;
                                case 0x00E0: ch = 0x88; break;
                                case 0x00E1: ch = 0x87; break;
                                case 0x00E2: ch = 0x89; break;
                                case 0x00E4: ch = 0x8A; break;
                                case 0x00E7: ch = 0x8D; break;
                                case 0x00E8: ch = 0x8F; break;
                                case 0x00E9: ch = 0x8E; break;
                                case 0x00EA: ch = 0x90; break;
                                case 0x00EB: ch = 0x91; break;
                                case 0x00ED: ch = 0x92; break;
                                case 0x00EE: ch = 0x94; break;
                                case 0x00EF: ch = 0x95; break;
                                case 0x00F1: ch = 0x96; break;
                                case 0x00F3: ch = 0x97; break;
                                case 0x00F4: ch = 0x99; break;
                                case 0x00F6: ch = 0x9A; break;
                                case 0x00F7: ch = 0x9B; break;
                                case 0x00F9: ch = 0x9D; break;
                                case 0x00FA: ch = 0x9C; break;
                                case 0x00FB: ch = 0x9E; break;
                                case 0x00FC: ch = 0x9F; break;
                                case 0x060C: ch = 0xAC; break;
                                case 0x061B: ch = 0xBB; break;
                                case 0x061F: ch = 0xBF; break;
                                case 0x0621:
                                case 0x0622:
                                case 0x0623:
                                case 0x0624:
                                case 0x0625:
                                case 0x0626:
                                case 0x0627:
                                case 0x0628:
                                case 0x0629:
                                case 0x062A:
                                case 0x062B:
                                case 0x062C:
                                case 0x062D:
                                case 0x062E:
                                case 0x062F:
                                case 0x0630:
                                case 0x0631:
                                case 0x0632:
                                case 0x0633:
                                case 0x0634:
                                case 0x0635:
                                case 0x0636:
                                case 0x0637:
                                case 0x0638:
                                case 0x0639:
                                case 0x063A:
                                        ch -= 0x0560;
                                        break;
                                case 0x0640:
                                case 0x0641:
                                case 0x0642:
                                case 0x0643:
                                case 0x0644:
                                case 0x0645:
                                case 0x0646:
                                case 0x0647:
                                case 0x0648:
                                case 0x0649:
                                case 0x064A:
                                case 0x064B:
                                case 0x064C:
                                case 0x064D:
                                case 0x064E:
                                case 0x064F:
                                case 0x0650:
                                case 0x0651:
                                case 0x0652:
                                        ch -= 0x0560;
                                        break;
                                case 0x0660:
                                case 0x0661:
                                case 0x0662:
                                case 0x0663:
                                case 0x0664:
                                case 0x0665:
                                case 0x0666:
                                case 0x0667:
                                case 0x0668:
                                case 0x0669:
                                        ch -= 0x05B0;
                                        break;
                                case 0x066A: ch = 0xA5; break;
                                case 0x0679: ch = 0xF4; break;
                                case 0x067E: ch = 0xF3; break;
                                case 0x0686: ch = 0xF5; break;
                                case 0x0688: ch = 0xF9; break;
                                case 0x0691: ch = 0xFA; break;
                                case 0x0698: ch = 0xFE; break;
                                case 0x06A4: ch = 0xF7; break;
                                case 0x06AF: ch = 0xF8; break;
                                case 0x06BA: ch = 0x8B; break;
                                case 0x06D2: ch = 0xFF; break;
                                case 0x06D5: ch = 0xF6; break;
                                case 0x2026: ch = 0x93; break;
                                case 0x274A: ch = 0xC0; break;
                                default: ch = 0x3F; break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
                }
        }

}; // class CP10004

public class ENCwindows_10004 : CP10004
{
        public ENCwindows_10004() : base() {}

}; // class ENCwindows_10004

}; // namespace I18N.MidEast

--- NEW FILE ---
/*
 * CP10005.cs - MAC - Hebrew 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-10005.ucm".

namespace I18N.MidEast
{

using System;
using I18N.Common;

public class CP10005 : ByteEncoding
{
        public CP10005()
                : base(10005, ToChars, "MAC - Hebrew",
                       "windows-10005", "windows-10005", "windows-10005",
                       false, false, false, false, 1255)
        {}

        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', '\u00C4', '\u05F2', '\u00C7', '\u00C9', 
                '\u00D1', '\u00D6', '\u00DC', '\u00E1', '\u00E0', '\u00E2', 
                '\u00E4', '\u00E3', '\u00E5', '\u00E7', '\u00E9', '\u00E8', 
                '\u00EA', '\u00EB', '\u00ED', '\u00EC', '\u00EE', '\u00EF', 
                '\u00F1', '\u00F3', '\u00F2', '\u00F4', '\u00F6', '\u00F5', 
                '\u00FA', '\u00F9', '\u00FB', '\u00FC', '\u0020', '\u0021', 
                '\u0022', '\u0023', '\u0024', '\u0025', '\u20AA', '\u0027', 
                '\u0029', '\u0028', '\u002A', '\u002B', '\u002C', '\u002D', 
                '\u002E', '\u002F', '\u0030', '\u0031', '\u0032', '\u0033', 
                '\u0034', '\u0035', '\u0036', '\u0037', '\u0038', '\u0039', 
                '\u003A', '\u003B', '\u003C', '\u003D', '\u003E', '\u003F', 
                '\uF86A', '\u201E', '\uF89B', '\uF89C', '\uF89D', '\uF89E', 
                '\u05BC', '\uFB4B', '\uFB35', '\u2026', '\u00A0', '\u05B8', 
                '\u05B7', '\u05B5', '\u05B6', '\u05B4', '\u2013', '\u2014', 
                '\u201C', '\u201D', '\u2018', '\u2019', '\uFB2A', '\uFB2B', 
                '\u05BF', '\u05B0', '\u05B2', '\u05B1', '\u05BB', '\u05B9', 
                '\u05B8', '\u05B3', '\u05D0', '\u05D1', '\u05D2', '\u05D3', 
                '\u05D4', '\u05D5', '\u05D6', '\u05D7', '\u05D8', '\u05D9', 
                '\u05DA', '\u05DB', '\u05DC', '\u05DD', '\u05DE', '\u05DF', 
                '\u05E0', '\u05E1', '\u05E2', '\u05E3', '\u05E4', '\u05E5', 
                '\u05E6', '\u05E7', '\u05E8', '\u05E9', '\u05EA', '\u007D', 
                '\u005D', '\u007B', '\u005B', '\u007C', 
        };

        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 0x0026:
                                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 0x005C:
                                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 0x007E:
                                        break;
                                case 0x0020:
                                case 0x0021:
                                case 0x0022:
                                case 0x0023:
                                case 0x0024:
                                case 0x0025:
                                        ch += 0x0080;
                                        break;
                                case 0x0027: ch = 0xA7; break;
                                case 0x0028: ch = 0xA9; break;
                                case 0x0029: ch = 0xA8; break;
                                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:
                                        ch += 0x0080;
                                        break;
                                case 0x005B: ch = 0xFE; break;
                                case 0x005D: ch = 0xFC; break;
                                case 0x007B: ch = 0xFD; break;
                                case 0x007C: ch = 0xFF; break;
                                case 0x007D: ch = 0xFB; break;
                                case 0x00A0: ch = 0xCA; break;
                                case 0x00C4: ch = 0x80; break;
                                case 0x00C7: ch = 0x82; break;
                                case 0x00C9: ch = 0x83; break;
                                case 0x00D1: ch = 0x84; break;
                                case 0x00D6: ch = 0x85; break;
                                case 0x00DC: ch = 0x86; break;
                                case 0x00E0: ch = 0x88; break;
                                case 0x00E1: ch = 0x87; break;
                                case 0x00E2: ch = 0x89; break;
                                case 0x00E3: ch = 0x8B; break;
                                case 0x00E4: ch = 0x8A; break;
                                case 0x00E5: ch = 0x8C; break;
                                case 0x00E7: ch = 0x8D; break;
                                case 0x00E8: ch = 0x8F; break;
                                case 0x00E9: ch = 0x8E; break;
                                case 0x00EA: ch = 0x90; break;
                                case 0x00EB: ch = 0x91; break;
                                case 0x00EC: ch = 0x93; break;
                                case 0x00ED: ch = 0x92; break;
                                case 0x00EE: ch = 0x94; break;
                                case 0x00EF: ch = 0x95; break;
                                case 0x00F1: ch = 0x96; break;
                                case 0x00F2: ch = 0x98; break;
                                case 0x00F3: ch = 0x97; break;
                                case 0x00F4: ch = 0x99; break;
                                case 0x00F5: ch = 0x9B; break;
                                case 0x00F6: ch = 0x9A; break;
                                case 0x00F9: ch = 0x9D; break;
                                case 0x00FA: ch = 0x9C; break;
                                case 0x00FB: ch = 0x9E; break;
                                case 0x00FC: ch = 0x9F; break;
                                case 0x05B0: ch = 0xD9; break;
                                case 0x05B1: ch = 0xDB; break;
                                case 0x05B2: ch = 0xDA; break;
                                case 0x05B3: ch = 0xDF; break;
                                case 0x05B4: ch = 0xCF; break;
                                case 0x05B5: ch = 0xCD; break;
                                case 0x05B6: ch = 0xCE; break;
                                case 0x05B7: ch = 0xCC; break;
                                case 0x05B8: ch = 0xDE; break;
                                case 0x05B9: ch = 0xDD; break;
                                case 0x05BB: ch = 0xDC; break;
                                case 0x05BC: ch = 0xC6; break;
                                case 0x05BF: ch = 0xD8; break;
                                case 0x05D0:
                                case 0x05D1:
                                case 0x05D2:
                                case 0x05D3:
                                case 0x05D4:
                                case 0x05D5:
                                case 0x05D6:
                                case 0x05D7:
                                case 0x05D8:
                                case 0x05D9:
                                case 0x05DA:
                                case 0x05DB:
                                case 0x05DC:
                                case 0x05DD:
                                case 0x05DE:
                                case 0x05DF:
                                case 0x05E0:
                                case 0x05E1:
                                case 0x05E2:
                                case 0x05E3:
                                case 0x05E4:
                                case 0x05E5:
                                case 0x05E6:
                                case 0x05E7:
                                case 0x05E8:
                                case 0x05E9:
                                case 0x05EA:
                                        ch -= 0x04F0;
                                        break;
                                case 0x05F2: ch = 0x81; 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 = 0xC1; break;
                                case 0x2026: ch = 0xC9; break;
                                case 0x20AA: ch = 0xA6; break;
                                case 0xF86A: ch = 0xC0; break;
                                case 0xF89B:
                                case 0xF89C:
                                case 0xF89D:
                                case 0xF89E:
                                        ch -= 0xF7D9;
                                        break;
                                case 0xFB2A: ch = 0xD6; break;
                                case 0xFB2B: ch = 0xD7; break;
                                case 0xFB35: ch = 0xC8; break;
                                case 0xFB4B: ch = 0xC7; 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 0x0026:
                                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 0x005C:
                                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 0x007E:
                                        break;
                                case 0x0020:
                                case 0x0021:
                                case 0x0022:
                                case 0x0023:
                                case 0x0024:
                                case 0x0025:
                                        ch += 0x0080;
                                        break;
                                case 0x0027: ch = 0xA7; break;
                                case 0x0028: ch = 0xA9; break;
                                case 0x0029: ch = 0xA8; break;
                                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:
                                        ch += 0x0080;
                                        break;
                                case 0x005B: ch = 0xFE; break;
                                case 0x005D: ch = 0xFC; break;
                                case 0x007B: ch = 0xFD; break;
                                case 0x007C: ch = 0xFF; break;
                                case 0x007D: ch = 0xFB; break;
                                case 0x00A0: ch = 0xCA; break;
                                case 0x00C4: ch = 0x80; break;
                                case 0x00C7: ch = 0x82; break;
                                case 0x00C9: ch = 0x83; break;
                                case 0x00D1: ch = 0x84; break;
                                case 0x00D6: ch = 0x85; break;
                                case 0x00DC: ch = 0x86; break;
                                case 0x00E0: ch = 0x88; break;
                                case 0x00E1: ch = 0x87; break;
                                case 0x00E2: ch = 0x89; break;
                                case 0x00E3: ch = 0x8B; break;
                                case 0x00E4: ch = 0x8A; break;
                                case 0x00E5: ch = 0x8C; break;
                                case 0x00E7: ch = 0x8D; break;
                                case 0x00E8: ch = 0x8F; break;
                                case 0x00E9: ch = 0x8E; break;
                                case 0x00EA: ch = 0x90; break;
                                case 0x00EB: ch = 0x91; break;
                                case 0x00EC: ch = 0x93; break;
                                case 0x00ED: ch = 0x92; break;
                                case 0x00EE: ch = 0x94; break;
                                case 0x00EF: ch = 0x95; break;
                                case 0x00F1: ch = 0x96; break;
                                case 0x00F2: ch = 0x98; break;
                                case 0x00F3: ch = 0x97; break;
                                case 0x00F4: ch = 0x99; break;
                                case 0x00F5: ch = 0x9B; break;
                                case 0x00F6: ch = 0x9A; break;
                                case 0x00F9: ch = 0x9D; break;
                                case 0x00FA: ch = 0x9C; break;
                                case 0x00FB: ch = 0x9E; break;
                                case 0x00FC: ch = 0x9F; break;
                                case 0x05B0: ch = 0xD9; break;
                                case 0x05B1: ch = 0xDB; break;
                                case 0x05B2: ch = 0xDA; break;
                                case 0x05B3: ch = 0xDF; break;
                                case 0x05B4: ch = 0xCF; break;
                                case 0x05B5: ch = 0xCD; break;
                                case 0x05B6: ch = 0xCE; break;
                                case 0x05B7: ch = 0xCC; break;
                                case 0x05B8: ch = 0xDE; break;
                                case 0x05B9: ch = 0xDD; break;
                                case 0x05BB: ch = 0xDC; break;
                                case 0x05BC: ch = 0xC6; break;
                                case 0x05BF: ch = 0xD8; break;
                                case 0x05D0:
                                case 0x05D1:
                                case 0x05D2:
                                case 0x05D3:
                                case 0x05D4:
                                case 0x05D5:
                                case 0x05D6:
                                case 0x05D7:
                                case 0x05D8:
                                case 0x05D9:
                                case 0x05DA:
                                case 0x05DB:
                                case 0x05DC:
                                case 0x05DD:
                                case 0x05DE:
                                case 0x05DF:
                                case 0x05E0:
                                case 0x05E1:
                                case 0x05E2:
                                case 0x05E3:
                                case 0x05E4:
                                case 0x05E5:
                                case 0x05E6:
                                case 0x05E7:
                                case 0x05E8:
                                case 0x05E9:
                                case 0x05EA:
                                        ch -= 0x04F0;
                                        break;
                                case 0x05F2: ch = 0x81; 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 = 0xC1; break;
                                case 0x2026: ch = 0xC9; break;
                                case 0x20AA: ch = 0xA6; break;
                                case 0xF86A: ch = 0xC0; break;
                                case 0xF89B:
                                case 0xF89C:
                                case 0xF89D:
                                case 0xF89E:
                                        ch -= 0xF7D9;
                                        break;
                                case 0xFB2A: ch = 0xD6; break;
                                case 0xFB2B: ch = 0xD7; break;
                                case 0xFB35: ch = 0xC8; break;
                                case 0xFB4B: ch = 0xC7; break;
                                default: ch = 0x3F; break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
                }
        }

}; // class CP10005

public class ENCwindows_10005 : CP10005
{
        public ENCwindows_10005() : base() {}

}; // class ENCwindows_10005

}; // namespace I18N.MidEast

--- NEW FILE ---
/*
 * CP10081.cs - MAC - Turkish 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-10081.ucm".

namespace I18N.MidEast
{

using System;
using I18N.Common;

public class CP10081 : ByteEncoding
{
        public CP10081()
                : base(10081, ToChars, "MAC - Turkish",
                       "windows-10005", "windows-10081", "windows-10081",
                       false, false, false, false, 1254)
        {}

        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', '\u00C4', '\u00C5', '\u00C7', '\u00C9', 
                '\u00D1', '\u00D6', '\u00DC', '\u00E1', '\u00E0', '\u00E2', 
                '\u00E4', '\u00E3', '\u00E5', '\u00E7', '\u00E9', '\u00E8', 
                '\u00EA', '\u00EB', '\u00ED', '\u00EC', '\u00EE', '\u00EF', 
                '\u00F1', '\u00F3', '\u00F2', '\u00F4', '\u00F6', '\u00F5', 
                '\u00FA', '\u00F9', '\u00FB', '\u00FC', '\u2020', '\u00B0', 
                '\u00A2', '\u00A3', '\u00A7', '\u2022', '\u00B6', '\u00DF', 
                '\u00AE', '\u00A9', '\u2122', '\u00B4', '\u00A8', '\u2260', 
                '\u00C6', '\u00D8', '\u221E', '\u00B1', '\u2264', '\u2265', 
                '\u00A5', '\u00B5', '\u2202', '\u2211', '\u220F', '\u03C0', 
                '\u222B', '\u00AA', '\u00BA', '\u03A9', '\u00E6', '\u00F8', 
                '\u00BF', '\u00A1', '\u00AC', '\u221A', '\u0192', '\u2248', 
                '\u2206', '\u00AB', '\u00BB', '\u2026', '\u00A0', '\u00C0', 
                '\u00C3', '\u00D5', '\u0152', '\u0153', '\u2013', '\u2014', 
                '\u201C', '\u201D', '\u2018', '\u2019', '\u00F7', '\u25CA', 
                '\u00FF', '\u0178', '\u011E', '\u011F', '\u0130', '\u0131', 
                '\u015E', '\u015F', '\u2021', '\u00B7', '\u201A', '\u201E', 
                '\u2030', '\u00C2', '\u00CA', '\u00C1', '\u00CB', '\u00C8', 
                '\u00CD', '\u00CE', '\u00CF', '\u00CC', '\u00D3', '\u00D4', 
                '\uF8FF', '\u00D2', '\u00DA', '\u00DB', '\u00D9', '\uF8A0', 
                '\u02C6', '\u02DC', '\u00AF', '\u02D8', '\u02D9', '\u02DA', 
                '\u00B8', '\u02DD', '\u02DB', '\u02C7', 
        };

        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 0x00A2:
                                case 0x00A3:
                                case 0x00A9:
                                case 0x00B1:
                                case 0x00B5:
                                        break;
                                case 0x00A0: ch = 0xCA; break;
                                case 0x00A1: ch = 0xC1; break;
                                case 0x00A5: ch = 0xB4; break;
                                case 0x00A7: ch = 0xA4; break;
                                case 0x00A8: ch = 0xAC; break;
                                case 0x00AA: ch = 0xBB; break;
                                case 0x00AB: ch = 0xC7; break;
                                case 0x00AC: ch = 0xC2; break;
                                case 0x00AE: ch = 0xA8; break;
                                case 0x00AF: ch = 0xF8; break;
                                case 0x00B0: ch = 0xA1; break;
                                case 0x00B4: ch = 0xAB; break;
                                case 0x00B6: ch = 0xA6; break;
                                case 0x00B7: ch = 0xE1; break;
                                case 0x00B8: ch = 0xFC; break;
                                case 0x00BA: ch = 0xBC; break;
                                case 0x00BB: ch = 0xC8; break;
                                case 0x00BF: ch = 0xC0; break;
                                case 0x00C0: ch = 0xCB; break;
                                case 0x00C1: ch = 0xE7; break;
                                case 0x00C2: ch = 0xE5; break;
                                case 0x00C3: ch = 0xCC; break;
                                case 0x00C4: ch = 0x80; break;
                                case 0x00C5: ch = 0x81; break;
                                case 0x00C6: ch = 0xAE; break;
                                case 0x00C7: ch = 0x82; break;
                                case 0x00C8: ch = 0xE9; break;
                                case 0x00C9: ch = 0x83; break;
                                case 0x00CA: ch = 0xE6; break;
                                case 0x00CB: ch = 0xE8; break;
                                case 0x00CC: ch = 0xED; break;
                                case 0x00CD: ch = 0xEA; break;
                                case 0x00CE: ch = 0xEB; break;
                                case 0x00CF: ch = 0xEC; break;
                                case 0x00D1: ch = 0x84; break;
                                case 0x00D2: ch = 0xF1; break;
                                case 0x00D3: ch = 0xEE; break;
                                case 0x00D4: ch = 0xEF; break;
                                case 0x00D5: ch = 0xCD; break;
                                case 0x00D6: ch = 0x85; break;
                                case 0x00D8: ch = 0xAF; break;
                                case 0x00D9: ch = 0xF4; break;
                                case 0x00DA: ch = 0xF2; break;
                                case 0x00DB: ch = 0xF3; break;
                                case 0x00DC: ch = 0x86; break;
                                case 0x00DF: ch = 0xA7; break;
                                case 0x00E0: ch = 0x88; break;
                                case 0x00E1: ch = 0x87; break;
                                case 0x00E2: ch = 0x89; break;
                                case 0x00E3: ch = 0x8B; break;
                                case 0x00E4: ch = 0x8A; break;
                                case 0x00E5: ch = 0x8C; break;
                                case 0x00E6: ch = 0xBE; break;
                                case 0x00E7: ch = 0x8D; break;
                                case 0x00E8: ch = 0x8F; break;
                                case 0x00E9: ch = 0x8E; break;
                                case 0x00EA: ch = 0x90; break;
                                case 0x00EB: ch = 0x91; break;
                                case 0x00EC: ch = 0x93; break;
                                case 0x00ED: ch = 0x92; break;
                                case 0x00EE: ch = 0x94; break;
                                case 0x00EF: ch = 0x95; break;
                                case 0x00F1: ch = 0x96; break;
                                case 0x00F2: ch = 0x98; break;
                                case 0x00F3: ch = 0x97; break;
                                case 0x00F4: ch = 0x99; break;
                                case 0x00F5: ch = 0x9B; break;
                                case 0x00F6: ch = 0x9A; break;
                                case 0x00F7: ch = 0xD6; break;
                                case 0x00F8: ch = 0xBF; break;
                                case 0x00F9: ch = 0x9D; break;
                                case 0x00FA: ch = 0x9C; break;
                                case 0x00FB: ch = 0x9E; break;
                                case 0x00FC: ch = 0x9F; break;
                                case 0x00FF: ch = 0xD8; break;
                                case 0x011E: ch = 0xDA; break;
                                case 0x011F: ch = 0xDB; break;
                                case 0x0130: ch = 0xDC; break;
                                case 0x0131: ch = 0xDD; break;
                                case 0x0152: ch = 0xCE; break;
                                case 0x0153: ch = 0xCF; break;
                                case 0x015E: ch = 0xDE; break;
                                case 0x015F: ch = 0xDF; break;
                                case 0x0178: ch = 0xD9; break;
                                case 0x0192: ch = 0xC4; break;
                                case 0x02C6: ch = 0xF6; break;
                                case 0x02C7: ch = 0xFF; break;
                                case 0x02D8: ch = 0xF9; break;
                                case 0x02D9: ch = 0xFA; break;
                                case 0x02DA: ch = 0xFB; break;
                                case 0x02DB: ch = 0xFE; break;
                                case 0x02DC: ch = 0xF7; break;
                                case 0x02DD: ch = 0xFD; break;
                                case 0x03A9: ch = 0xBD; break;
                                case 0x03C0: ch = 0xB9; break;
                                case 0x2013: ch = 0xD0; break;
                                case 0x2014: ch = 0xD1; break;
                                case 0x2018: ch = 0xD4; break;
                                case 0x2019: ch = 0xD5; break;
                                case 0x201A: ch = 0xE2; break;
                                case 0x201C: ch = 0xD2; break;
                                case 0x201D: ch = 0xD3; break;
                                case 0x201E: ch = 0xE3; break;
                                case 0x2020: ch = 0xA0; break;
                                case 0x2021: ch = 0xE0; break;
                                case 0x2022: ch = 0xA5; break;
                                case 0x2026: ch = 0xC9; break;
                                case 0x2030: ch = 0xE4; break;
                                case 0x2122: ch = 0xAA; break;
                                case 0x2202: ch = 0xB6; break;
                                case 0x2206: ch = 0xC6; break;
                                case 0x220F: ch = 0xB8; break;
                                case 0x2211: ch = 0xB7; break;
                                case 0x221A: ch = 0xC3; break;
                                case 0x221E: ch = 0xB0; break;
                                case 0x222B: ch = 0xBA; break;
                                case 0x2248: ch = 0xC5; break;
                                case 0x2260: ch = 0xAD; break;
                                case 0x2264: ch = 0xB2; break;
                                case 0x2265: ch = 0xB3; break;
                                case 0x25CA: ch = 0xD7; break;
                                case 0xF8A0: ch = 0xF5; break;
                                case 0xF8FF: ch = 0xF0; 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 0x00A2:
                                case 0x00A3:
                                case 0x00A9:
                                case 0x00B1:
                                case 0x00B5:
                                        break;
                                case 0x00A0: ch = 0xCA; break;
                                case 0x00A1: ch = 0xC1; break;
                                case 0x00A5: ch = 0xB4; break;
                                case 0x00A7: ch = 0xA4; break;
                                case 0x00A8: ch = 0xAC; break;
                                case 0x00AA: ch = 0xBB; break;
                                case 0x00AB: ch = 0xC7; break;
                                case 0x00AC: ch = 0xC2; break;
                                case 0x00AE: ch = 0xA8; break;
                                case 0x00AF: ch = 0xF8; break;
                                case 0x00B0: ch = 0xA1; break;
                                case 0x00B4: ch = 0xAB; break;
                                case 0x00B6: ch = 0xA6; break;
                                case 0x00B7: ch = 0xE1; break;
                                case 0x00B8: ch = 0xFC; break;
                                case 0x00BA: ch = 0xBC; break;
                                case 0x00BB: ch = 0xC8; break;
                                case 0x00BF: ch = 0xC0; break;
                                case 0x00C0: ch = 0xCB; break;
                                case 0x00C1: ch = 0xE7; break;
                                case 0x00C2: ch = 0xE5; break;
                                case 0x00C3: ch = 0xCC; break;
                                case 0x00C4: ch = 0x80; break;
                                case 0x00C5: ch = 0x81; break;
                                case 0x00C6: ch = 0xAE; break;
                                case 0x00C7: ch = 0x82; break;
                                case 0x00C8: ch = 0xE9; break;
                                case 0x00C9: ch = 0x83; break;
                                case 0x00CA: ch = 0xE6; break;
                                case 0x00CB: ch = 0xE8; break;
                                case 0x00CC: ch = 0xED; break;
                                case 0x00CD: ch = 0xEA; break;
                                case 0x00CE: ch = 0xEB; break;
                                case 0x00CF: ch = 0xEC; break;
                                case 0x00D1: ch = 0x84; break;
                                case 0x00D2: ch = 0xF1; break;
                                case 0x00D3: ch = 0xEE; break;
                                case 0x00D4: ch = 0xEF; break;
                                case 0x00D5: ch = 0xCD; break;
                                case 0x00D6: ch = 0x85; break;
                                case 0x00D8: ch = 0xAF; break;
                                case 0x00D9: ch = 0xF4; break;
                                case 0x00DA: ch = 0xF2; break;
                                case 0x00DB: ch = 0xF3; break;
                                case 0x00DC: ch = 0x86; break;
                                case 0x00DF: ch = 0xA7; break;
                                case 0x00E0: ch = 0x88; break;
                                case 0x00E1: ch = 0x87; break;
                                case 0x00E2: ch = 0x89; break;
                                case 0x00E3: ch = 0x8B; break;
                                case 0x00E4: ch = 0x8A; break;
                                case 0x00E5: ch = 0x8C; break;
                                case 0x00E6: ch = 0xBE; break;
                                case 0x00E7: ch = 0x8D; break;
                                case 0x00E8: ch = 0x8F; break;
                                case 0x00E9: ch = 0x8E; break;
                                case 0x00EA: ch = 0x90; break;
                                case 0x00EB: ch = 0x91; break;
                                case 0x00EC: ch = 0x93; break;
                                case 0x00ED: ch = 0x92; break;
                                case 0x00EE: ch = 0x94; break;
                                case 0x00EF: ch = 0x95; break;
                                case 0x00F1: ch = 0x96; break;
                                case 0x00F2: ch = 0x98; break;
                                case 0x00F3: ch = 0x97; break;
                                case 0x00F4: ch = 0x99; break;
                                case 0x00F5: ch = 0x9B; break;
                                case 0x00F6: ch = 0x9A; break;
                                case 0x00F7: ch = 0xD6; break;
                                case 0x00F8: ch = 0xBF; break;
                                case 0x00F9: ch = 0x9D; break;
                                case 0x00FA: ch = 0x9C; break;
                                case 0x00FB: ch = 0x9E; break;
                                case 0x00FC: ch = 0x9F; break;
                                case 0x00FF: ch = 0xD8; break;
                                case 0x011E: ch = 0xDA; break;
                                case 0x011F: ch = 0xDB; break;
                                case 0x0130: ch = 0xDC; break;
                                case 0x0131: ch = 0xDD; break;
                                case 0x0152: ch = 0xCE; break;
                                case 0x0153: ch = 0xCF; break;
                                case 0x015E: ch = 0xDE; break;
                                case 0x015F: ch = 0xDF; break;
                                case 0x0178: ch = 0xD9; break;
                                case 0x0192: ch = 0xC4; break;
                                case 0x02C6: ch = 0xF6; break;
                                case 0x02C7: ch = 0xFF; break;
                                case 0x02D8: ch = 0xF9; break;
                                case 0x02D9: ch = 0xFA; break;
                                case 0x02DA: ch = 0xFB; break;
                                case 0x02DB: ch = 0xFE; break;
                                case 0x02DC: ch = 0xF7; break;
                                case 0x02DD: ch = 0xFD; break;
                                case 0x03A9: ch = 0xBD; break;
                                case 0x03C0: ch = 0xB9; break;
                                case 0x2013: ch = 0xD0; break;
                                case 0x2014: ch = 0xD1; break;
                                case 0x2018: ch = 0xD4; break;
                                case 0x2019: ch = 0xD5; break;
                                case 0x201A: ch = 0xE2; break;
                                case 0x201C: ch = 0xD2; break;
                                case 0x201D: ch = 0xD3; break;
                                case 0x201E: ch = 0xE3; break;
                                case 0x2020: ch = 0xA0; break;
                                case 0x2021: ch = 0xE0; break;
                                case 0x2022: ch = 0xA5; break;
                                case 0x2026: ch = 0xC9; break;
                                case 0x2030: ch = 0xE4; break;
                                case 0x2122: ch = 0xAA; break;
                                case 0x2202: ch = 0xB6; break;
                                case 0x2206: ch = 0xC6; break;
                                case 0x220F: ch = 0xB8; break;
                                case 0x2211: ch = 0xB7; break;
                                case 0x221A: ch = 0xC3; break;
                                case 0x221E: ch = 0xB0; break;
                                case 0x222B: ch = 0xBA; break;
                                case 0x2248: ch = 0xC5; break;
                                case 0x2260: ch = 0xAD; break;
                                case 0x2264: ch = 0xB2; break;
                                case 0x2265: ch = 0xB3; break;
                                case 0x25CA: ch = 0xD7; break;
                                case 0xF8A0: ch = 0xF5; break;
                                case 0xF8FF: ch = 0xF0; break;
                                default: ch = 0x3F; break;
                        }
                        bytes[byteIndex++] = (byte)ch;
                        --charCount;
                }
        }

}; // class CP10081

public class ENCwindows_10081 : CP10081
{
        public ENCwindows_10081() : base() {}

}; // class ENCwindows_10081

}; // namespace I18N.MidEast

--- NEW FILE ---
#=======================================================================
#   File name:  ARABIC.TXT
#
#   Contents:   Map (external version) from Mac OS Arabic
#               character set to Unicode 2.1 through Unicode 3.2.
#
#   Copyright:  (c) 1994-2002 by Apple Computer, Inc., all rights
#               reserved.
#
#   Contact:    address@hidden
#
#   Changes:
#
#      b3,c1 2002-Dec-19    Add comments about character display and
#                           direction overrides. Update URLs, notes.
#                           Matches internal utom<b4>.
#       b02  1999-Sep-22    Update contact e-mail address. Matches
#                           internal utom<b1>, ufrm<b1>, and Text
#                           Encoding Converter version 1.5.
#       n10  1998-Feb-05    Show required Unicode character
#                           directionality in a different way. Matches
#                           internal utom<n4>, ufrm<n21>, and Text
#                           Encoding Converter version 1.3. Update
#                           header comments; include information on
#                           loose mapping of digits.
#       n07  1997-Jul-17    Update to match internal utom<n2>, ufrm<n17>:
#                           Change standard mapping for 0xC0 from U+066D
#                           to U+274A. Add direction overrides to
#                           mappings for 0x25, 0x2C, 0x3B, 0x3F. Add
#                           information on variants.
#       n03  1995-Apr-18    First version (after fixing some typos).
#                           Matches internal ufrm<n11>.
#
# 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 Arabic code (in hex as 0xNN).
#     Column #2 is the corresponding Unicode (in hex as 0xNNNN),
#       possibly preceded by a tag indicating required directionality
#       (i.e. <LR>+0xNNNN or <RL>+0xNNNN).
#     Column #3 is a comment containing the Unicode name.
#
#   The entries are in Mac OS Arabic code order.
#
#   Control character mappings are not shown in this table, following
#   the conventions of the standard UTC mapping tables. However, the
#   Mac OS Roman character set uses the standard control characters at
#   0x00-0x1F and 0x7F.
#
# Notes on Mac OS Arabic:
# -----------------------
#
#   1. General
#
#   The Mac OS Arabic character set is intended to cover Arabic as
#   used in North Africa, the Arabian peninsula, and the Levant. It
#   also contains several characters needed for Urdu and/or Farsi.
#
#   The Mac OS Arabic character set is essentially a superset of ISO
#   8859-6. The 8859-6 code points that are interpreted differently
#   in the Mac OS Arabic set are as follows:
#    0xA0 is NO-BREAK SPACE in 8859-6 and right-left SPACE in Mac OS
#         Arabic; NO-BREAK is 0x81 in Mac OS Arabic.
#    0xA4 is CURRENCY SIGN in 8859-6 and right-left DOLLAR SIGN in
#         Mac OS Arabic.
#    0xAD is SOFT HYPHEN in 8859-6 and right-left HYPHEN-MINUS in
#         Mac OS Arabic.
#   ISO 8859-6 specifies that codes 0x30-0x39 can be rendered either
#   with European digit shapes or Arabic digit shapes. This is also
#   true in Mac OS Arabic, which determines from context which digit
#   shapes to use (see below).
#
#   The Mac OS Arabic character set uses the C1 controls area and other
#   code points which are undefined in ISO 8859-6 for additional
#   graphic characters: additional Arabic letters for Farsi and Urdu,
#   some accented Roman letters for European languages (such as French),
#   and duplicates of some of the punctuation, symbols, and digits in
#   the ASCII block. The duplicate punctuation, symbol, and digit
#   characters have right-left directionality, while the ASCII versions
#   have left-right directionality. See the next section for more
#   information on this.
#
#   Mac OS Arabic characters 0xEB-0xF2 are non-spacing/combining marks.
#
#   2. Directional characters and roundtrip fidelity
#
#   The Mac OS Arabic character set was developed in 1986-1987. At that
#   time the bidirectional line layout algorithm used in the Mac OS
#   Arabic system was fairly simple; it used only a few direction
#   classes (instead of the 19 now used in the Unicode bidirectional
#   algorithm). In order to permit users to handle some tricky layout
#   problems, certain punctuation and symbol characters were encoded
#   twice, one with a left-right direction attribute and the other with
#   a right-left direction attribute.
#
#   For example, plus sign is encoded at 0x2B with a left-right
#   attribute, and at 0xAB with a right-left attribute. However, there
#   is only one PLUS SIGN character in Unicode. This leads to some
#   interesting problems when mapping between Mac OS Arabic and Unicode;
#   see below.
#
#   A related problem is that even when a particular character is
#   encoded only once in Mac OS Arabic, it may have a different
#   direction attribute than the corresponding Unicode character.
#
#   For example, the Mac OS Arabic character at 0x93 is HORIZONTAL
#   ELLIPSIS with strong right-left direction. However, the Unicode
#   character HORIZONTAL ELLIPSIS has direction class neutral.
#
#   3. Behavior of ASCII-range numbers in WorldScript
#
#   Mac OS Arabic also has two sets of digit codes.
#
#   The digits at 0x30-0x39 may be displayed using either European
#   digit forms or Arabic digit forms, depending on context. If there
#   is a "strong European" character such as a Latin letter on either
#   side of a sequence consisting of digits 0x30-0x39 and possibly comma
#   0x2C or period 0x2E, then the characters will be displayed using
#   European forms (This will happen even if there are neutral characters
#   between the digits and the strong European character). Otherwise, the
#   digits will be displayed using Arabic forms, the comma will be
#   displayed as Arabic thousands separator, and the period as Arabic
#   decimal separator. In any case, 0x2C, 0x2E, and 0x30-0x39 are always
#   left-right.
#
#   The digits at 0xB0-0xB9 are always displayed using Arabic digit
#   shapes, and moreover, these digits always have strong right-left
#   directionality. These are mainly intended for special layout
#   purposes such as part numbers, etc.
#
#   4. Font variants
#
#   The table in this file gives the Unicode mappings for the standard
#   Mac OS Arabic encoding. This encoding is supported by the Cairo font
#   (the system font for Arabic), and is the encoding supported by the
#   text processing utilities. However, the other Arabic fonts actually
#   implement slightly different encodings; this mainly affects the code
#   points 0xAA and 0xC0. For these code points the standard Mac OS
#   Arabic encoding has the following mappings:
#     0xAA -> <RL>+0x002A ASTERISK, right-left
#     0xC0 -> <RL>+0x274A EIGHT TEARDROP-SPOKED PROPELLER ASTERISK,
#                         right-left
#   This mapping of 0xAA is consistent with the normal convention for
#   Mac OS Arabic and Hebrew that the right-left duplicates have codes
#   that are equal to the ASCII code of the left-right character plus
#   0x80. However, in all of the other fonts, 0xAA is MULTIPLY SIGN, and
#   right-left ASTERISK may be at a different code point. The other
#   variants are described below.
#
#   The TrueType variant is used for most of the Arabic TrueType fonts:
#   Baghdad, Geeza, Kufi, Nadeem.  It differs from the standard variant
#   in the following way:
#     0xAA -> <RL>+0x00D7 MULTIPLICATION SIGN, right-left
#     0xC0 -> <RL>+0x002A ASTERISK, right-left
#
#   The Thuluth variant is used for the Arabic Postscript-only fonts:
#   Thuluth and Thuluth bold. It differs from the standard variant in
#   the following way:
#     0xAA -> <RL>+0x00D7 MULTIPLICATION SIGN, right-left
#     0xC0 -> 0x066D ARABIC FIVE POINTED STAR
#
#   The AlBayan variant is used for the Arabic TrueType font Al Bayan.
#   It differs from the standard variant in the following way:
#     0x81 -> no mapping (glyph just has authorship information, etc.)
#     0xA3 -> 0xFDFA ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
#     0xA4 -> 0xFDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
#     0xAA -> <RL>+0x00D7 MULTIPLICATION SIGN, right-left
#     0xDC -> <RL>+0x25CF BLACK CIRCLE, right-left
#     0xFC -> <RL>+0x25A0 BLACK SQUARE, right-left
#
# Unicode mapping issues and notes:
# ---------------------------------
#
#   1. Matching the direction of Mac OS Arabic characters
#
#   When Mac OS Arabic encodes a character twice but with different
#   direction attributes for the two code points - as in the case of
#   plus sign mentioned above - we need a way to map both Mac OS Arabic
#   code points to Unicode and back again without loss of information.
#   With the plus sign, for example, mapping one of the Mac OS Arabic
#   characters to a code in the Unicode corporate use zone is
#   undesirable, since both of the plus sign characters are likely to
#   be used in text that is interchanged.
#
#   The problem is solved with the use of direction override characters
#   and direction-dependent mappings. When mapping from Mac OS Arabic
#   to Unicode, we use direction overrides as necessary to force the
#   direction of the resulting Unicode characters.
#
#   The required direction is indicated by a direction tag in the
#   mappings. A tag of <LR> means the corresponding Unicode character
#   must have a strong left-right context, and a tag of <RL> indicates
#   a right-left context.
#
#   For example, the mapping of 0x2B is given as <LR>+0x002B; the
#   mapping of 0xAB is given as <RL>+0x002B. If we map an isolated
#   instance of 0x2B to Unicode, it should be mapped as follows (LRO
#   indicates LEFT-RIGHT OVERRIDE, PDF indicates POP DIRECTION
#   FORMATTING):
#
#     0x2B ->  0x202D (LRO) + 0x002B (PLUS SIGN) + 0x202C (PDF)
#
#   When mapping several characters in a row that require direction
#   forcing, the overrides need only be used at the beginning and end.
#   For example:
#
#     0x24 0x20 0x28 0x29 -> 0x202D 0x0024 0x0020 0x0028 0x0029 0x202C
#
#   If neutral characters that require direction forcing are already
#   between strong-direction characters with matching directionality,
#   then direction overrides need not be used. Direction overrides are
#   always needed to map the right-left digits at 0xB0-0xB9.
#
#   When mapping from Unicode to Mac OS Arabic, the Unicode
#   bidirectional algorithm should be used to determine resolved
#   direction of the Unicode characters. The mapping from Unicode to
#   Mac OS Arabic can then be disambiguated by the use of the resolved
#   direction:
#
#     Unicode 0x002B -> Mac OS Arabic 0x2B (if L) or 0xAB (if R)
#
#   However, this also means the direction override characters should
#   be discarded when mapping from Unicode to Mac OS Arabic (after
#   they have been used to determine resolved direction), since the
#   direction override information is carried by the code point itself.
#
#   Even when direction overrides are not needed for roundtrip
#   fidelity, they are sometimes used when mapping Mac OS Arabic
#   characters to Unicode in order to achieve similar text layout with
#   the resulting Unicode text. For example, the single Mac OS Arabic
#   ellipsis character has direction class right-left,and there is no
#   left-right version. However, the Unicode HORIZONTAL ELLIPSIS
#   character has direction class neutral (which means it may end up
#   with a resolved direction of left-right if surrounded by left-right
#   characters). When mapping the Mac OS Arabic ellipsis to Unicode, it
#   is surrounded with a direction override to help preserve proper
#   text layout. The resolved direction is not needed or used when
#   mapping the Unicode HORIZONTAL ELLIPSIS back to Mac OS Arabic.
#
#   2. Mapping the Mac OS Arabic digits
#
#   The main table below contains mappings that should be used when
#   strict round-trip fidelity is required. However, for numeric
#   values, the mappings in that table will produce Unicode characters
#   that may appear different than the Mac OS Arabic text displayed on
#   a Mac OS system using WorldScript. This is because WorldScript
#   uses context-dependent display for the 0x30-0x39 digits.
#
#   If roundtrip fidelity is not required, then the following
#   alternate mappings should be used when a sequence of 0x30-0x39
#   digits - possibly including 0x2C and 0x2E - occurs in an Arabic
#   context (that is, when the first "strong" character on either side
#   of the digit sequence is Arabic, or there is no strong character):
#
#     0x2C      0x066C  # ARABIC THOUSANDS SEPARATOR
#     0x2E      0x066B  # ARABIC DECIMAL SEPARATOR
#     0x30      0x0660  # ARABIC-INDIC DIGIT ZERO
#     0x31      0x0661  # ARABIC-INDIC DIGIT ONE
#     0x32      0x0662  # ARABIC-INDIC DIGIT TWO
#     0x33      0x0663  # ARABIC-INDIC DIGIT THREE
#     0x34      0x0664  # ARABIC-INDIC DIGIT FOUR
#     0x35      0x0665  # ARABIC-INDIC DIGIT FIVE
#     0x36      0x0666  # ARABIC-INDIC DIGIT SIX
#     0x37      0x0667  # ARABIC-INDIC DIGIT SEVEN
#     0x38      0x0668  # ARABIC-INDIC DIGIT EIGHT
#     0x39      0x0669  # ARABIC-INDIC DIGIT NINE
#
# Details of mapping changes in each version:
# -------------------------------------------
#
#   Changes from version n03 to version n07:
#
#   - Change mapping for 0xC0 from U+066D to U+274A.
#
#   - Add direction overrides (required directionality) to mappings
#     for 0x25, 0x2C, 0x3B, 0x3F.
#
##################

0x20    <LR>+0x0020     # SPACE, left-right
0x21    <LR>+0x0021     # EXCLAMATION MARK, left-right
0x22    <LR>+0x0022     # QUOTATION MARK, left-right
0x23    <LR>+0x0023     # NUMBER SIGN, left-right
0x24    <LR>+0x0024     # DOLLAR SIGN, left-right
0x25    <LR>+0x0025     # PERCENT SIGN, left-right
0x26    <LR>+0x0026     # AMPERSAND, left-right
0x27    <LR>+0x0027     # APOSTROPHE, left-right
0x28    <LR>+0x0028     # LEFT PARENTHESIS, left-right
0x29    <LR>+0x0029     # RIGHT PARENTHESIS, left-right
0x2A    <LR>+0x002A     # ASTERISK, left-right
0x2B    <LR>+0x002B     # PLUS SIGN, left-right
0x2C    <LR>+0x002C     # COMMA, left-right; in Arabic-script context, 
displayed as 0x066C ARABIC THOUSANDS SEPARATOR
0x2D    <LR>+0x002D     # HYPHEN-MINUS, left-right
0x2E    <LR>+0x002E     # FULL STOP, left-right; in Arabic-script context, 
displayed as 0x066B ARABIC DECIMAL SEPARATOR
0x2F    <LR>+0x002F     # SOLIDUS, left-right
0x30    0x0030  # DIGIT ZERO;  in Arabic-script context, displayed as 0x0660 
ARABIC-INDIC DIGIT ZERO
0x31    0x0031  # DIGIT ONE;   in Arabic-script context, displayed as 0x0661 
ARABIC-INDIC DIGIT ONE
0x32    0x0032  # DIGIT TWO;   in Arabic-script context, displayed as 0x0662 
ARABIC-INDIC DIGIT TWO
0x33    0x0033  # DIGIT THREE; in Arabic-script context, displayed as 0x0663 
ARABIC-INDIC DIGIT THREE
0x34    0x0034  # DIGIT FOUR;  in Arabic-script context, displayed as 0x0664 
ARABIC-INDIC DIGIT FOUR
0x35    0x0035  # DIGIT FIVE;  in Arabic-script context, displayed as 0x0665 
ARABIC-INDIC DIGIT FIVE
0x36    0x0036  # DIGIT SIX;   in Arabic-script context, displayed as 0x0666 
ARABIC-INDIC DIGIT SIX
0x37    0x0037  # DIGIT SEVEN; in Arabic-script context, displayed as 0x0667 
ARABIC-INDIC DIGIT SEVEN
0x38    0x0038  # DIGIT EIGHT; in Arabic-script context, displayed as 0x0668 
ARABIC-INDIC DIGIT EIGHT
0x39    0x0039  # DIGIT NINE;  in Arabic-script context, displayed as 0x0669 
ARABIC-INDIC DIGIT NINE
0x3A    <LR>+0x003A     # COLON, left-right
0x3B    <LR>+0x003B     # SEMICOLON, left-right
0x3C    <LR>+0x003C     # LESS-THAN SIGN, left-right
0x3D    <LR>+0x003D     # EQUALS SIGN, left-right
0x3E    <LR>+0x003E     # GREATER-THAN SIGN, left-right
0x3F    <LR>+0x003F     # QUESTION MARK, left-right
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    <LR>+0x005B     # LEFT SQUARE BRACKET, left-right
0x5C    <LR>+0x005C     # REVERSE SOLIDUS, left-right
0x5D    <LR>+0x005D     # RIGHT SQUARE BRACKET, left-right
0x5E    <LR>+0x005E     # CIRCUMFLEX ACCENT, left-right
0x5F    <LR>+0x005F     # LOW LINE, left-right
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    <LR>+0x007B     # LEFT CURLY BRACKET, left-right
0x7C    <LR>+0x007C     # VERTICAL LINE, left-right
0x7D    <LR>+0x007D     # RIGHT CURLY BRACKET, left-right
0x7E    0x007E  # TILDE
#
0x80    0x00C4  # LATIN CAPITAL LETTER A WITH DIAERESIS
0x81    <RL>+0x00A0     # NO-BREAK SPACE, right-left
0x82    0x00C7  # LATIN CAPITAL LETTER C WITH CEDILLA
0x83    0x00C9  # LATIN CAPITAL LETTER E WITH ACUTE
0x84    0x00D1  # LATIN CAPITAL LETTER N WITH TILDE
0x85    0x00D6  # LATIN CAPITAL LETTER O WITH DIAERESIS
0x86    0x00DC  # LATIN CAPITAL LETTER U WITH DIAERESIS
0x87    0x00E1  # LATIN SMALL LETTER A WITH ACUTE
0x88    0x00E0  # LATIN SMALL LETTER A WITH GRAVE
0x89    0x00E2  # LATIN SMALL LETTER A WITH CIRCUMFLEX
0x8A    0x00E4  # LATIN SMALL LETTER A WITH DIAERESIS
0x8B    0x06BA  # ARABIC LETTER NOON GHUNNA
0x8C    <RL>+0x00AB     # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
0x8D    0x00E7  # LATIN SMALL LETTER C WITH CEDILLA
0x8E    0x00E9  # LATIN SMALL LETTER E WITH ACUTE
0x8F    0x00E8  # LATIN SMALL LETTER E WITH GRAVE
0x90    0x00EA  # LATIN SMALL LETTER E WITH CIRCUMFLEX
0x91    0x00EB  # LATIN SMALL LETTER E WITH DIAERESIS
0x92    0x00ED  # LATIN SMALL LETTER I WITH ACUTE
0x93    <RL>+0x2026     # HORIZONTAL ELLIPSIS, right-left
0x94    0x00EE  # LATIN SMALL LETTER I WITH CIRCUMFLEX
0x95    0x00EF  # LATIN SMALL LETTER I WITH DIAERESIS
0x96    0x00F1  # LATIN SMALL LETTER N WITH TILDE
0x97    0x00F3  # LATIN SMALL LETTER O WITH ACUTE
0x98    <RL>+0x00BB     # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
0x99    0x00F4  # LATIN SMALL LETTER O WITH CIRCUMFLEX
0x9A    0x00F6  # LATIN SMALL LETTER O WITH DIAERESIS
0x9B    <RL>+0x00F7     # DIVISION SIGN, right-left
0x9C    0x00FA  # LATIN SMALL LETTER U WITH ACUTE
0x9D    0x00F9  # LATIN SMALL LETTER U WITH GRAVE
0x9E    0x00FB  # LATIN SMALL LETTER U WITH CIRCUMFLEX
0x9F    0x00FC  # LATIN SMALL LETTER U WITH DIAERESIS
0xA0    <RL>+0x0020     # SPACE, right-left
0xA1    <RL>+0x0021     # EXCLAMATION MARK, right-left
0xA2    <RL>+0x0022     # QUOTATION MARK, right-left
0xA3    <RL>+0x0023     # NUMBER SIGN, right-left
0xA4    <RL>+0x0024     # DOLLAR SIGN, right-left
0xA5    0x066A  # ARABIC PERCENT SIGN
0xA6    <RL>+0x0026     # AMPERSAND, right-left
0xA7    <RL>+0x0027     # APOSTROPHE, right-left
0xA8    <RL>+0x0028     # LEFT PARENTHESIS, right-left
0xA9    <RL>+0x0029     # RIGHT PARENTHESIS, right-left
0xAA    <RL>+0x002A     # ASTERISK, right-left
0xAB    <RL>+0x002B     # PLUS SIGN, right-left
0xAC    0x060C  # ARABIC COMMA
0xAD    <RL>+0x002D     # HYPHEN-MINUS, right-left
0xAE    <RL>+0x002E     # FULL STOP, right-left
0xAF    <RL>+0x002F     # SOLIDUS, right-left
0xB0    <RL>+0x0660     # ARABIC-INDIC DIGIT ZERO, right-left (need override)
0xB1    <RL>+0x0661     # ARABIC-INDIC DIGIT ONE, right-left (need override)
0xB2    <RL>+0x0662     # ARABIC-INDIC DIGIT TWO, right-left (need override)
0xB3    <RL>+0x0663     # ARABIC-INDIC DIGIT THREE, right-left (need override)
0xB4    <RL>+0x0664     # ARABIC-INDIC DIGIT FOUR, right-left (need override)
0xB5    <RL>+0x0665     # ARABIC-INDIC DIGIT FIVE, right-left (need override)
0xB6    <RL>+0x0666     # ARABIC-INDIC DIGIT SIX, right-left (need override)
0xB7    <RL>+0x0667     # ARABIC-INDIC DIGIT SEVEN, right-left (need override)
0xB8    <RL>+0x0668     # ARABIC-INDIC DIGIT EIGHT, right-left (need override)
0xB9    <RL>+0x0669     # ARABIC-INDIC DIGIT NINE, right-left (need override)
0xBA    <RL>+0x003A     # COLON, right-left
0xBB    0x061B  # ARABIC SEMICOLON
0xBC    <RL>+0x003C     # LESS-THAN SIGN, right-left
0xBD    <RL>+0x003D     # EQUALS SIGN, right-left
0xBE    <RL>+0x003E     # GREATER-THAN SIGN, right-left
0xBF    0x061F  # ARABIC QUESTION MARK
0xC0    <RL>+0x274A     # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
0xC1    0x0621  # ARABIC LETTER HAMZA
0xC2    0x0622  # ARABIC LETTER ALEF WITH MADDA ABOVE
0xC3    0x0623  # ARABIC LETTER ALEF WITH HAMZA ABOVE
0xC4    0x0624  # ARABIC LETTER WAW WITH HAMZA ABOVE
0xC5    0x0625  # ARABIC LETTER ALEF WITH HAMZA BELOW
0xC6    0x0626  # ARABIC LETTER YEH WITH HAMZA ABOVE
0xC7    0x0627  # ARABIC LETTER ALEF
0xC8    0x0628  # ARABIC LETTER BEH
0xC9    0x0629  # ARABIC LETTER TEH MARBUTA
0xCA    0x062A  # ARABIC LETTER TEH
0xCB    0x062B  # ARABIC LETTER THEH
0xCC    0x062C  # ARABIC LETTER JEEM
0xCD    0x062D  # ARABIC LETTER HAH
0xCE    0x062E  # ARABIC LETTER KHAH
0xCF    0x062F  # ARABIC LETTER DAL
0xD0    0x0630  # ARABIC LETTER THAL
0xD1    0x0631  # ARABIC LETTER REH
0xD2    0x0632  # ARABIC LETTER ZAIN
0xD3    0x0633  # ARABIC LETTER SEEN
0xD4    0x0634  # ARABIC LETTER SHEEN
0xD5    0x0635  # ARABIC LETTER SAD
0xD6    0x0636  # ARABIC LETTER DAD
0xD7    0x0637  # ARABIC LETTER TAH
0xD8    0x0638  # ARABIC LETTER ZAH
0xD9    0x0639  # ARABIC LETTER AIN
0xDA    0x063A  # ARABIC LETTER GHAIN
0xDB    <RL>+0x005B     # LEFT SQUARE BRACKET, right-left
0xDC    <RL>+0x005C     # REVERSE SOLIDUS, right-left
0xDD    <RL>+0x005D     # RIGHT SQUARE BRACKET, right-left
0xDE    <RL>+0x005E     # CIRCUMFLEX ACCENT, right-left
0xDF    <RL>+0x005F     # LOW LINE, right-left
0xE0    0x0640  # ARABIC TATWEEL
0xE1    0x0641  # ARABIC LETTER FEH
0xE2    0x0642  # ARABIC LETTER QAF
0xE3    0x0643  # ARABIC LETTER KAF
0xE4    0x0644  # ARABIC LETTER LAM
0xE5    0x0645  # ARABIC LETTER MEEM
0xE6    0x0646  # ARABIC LETTER NOON
0xE7    0x0647  # ARABIC LETTER HEH
0xE8    0x0648  # ARABIC LETTER WAW
0xE9    0x0649  # ARABIC LETTER ALEF MAKSURA
0xEA    0x064A  # ARABIC LETTER YEH
0xEB    0x064B  # ARABIC FATHATAN
0xEC    0x064C  # ARABIC DAMMATAN
0xED    0x064D  # ARABIC KASRATAN
0xEE    0x064E  # ARABIC FATHA
0xEF    0x064F  # ARABIC DAMMA
0xF0    0x0650  # ARABIC KASRA
0xF1    0x0651  # ARABIC SHADDA
0xF2    0x0652  # ARABIC SUKUN
0xF3    0x067E  # ARABIC LETTER PEH
0xF4    0x0679  # ARABIC LETTER TTEH
0xF5    0x0686  # ARABIC LETTER TCHEH
0xF6    0x06D5  # ARABIC LETTER AE
0xF7    0x06A4  # ARABIC LETTER VEH
0xF8    0x06AF  # ARABIC LETTER GAF
0xF9    0x0688  # ARABIC LETTER DDAL
0xFA    0x0691  # ARABIC LETTER RREH
0xFB    <RL>+0x007B     # LEFT CURLY BRACKET, right-left
0xFC    <RL>+0x007C     # VERTICAL LINE, right-left
0xFD    <RL>+0x007D     # RIGHT CURLY BRACKET, right-left
0xFE    0x0698  # ARABIC LETTER JEH
0xFF    0x06D2  # ARABIC LETTER YEH BARREE

--- NEW FILE ---
#=======================================================================
#   File name:  HEBREW.TXT
#
#   Contents:   Map (external version) from Mac OS Hebrew
#               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    Don't require left-right context for digits
#                                                       0x30-0x39. Change 
mapping of 0x81 to use
#                           decomposition. Reverse the mappings of 0xA8,
#                           0xA9. Update URLs, notes. Matches internal
#                           utom<b7>.
#       b02  1999-Sep-22    Update contact e-mail address. Matches
#                           internal utom<b1>, ufrm<b1>, and Text
#                           Encoding Converter version 1.5.
#       n03  1998-Feb-05    Show required Unicode character
#                           directionality in a different way. Update
#                           mappings for 0xC0 and 0xDE to use
#                           transcoding hints; matches internal utom<n6>,
#                           ufrm<n20>, and Text Encoding Converter
#                           version 1.3. Rewrite header comments.
#       n01  1995-Nov-15    First version. Matches internal ufrm<n8>.
#
# 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 Hebrew code (in hex as 0xNN).
#     Column #2 is the corresponding Unicode or Unicode sequence (in
#       hex as 0xNNNN, 0xNNNN+0xNNNN, etc.). Sequences of up to 5
#       Unicode characters are used here. A single Unicode character
#       may be preceded by a tag indicating required directionality
#       (i.e. <LR>+0xNNNN or <RL>+0xNNNN).
#     Column #3 is a comment containing the Unicode name.
#
#   The entries are in Mac OS Hebrew 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 Roman character set uses the standard control characters at
#   0x00-0x1F and 0x7F.
#
# Notes on Mac OS Hebrew:
# -----------------------
#
#   1. General
#
#   The Mac OS Hebrew character set supports the Hebrew and Yiddish
#   languages. It incorporates the Hebrew letter repertoire of
#   ISO 8859-8, and uses the same code points for them, 0xE0-0xFA.
#   It also incorporates the ASCII character set. In addition, the
#   Mac OS Hebrew character set includes the following:
#
#   - Hebrew points (nikud marks) at 0xC6, 0xCB-0xCF and 0xD8-0xDF.
#     These are non-spacing combining marks. Note that the RAFE point
#     at 0xD8 is not displayed correctly in some fonts, and cannot be
#     typed using the keyboard layouts in the current Hebrew localized
#     systems. Also note: The character given in Unicode as QAMATS
#     (U+05B8) actually refers to two different sounds, depending on
#     context. For example, when ALEF is followed by QAMATS, the QAMATS
#     can actually refer to two different sounds depending on the
#     following letters. The Mac OS Hebrew character set separately
#     encodes these two sounds for the same graphic shape, as "qamats"
#     (0xCB) and "qamats qatan" (0xDE). The "qamats" character is more
#     common, so it is mapped to the Unicode QAMATS; "qamats qatan" can
#     only be used with a limited number of characters, and it is
#     mapped using a corporate-zone variant tag (see below).
#
#   - Various Hebrew ligatures at 0x81, 0xC0, 0xC7, 0xC8, 0xD6, and
#     0xD7. Also note that the Yiddish YOD YOD PATAH ligature at 0x81
#     is missing in some fonts.
#
#   - The NEW SHEQEL SIGN at 0xA6.
#
#       - Latin characters with diacritics at 0x80 and 0x82-0x9F. However,
#     most of these cannot be typed using the keyboard layouts in the
#     Hebrew localized systems.
#
#   - Right-left versions of certain ASCII punctuation, symbols and
#     digits: 0xA0-0xA5, 0xA7-0xBF, 0xFB-0xFF. See below.
#
#   - Miscellaneous additional punctuation at 0xC1, 0xC9, 0xCA, and
#     0xD0-0xD5. There is a variant of the Hebrew encoding in which
#     the LEFT SINGLE QUOTATION MARK at 0xD4 is replaced by FIGURE
#     SPACE. The glyphs for some of the other punctuation characters
#     are missing in some fonts.
#
#   - Four obsolete characters at 0xC2-0xC5 known as canorals (not to
#     be confused with cantillation marks!). These were used for
#     manual positioning of nikud marks before System 7.1 (at which
#     point nikud positioning became automatic with WorldScript.).
#
#   2. Directional characters and roundtrip fidelity
#
#   The Mac OS Hebrew character set was developed around 1987. At that
#   time the bidirectional line line layout algorithm used in the Mac OS
#   Hebrew system was fairly simple; it used only a few direction
#   classes (instead of the 19 now used in the Unicode bidirectional
#   algorithm). In order to permit users to handle some tricky layou
#   problems, certain punctuation, symbol, and digit characters have
#   duplicate code points, one with a left-right direction attribute and
#   the other with a right-left direction attribute.
#
#   For example, plus sign is encoded at 0x2B with a left-right
#   attribute, and at 0xAB with a right-left attribute. However, there
#   is only one PLUS SIGN character in Unicode. This leads to some
#   interesting problems when mapping between Mac OS Hebrew and Unicode;
#   see below.
#
#   A related problem is that even when a particular character is
#   encoded only once in Mac OS Hebrew, it may have a different
#   direction attribute than the corresponding Unicode character.
#
#   For example, the Mac OS Hebrew character at 0xC9 is HORIZONTAL
#   ELLIPSIS with strong right-left direction. However, the Unicode
#   character HORIZONTAL ELLIPSIS has direction class neutral.
#
#   3. Font variants
#
#   The table in this file gives the Unicode mappings for the standard
#   Mac OS Hebrew encoding. This encoding is supported by many of the
#   Apple fonts (including all of the fonts in the Hebrew Language Kit),
#   and is the encoding supported by the text processing utilities.
#   However, some TrueType fonts provided with the localized Hebrew
#   system implement a slightly different encoding; the difference is
#   only in one code point, 0xD4. For the standard variant, this is:
#     0xD4 -> <RL>+0x2018  LEFT SINGLE QUOTATION MARK, right-left
#
#   The TrueType variant is used by the following TrueType fonts from
#   the localized system: Caesarea, Carmel Book, Gilboa, Ramat Sharon,
#   and Sinai Book. For these, 0xD4 is as follows:
#     0xD4 -> <RL>+0x2007  FIGURE SPACE, right-left
#
# Unicode mapping issues and notes:
# ---------------------------------
#
#   1. Matching the direction of Mac OS Hebrew characters
#
#   When Mac OS Hebrew encodes a character twice but with different
#   direction attributes for the two code points - as in the case of
#   plus sign mentioned above - we need a way to map both Mac OS Hebrew
#   code points to Unicode and back again without loss of information.
#   With the plus sign, for example, mapping one of the Mac OS Hebrew
#   characters to a code in the Unicode corporate use zone is
#   undesirable, since both of the plus sign characters are likely to
#   be used in text that is interchanged.
#
#   The problem is solved with the use of direction override characters
#   and direction-dependent mappings. When mapping from Mac OS Hebrew
#   to Unicode, we use direction overrides as necessary to force the
#   direction of the resulting Unicode characters.
#
#   The required direction is indicated by a direction tag in the
#   mappings. A tag of <LR> means the corresponding Unicode character
#   must have a strong left-right context, and a tag of <RL> indicates
#   a right-left context.
#
#   For example, the mapping of 0x2B is given as <LR>+0x002B; the
#   mapping of 0xAB is given as <RL>+0x002B. If we map an isolated
#   instance of 0x2B to Unicode, it should be mapped as follows (LRO
#   indicates LEFT-RIGHT OVERRIDE, PDF indicates POP DIRECTION
#   FORMATTING):
#
#     0x2B ->  0x202D (LRO) + 0x002B (PLUS SIGN) + 0x202C (PDF)
#
#   When mapping several characters in a row that require direction
#   forcing, the overrides need only be used at the beginning and end.
#   For example:
#
#     0x24 0x20 0x28 0x29 -> 0x202D 0x0024 0x0020 0x0028 0x0029 0x202C
#
#   If neutral characters that require direction forcing are already
#   between strong-direction characters with matching directionality,
#   then direction overrides need not be used. Direction overrides are
#   always needed to map the right-left digits at 0xB0-0xB9.
#
#   When mapping from Unicode to Mac OS Hebrew, the Unicode
#   bidirectional algorithm should be used to determine resolved
#   direction of the Unicode characters. The mapping from Unicode to
#   Mac OS Hebrew can then be disambiguated by the use of the resolved
#   direction:
#
#     Unicode 0x002B -> Mac OS Hebrew 0x2B (if L) or 0xAB (if R)
#
#   However, this also means the direction override characters should
#   be discarded when mapping from Unicode to Mac OS Hebrew (after
#   they have been used to determine resolved direction), since the
#   direction override information is carried by the code point itself.
#
#   Even when direction overrides are not needed for roundtrip
#   fidelity, they are sometimes used when mapping Mac OS Hebrew
#   characters to Unicode in order to achieve similar text layout with
#   the resulting Unicode text. For example, the single Mac OS Hebrew
#   ellipsis character has direction class right-left,and there is no
#   left-right version. However, the Unicode HORIZONTAL ELLIPSIS
#   character has direction class neutral (which means it may end up
#   with a resolved direction of left-right if surrounded by left-right
#   characters). When mapping the Mac OS Hebrew ellipsis to Unicode, it
#   is surrounded with a direction override to help preserve proper
#   text layout. The resolved direction is not needed or used when
#   mapping the Unicode HORIZONTAL ELLIPSIS back to Mac OS Hebrew.
#
#   2. Use of corporate-zone Unicodes
#
#   The goals in the mappings provided here are:
#   - Ensure roundtrip mapping from every character in the Mac OS
#     Hebrew 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.
#
#   Some of the characters in the Mac OS Hebrew character set do not
#   correspond to distinct, single Unicode characters. To map these
#   and satisfy both goals above, we employ various strategies.
#
#   a) If possible, use private use characters in combination with
#   standard Unicode characters to mark variants of the standard
#   Unicode character.
#
#   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.
#
#   Two transcoding hints are used in this mapping table: a grouping hint
#   and a variant tag:
#   hint:
#     0xF86A  group next 2 characters, right-left directionality
#     0xF87F  variant tag
#
#   In Mac OS Hebrew, 0xC0 is a ligature for lamed holam. This can also
#   be represented in Mac OS Hebrew as 0xEC+0xDD, using separate
#   characters for lamed and holam. The latter sequence is mapped to
#   Unicode as 0x05DC+0x05B9, i.e. as the sequence HEBREW LETTER LAMED +
#   HEBREW POINT HOLAM. We want to map the ligature 0xC0 using the same
#   standard Unicode characters, but for round-trip fidelity we need to
#   distinguish it from the mapping of the sequence 0xEC+0xDD. Thus for
#   0xC0 we use a grouping hint, and map as follows:
#   
#     0xC0 -> 0xF86A+0x05DC+0x05B9
#
#   The variant tag is used for "qamats qatan" to mark it as an alternate
#   for HEBREW POINT QAMATS, as follows:
#
#     0xDE -> 0x05B8+0xF87F
#
#   b) Otherwise, use private use characters by themselves to map Mac OS
#   Hebrew characters which  have no relationship to any standard Unicode
#   character.
#
#   The following additional corporate zone Unicode characters are used
#   for this purpose here (to map the obsolete "canorals", see above):
#
#     0xF89B  Hebrew canoral 1
#     0xF89C  Hebrew canoral 2
#     0xF89D  Hebrew canoral 3
#     0xF89E  Hebrew canoral 4
#
# Details of mapping changes in each version:
# -------------------------------------------
#
#   Changes from version b02 to version b03/c01:
#
#   - Stop specifying left-right context for digits 0x30-0x39, since the
#     corresponding Unicodes 0x0030-0x0039 already have left-right
#     directionality.
#
#   - Change mapping of 0x81 from 0xFB1F HEBREW LIGATURE YIDDISH YOD YOD
#     PATAH to its canonical decomposition 0x05F2+0x05B7 to improve
#     cross-platform compatibility (Windows doesn't handle 0xFB1F)
#
#   - Interchange the mappings of 0xA8 and 0xA9 to obtain the correct
#     open/close behavior; they work differently than in Mac Arabic.
#     The old mapping was
#         0xA8 <RL>+0x0028 # LEFT PARENTHESIS, right-left
#         0xA9 <RL>+0x0029 # RIGHT PARENTHESIS, right-left
#     and the new mapping is
#         0xA8 <RL>+0x0029 # RIGHT PARENTHESIS, right-left
#         0xA9 <RL>+0x0028 # LEFT PARENTHESIS, right-left
#
#   Changes from version n01 to version n03:
#
#   - Change mapping for 0xC0 from single corporate character to
#     grouping hint plus standard Unicodes
#
#   - Change mapping for 0xDE from single corporate character to
#     standard Unicode plus variant tag
#
##################

0x20    <LR>+0x0020     # SPACE, left-right
0x21    <LR>+0x0021     # EXCLAMATION MARK, left-right
0x22    <LR>+0x0022     # QUOTATION MARK, left-right
0x23    <LR>+0x0023     # NUMBER SIGN, left-right
0x24    <LR>+0x0024     # DOLLAR SIGN, left-right
0x25    <LR>+0x0025     # PERCENT SIGN, left-right
0x26    0x0026  # AMPERSAND
0x27    <LR>+0x0027     # APOSTROPHE, left-right
0x28    <LR>+0x0028     # LEFT PARENTHESIS, left-right
0x29    <LR>+0x0029     # RIGHT PARENTHESIS, left-right
0x2A    <LR>+0x002A     # ASTERISK, left-right
0x2B    <LR>+0x002B     # PLUS SIGN, left-right
0x2C    <LR>+0x002C     # COMMA, left-right
0x2D    <LR>+0x002D     # HYPHEN-MINUS, left-right
0x2E    <LR>+0x002E     # FULL STOP, left-right
0x2F    <LR>+0x002F     # SOLIDUS, left-right
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    <LR>+0x003A     # COLON, left-right
0x3B    <LR>+0x003B     # SEMICOLON, left-right
0x3C    <LR>+0x003C     # LESS-THAN SIGN, left-right
0x3D    <LR>+0x003D     # EQUALS SIGN, left-right
0x3E    <LR>+0x003E     # GREATER-THAN SIGN, left-right
0x3F    <LR>+0x003F     # QUESTION MARK, left-right
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    <LR>+0x005B     # LEFT SQUARE BRACKET, left-right
0x5C    0x005C  # REVERSE SOLIDUS
0x5D    <LR>+0x005D     # RIGHT SQUARE BRACKET, left-right
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    <LR>+0x007B     # LEFT CURLY BRACKET, left-right
0x7C    <LR>+0x007C     # VERTICAL LINE, left-right
0x7D    <LR>+0x007D     # RIGHT CURLY BRACKET, left-right
0x7E    0x007E  # TILDE
#
0x80    0x00C4  # LATIN CAPITAL LETTER A WITH DIAERESIS
0x81    0x05F2+0x05B7   # HEBREW LIGATURE YIDDISH YOD YOD PATAH
0x82    0x00C7  # LATIN CAPITAL LETTER C WITH CEDILLA
0x83    0x00C9  # LATIN CAPITAL LETTER E WITH ACUTE
0x84    0x00D1  # LATIN CAPITAL LETTER N WITH TILDE
0x85    0x00D6  # LATIN CAPITAL LETTER O WITH DIAERESIS
0x86    0x00DC  # LATIN CAPITAL LETTER U WITH DIAERESIS
0x87    0x00E1  # LATIN SMALL LETTER A WITH ACUTE
0x88    0x00E0  # LATIN SMALL LETTER A WITH GRAVE
0x89    0x00E2  # LATIN SMALL LETTER A WITH CIRCUMFLEX
0x8A    0x00E4  # LATIN SMALL LETTER A WITH DIAERESIS
0x8B    0x00E3  # LATIN SMALL LETTER A WITH TILDE
0x8C    0x00E5  # LATIN SMALL LETTER A WITH RING ABOVE
0x8D    0x00E7  # LATIN SMALL LETTER C WITH CEDILLA
0x8E    0x00E9  # LATIN SMALL LETTER E WITH ACUTE
0x8F    0x00E8  # LATIN SMALL LETTER E WITH GRAVE
0x90    0x00EA  # LATIN SMALL LETTER E WITH CIRCUMFLEX
0x91    0x00EB  # LATIN SMALL LETTER E WITH DIAERESIS
0x92    0x00ED  # LATIN SMALL LETTER I WITH ACUTE
0x93    0x00EC  # LATIN SMALL LETTER I WITH GRAVE
0x94    0x00EE  # LATIN SMALL LETTER I WITH CIRCUMFLEX
0x95    0x00EF  # LATIN SMALL LETTER I WITH DIAERESIS
0x96    0x00F1  # LATIN SMALL LETTER N WITH TILDE
0x97    0x00F3  # LATIN SMALL LETTER O WITH ACUTE
0x98    0x00F2  # LATIN SMALL LETTER O WITH GRAVE
0x99    0x00F4  # LATIN SMALL LETTER O WITH CIRCUMFLEX
0x9A    0x00F6  # LATIN SMALL LETTER O WITH DIAERESIS
0x9B    0x00F5  # LATIN SMALL LETTER O WITH TILDE
0x9C    0x00FA  # LATIN SMALL LETTER U WITH ACUTE
0x9D    0x00F9  # LATIN SMALL LETTER U WITH GRAVE
0x9E    0x00FB  # LATIN SMALL LETTER U WITH CIRCUMFLEX
0x9F    0x00FC  # LATIN SMALL LETTER U WITH DIAERESIS
0xA0    <RL>+0x0020     # SPACE, right-left
0xA1    <RL>+0x0021     # EXCLAMATION MARK, right-left
0xA2    <RL>+0x0022     # QUOTATION MARK, right-left
0xA3    <RL>+0x0023     # NUMBER SIGN, right-left
0xA4    <RL>+0x0024     # DOLLAR SIGN, right-left
0xA5    <RL>+0x0025     # PERCENT SIGN, right-left
0xA6    0x20AA  # NEW SHEQEL SIGN
0xA7    <RL>+0x0027     # APOSTROPHE, right-left
0xA8    <RL>+0x0029     # RIGHT PARENTHESIS, right-left
0xA9    <RL>+0x0028     # LEFT PARENTHESIS, right-left
0xAA    <RL>+0x002A     # ASTERISK, right-left
0xAB    <RL>+0x002B     # PLUS SIGN, right-left
0xAC    <RL>+0x002C     # COMMA, right-left
0xAD    <RL>+0x002D     # HYPHEN-MINUS, right-left
0xAE    <RL>+0x002E     # FULL STOP, right-left
0xAF    <RL>+0x002F     # SOLIDUS, right-left
0xB0    <RL>+0x0030     # DIGIT ZERO, right-left (need override)
0xB1    <RL>+0x0031     # DIGIT ONE, right-left (need override)
0xB2    <RL>+0x0032     # DIGIT TWO, right-left (need override)
0xB3    <RL>+0x0033     # DIGIT THREE, right-left (need override)
0xB4    <RL>+0x0034     # DIGIT FOUR, right-left (need override)
0xB5    <RL>+0x0035     # DIGIT FIVE, right-left (need override)
0xB6    <RL>+0x0036     # DIGIT SIX, right-left (need override)
0xB7    <RL>+0x0037     # DIGIT SEVEN, right-left (need override)
0xB8    <RL>+0x0038     # DIGIT EIGHT, right-left (need override)
0xB9    <RL>+0x0039     # DIGIT NINE, right-left (need override)
0xBA    <RL>+0x003A     # COLON, right-left
0xBB    <RL>+0x003B     # SEMICOLON, right-left
0xBC    <RL>+0x003C     # LESS-THAN SIGN, right-left
0xBD    <RL>+0x003D     # EQUALS SIGN, right-left
0xBE    <RL>+0x003E     # GREATER-THAN SIGN, right-left
0xBF    <RL>+0x003F     # QUESTION MARK, right-left
0xC0    0xF86A+0x05DC+0x05B9    # Hebrew ligature lamed holam
0xC1    <RL>+0x201E     # DOUBLE LOW-9 QUOTATION MARK, right-left
0xC2    0xF89B  # Hebrew canoral 1
0xC3    0xF89C  # Hebrew canoral 2
0xC4    0xF89D  # Hebrew canoral 3
0xC5    0xF89E  # Hebrew canoral 4
0xC6    0x05BC  # HEBREW POINT DAGESH OR MAPIQ
0xC7    0xFB4B  # HEBREW LETTER VAV WITH HOLAM
0xC8    0xFB35  # HEBREW LETTER VAV WITH DAGESH
0xC9    <RL>+0x2026     # HORIZONTAL ELLIPSIS, right-left
0xCA    <RL>+0x00A0     # NO-BREAK SPACE, right-left
0xCB    0x05B8  # HEBREW POINT QAMATS
0xCC    0x05B7  # HEBREW POINT PATAH
0xCD    0x05B5  # HEBREW POINT TSERE
0xCE    0x05B6  # HEBREW POINT SEGOL
0xCF    0x05B4  # HEBREW POINT HIRIQ
0xD0    <RL>+0x2013     # EN DASH, right-left
0xD1    <RL>+0x2014     # EM DASH, right-left
0xD2    <RL>+0x201C     # LEFT DOUBLE QUOTATION MARK, right-left
0xD3    <RL>+0x201D     # RIGHT DOUBLE QUOTATION MARK, right-left
0xD4    <RL>+0x2018     # LEFT SINGLE QUOTATION MARK, right-left
0xD5    <RL>+0x2019     # RIGHT SINGLE QUOTATION MARK, right-left
0xD6    0xFB2A  # HEBREW LETTER SHIN WITH SHIN DOT
0xD7    0xFB2B  # HEBREW LETTER SHIN WITH SIN DOT
0xD8    0x05BF  # HEBREW POINT RAFE
0xD9    0x05B0  # HEBREW POINT SHEVA
0xDA    0x05B2  # HEBREW POINT HATAF PATAH
0xDB    0x05B1  # HEBREW POINT HATAF SEGOL
0xDC    0x05BB  # HEBREW POINT QUBUTS
0xDD    0x05B9  # HEBREW POINT HOLAM
0xDE    0x05B8+0xF87F   # HEBREW POINT QAMATS, alternate form "qamats qatan"
0xDF    0x05B3  # HEBREW POINT HATAF QAMATS
0xE0    0x05D0  # HEBREW LETTER ALEF
0xE1    0x05D1  # HEBREW LETTER BET
0xE2    0x05D2  # HEBREW LETTER GIMEL
0xE3    0x05D3  # HEBREW LETTER DALET
0xE4    0x05D4  # HEBREW LETTER HE
0xE5    0x05D5  # HEBREW LETTER VAV
0xE6    0x05D6  # HEBREW LETTER ZAYIN
0xE7    0x05D7  # HEBREW LETTER HET
0xE8    0x05D8  # HEBREW LETTER TET
0xE9    0x05D9  # HEBREW LETTER YOD
0xEA    0x05DA  # HEBREW LETTER FINAL KAF
0xEB    0x05DB  # HEBREW LETTER KAF
0xEC    0x05DC  # HEBREW LETTER LAMED
0xED    0x05DD  # HEBREW LETTER FINAL MEM
0xEE    0x05DE  # HEBREW LETTER MEM
0xEF    0x05DF  # HEBREW LETTER FINAL NUN
0xF0    0x05E0  # HEBREW LETTER NUN
0xF1    0x05E1  # HEBREW LETTER SAMEKH
0xF2    0x05E2  # HEBREW LETTER AYIN
0xF3    0x05E3  # HEBREW LETTER FINAL PE
0xF4    0x05E4  # HEBREW LETTER PE
0xF5    0x05E5  # HEBREW LETTER FINAL TSADI
0xF6    0x05E6  # HEBREW LETTER TSADI
0xF7    0x05E7  # HEBREW LETTER QOF
0xF8    0x05E8  # HEBREW LETTER RESH
0xF9    0x05E9  # HEBREW LETTER SHIN
0xFA    0x05EA  # HEBREW LETTER TAV
0xFB    <RL>+0x007D     # RIGHT CURLY BRACKET, right-left
0xFC    <RL>+0x005D     # RIGHT SQUARE BRACKET, right-left
0xFD    <RL>+0x007B     # LEFT CURLY BRACKET, right-left
0xFE    <RL>+0x005B     # LEFT SQUARE BRACKET, right-left
0xFF    <RL>+0x007C     # VERTICAL LINE, right-left

--- NEW FILE ---
#=======================================================================
#   File name:  TURKISH.TXT
#
#   Contents:   Map (external version) from Mac OS Turkish
#               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<b1>.
#       b02  1999-Sep-22    Update contact e-mail address. Matches
#                           internal utom<b1>, ufrm<b1>, and Text
#                           Encoding Converter version 1.5.
#       n05  1998-Feb-05    Minor update to header comments
#       n03  1997-Dec-14    Update to match internal utom<n5>, ufrm<n15>:
#                           Change standard mapping for 0xBD from U+2126
#                           to its canonical decomposition, U+03A9.
#       n02  1995-Apr-15    First version (after fixing some typos).
#                           Matches internal ufrm<n4>.
#
# 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 Turkish 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 Turkish code order.
#
#   Two of these mappings requires the use of a corporate character.
#   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 Roman character set uses the standard control characters at
#   0x00-0x1F and 0x7F.
#
# Notes on Mac OS Turkish:
# ------------------------
#
#       Mac OS Turkish is used for Turkish.
#
#   The Mac OS Turkish encoding shares the script code smRoman
#   (0) with the Mac OS Roman encoding. To determine if the Turkish
#   encoding is being used, you must also check if the system region
#   code is 24, verTurkey.
#
#   This character set is a variant of standard Mac OS Roman. It adds
#   upper & lower G with breve, upper & lower S with cedilla, upper I
#   with dot, and moves the dotless lower i from its position at 0xF5
#   in standard Mac OS Roman to a position at 0xDD here (leaving the
#   0xF5 code point undefined in Mac OS Turkish). This gives a total
#   of 7 code point differences from standard Mac OS Roman.
#
# Unicode mapping issues and notes:
# ---------------------------------
#
#   The following corporate zone Unicode characters are used in this
#   mapping:
#
#     0xF8A0  undefined1, used to map the single undefined code point
#             in Mac OS Turkish (to obtain roundtrip fidelity for all
#             code points).
#     0xF8FF  Apple logo
#
#   NOTE: The graphic image associated with the Apple logo character
#   is not authorized for use without permission of Apple, and
#   unauthorized use might constitute trademark infringement.
#
# Details of mapping changes in each version:
# -------------------------------------------
#
#   Changes from version n02 to version n03:
#
#   - Change mapping of 0xBD from U+2126 to its canonical
#     decomposition, U+03A9.
#
##################

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    0x00C4  # LATIN CAPITAL LETTER A WITH DIAERESIS
0x81    0x00C5  # LATIN CAPITAL LETTER A WITH RING ABOVE
0x82    0x00C7  # LATIN CAPITAL LETTER C WITH CEDILLA
0x83    0x00C9  # LATIN CAPITAL LETTER E WITH ACUTE
0x84    0x00D1  # LATIN CAPITAL LETTER N WITH TILDE
0x85    0x00D6  # LATIN CAPITAL LETTER O WITH DIAERESIS
0x86    0x00DC  # LATIN CAPITAL LETTER U WITH DIAERESIS
0x87    0x00E1  # LATIN SMALL LETTER A WITH ACUTE
0x88    0x00E0  # LATIN SMALL LETTER A WITH GRAVE
0x89    0x00E2  # LATIN SMALL LETTER A WITH CIRCUMFLEX
0x8A    0x00E4  # LATIN SMALL LETTER A WITH DIAERESIS
0x8B    0x00E3  # LATIN SMALL LETTER A WITH TILDE
0x8C    0x00E5  # LATIN SMALL LETTER A WITH RING ABOVE
0x8D    0x00E7  # LATIN SMALL LETTER C WITH CEDILLA
0x8E    0x00E9  # LATIN SMALL LETTER E WITH ACUTE
0x8F    0x00E8  # LATIN SMALL LETTER E WITH GRAVE
0x90    0x00EA  # LATIN SMALL LETTER E WITH CIRCUMFLEX
0x91    0x00EB  # LATIN SMALL LETTER E WITH DIAERESIS
0x92    0x00ED  # LATIN SMALL LETTER I WITH ACUTE
0x93    0x00EC  # LATIN SMALL LETTER I WITH GRAVE
0x94    0x00EE  # LATIN SMALL LETTER I WITH CIRCUMFLEX
0x95    0x00EF  # LATIN SMALL LETTER I WITH DIAERESIS
0x96    0x00F1  # LATIN SMALL LETTER N WITH TILDE
0x97    0x00F3  # LATIN SMALL LETTER O WITH ACUTE
0x98    0x00F2  # LATIN SMALL LETTER O WITH GRAVE
0x99    0x00F4  # LATIN SMALL LETTER O WITH CIRCUMFLEX
0x9A    0x00F6  # LATIN SMALL LETTER O WITH DIAERESIS
0x9B    0x00F5  # LATIN SMALL LETTER O WITH TILDE
0x9C    0x00FA  # LATIN SMALL LETTER U WITH ACUTE
0x9D    0x00F9  # LATIN SMALL LETTER U WITH GRAVE
0x9E    0x00FB  # LATIN SMALL LETTER U WITH CIRCUMFLEX
0x9F    0x00FC  # LATIN SMALL LETTER U WITH DIAERESIS
0xA0    0x2020  # DAGGER
0xA1    0x00B0  # DEGREE SIGN
0xA2    0x00A2  # CENT SIGN
0xA3    0x00A3  # POUND SIGN
0xA4    0x00A7  # SECTION SIGN
0xA5    0x2022  # BULLET
0xA6    0x00B6  # PILCROW SIGN
0xA7    0x00DF  # LATIN SMALL LETTER SHARP S
0xA8    0x00AE  # REGISTERED SIGN
0xA9    0x00A9  # COPYRIGHT SIGN
0xAA    0x2122  # TRADE MARK SIGN
0xAB    0x00B4  # ACUTE ACCENT
0xAC    0x00A8  # DIAERESIS
0xAD    0x2260  # NOT EQUAL TO
0xAE    0x00C6  # LATIN CAPITAL LETTER AE
0xAF    0x00D8  # LATIN CAPITAL LETTER O WITH STROKE
0xB0    0x221E  # INFINITY
0xB1    0x00B1  # PLUS-MINUS SIGN
0xB2    0x2264  # LESS-THAN OR EQUAL TO
0xB3    0x2265  # GREATER-THAN OR EQUAL TO
0xB4    0x00A5  # YEN SIGN
0xB5    0x00B5  # MICRO SIGN
0xB6    0x2202  # PARTIAL DIFFERENTIAL
0xB7    0x2211  # N-ARY SUMMATION
0xB8    0x220F  # N-ARY PRODUCT
0xB9    0x03C0  # GREEK SMALL LETTER PI
0xBA    0x222B  # INTEGRAL
0xBB    0x00AA  # FEMININE ORDINAL INDICATOR
0xBC    0x00BA  # MASCULINE ORDINAL INDICATOR
0xBD    0x03A9  # GREEK CAPITAL LETTER OMEGA
0xBE    0x00E6  # LATIN SMALL LETTER AE
0xBF    0x00F8  # LATIN SMALL LETTER O WITH STROKE
0xC0    0x00BF  # INVERTED QUESTION MARK
0xC1    0x00A1  # INVERTED EXCLAMATION MARK
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    0x00C0  # LATIN CAPITAL LETTER A WITH GRAVE
0xCC    0x00C3  # LATIN CAPITAL LETTER A WITH TILDE
0xCD    0x00D5  # LATIN CAPITAL LETTER O WITH TILDE
0xCE    0x0152  # LATIN CAPITAL LIGATURE OE
0xCF    0x0153  # LATIN SMALL LIGATURE OE
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    0x25CA  # LOZENGE
0xD8    0x00FF  # LATIN SMALL LETTER Y WITH DIAERESIS
0xD9    0x0178  # LATIN CAPITAL LETTER Y WITH DIAERESIS
0xDA    0x011E  # LATIN CAPITAL LETTER G WITH BREVE
0xDB    0x011F  # LATIN SMALL LETTER G WITH BREVE
0xDC    0x0130  # LATIN CAPITAL LETTER I WITH DOT ABOVE
0xDD    0x0131  # LATIN SMALL LETTER DOTLESS I
0xDE    0x015E  # LATIN CAPITAL LETTER S WITH CEDILLA
0xDF    0x015F  # LATIN SMALL LETTER S WITH CEDILLA
0xE0    0x2021  # DOUBLE DAGGER
0xE1    0x00B7  # MIDDLE DOT
0xE2    0x201A  # SINGLE LOW-9 QUOTATION MARK
0xE3    0x201E  # DOUBLE LOW-9 QUOTATION MARK
0xE4    0x2030  # PER MILLE SIGN
0xE5    0x00C2  # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xE6    0x00CA  # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xE7    0x00C1  # LATIN CAPITAL LETTER A WITH ACUTE
0xE8    0x00CB  # LATIN CAPITAL LETTER E WITH DIAERESIS
0xE9    0x00C8  # LATIN CAPITAL LETTER E WITH GRAVE
0xEA    0x00CD  # LATIN CAPITAL LETTER I WITH ACUTE
0xEB    0x00CE  # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xEC    0x00CF  # LATIN CAPITAL LETTER I WITH DIAERESIS
0xED    0x00CC  # LATIN CAPITAL LETTER I WITH GRAVE
0xEE    0x00D3  # LATIN CAPITAL LETTER O WITH ACUTE
0xEF    0x00D4  # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xF0    0xF8FF  # Apple logo
0xF1    0x00D2  # LATIN CAPITAL LETTER O WITH GRAVE
0xF2    0x00DA  # LATIN CAPITAL LETTER U WITH ACUTE
0xF3    0x00DB  # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xF4    0x00D9  # LATIN CAPITAL LETTER U WITH GRAVE
0xF5    0xF8A0  # undefined1
0xF6    0x02C6  # MODIFIER LETTER CIRCUMFLEX ACCENT
0xF7    0x02DC  # SMALL TILDE
0xF8    0x00AF  # MACRON
0xF9    0x02D8  # BREVE
0xFA    0x02D9  # DOT ABOVE
0xFB    0x02DA  # RING ABOVE
0xFC    0x00B8  # CEDILLA
0xFD    0x02DD  # DOUBLE ACUTE ACCENT
0xFE    0x02DB  # OGONEK
0xFF    0x02C7  # CARON





reply via email to

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