diff options
Diffstat (limited to 'src/arabic.h')
-rw-r--r-- | src/arabic.h | 258 |
1 files changed, 258 insertions, 0 deletions
diff --git a/src/arabic.h b/src/arabic.h new file mode 100644 index 0000000..cb5cbd1 --- /dev/null +++ b/src/arabic.h @@ -0,0 +1,258 @@ +/* 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. + */ + +/* + * Arabic characters are categorized into following types: + * + * Isolated - iso-8859-6 form char denoted with a_* + * Initial - unicode form-B start char denoted with a_i_* + * Medial - unicode form-B middle char denoted with a_m_* + * Final - unicode form-B final char denoted with a_f_* + * Stand-Alone - unicode form-B isolated char denoted with a_s_* (NOT USED) + * + * -- + * + * Author: Nadim Shaikli & Isam Bayazidi + * - (based on Unicode) + * + */ + +/* + * Arabic ISO-10646-1 character set definition + */ + +/* + * Arabic ISO-8859-6 (subset of 10646; 0600 - 06FF) + */ +#define a_COMMA 0x060C +#define a_SEMICOLON 0x061B +#define a_QUESTION 0x061F +#define a_HAMZA 0x0621 +#define a_ALEF_MADDA 0x0622 +#define a_ALEF_HAMZA_ABOVE 0x0623 +#define a_WAW_HAMZA 0x0624 +#define a_ALEF_HAMZA_BELOW 0x0625 +#define a_YEH_HAMZA 0x0626 +#define a_ALEF 0x0627 +#define a_BEH 0x0628 +#define a_TEH_MARBUTA 0x0629 +#define a_TEH 0x062a +#define a_THEH 0x062b +#define a_JEEM 0x062c +#define a_HAH 0x062d +#define a_KHAH 0x062e +#define a_DAL 0x062f +#define a_THAL 0x0630 +#define a_REH 0x0631 +#define a_ZAIN 0x0632 +#define a_SEEN 0x0633 +#define a_SHEEN 0x0634 +#define a_SAD 0x0635 +#define a_DAD 0x0636 +#define a_TAH 0x0637 +#define a_ZAH 0x0638 +#define a_AIN 0x0639 +#define a_GHAIN 0x063a +#define a_TATWEEL 0x0640 +#define a_FEH 0x0641 +#define a_QAF 0x0642 +#define a_KAF 0x0643 +#define a_LAM 0x0644 +#define a_MEEM 0x0645 +#define a_NOON 0x0646 +#define a_HEH 0x0647 +#define a_WAW 0x0648 +#define a_ALEF_MAKSURA 0x0649 +#define a_YEH 0x064a + +#define a_FATHATAN 0x064b +#define a_DAMMATAN 0x064c +#define a_KASRATAN 0x064d +#define a_FATHA 0x064e +#define a_DAMMA 0x064f +#define a_KASRA 0x0650 +#define a_SHADDA 0x0651 +#define a_SUKUN 0x0652 + +#define a_MADDA_ABOVE 0x0653 +#define a_HAMZA_ABOVE 0x0654 +#define a_HAMZA_BELOW 0x0655 + +#define a_ZERO 0x0660 +#define a_ONE 0x0661 +#define a_TWO 0x0662 +#define a_THREE 0x0663 +#define a_FOUR 0x0664 +#define a_FIVE 0x0665 +#define a_SIX 0x0666 +#define a_SEVEN 0x0667 +#define a_EIGHT 0x0668 +#define a_NINE 0x0669 +#define a_PERCENT 0x066a +#define a_DECIMAL 0x066b +#define a_THOUSANDS 0x066c +#define a_STAR 0x066d +#define a_MINI_ALEF 0x0670 +/* Rest of 8859-6 does not relate to Arabic */ + +/* + * Arabic Presentation Form-B (subset of 10646; FE70 - FEFF) + * + * s -> isolated + * i -> initial + * m -> medial + * f -> final + * + */ +#define a_s_FATHATAN 0xfe70 +#define a_m_TATWEEL_FATHATAN 0xfe71 +#define a_s_DAMMATAN 0xfe72 + +#define a_s_KASRATAN 0xfe74 + +#define a_s_FATHA 0xfe76 +#define a_m_FATHA 0xfe77 +#define a_s_DAMMA 0xfe78 +#define a_m_DAMMA 0xfe79 +#define a_s_KASRA 0xfe7a +#define a_m_KASRA 0xfe7b +#define a_s_SHADDA 0xfe7c +#define a_m_SHADDA 0xfe7d +#define a_s_SUKUN 0xfe7e +#define a_m_SUKUN 0xfe7f + +#define a_s_HAMZA 0xfe80 +#define a_s_ALEF_MADDA 0xfe81 +#define a_f_ALEF_MADDA 0xfe82 +#define a_s_ALEF_HAMZA_ABOVE 0xfe83 +#define a_f_ALEF_HAMZA_ABOVE 0xfe84 +#define a_s_WAW_HAMZA 0xfe85 +#define a_f_WAW_HAMZA 0xfe86 +#define a_s_ALEF_HAMZA_BELOW 0xfe87 +#define a_f_ALEF_HAMZA_BELOW 0xfe88 +#define a_s_YEH_HAMZA 0xfe89 +#define a_f_YEH_HAMZA 0xfe8a +#define a_i_YEH_HAMZA 0xfe8b +#define a_m_YEH_HAMZA 0xfe8c +#define a_s_ALEF 0xfe8d +#define a_f_ALEF 0xfe8e +#define a_s_BEH 0xfe8f +#define a_f_BEH 0xfe90 +#define a_i_BEH 0xfe91 +#define a_m_BEH 0xfe92 +#define a_s_TEH_MARBUTA 0xfe93 +#define a_f_TEH_MARBUTA 0xfe94 +#define a_s_TEH 0xfe95 +#define a_f_TEH 0xfe96 +#define a_i_TEH 0xfe97 +#define a_m_TEH 0xfe98 +#define a_s_THEH 0xfe99 +#define a_f_THEH 0xfe9a +#define a_i_THEH 0xfe9b +#define a_m_THEH 0xfe9c +#define a_s_JEEM 0xfe9d +#define a_f_JEEM 0xfe9e +#define a_i_JEEM 0xfe9f +#define a_m_JEEM 0xfea0 +#define a_s_HAH 0xfea1 +#define a_f_HAH 0xfea2 +#define a_i_HAH 0xfea3 +#define a_m_HAH 0xfea4 +#define a_s_KHAH 0xfea5 +#define a_f_KHAH 0xfea6 +#define a_i_KHAH 0xfea7 +#define a_m_KHAH 0xfea8 +#define a_s_DAL 0xfea9 +#define a_f_DAL 0xfeaa +#define a_s_THAL 0xfeab +#define a_f_THAL 0xfeac +#define a_s_REH 0xfead +#define a_f_REH 0xfeae +#define a_s_ZAIN 0xfeaf +#define a_f_ZAIN 0xfeb0 +#define a_s_SEEN 0xfeb1 +#define a_f_SEEN 0xfeb2 +#define a_i_SEEN 0xfeb3 +#define a_m_SEEN 0xfeb4 +#define a_s_SHEEN 0xfeb5 +#define a_f_SHEEN 0xfeb6 +#define a_i_SHEEN 0xfeb7 +#define a_m_SHEEN 0xfeb8 +#define a_s_SAD 0xfeb9 +#define a_f_SAD 0xfeba +#define a_i_SAD 0xfebb +#define a_m_SAD 0xfebc +#define a_s_DAD 0xfebd +#define a_f_DAD 0xfebe +#define a_i_DAD 0xfebf +#define a_m_DAD 0xfec0 +#define a_s_TAH 0xfec1 +#define a_f_TAH 0xfec2 +#define a_i_TAH 0xfec3 +#define a_m_TAH 0xfec4 +#define a_s_ZAH 0xfec5 +#define a_f_ZAH 0xfec6 +#define a_i_ZAH 0xfec7 +#define a_m_ZAH 0xfec8 +#define a_s_AIN 0xfec9 +#define a_f_AIN 0xfeca +#define a_i_AIN 0xfecb +#define a_m_AIN 0xfecc +#define a_s_GHAIN 0xfecd +#define a_f_GHAIN 0xfece +#define a_i_GHAIN 0xfecf +#define a_m_GHAIN 0xfed0 +#define a_s_FEH 0xfed1 +#define a_f_FEH 0xfed2 +#define a_i_FEH 0xfed3 +#define a_m_FEH 0xfed4 +#define a_s_QAF 0xfed5 +#define a_f_QAF 0xfed6 +#define a_i_QAF 0xfed7 +#define a_m_QAF 0xfed8 +#define a_s_KAF 0xfed9 +#define a_f_KAF 0xfeda +#define a_i_KAF 0xfedb +#define a_m_KAF 0xfedc +#define a_s_LAM 0xfedd +#define a_f_LAM 0xfede +#define a_i_LAM 0xfedf +#define a_m_LAM 0xfee0 +#define a_s_MEEM 0xfee1 +#define a_f_MEEM 0xfee2 +#define a_i_MEEM 0xfee3 +#define a_m_MEEM 0xfee4 +#define a_s_NOON 0xfee5 +#define a_f_NOON 0xfee6 +#define a_i_NOON 0xfee7 +#define a_m_NOON 0xfee8 +#define a_s_HEH 0xfee9 +#define a_f_HEH 0xfeea +#define a_i_HEH 0xfeeb +#define a_m_HEH 0xfeec +#define a_s_WAW 0xfeed +#define a_f_WAW 0xfeee +#define a_s_ALEF_MAKSURA 0xfeef +#define a_f_ALEF_MAKSURA 0xfef0 +#define a_s_YEH 0xfef1 +#define a_f_YEH 0xfef2 +#define a_i_YEH 0xfef3 +#define a_m_YEH 0xfef4 +#define a_s_LAM_ALEF_MADDA_ABOVE 0xfef5 +#define a_f_LAM_ALEF_MADDA_ABOVE 0xfef6 +#define a_s_LAM_ALEF_HAMZA_ABOVE 0xfef7 +#define a_f_LAM_ALEF_HAMZA_ABOVE 0xfef8 +#define a_s_LAM_ALEF_HAMZA_BELOW 0xfef9 +#define a_f_LAM_ALEF_HAMZA_BELOW 0xfefa +#define a_s_LAM_ALEF 0xfefb +#define a_f_LAM_ALEF 0xfefc + +#define a_BYTE_ORDER_MARK 0xfeff + +/* Range of Arabic characters that might be shaped. */ +#define ARABIC_CHAR(c) ((c) >= a_HAMZA && (c) <= a_MINI_ALEF) |