Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | /* vi:set ts=8 sts=4 sw=4: |
| 2 | * |
| 3 | * VIM - Vi IMproved by Bram Moolenaar |
| 4 | * |
| 5 | * Do ":help uganda" in Vim to read copying and usage conditions. |
| 6 | * Do ":help credits" in Vim to see a list of people who contributed. |
| 7 | */ |
| 8 | |
| 9 | /* |
Bram Moolenaar | 2539402 | 2007-05-10 19:06:20 +0000 | [diff] [blame^] | 10 | * Farsi characters are categorized into following types: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 11 | * |
| 12 | * TyA (for capital letter representation) |
| 13 | * TyB (for types that look like _X e.g. AYN) |
| 14 | * TyC (for types that look like X_ e.g. YE_) |
| 15 | * TyD (for types that look like _X_ e.g. _AYN_) |
| 16 | * TyE (for types that look like X e.g. RE) |
| 17 | */ |
| 18 | |
| 19 | /* |
| 20 | * Farsi character set definition |
| 21 | */ |
| 22 | |
| 23 | /* |
| 24 | * Begin of the non-standard part |
| 25 | */ |
| 26 | |
| 27 | #define TEE_ 0x80 |
| 28 | #define ALEF_U_H_ 0x81 |
| 29 | #define ALEF_ 0x82 |
| 30 | #define _BE 0x83 |
| 31 | #define _PE 0x84 |
| 32 | #define _TE 0x85 |
| 33 | #define _SE 0x86 |
| 34 | #define _JIM 0x87 |
| 35 | #define _CHE 0x88 |
| 36 | #define _HE_J 0x89 |
| 37 | #define _XE 0x8a |
| 38 | #define _SIN 0x8b |
| 39 | #define _SHIN 0x8c |
| 40 | #define _SAD 0x8d |
| 41 | #define _ZAD 0x8e |
| 42 | #define _AYN 0x8f |
| 43 | #define _AYN_ 0x90 |
| 44 | #define AYN_ 0x91 |
| 45 | #define _GHAYN 0x92 |
| 46 | #define _GHAYN_ 0x93 |
| 47 | #define GHAYN_ 0x94 |
| 48 | #define _FE 0x95 |
| 49 | #define _GHAF 0x96 |
| 50 | #define _KAF 0x97 |
| 51 | #define _GAF 0x98 |
| 52 | #define _LAM 0x99 |
| 53 | #define LA 0x9a |
| 54 | #define _MIM 0x9b |
| 55 | #define _NOON 0x9c |
| 56 | #define _HE 0x9d |
| 57 | #define _HE_ 0x9e |
| 58 | #define _YE 0x9f |
| 59 | #define _IE 0xec |
| 60 | #define IE_ 0xed |
| 61 | #define IE 0xfb |
| 62 | #define _YEE 0xee |
| 63 | #define YEE_ 0xef |
| 64 | #define YE_ 0xff |
| 65 | |
| 66 | /* |
| 67 | * End of the non-standard part |
| 68 | */ |
| 69 | |
| 70 | /* |
| 71 | * Standard part |
| 72 | */ |
| 73 | |
| 74 | #define F_BLANK 0xa0 /* Farsi ' ' (SP) character */ |
| 75 | #define F_PSP 0xa1 /* PSP for capitalizing of a character */ |
| 76 | #define F_PCN 0xa2 /* PCN for redefining of the hamye meaning */ |
| 77 | #define F_EXCL 0xa3 /* Farsi ! character */ |
| 78 | #define F_CURRENCY 0xa4 /* Farsi Rial character */ |
| 79 | #define F_PERCENT 0xa5 /* Farsi % character */ |
| 80 | #define F_PERIOD 0xa6 /* Farsi '.' character */ |
| 81 | #define F_COMMA 0xa7 /* Farsi ',' character */ |
| 82 | #define F_LPARENT 0xa8 /* Farsi '(' character */ |
| 83 | #define F_RPARENT 0xa9 /* Farsi ')' character */ |
| 84 | #define F_MUL 0xaa /* Farsi 'x' character */ |
| 85 | #define F_PLUS 0xab /* Farsi '+' character */ |
| 86 | #define F_BCOMMA 0xac /* Farsi comma character */ |
| 87 | #define F_MINUS 0xad /* Farsi '-' character */ |
| 88 | #define F_DIVIDE 0xae /* Farsi divide (/) character */ |
| 89 | #define F_SLASH 0xaf /* Farsi '/' character */ |
| 90 | |
| 91 | #define FARSI_0 0xb0 |
| 92 | #define FARSI_1 0xb1 |
| 93 | #define FARSI_2 0xb2 |
| 94 | #define FARSI_3 0xb3 |
| 95 | #define FARSI_4 0xb4 |
| 96 | #define FARSI_5 0xb5 |
| 97 | #define FARSI_6 0xb6 |
| 98 | #define FARSI_7 0xb7 |
| 99 | #define FARSI_8 0xb8 |
| 100 | #define FARSI_9 0xb9 |
| 101 | |
| 102 | #define F_DCOLON 0xba /* Farsi ':' character */ |
| 103 | #define F_SEMICOLON 0xbb /* Farsi ';' character */ |
| 104 | #define F_GREATER 0xbc /* Farsi '>' character */ |
| 105 | #define F_EQUALS 0xbd /* Farsi '=' character */ |
| 106 | #define F_LESS 0xbe /* Farsi '<' character */ |
| 107 | #define F_QUESTION 0xbf /* Farsi ? character */ |
| 108 | |
| 109 | #define ALEF_A 0xc0 |
| 110 | #define ALEF 0xc1 |
| 111 | #define HAMZE 0xc2 |
| 112 | #define BE 0xc3 |
| 113 | #define PE 0xc4 |
| 114 | #define TE 0xc5 |
| 115 | #define SE 0xc6 |
| 116 | #define JIM 0xc7 |
| 117 | #define CHE 0xc8 |
| 118 | #define HE_J 0xc9 |
| 119 | #define XE 0xca |
| 120 | #define DAL 0xcb |
| 121 | #define ZAL 0xcc |
| 122 | #define RE 0xcd |
| 123 | #define ZE 0xce |
| 124 | #define JE 0xcf |
| 125 | #define SIN 0xd0 |
| 126 | #define SHIN 0xd1 |
| 127 | #define SAD 0xd2 |
| 128 | #define ZAD 0xd3 |
| 129 | #define _TA 0xd4 |
| 130 | #define _ZA 0xd5 |
| 131 | #define AYN 0xd6 |
| 132 | #define GHAYN 0xd7 |
| 133 | #define FE 0xd8 |
| 134 | #define GHAF 0xd9 |
| 135 | #define KAF 0xda |
| 136 | #define GAF 0xdb |
| 137 | #define LAM 0xdc |
| 138 | #define MIM 0xdd |
| 139 | #define NOON 0xde |
| 140 | #define WAW 0xdf |
| 141 | #define F_HE 0xe0 /* F_ added for name clash with Perl */ |
| 142 | #define YE 0xe1 |
| 143 | #define TEE 0xfc |
| 144 | #define _KAF_H 0xfd |
| 145 | #define YEE 0xfe |
| 146 | |
| 147 | #define F_LBRACK 0xe2 /* Farsi '[' character */ |
| 148 | #define F_RBRACK 0xe3 /* Farsi ']' character */ |
| 149 | #define F_LBRACE 0xe4 /* Farsi '{' character */ |
| 150 | #define F_RBRACE 0xe5 /* Farsi '}' character */ |
| 151 | #define F_LQUOT 0xe6 /* Farsi left quotation character */ |
| 152 | #define F_RQUOT 0xe7 /* Farsi right quotation character */ |
| 153 | #define F_STAR 0xe8 /* Farsi '*' character */ |
| 154 | #define F_UNDERLINE 0xe9 /* Farsi '_' character */ |
| 155 | #define F_PIPE 0xea /* Farsi '|' character */ |
| 156 | #define F_BSLASH 0xeb /* Farsi '\' character */ |
| 157 | |
| 158 | #define MAD 0xf0 |
| 159 | #define JAZR 0xf1 |
| 160 | #define OW 0xf2 |
| 161 | #define MAD_N 0xf3 |
| 162 | #define JAZR_N 0xf4 |
| 163 | #define OW_OW 0xf5 |
| 164 | #define TASH 0xf6 |
| 165 | #define OO 0xf7 |
| 166 | #define ALEF_U_H 0xf8 |
| 167 | #define WAW_H 0xf9 |
| 168 | #define ALEF_D_H 0xfa |
| 169 | |
| 170 | /* |
| 171 | * global definitions |
| 172 | * ================== |
| 173 | */ |
| 174 | |
| 175 | #define SRC_EDT 0 |
| 176 | #define SRC_CMD 1 |
| 177 | |
| 178 | #define AT_CURSOR 0 |
| 179 | |
| 180 | /* |
| 181 | * definitions for the window dependent functions (w_farsi). |
| 182 | */ |
| 183 | #define W_CONV 0x1 |
| 184 | #define W_R_L 0x2 |
| 185 | |
| 186 | |
| 187 | /* special Farsi text messages */ |
| 188 | |
| 189 | EXTERN char_u farsi_text_1[] |
| 190 | #ifdef DO_INIT |
| 191 | = { YE_, _SIN, RE, ALEF_, _FE, ' ', 'V', 'I', 'M', |
| 192 | ' ', F_HE, _BE, ' ', SHIN, RE, _GAF, DAL,' ', NOON, |
| 193 | ALEF_, _YE, ALEF_, _PE, '\0'} |
| 194 | #endif |
| 195 | ; |
| 196 | |
| 197 | EXTERN char_u farsi_text_2[] |
| 198 | #ifdef DO_INIT |
| 199 | = { YE_, _SIN, RE, ALEF_, _FE, ' ', FARSI_3, FARSI_3, |
| 200 | FARSI_4, FARSI_2, ' ', DAL, RE, ALEF, DAL, _NOON, |
| 201 | ALEF_, _TE, _SIN, ALEF, ' ', F_HE, _BE, ' ', SHIN, |
| 202 | RE, _GAF, DAL, ' ', NOON, ALEF_, _YE, ALEF_, _PE, '\0'} |
| 203 | #endif |
| 204 | ; |
| 205 | |
| 206 | EXTERN char_u farsi_text_3[] |
| 207 | #ifdef DO_INIT |
| 208 | = { DAL, WAW, _SHIN, _YE, _MIM, _NOON, ' ', YE_, _NOON, |
| 209 | ALEF_,_BE, _YE, _TE, _SHIN, _PE, ' ', 'R','E','P','L', |
| 210 | 'A','C','E', ' ', NOON, ALEF_, _MIM, RE, _FE, ZE, ALEF, |
| 211 | ' ', 'R', 'E', 'V', 'E', 'R', 'S', 'E', ' ', 'I', 'N', |
| 212 | 'S', 'E', 'R', 'T', ' ', SHIN, WAW, RE, ' ', ALEF_, _BE, |
| 213 | ' ', YE_, _SIN, RE, ALEF_, _FE, ' ', RE, DAL, ' ', RE, |
| 214 | ALEF_, _KAF,' ', MIM, ALEF_, _GAF, _NOON, _HE, '\0'} |
| 215 | #endif |
| 216 | ; |
| 217 | |
| 218 | #if 0 /* not used */ |
| 219 | EXTERN char_u farsi_text_4[] |
| 220 | #ifdef DO_INIT |
| 221 | = { DAL, WAW, _SHIN, _YE, _MIM, _NOON, ' ', YE_, _NOON, |
| 222 | ALEF_, _BE, _YE, _TE, _SHIN, _PE, ' ', '<', 'C','T','R', |
| 223 | 'L','-','B','>', ' ', NOON, ALEF_, _MIM, RE, _FE, ZE, |
| 224 | ALEF, ' ', YE_, _SIN, RE, ALEF_, _FE, ' ', RE, DAL, ' ', |
| 225 | RE, ALEF_, _KAF,' ', MIM, ALEF_, _GAF, _NOON, _HE, '\0'} |
| 226 | #endif |
| 227 | ; |
| 228 | #endif |
| 229 | |
| 230 | EXTERN char_u farsi_text_5[] |
| 231 | #ifdef DO_INIT |
| 232 | = { ' ', YE_, _SIN, RE, ALEF_, _FE, '\0'} |
| 233 | #endif |
| 234 | ; |