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
|
/* vi:set ts=8 sts=4 sw=4 noet:
*
* 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.
*/
/*
* Farsi characters are categorized into following types:
*
* TyA (for capital letter representation)
* TyB (for types that look like _X e.g. AYN)
* TyC (for types that look like X_ e.g. YE_)
* TyD (for types that look like _X_ e.g. _AYN_)
* TyE (for types that look like X e.g. RE)
*/
/*
* Farsi character set definition
*/
/*
* Begin of the non-standard part
*/
#define TEE_ 0x80
#define ALEF_U_H_ 0x81
#define ALEF_ 0x82
#define _BE 0x83
#define _PE 0x84
#define _TE 0x85
#define _SE 0x86
#define _JIM 0x87
#define _CHE 0x88
#define _HE_J 0x89
#define _XE 0x8a
#define _SIN 0x8b
#define _SHIN 0x8c
#define _SAD 0x8d
#define _ZAD 0x8e
#define _AYN 0x8f
#define _AYN_ 0x90
#define AYN_ 0x91
#define _GHAYN 0x92
#define _GHAYN_ 0x93
#define GHAYN_ 0x94
#define _FE 0x95
#define _GHAF 0x96
#define _KAF 0x97
#define _GAF 0x98
#define _LAM 0x99
#define LA 0x9a
#define _MIM 0x9b
#define _NOON 0x9c
#define _HE 0x9d
#define _HE_ 0x9e
#define _YE 0x9f
#define _IE 0xec
#define IE_ 0xed
#define IE 0xfb
#define _YEE 0xee
#define YEE_ 0xef
#define YE_ 0xff
/*
* End of the non-standard part
*/
/*
* Standard part
*/
#define F_BLANK 0xa0 /* Farsi ' ' (SP) character */
#define F_PSP 0xa1 /* PSP for capitalizing of a character */
#define F_PCN 0xa2 /* PCN for redefining of the hamye meaning */
#define F_EXCL 0xa3 /* Farsi ! character */
#define F_CURRENCY 0xa4 /* Farsi Rial character */
#define F_PERCENT 0xa5 /* Farsi % character */
#define F_PERIOD 0xa6 /* Farsi '.' character */
#define F_COMMA 0xa7 /* Farsi ',' character */
#define F_LPARENT 0xa8 /* Farsi '(' character */
#define F_RPARENT 0xa9 /* Farsi ')' character */
#define F_MUL 0xaa /* Farsi 'x' character */
#define F_PLUS 0xab /* Farsi '+' character */
#define F_BCOMMA 0xac /* Farsi comma character */
#define F_MINUS 0xad /* Farsi '-' character */
#define F_DIVIDE 0xae /* Farsi divide (/) character */
#define F_SLASH 0xaf /* Farsi '/' character */
#define FARSI_0 0xb0
#define FARSI_1 0xb1
#define FARSI_2 0xb2
#define FARSI_3 0xb3
#define FARSI_4 0xb4
#define FARSI_5 0xb5
#define FARSI_6 0xb6
#define FARSI_7 0xb7
#define FARSI_8 0xb8
#define FARSI_9 0xb9
#define F_DCOLON 0xba /* Farsi ':' character */
#define F_SEMICOLON 0xbb /* Farsi ';' character */
#define F_GREATER 0xbc /* Farsi '>' character */
#define F_EQUALS 0xbd /* Farsi '=' character */
#define F_LESS 0xbe /* Farsi '<' character */
#define F_QUESTION 0xbf /* Farsi ? character */
#define ALEF_A 0xc0
#define ALEF 0xc1
#define HAMZE 0xc2
#define BE 0xc3
#define PE 0xc4
#define TE 0xc5
#define SE 0xc6
#define JIM 0xc7
#define CHE 0xc8
#define HE_J 0xc9
#define XE 0xca
#define DAL 0xcb
#define ZAL 0xcc
#define RE 0xcd
#define ZE 0xce
#define JE 0xcf
#define SIN 0xd0
#define SHIN 0xd1
#define SAD 0xd2
#define ZAD 0xd3
#define _TA 0xd4
#define _ZA 0xd5
#define AYN 0xd6
#define GHAYN 0xd7
#define FE 0xd8
#define GHAF 0xd9
#define KAF 0xda
#define GAF 0xdb
#define LAM 0xdc
#define MIM 0xdd
#define NOON 0xde
#define WAW 0xdf
#define F_HE 0xe0 /* F_ added for name clash with Perl */
#define YE 0xe1
#define TEE 0xfc
#define _KAF_H 0xfd
#define YEE 0xfe
#define F_LBRACK 0xe2 /* Farsi '[' character */
#define F_RBRACK 0xe3 /* Farsi ']' character */
#define F_LBRACE 0xe4 /* Farsi '{' character */
#define F_RBRACE 0xe5 /* Farsi '}' character */
#define F_LQUOT 0xe6 /* Farsi left quotation character */
#define F_RQUOT 0xe7 /* Farsi right quotation character */
#define F_STAR 0xe8 /* Farsi '*' character */
#define F_UNDERLINE 0xe9 /* Farsi '_' character */
#define F_PIPE 0xea /* Farsi '|' character */
#define F_BSLASH 0xeb /* Farsi '\' character */
#define MAD 0xf0
#define JAZR 0xf1
#define OW 0xf2
#define MAD_N 0xf3
#define JAZR_N 0xf4
#define OW_OW 0xf5
#define TASH 0xf6
#define OO 0xf7
#define ALEF_U_H 0xf8
#define WAW_H 0xf9
#define ALEF_D_H 0xfa
/*
* global definitions
* ==================
*/
#define SRC_EDT 0
#define SRC_CMD 1
#define AT_CURSOR 0
/*
* definitions for the window dependent functions (w_farsi).
*/
#define W_CONV 0x1
#define W_R_L 0x2
/* special Farsi text messages */
EXTERN char_u farsi_text_1[]
#ifdef DO_INIT
= { YE_, _SIN, RE, ALEF_, _FE, ' ', 'V', 'I', 'M',
' ', F_HE, _BE, ' ', SHIN, RE, _GAF, DAL,' ', NOON,
ALEF_, _YE, ALEF_, _PE, '\0'}
#endif
;
EXTERN char_u farsi_text_2[]
#ifdef DO_INIT
= { YE_, _SIN, RE, ALEF_, _FE, ' ', FARSI_3, FARSI_3,
FARSI_4, FARSI_2, ' ', DAL, RE, ALEF, DAL, _NOON,
ALEF_, _TE, _SIN, ALEF, ' ', F_HE, _BE, ' ', SHIN,
RE, _GAF, DAL, ' ', NOON, ALEF_, _YE, ALEF_, _PE, '\0'}
#endif
;
EXTERN char_u farsi_text_3[]
#ifdef DO_INIT
= { DAL, WAW, _SHIN, _YE, _MIM, _NOON, ' ', YE_, _NOON,
ALEF_,_BE, _YE, _TE, _SHIN, _PE, ' ', 'R','E','P','L',
'A','C','E', ' ', NOON, ALEF_, _MIM, RE, _FE, ZE, ALEF,
' ', 'R', 'E', 'V', 'E', 'R', 'S', 'E', ' ', 'I', 'N',
'S', 'E', 'R', 'T', ' ', SHIN, WAW, RE, ' ', ALEF_, _BE,
' ', YE_, _SIN, RE, ALEF_, _FE, ' ', RE, DAL, ' ', RE,
ALEF_, _KAF,' ', MIM, ALEF_, _GAF, _NOON, _HE, '\0'}
#endif
;
#if 0 /* not used */
EXTERN char_u farsi_text_4[]
#ifdef DO_INIT
= { DAL, WAW, _SHIN, _YE, _MIM, _NOON, ' ', YE_, _NOON,
ALEF_, _BE, _YE, _TE, _SHIN, _PE, ' ', '<', 'C','T','R',
'L','-','B','>', ' ', NOON, ALEF_, _MIM, RE, _FE, ZE,
ALEF, ' ', YE_, _SIN, RE, ALEF_, _FE, ' ', RE, DAL, ' ',
RE, ALEF_, _KAF,' ', MIM, ALEF_, _GAF, _NOON, _HE, '\0'}
#endif
;
#endif
EXTERN char_u farsi_text_5[]
#ifdef DO_INIT
= { ' ', YE_, _SIN, RE, ALEF_, _FE, '\0'}
#endif
;
|