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

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