
阿拉伯符号
-
2023年3月19日发(作者:槽钢符号)阿拉伯文排版规则
阿拉伯文排版规则
阿拉伯语属阿非罗-亚细亚语系(闪含语系)闪语族。词一般由3
个原生字母构成,可添加前缀,后缀,或使词的内部音位发生变化和
插入其它音位构成新词。
阿拉伯共有28个字母,都是辅音字母,每个字母只代表一个辅音
音素,每个音素只用一个字母表示。对应unicode:0x060C--0x06FE。
阿拉伯语共有8个元音,3个短元音,3个长元音和两个半元音,
短元音是用加在辅音字母上面或下面的符号来表示。这些符号称为
“动符”;长元音和软音是用动符和3个辅音字母来表示的。阿拉伯
语发音符号共有12个(叠音符号不算在内)。普通书报上不加符号。
阿拉伯文字在伊斯兰教的影响下流传很广。波斯文,乌尔都文以
及我国的新疆的维吾尔文等多种文字采用阿拉伯字母。阿拉伯文的字
母没有大写和小写的区分,但有印刷体和书写体的区别,而且除
去五个字母以外,其他23个字母都可以和后面的字母连写,而
且因其在词头,词中和词尾的位置不同,字形也有所变化。阿拉伯文
字的书写方向和中文不同,它是自右向左横着写。因此,阿拉伯文的
书籍和本子都是右开本的。
在换行的时候,一般的,我们需要判断一下是否是整个词,进行
整个词的换行,而不能把词拆成两个部分。阿拉伯文里面的数字仍然
采用从左往右的显示方式。
规则1。
阿拉伯文变形:
根据上面分法,分成first,last,middle,alone,并根据判断是
否是词的前连(前面字符在集合1中),后连(后面字符在集合2中),
中间(即前后连,前面字符在集合1中,后面字符在集合2中)或单
独一个词,进行变形。
据分析,给出变形的数组:分别对应上面的情况。对于其它不在数
组中的,其变形和自身相同。
constWORDArbic_Position[][4]=//first,last,middle,alone
{
{0xfe80,0xfe80,0xfe80,0xfe80},//0x621
{0xfe82,0xfe81,0xfe82,0xfe81},
{0xfe84,0xfe83,0xfe84,0xfe83},
{0xfe86,0xfe85,0xfe86,0xfe85},
{0xfe88,0xfe87,0xfe88,0xfe87},
{0xfe8a,0xfe8b,0xfe8c,0xfe89},
{0xfe8e,0xfe8d,0xfe8e,0xfe8d},
{0xfe90,0xfe91,0xfe92,0xfe8f},//0x628
{0xfe94,0xfe93,0xfe94,0xfe93},
{0xfe96,0xfe97,0xfe98,0xfe95},//0x62A
{0xfe9a,0xfe9b,0xfe9c,0xfe99},
{0xfe9e,0xfe9f,0xfea0,0xfe9d},
{0xfea2,0xfea3,0xfea4,0xfea1},
{0xfea6,0xfea7,0xfea8,0xfea5},
{0xfeaa,0xfea9,0xfeaa,0xfea9},
{0xfeac,0xfeab,0xfeac,0xfeab},//0x630
{0xfeae,0xfead,0xfeae,0xfead},
{0xfeb0,0xfeaf,0xfeb0,0xfeaf},
{0xfeb2,0xfeb3,0xfeb4,0xfeb1},
{0xfeb6,0xfeb7,0xfeb8,0xfeb5},
{0xfeba,0xfebb,0xfebc,0xfeb9},
{0xfebe,0xfebf,0xfec0,0xfebd},
{0xfec2,0xfec3,0xfec4,0xfec1},
{0xfec6,0xfec7,0xfec8,0xfec5},//0x638
{0xfeca,0xfecb,0xfecc,0xfec9},
{0xfece,0xfecf,0xfed0,0xfecd},//0x63A
{0x63b,0x63b,0x63b,0x63b},
{0x63c,0x63c,0x63c,0x63c},
{0x63d,0x63d,0x63d,0x63d},
{0x63e,0x63e,0x63e,0x63e},
{0x63f,0x63f,0x63f,0x63f},
{0x640,0x640,0x640,0x640},//0x640
{0xfed2,0xfed3,0xfed4,0xfed1},
{0xfed6,0xfed7,0xfed8,0xfed5},
{0xfeda,0xfedb,0xfedc,0xfed9},
{0xfede,0xfedf,0xfee0,0xfedd},
{0xfee2,0xfee3,0xfee4,0xfee1},
{0xfee6,0xfee7,0xfee8,0xfee5},
{0xfeea,0xfeeb,0xfeec,0xfee9},
{0xfeee,0xfeed,0xfeee,0xfeed},//0x648
{0xfef0,0xfef3,0xfef4,0xfeef},
{0xfef2,0xfef3,0xfef4,0xfef1},//0x64A
};
判断是否是连接前面的,采用判断该字符前一个字符的判定方法,
方法是,看前一个字符是否在集合set1中。如果在,则是有连接前面
的。集合1如下:
staticU16theSet1[23]={
0x62c,0x62d,0x62e,0x647,0x639,0x63a,0x641,
0x642,
0x62b,0x635,0x636,0x637,0x643,0x645,0x646,
0x62a,
0x644,0x628,0x64a,0x633,0x634,0x638,0x626,
0x640};//0x640新增
判断是否是连接后面的,采用判断该字符后一个字符的判定方法,
方法是,看后一个字符是否在集合set2中。如果在,则是有连接后面
的。集合2如下:
staticU16theSet2[35]={
0x62c,0x62d,0x62e,0x647,0x639,0x63a,0x641,
0x642,
0x62b,0x635,0x636,0x637,0x643,0x645,0x646,
0x62a,
0x644,0x628,0x64a,0x633,0x634,0x638,0x626,
0x627,0x623,0x625,0x622,0x62f,0x630,0x631,
0x632,
0x648,0x624,0x629,0x649,0x640};//0x640新增
规则2。
阿拉伯文连字符规则:
连字符是以0x644开头,后面跟的是0x622,0x623,0x625,
0x627,并根据情况取下面的字符数组0或1,如果0x644前一个字
符是在集合1(同上面的集合1)中间,那么取数组1,否则取数组0。
数组如下:
staticU16arabic_specs[][2]=
{
{0xFEF5,0xFEF6},
{0xFEF7,0xFEF8},
{0xFEF9,0xFEFA},
{0xFEFB,0xFEFC},
};
例1:0x064A,0x0644,0x0622。。。
0x064A的后面一个字符0x0644在集合2中,根据编码规则1得
出它是后连字符(last),故转换成:0xFEF3.
而0x064A在集合1中,故用0xFEF6替代0x06440x0622这两
个编码。
例2:0x0632,0x0644,0x0622。。。
0x0632的后面一个字符0x0644在集合2中,根据编码规则1得
出它是后连字符(last),故转换成:0xFEAF.
而0x0632不在集合1中,故用0xFEF5替代0x06440x0622这
两个编码。