summaryrefslogtreecommitdiff
path: root/src/farsi.h
blob: ccd912ea0d4fffbcc4dc0b71ccddfc5935f774f6 (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
/* 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.
 */

/*
 * 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
		    ;