/*
 * @(#)$RCSfile: HackArabicTransliteration.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
 *
 * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
 *
 * The program is provided "as is" without any warranty express or
 * implied, including the warranty of non-infringement and the implied
 * warranties of merchantibility and fitness for a particular purpose.
 * IBM will not be liable for any damages suffered by you as a result
 * of using the Program. In no event will IBM be liable for any
 * special, indirect or consequential damages or lost profits even if
 * IBM has been advised of the possibility of their occurrence. IBM
 * will not be liable for any third party claims against you.
 */
/*
 *
 * (C) Copyright IBM Corp. 1998, All Rights Reserved
 */

package com.ibm.richtext.textpanel;

/*
For any incoming character C
if you can map C using the following FakeArabicTable, return
FakeArabicTable(C)
else if C is from A through Z, return FakeArabicTable(lowercase(C))
else just return C


FakeArabicTable is defined by the following mapping

0   0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
1   0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
2   0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
3   0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
4   0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
5   0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
6   0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
7   0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
8   0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
9   0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;

%   066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
.   066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
,   060C;ARABIC COMMA;Po;0;R;;;;;N;;;;;
-   0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
'   0652;ARABIC SUKUN;Mn;34;R;;;;;N;;;;;
"   0651;ARABIC SHADDA;Mn;33;R;;;;;N;ARABIC SHADDAH;;;;
;   061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
?   061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;

a   0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
A   0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
b   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
c   0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
d   062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
D   0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
E   064B;ARABIC FATHATAN;Mn;27;R;;;;;N;;;;;
e   064E;ARABIC FATHA;Mn;30;R;;;;;N;ARABIC FATHAH;;;;
f   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
g   063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
h   062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
H   0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
I   064D;ARABIC KASRATAN;Mn;29;R;;;;;N;;;;;
i   0650;ARABIC KASRA;Mn;32;R;;;;;N;ARABIC KASRAH;;;;
j   062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
K   062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
k   0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
l   0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
m   0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
n   0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
o   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
p   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
q   0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
r   0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
s   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
S   0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
t   062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
T   062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
U   064C;ARABIC DAMMATAN;Mn;28;R;;;;;N;;;;;
u   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
v   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
w   0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
x   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
y   064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
z   0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
Z   0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;

*/

/**
 * This class implements KeyRemap to produce transliterated Arabic
 * characters from Latin-1 characters.
 */

// NOTE: this class eliminates Arabic vowels which look ugly
// in the font in which we happen to be demo'ing.  It's totally
// bogus otherwise.
final class HackArabicTransliteration extends KeyRemap {

    static final String COPYRIGHT =
                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
    public char remap(char c) {

        switch (c) {
            case '0': return '\u0660'; // ARABIC-INDIC DIGIT ZERO
            case '1': return '\u0661'; // ARABIC-INDIC DIGIT ONE
            case '2': return '\u0662'; // ARABIC-INDIC DIGIT TWO
            case '3': return '\u0663'; // ARABIC-INDIC DIGIT THREE
            case '4': return '\u0664'; // ARABIC-INDIC DIGIT FOUR
            case '5': return '\u0665'; // ARABIC-INDIC DIGIT FIVE
            case '6': return '\u0666'; // ARABIC-INDIC DIGIT SIX
            case '7': return '\u0667'; // ARABIC-INDIC DIGIT SEVEN
            case '8': return '\u0668'; // ARABIC-INDIC DIGIT EIGHT
            case '9': return '\u0669'; // ARABIC-INDIC DIGIT NINE

            case '%': return '\u066A'; // ARABIC PERCENT SIGN
            // the Traditional Arabic font does not contain this character
            // case '.': return '\u066B'; // ARABIC DECIMAL SEPARATOR
            case ',': return '\u060C'; // ARABIC COMMA
            case '-': return '\u0640'; // ARABIC TATWEEL
            case '\'': return '\u0652'; // ARABIC SUKUN
            case '"': return '\u0651'; // ARABIC SHADDA
            case ';': return '\u061B'; // ARABIC SEMICOLON
            case '?': return '\u061F'; // ARABIC QUESTION MARK

            case 'a': return '\u0627'; // ARABIC LETTER ALEF
            case 'A': return '\u0639'; // ARABIC LETTER AIN
            case 'b': return '\u0628'; // ARABIC LETTER BEH
            case 'B': return '\u0628'; // ARABIC LETTER BEH
            case 'c': return '\u0635'; // ARABIC LETTER SAD
            case 'C': return '\u0635'; // ARABIC LETTER SAD
            case 'd': return '\u062F'; // ARABIC LETTER DAL
            case 'D': return '\u0630'; // ARABIC LETTER THAL
            case 'e': //return '\u064E'; // ARABIC FATHA
            case 'E': //return '\u064B'; // ARABIC FATHATAN
            case 'f': return '\u0641'; // ARABIC LETTER FEH
            case 'F': return '\u0641'; // ARABIC LETTER FEH
            case 'g': return '\u063A'; // ARABIC LETTER GHAIN
            case 'G': return '\u063A'; // ARABIC LETTER GHAIN
            case 'h': return '\u062D'; // ARABIC LETTER HAH
            case 'H': return '\u0647'; // ARABIC LETTER HEH
            case 'i': //return '\u0650'; // ARABIC KASRA
            case 'I': //return '\u064D'; // ARABIC KASRATAN
            case 'j': return '\u062C'; // ARABIC LETTER JEEM
            case 'J': return '\u062C'; // ARABIC LETTER JEEM
            case 'k': return '\u0643'; // ARABIC LETTER KAF
            case 'K': return '\u062E'; // ARABIC LETTER KHAH
            case 'l': return '\u0644'; // ARABIC LETTER LAM
            case 'L': return '\u0644'; // ARABIC LETTER LAM
            case 'm': return '\u0645'; // ARABIC LETTER MEEM
            case 'M': return '\u0645'; // ARABIC LETTER MEEM
            case 'n': return '\u0646'; // ARABIC LETTER NOON
            case 'N': return '\u0646'; // ARABIC LETTER NOON
            case 'o': //return '\u064F'; // ARABIC DAMMA
            case 'O': //return '\u064F'; // ARABIC DAMMA
            case 'p': return '\u0628'; // ARABIC LETTER BEH
            case 'P': return '\u0628'; // ARABIC LETTER BEH
            case 'q': return '\u0642'; // ARABIC LETTER QAF
            case 'Q': return '\u0642'; // ARABIC LETTER QAF
            case 'r': return '\u0631'; // ARABIC LETTER REH
            case 'R': return '\u0631'; // ARABIC LETTER REH
            case 's': return '\u0633'; // ARABIC LETTER SEEN
            case 'S': return '\u0634'; // ARABIC LETTER SHEEN
            case 't': return '\u062A'; // ARABIC LETTER TEH
            case 'T': return '\u062B'; // ARABIC LETTER THEH
            case 'U': //return '\u064C'; // ARABIC DAMMATAN
            case 'u': //return '\u064F'; // ARABIC DAMMA
            case 'v': return '\u0641'; // ARABIC LETTER FEH
            case 'V': return '\u0641'; // ARABIC LETTER FEH
            case 'w': return '\u0648'; // ARABIC LETTER WAW
            case 'W': return '\u0648'; // ARABIC LETTER WAW
            case 'x': return '\u0633'; // ARABIC LETTER SEEN
            case 'X': return '\u0633'; // ARABIC LETTER SEEN
            case 'y': return '\u064A'; // ARABIC LETTER YEH
            case 'Y': return '\u064A'; // ARABIC LETTER YEH
            case 'z': return '\u0632'; // ARABIC LETTER ZAIN
            case 'Z': return '\u0638'; // ARABIC LETTER ZAH
        }

        return c;
    }
}
