234 lines · 5.7 KB · C
RawDownload
/* 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		    ;