]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / tools / misc / src / com / ibm / icu / dev / tool / ime / indic / BengaliInputMethodDescriptor.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2000-2004, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 \r
8 package com.ibm.icu.dev.tool.ime.indic;\r
9 \r
10 import java.util.Locale;\r
11 \r
12 public class BengaliInputMethodDescriptor extends IndicIMDescriptor\r
13 {\r
14     private static final Locale BENGALI = new Locale("bn", "IN");\r
15 \r
16     public BengaliInputMethodDescriptor() {\r
17     super(BENGALI, "Bengali");\r
18     }\r
19     \r
20     private static char[] keyboardMap;\r
21     private static char[][] substitutionTable;\r
22     private static char[] joinWithNukta;\r
23     private static char[] nuktaForm;\r
24 \r
25     protected IndicInputMethodImpl getImpl()  {\r
26     if (keyboardMap == null) {\r
27         keyboardMap = new char[] {\r
28         /* 00 */ '\u0000',\r
29         /* 01 */ '\u0001',\r
30         /* 02 */ '\u0002',\r
31         /* 03 */ '\u0003',\r
32         /* 04 */ '\u0004',\r
33         /* 05 */ '\u0005',\r
34         /* 06 */ '\u0006',\r
35         /* 07 */ '\u0007',\r
36         /* 08 */ '\u0008',\r
37         /* 09 */ '\u0009',\r
38         /* 0A */ '\012',\r
39         /* 0B */ '\u000B',\r
40         /* 0C */ '\u000C',\r
41         /* 0D */ '\015',\r
42         /* 0E */ '\u000E',\r
43         /* 0F */ '\u000F',\r
44         /* 10 */ '\u0010',\r
45         /* 11 */ '\u0011',\r
46         /* 12 */ '\u0012',\r
47         /* 13 */ '\u0013',\r
48         /* 14 */ '\u0014',\r
49         /* 15 */ '\u0015',\r
50         /* 16 */ '\u0016',\r
51         /* 17 */ '\u0017',\r
52         /* 18 */ '\u0018',\r
53         /* 19 */ '\u0019',\r
54         /* 1A */ '\u001A',\r
55         /* 1B */ '\u001B',\r
56         /* 1C */ '\u001C',\r
57         /* 1D */ '\u001D',\r
58         /* 1E */ '\u001E',\r
59         /* 1F */ '\u001F',\r
60         /* 20 */ '\u0020',\r
61         /* 21 */ '\uFFFF',   // '!'\r
62         /* 22 */ '\u09A0',   // '"'\r
63         /* 23 */ '\uFF00',   // '#'\r
64         /* 24 */ '\uFF01',   // '$'\r
65         /* 25 */ '\uFF02',   // '%'\r
66         /* 26 */ '\uFF04',   // '&'\r
67         /* 27 */ '\u099F',   // '''\r
68         /* 28 */ '\u0028',   // '('\r
69         /* 29 */ '\u0029',   // ')'\r
70         /* 2A */ '\uFF05',   // '*'\r
71         /* 2B */ '\u098B',   // '+'\r
72         /* 2C */ '\u002C',   // ','\r
73         /* 2D */ '\u002D',   // '-'\r
74         /* 2E */ '\u002E',   // '.'\r
75         /* 2F */ '\u09DF',   // '/'\r
76         /* 30 */ '\u09E6',   // '0'\r
77         /* 31 */ '\u09E7',   // '1'\r
78         /* 32 */ '\u09E8',   // '2'\r
79         /* 33 */ '\u09E9',   // '3'\r
80         /* 34 */ '\u09EA',   // '4'\r
81         /* 35 */ '\u09EB',   // '5'\r
82         /* 36 */ '\u09EC',   // '6'\r
83         /* 37 */ '\u09ED',   // '7'\r
84         /* 38 */ '\u09EE',   // '8'\r
85         /* 39 */ '\u09EF',   // '9'\r
86         /* 3A */ '\u099B',   // ':'\r
87         /* 3B */ '\u099A',   // ';'\r
88         /* 3C */ '\u09B7',   // '<'\r
89         /* 3D */ '\u09C3',   // '='\r
90         /* 3E */ '\u0964',   // '>'  (Devanagari danda)\r
91         /* 3F */ '\u09AF',   // '?'\r
92         /* 40 */ '\uFFFF',   // '@'\r
93         /* 41 */ '\u0993',   // 'A'\r
94         /* 42 */ '\uFFFF',   // 'B'\r
95         /* 43 */ '\u09A3',   // 'C'\r
96         /* 44 */ '\u0985',   // 'D'\r
97         /* 45 */ '\u0986',   // 'E'\r
98         /* 46 */ '\u0987',   // 'F'\r
99         /* 47 */ '\u0989',   // 'G'\r
100         /* 48 */ '\u09AB',   // 'H'\r
101         /* 49 */ '\u0998',   // 'I'\r
102         /* 4A */ '\uFFFF',   // 'J'\r
103         /* 4B */ '\u0996',   // 'K'\r
104         /* 4C */ '\u09A5',   // 'L'\r
105         /* 4D */ '\u09B6',   // 'M'\r
106         /* 4E */ '\uFFFF',   // 'N'\r
107         /* 4F */ '\u09A7',   // 'O'\r
108         /* 50 */ '\u099D',   // 'P'\r
109         /* 51 */ '\u0994',   // 'Q'\r
110         /* 52 */ '\u0988',   // 'R'\r
111         /* 53 */ '\u098F',   // 'S'\r
112         /* 54 */ '\u098A',   // 'T'\r
113         /* 55 */ '\u0999',   // 'U'\r
114         /* 56 */ '\uFFFF',   // 'V'\r
115         /* 57 */ '\u0990',   // 'W'\r
116         /* 58 */ '\u0981',   // 'X'\r
117         /* 59 */ '\u09AD',   // 'Y'\r
118         /* 5A */ '\uFFFF',   // 'Z'\r
119         /* 5B */ '\u09A1',   // '['\r
120         /* 5C */ '\uFFFF',   // '\'\r
121         /* 5D */ '\u09BC',   // ']'\r
122         /* 5E */ '\uFF03',   // '^'\r
123         /* 5F */ '\u0983',   // '_'\r
124         /* 60 */ '\uFFFF',   // '`'\r
125         /* 61 */ '\u09CB',   // 'a'\r
126         /* 62 */ '\u09AC',   // 'b' (this is a BA instead of a VA)\r
127         /* 63 */ '\u09AE',   // 'c'\r
128         /* 64 */ '\u09CD',   // 'd'\r
129         /* 65 */ '\u09BE',   // 'e'\r
130         /* 66 */ '\u09BF',   // 'f'\r
131         /* 67 */ '\u09C1',   // 'g'\r
132         /* 68 */ '\u09AA',   // 'h'\r
133         /* 69 */ '\u0997',   // 'i'\r
134         /* 6A */ '\u09B0',   // 'j'\r
135         /* 6B */ '\u0995',   // 'k'\r
136         /* 6C */ '\u09A4',   // 'l'\r
137         /* 6D */ '\u09B8',   // 'm'\r
138         /* 6E */ '\u09B2',   // 'n'\r
139         /* 6F */ '\u09A6',   // 'o'\r
140         /* 70 */ '\u099C',   // 'p'\r
141         /* 71 */ '\u09CC',   // 'q'\r
142         /* 72 */ '\u09C0',   // 'r'\r
143         /* 73 */ '\u09C7',   // 's'\r
144         /* 74 */ '\u09C2',   // 't'\r
145         /* 75 */ '\u09B9',   // 'u'\r
146         /* 76 */ '\u09A8',   // 'v'\r
147         /* 77 */ '\u09C8',   // 'w'\r
148         /* 78 */ '\u0982',   // 'x'\r
149         /* 79 */ '\u09AC',   // 'y' (this is also a BA...)\r
150         /* 7A */ '\uFFFF',   // 'z'\r
151         /* 7B */ '\u09A2',   // '{'\r
152         /* 7C */ '\uFFFF',   // '|'\r
153         /* 7D */ '\u099E',   // '}'\r
154         /* 7E */ '\uFFFF',   // '~'\r
155         /* 7F */ '\u007F'    // '\7f'\r
156         };\r
157 \r
158         char[] RA_SUB = {'\u09CD', '\u09B0'};\r
159         char[] RA_SUP = {'\u09B0', '\u09CD'};\r
160         char[] CONJ_JA_NYA = {'\u099C', '\u09CD', '\u099E'};\r
161         char[] CONJ_TA_RA = {'\u09A4', '\u09CD', '\u09B0'};\r
162         char[] CONJ_KA_SSA = {'\u0995', '\u09CD', '\u09B7'};\r
163         char[] CONJ_SHA_RA = {'\u09B6', '\u09CD', '\u09B0'};\r
164 \r
165         substitutionTable = new char[][] {\r
166         RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA\r
167         };\r
168 \r
169         // The following characters followed by Nukta should be replaced\r
170         // by the corresponding character as defined in ISCII91\r
171         char LETTER_I              = '\u0987';\r
172         char LETTER_II             = '\u0988';\r
173         char LETTER_VOCALIC_R      = '\u098B';\r
174         char LETTER_DDA            = '\u09A1';\r
175         char LETTER_DDHA           = '\u09A2';\r
176         char VOWEL_SIGN_I          = '\u09BF';\r
177         char VOWEL_SIGN_II         = '\u09C0';\r
178         char VOWEL_SIGN_VOCALIC_R  = '\u09C3';\r
179 \r
180         // The following characters replace the above characters followed by Nukta. These\r
181         // are defined in one to one correspondence order.\r
182         char LETTER_VOCALIC_L      = '\u098C';\r
183         char LETTER_VOCALIC_LL     = '\u09E1';\r
184         char LETTER_VOCALIC_RR     = '\u09E0';\r
185         char LETTER_DDDHA          = '\u09DC';\r
186         char LETTER_RHA            = '\u09DD';\r
187         char VOWEL_SIGN_VOCALIC_L  = '\u09E2';\r
188         char VOWEL_SIGN_VOCALIC_LL = '\u09E3';\r
189         char VOWEL_SIGN_VOCALIC_RR = '\u09C4';\r
190 \r
191         joinWithNukta = new char[] {\r
192         LETTER_I,\r
193         LETTER_II,\r
194         LETTER_VOCALIC_R,\r
195         LETTER_DDA,\r
196         LETTER_DDHA,\r
197         VOWEL_SIGN_I,\r
198         VOWEL_SIGN_II,\r
199         VOWEL_SIGN_VOCALIC_R\r
200         };\r
201     \r
202         nuktaForm = new char[] {\r
203         LETTER_VOCALIC_L,\r
204         LETTER_VOCALIC_LL,\r
205         LETTER_VOCALIC_RR,\r
206         LETTER_DDDHA,\r
207         LETTER_RHA,\r
208         VOWEL_SIGN_VOCALIC_L,\r
209         VOWEL_SIGN_VOCALIC_LL,\r
210         VOWEL_SIGN_VOCALIC_RR\r
211         };\r
212     }\r
213 \r
214     return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable);\r
215     }\r
216 }\r