summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2007-05-15 23:09:53 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2007-05-15 23:09:53 +0000
commitce249eb395f69f134a1769046c68f0a97c237c43 (patch)
treeed89f4b1314106b7d621a577abbb9d94bfa887a2 /modules
parent84e145103c786c8764cb18e233806417a7b52013 (diff)
downloadpango-ce249eb395f69f134a1769046c68f0a97c237c43.tar.gz
Bug 436699 – N'Ko support Patch by Eugeniy Meshcheryakov
2007-05-15 Behdad Esfahbod <behdad@gnome.org> Bug 436699 – N'Ko support Patch by Eugeniy Meshcheryakov * modules/arabic/arabic-fc.c (create): * modules/arabic/arabic-ot.c (Get_Joining_Class): Add N'Ko support to the Arabic module. svn path=/trunk/; revision=2301
Diffstat (limited to 'modules')
-rw-r--r--modules/arabic/arabic-fc.c1
-rw-r--r--modules/arabic/arabic-ot.c39
2 files changed, 40 insertions, 0 deletions
diff --git a/modules/arabic/arabic-fc.c b/modules/arabic/arabic-fc.c
index 8b393fb8..a9bee35b 100644
--- a/modules/arabic/arabic-fc.c
+++ b/modules/arabic/arabic-fc.c
@@ -38,6 +38,7 @@ typedef PangoEngineShapeClass ArabicEngineFcClass ;
static PangoEngineScriptInfo arabic_scripts[] = {
{ PANGO_SCRIPT_ARABIC, "*" },
+ { PANGO_SCRIPT_NKO, "*" }
};
static PangoEngineInfo script_engines[] = {
diff --git a/modules/arabic/arabic-ot.c b/modules/arabic/arabic-ot.c
index ab57fd25..5041bd9d 100644
--- a/modules/arabic/arabic-ot.c
+++ b/modules/arabic/arabic-ot.c
@@ -152,6 +152,42 @@ static const joining_class arabic_supplement[] =
none, none, none, none
};
+/* Here a table of the joining classes for characters in the range
+ * U+07C0 - U+07FF.
+ *
+ * The following character also has a joining class:
+ *
+ * U+200C ZERO WIDTH NON-JOINER -> causing
+ *
+ * All other characters are given the joining class `none'.
+ */
+static const joining_class nko[] =
+{
+ /* U+07C0 */
+ none, none, none, none,
+ none, none, none, none,
+ none, none, dual, dual,
+ dual, dual, dual, dual,
+
+ /* U+07D0 */
+ dual, dual, dual, dual,
+ dual, dual, dual, dual,
+ dual, dual, dual, dual,
+ dual, dual, dual, dual,
+
+ /* U+07E0 */
+ dual, dual, dual, dual,
+ dual, dual, dual, dual,
+ dual, dual, dual, transparent,
+ transparent, transparent, transparent, transparent,
+
+ /* U+07F0 */
+ transparent, transparent, transparent, transparent,
+ none, none, none, none,
+ none, none, causing, none,
+ none, none, none, none,
+};
+
#if 0
struct cgc_
{
@@ -304,6 +340,9 @@ static joining_class Get_Joining_Class (gunichar* string,
else if (string[pos] >= 0x0750 &&
string[pos] < 0x0780)
j = arabic_supplement[string[pos] - 0x0750];
+ else if (string[pos] >= 0x07C0 &&
+ string[pos] < 0x0800)
+ j = nko[string[pos] - 0x07C0];
else if (string[pos] == 0x200D)
return causing;
else