]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/richtext/textpanel/HackArabicTransliteration.java
go
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / richtext / textpanel / HackArabicTransliteration.java
1 /*\r
2  * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.\r
3  *\r
4  * The program is provided "as is" without any warranty express or\r
5  * implied, including the warranty of non-infringement and the implied\r
6  * warranties of merchantibility and fitness for a particular purpose.\r
7  * IBM will not be liable for any damages suffered by you as a result\r
8  * of using the Program. In no event will IBM be liable for any\r
9  * special, indirect or consequential damages or lost profits even if\r
10  * IBM has been advised of the possibility of their occurrence. IBM\r
11  * will not be liable for any third party claims against you.\r
12  */\r
13 /*\r
14  *\r
15  * (C) Copyright IBM Corp. 1998, All Rights Reserved\r
16  */\r
17 \r
18 package com.ibm.richtext.textpanel;\r
19 \r
20 /*\r
21 For any incoming character C\r
22 if you can map C using the following FakeArabicTable, return\r
23 FakeArabicTable(C)\r
24 else if C is from A through Z, return FakeArabicTable(lowercase(C))\r
25 else just return C\r
26 \r
27 \r
28 FakeArabicTable is defined by the following mapping\r
29 \r
30 0   0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;\r
31 1   0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;\r
32 2   0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;\r
33 3   0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;\r
34 4   0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;\r
35 5   0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;\r
36 6   0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;\r
37 7   0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;\r
38 8   0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;\r
39 9   0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;\r
40 \r
41 %   066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;\r
42 .   066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;\r
43 ,   060C;ARABIC COMMA;Po;0;R;;;;;N;;;;;\r
44 -   0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;\r
45 '   0652;ARABIC SUKUN;Mn;34;R;;;;;N;;;;;\r
46 "   0651;ARABIC SHADDA;Mn;33;R;;;;;N;ARABIC SHADDAH;;;;\r
47 ;   061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;\r
48 ?   061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;\r
49 \r
50 a   0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;\r
51 A   0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;\r
52 b   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;\r
53 c   0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;\r
54 d   062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;\r
55 D   0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;\r
56 E   064B;ARABIC FATHATAN;Mn;27;R;;;;;N;;;;;\r
57 e   064E;ARABIC FATHA;Mn;30;R;;;;;N;ARABIC FATHAH;;;;\r
58 f   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;\r
59 g   063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;\r
60 h   062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;\r
61 H   0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;\r
62 I   064D;ARABIC KASRATAN;Mn;29;R;;;;;N;;;;;\r
63 i   0650;ARABIC KASRA;Mn;32;R;;;;;N;ARABIC KASRAH;;;;\r
64 j   062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;\r
65 K   062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;\r
66 k   0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;\r
67 l   0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;\r
68 m   0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;\r
69 n   0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;\r
70 o   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;\r
71 p   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;\r
72 q   0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;\r
73 r   0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;\r
74 s   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;\r
75 S   0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;\r
76 t   062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;\r
77 T   062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;\r
78 U   064C;ARABIC DAMMATAN;Mn;28;R;;;;;N;;;;;\r
79 u   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;\r
80 v   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;\r
81 w   0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;\r
82 x   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;\r
83 y   064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;\r
84 z   0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;\r
85 Z   0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;\r
86 \r
87 */\r
88 \r
89 /**\r
90  * This class implements KeyRemap to produce transliterated Arabic\r
91  * characters from Latin-1 characters.\r
92  */\r
93 \r
94 // NOTE: this class eliminates Arabic vowels which look ugly\r
95 // in the font in which we happen to be demo'ing.  It's totally\r
96 // bogus otherwise.\r
97 final class HackArabicTransliteration extends KeyRemap {\r
98 \r
99     static final String COPYRIGHT =\r
100                 "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";\r
101     public char remap(char c) {\r
102 \r
103         switch (c) {\r
104             case '0': return '\u0660'; // ARABIC-INDIC DIGIT ZERO\r
105             case '1': return '\u0661'; // ARABIC-INDIC DIGIT ONE\r
106             case '2': return '\u0662'; // ARABIC-INDIC DIGIT TWO\r
107             case '3': return '\u0663'; // ARABIC-INDIC DIGIT THREE\r
108             case '4': return '\u0664'; // ARABIC-INDIC DIGIT FOUR\r
109             case '5': return '\u0665'; // ARABIC-INDIC DIGIT FIVE\r
110             case '6': return '\u0666'; // ARABIC-INDIC DIGIT SIX\r
111             case '7': return '\u0667'; // ARABIC-INDIC DIGIT SEVEN\r
112             case '8': return '\u0668'; // ARABIC-INDIC DIGIT EIGHT\r
113             case '9': return '\u0669'; // ARABIC-INDIC DIGIT NINE\r
114 \r
115             case '%': return '\u066A'; // ARABIC PERCENT SIGN\r
116             // the Traditional Arabic font does not contain this character\r
117             // case '.': return '\u066B'; // ARABIC DECIMAL SEPARATOR\r
118             case ',': return '\u060C'; // ARABIC COMMA\r
119             case '-': return '\u0640'; // ARABIC TATWEEL\r
120             case '\'': return '\u0652'; // ARABIC SUKUN\r
121             case '"': return '\u0651'; // ARABIC SHADDA\r
122             case ';': return '\u061B'; // ARABIC SEMICOLON\r
123             case '?': return '\u061F'; // ARABIC QUESTION MARK\r
124 \r
125             case 'a': return '\u0627'; // ARABIC LETTER ALEF\r
126             case 'A': return '\u0639'; // ARABIC LETTER AIN\r
127             case 'b': return '\u0628'; // ARABIC LETTER BEH\r
128             case 'B': return '\u0628'; // ARABIC LETTER BEH\r
129             case 'c': return '\u0635'; // ARABIC LETTER SAD\r
130             case 'C': return '\u0635'; // ARABIC LETTER SAD\r
131             case 'd': return '\u062F'; // ARABIC LETTER DAL\r
132             case 'D': return '\u0630'; // ARABIC LETTER THAL\r
133             case 'e': //return '\u064E'; // ARABIC FATHA\r
134             case 'E': //return '\u064B'; // ARABIC FATHATAN\r
135             case 'f': return '\u0641'; // ARABIC LETTER FEH\r
136             case 'F': return '\u0641'; // ARABIC LETTER FEH\r
137             case 'g': return '\u063A'; // ARABIC LETTER GHAIN\r
138             case 'G': return '\u063A'; // ARABIC LETTER GHAIN\r
139             case 'h': return '\u062D'; // ARABIC LETTER HAH\r
140             case 'H': return '\u0647'; // ARABIC LETTER HEH\r
141             case 'i': //return '\u0650'; // ARABIC KASRA\r
142             case 'I': //return '\u064D'; // ARABIC KASRATAN\r
143             case 'j': return '\u062C'; // ARABIC LETTER JEEM\r
144             case 'J': return '\u062C'; // ARABIC LETTER JEEM\r
145             case 'k': return '\u0643'; // ARABIC LETTER KAF\r
146             case 'K': return '\u062E'; // ARABIC LETTER KHAH\r
147             case 'l': return '\u0644'; // ARABIC LETTER LAM\r
148             case 'L': return '\u0644'; // ARABIC LETTER LAM\r
149             case 'm': return '\u0645'; // ARABIC LETTER MEEM\r
150             case 'M': return '\u0645'; // ARABIC LETTER MEEM\r
151             case 'n': return '\u0646'; // ARABIC LETTER NOON\r
152             case 'N': return '\u0646'; // ARABIC LETTER NOON\r
153             case 'o': //return '\u064F'; // ARABIC DAMMA\r
154             case 'O': //return '\u064F'; // ARABIC DAMMA\r
155             case 'p': return '\u0628'; // ARABIC LETTER BEH\r
156             case 'P': return '\u0628'; // ARABIC LETTER BEH\r
157             case 'q': return '\u0642'; // ARABIC LETTER QAF\r
158             case 'Q': return '\u0642'; // ARABIC LETTER QAF\r
159             case 'r': return '\u0631'; // ARABIC LETTER REH\r
160             case 'R': return '\u0631'; // ARABIC LETTER REH\r
161             case 's': return '\u0633'; // ARABIC LETTER SEEN\r
162             case 'S': return '\u0634'; // ARABIC LETTER SHEEN\r
163             case 't': return '\u062A'; // ARABIC LETTER TEH\r
164             case 'T': return '\u062B'; // ARABIC LETTER THEH\r
165             case 'U': //return '\u064C'; // ARABIC DAMMATAN\r
166             case 'u': //return '\u064F'; // ARABIC DAMMA\r
167             case 'v': return '\u0641'; // ARABIC LETTER FEH\r
168             case 'V': return '\u0641'; // ARABIC LETTER FEH\r
169             case 'w': return '\u0648'; // ARABIC LETTER WAW\r
170             case 'W': return '\u0648'; // ARABIC LETTER WAW\r
171             case 'x': return '\u0633'; // ARABIC LETTER SEEN\r
172             case 'X': return '\u0633'; // ARABIC LETTER SEEN\r
173             case 'y': return '\u064A'; // ARABIC LETTER YEH\r
174             case 'Y': return '\u064A'; // ARABIC LETTER YEH\r
175             case 'z': return '\u0632'; // ARABIC LETTER ZAIN\r
176             case 'Z': return '\u0638'; // ARABIC LETTER ZAH\r
177         }\r
178 \r
179         return c;\r
180     }\r
181 }\r