summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhaled Hosny <khaledhosny@eglug.org>2012-04-06 20:53:39 +0200
committerKhaled Hosny <khaledhosny@eglug.org>2012-04-06 21:22:51 +0200
commit67069097ffc2cbb4dc839e5a63607344d827593d (patch)
treed48939ffd89af3d9e9e806e2f24b4ac695f3050a
parent020aeadc1a41bea3fa95dfd7ddace50d97b9f78c (diff)
downloadpango-67069097ffc2cbb4dc839e5a63607344d827593d.tar.gz
Update Arabic joining classes to Unicode 6.1.0
-rw-r--r--modules/arabic/arabic-ot.c60
1 files changed, 51 insertions, 9 deletions
diff --git a/modules/arabic/arabic-ot.c b/modules/arabic/arabic-ot.c
index ca8e7005..32532ad0 100644
--- a/modules/arabic/arabic-ot.c
+++ b/modules/arabic/arabic-ot.c
@@ -34,7 +34,7 @@
/*
*
* Here a table of the joining classes for characters in the range
- * U+0620 - U+06FF and U+0750 - U+077F.
+ * U+0620 - U+06FF, U+0750 - U+077F and U+08A0 - U+08FF.
*
* The following character also has a joining class:
*
@@ -47,7 +47,7 @@
static const joining_class arabic[] =
{
/* U+0620 */
- none, none, right, right,
+ dual, none, right, right,
right, right, dual, right,
dual, right, dual, dual,
dual, dual, dual, right,
@@ -55,8 +55,8 @@ static const joining_class arabic[] =
/* U+0630 */
right, right, right, dual,
dual, dual, dual, dual,
- dual, dual, dual, none,
- none, none, none, none,
+ dual, dual, dual, dual,
+ dual, dual, dual, dual,
/* U+0640 */
causing, dual, dual, dual,
@@ -107,16 +107,16 @@ static const joining_class arabic[] =
dual, dual, dual, dual,
/* U+06C0 */
- right, dual, right, right,
+ right, dual, dual, right,
right, right, right, right,
right, right, right, right,
dual, right, dual, right,
/* U+06D0 */
dual, dual, right, right,
- none, right, none, transparent,
- transparent, transparent, transparent, transparent,
+ none, right, transparent, transparent,
transparent, transparent, transparent, transparent,
+ transparent, none, none, transparent,
/* U+06E0 */
transparent, transparent, transparent, transparent,
@@ -143,13 +143,52 @@ static const joining_class arabic_supplement[] =
dual, dual, dual, dual,
dual, dual, dual, dual,
dual, dual, dual, right,
- right, dual, none, none,
+ right, dual, dual, dual,
/* U+0770 */
+ dual, right, dual, right,
+ right, dual, dual, dual,
+ right, right, dual, dual,
+ dual, dual, dual, dual,
+};
+
+static const joining_class arabic_extended_a[] =
+{
+ /* U+08A0 */
+ dual, none, dual, dual,
+ dual, dual, dual, dual,
+ dual, dual, right, right,
+ right, none, none, none,
+
+ /* U+08B0 */
none, none, none, none,
none, none, none, none,
none, none, none, none,
- none, none, none, none
+ none, none, none, none,
+
+ /* U+08C0 */
+ none, none, none, none,
+ none, none, none, none,
+ none, none, none, none,
+ none, none, none, none,
+
+ /* U+08D0 */
+ none, none, none, none,
+ none, none, none, none,
+ none, none, none, none,
+ none, none, none, none,
+
+ /* U+08E0 */
+ none, none, none, none,
+ transparent, transparent, transparent, transparent,
+ transparent, transparent, transparent, transparent,
+ transparent, transparent, transparent, transparent,
+
+ /* U+08F0 */
+ transparent, transparent, transparent, transparent,
+ transparent, transparent, transparent, transparent,
+ transparent, transparent, transparent, transparent,
+ transparent, transparent, transparent, none,
};
/* Here a table of the joining classes for characters in the range
@@ -344,6 +383,9 @@ static joining_class Get_Joining_Class (gunichar* string,
else if (string[pos] >= 0x07C0 &&
string[pos] < 0x0800)
j = nko[string[pos] - 0x07C0];
+ else if (string[pos] >= 0x08A0 &&
+ string[pos] < 0x08FF)
+ j = arabic_extended_a[string[pos] - 0x08A0];
else if (string[pos] == 0x200D)
return causing;
else