view src/arabic.h @ 6795:adb3699fa30c v7.4.719

patch 7.4.719 Problem: Overflow when adding MAXCOL to a pointer. Solution: Subtract pointers instead. (James McCoy)
author Bram Moolenaar <bram@vim.org>
date Mon, 04 May 2015 16:10:26 +0200
parents 1d08aac0aea9
children 4aead6a9b7a9
line wrap: on
line source

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