blob: 3a948d04412be15d10f663da49953912678387bf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
|
/* vi:set ts=8 sts=4 sw=4:
*
* VIM - Vi IMproved by Bram Moolenaar
*
* Do ":help uganda" in Vim to read copying and usage conditions.
* Do ":help credits" in Vim to see a list of people who contributed.
*/
/*
* Arabic characters are categorized into following types:
*
* Isolated - iso-8859-6 form char denoted with a_*
* Initial - unicode form-B start char denoted with a_i_*
* Medial - unicode form-B middle char denoted with a_m_*
* Final - unicode form-B final char denoted with a_f_*
* Stand-Alone - unicode form-B isolated char denoted with a_s_* (NOT USED)
*
* --
*
* Author: Nadim Shaikli & Isam Bayazidi
* - (based on Unicode)
*
*/
/*
* Arabic ISO-10646-1 character set definition
*/
/*
* Arabic ISO-8859-6 (subset of 10646; 0600 - 06FF)
*/
#define a_COMMA 0x060C
#define a_SEMICOLON 0x061B
#define a_QUESTION 0x061F
#define a_HAMZA 0x0621
#define a_ALEF_MADDA 0x0622
#define a_ALEF_HAMZA_ABOVE 0x0623
#define a_WAW_HAMZA 0x0624
#define a_ALEF_HAMZA_BELOW 0x0625
#define a_YEH_HAMZA 0x0626
#define a_ALEF 0x0627
#define a_BEH 0x0628
#define a_TEH_MARBUTA 0x0629
#define a_TEH 0x062a
#define a_THEH 0x062b
#define a_JEEM 0x062c
#define a_HAH 0x062d
#define a_KHAH 0x062e
#define a_DAL 0x062f
#define a_THAL 0x0630
#define a_REH 0x0631
#define a_ZAIN 0x0632
#define a_SEEN 0x0633
#define a_SHEEN 0x0634
#define a_SAD 0x0635
#define a_DAD 0x0636
#define a_TAH 0x0637
#define a_ZAH 0x0638
#define a_AIN 0x0639
#define a_GHAIN 0x063a
#define a_TATWEEL 0x0640
#define a_FEH 0x0641
#define a_QAF 0x0642
#define a_KAF 0x0643
#define a_LAM 0x0644
#define a_MEEM 0x0645
#define a_NOON 0x0646
#define a_HEH 0x0647
#define a_WAW 0x0648
#define a_ALEF_MAKSURA 0x0649
#define a_YEH 0x064a
#define a_FATHATAN 0x064b
#define a_DAMMATAN 0x064c
#define a_KASRATAN 0x064d
#define a_FATHA 0x064e
#define a_DAMMA 0x064f
#define a_KASRA 0x0650
#define a_SHADDA 0x0651
#define a_SUKUN 0x0652
#define a_MADDA_ABOVE 0x0653
#define a_HAMZA_ABOVE 0x0654
#define a_HAMZA_BELOW 0x0655
#define a_ZERO 0x0660
#define a_ONE 0x0661
#define a_TWO 0x0662
#define a_THREE 0x0663
#define a_FOUR 0x0664
#define a_FIVE 0x0665
#define a_SIX 0x0666
#define a_SEVEN 0x0667
#define a_EIGHT 0x0668
#define a_NINE 0x0669
#define a_PERCENT 0x066a
#define a_DECIMAL 0x066b
#define a_THOUSANDS 0x066c
#define a_STAR 0x066d
#define a_MINI_ALEF 0x0670
/* Rest of 8859-6 does not relate to Arabic */
/*
* Arabic Presentation Form-B (subset of 10646; FE70 - FEFF)
*
* s -> isolated
* i -> initial
* m -> medial
* f -> final
*
*/
#define a_s_FATHATAN 0xfe70
#define a_m_TATWEEL_FATHATAN 0xfe71
#define a_s_DAMMATAN 0xfe72
#define a_s_KASRATAN 0xfe74
#define a_s_FATHA 0xfe76
#define a_m_FATHA 0xfe77
#define a_s_DAMMA 0xfe78
#define a_m_DAMMA 0xfe79
#define a_s_KASRA 0xfe7a
#define a_m_KASRA 0xfe7b
#define a_s_SHADDA 0xfe7c
#define a_m_SHADDA 0xfe7d
#define a_s_SUKUN 0xfe7e
#define a_m_SUKUN 0xfe7f
#define a_s_HAMZA 0xfe80
#define a_s_ALEF_MADDA 0xfe81
#define a_f_ALEF_MADDA 0xfe82
#define a_s_ALEF_HAMZA_ABOVE 0xfe83
#define a_f_ALEF_HAMZA_ABOVE 0xfe84
#define a_s_WAW_HAMZA 0xfe85
#define a_f_WAW_HAMZA 0xfe86
#define a_s_ALEF_HAMZA_BELOW 0xfe87
#define a_f_ALEF_HAMZA_BELOW 0xfe88
#define a_s_YEH_HAMZA 0xfe89
#define a_f_YEH_HAMZA 0xfe8a
#define a_i_YEH_HAMZA 0xfe8b
#define a_m_YEH_HAMZA 0xfe8c
#define a_s_ALEF 0xfe8d
#define a_f_ALEF 0xfe8e
#define a_s_BEH 0xfe8f
#define a_f_BEH 0xfe90
#define a_i_BEH 0xfe91
#define a_m_BEH 0xfe92
#define a_s_TEH_MARBUTA 0xfe93
#define a_f_TEH_MARBUTA 0xfe94
#define a_s_TEH 0xfe95
#define a_f_TEH 0xfe96
#define a_i_TEH 0xfe97
#define a_m_TEH 0xfe98
#define a_s_THEH 0xfe99
#define a_f_THEH 0xfe9a
#define a_i_THEH 0xfe9b
#define a_m_THEH 0xfe9c
#define a_s_JEEM 0xfe9d
#define a_f_JEEM 0xfe9e
#define a_i_JEEM 0xfe9f
#define a_m_JEEM 0xfea0
#define a_s_HAH 0xfea1
#define a_f_HAH 0xfea2
#define a_i_HAH 0xfea3
#define a_m_HAH 0xfea4
#define a_s_KHAH 0xfea5
#define a_f_KHAH 0xfea6
#define a_i_KHAH 0xfea7
#define a_m_KHAH 0xfea8
#define a_s_DAL 0xfea9
#define a_f_DAL 0xfeaa
#define a_s_THAL 0xfeab
#define a_f_THAL 0xfeac
#define a_s_REH 0xfead
#define a_f_REH 0xfeae
#define a_s_ZAIN 0xfeaf
#define a_f_ZAIN 0xfeb0
#define a_s_SEEN 0xfeb1
#define a_f_SEEN 0xfeb2
#define a_i_SEEN 0xfeb3
#define a_m_SEEN 0xfeb4
#define a_s_SHEEN 0xfeb5
#define a_f_SHEEN 0xfeb6
#define a_i_SHEEN 0xfeb7
#define a_m_SHEEN 0xfeb8
#define a_s_SAD 0xfeb9
#define a_f_SAD 0xfeba
#define a_i_SAD 0xfebb
#define a_m_SAD 0xfebc
#define a_s_DAD 0xfebd
#define a_f_DAD 0xfebe
#define a_i_DAD 0xfebf
#define a_m_DAD 0xfec0
#define a_s_TAH 0xfec1
#define a_f_TAH 0xfec2
#define a_i_TAH 0xfec3
#define a_m_TAH 0xfec4
#define a_s_ZAH 0xfec5
#define a_f_ZAH 0xfec6
#define a_i_ZAH 0xfec7
#define a_m_ZAH 0xfec8
#define a_s_AIN 0xfec9
#define a_f_AIN 0xfeca
#define a_i_AIN 0xfecb
#define a_m_AIN 0xfecc
#define a_s_GHAIN 0xfecd
#define a_f_GHAIN 0xfece
#define a_i_GHAIN 0xfecf
#define a_m_GHAIN 0xfed0
#define a_s_FEH 0xfed1
#define a_f_FEH 0xfed2
#define a_i_FEH 0xfed3
#define a_m_FEH 0xfed4
#define a_s_QAF 0xfed5
#define a_f_QAF 0xfed6
#define a_i_QAF 0xfed7
#define a_m_QAF 0xfed8
#define a_s_KAF 0xfed9
#define a_f_KAF 0xfeda
#define a_i_KAF 0xfedb
#define a_m_KAF 0xfedc
#define a_s_LAM 0xfedd
#define a_f_LAM 0xfede
#define a_i_LAM 0xfedf
#define a_m_LAM 0xfee0
#define a_s_MEEM 0xfee1
#define a_f_MEEM 0xfee2
#define a_i_MEEM 0xfee3
#define a_m_MEEM 0xfee4
#define a_s_NOON 0xfee5
#define a_f_NOON 0xfee6
#define a_i_NOON 0xfee7
#define a_m_NOON 0xfee8
#define a_s_HEH 0xfee9
#define a_f_HEH 0xfeea
#define a_i_HEH 0xfeeb
#define a_m_HEH 0xfeec
#define a_s_WAW 0xfeed
#define a_f_WAW 0xfeee
#define a_s_ALEF_MAKSURA 0xfeef
#define a_f_ALEF_MAKSURA 0xfef0
#define a_s_YEH 0xfef1
#define a_f_YEH 0xfef2
#define a_i_YEH 0xfef3
#define a_m_YEH 0xfef4
#define a_s_LAM_ALEF_MADDA_ABOVE 0xfef5
#define a_f_LAM_ALEF_MADDA_ABOVE 0xfef6
#define a_s_LAM_ALEF_HAMZA_ABOVE 0xfef7
#define a_f_LAM_ALEF_HAMZA_ABOVE 0xfef8
#define a_s_LAM_ALEF_HAMZA_BELOW 0xfef9
#define a_f_LAM_ALEF_HAMZA_BELOW 0xfefa
#define a_s_LAM_ALEF 0xfefb
#define a_f_LAM_ALEF 0xfefc
#define a_BYTE_ORDER_MARK 0xfeff
/* Range of Arabic characters that might be shaped. */
#define ARABIC_CHAR(c) ((c) >= a_HAMZA && (c) <= a_MINI_ALEF)
|