Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

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