diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2007-05-15 23:09:53 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2007-05-15 23:09:53 +0000 |
commit | ce249eb395f69f134a1769046c68f0a97c237c43 (patch) | |
tree | ed89f4b1314106b7d621a577abbb9d94bfa887a2 /modules | |
parent | 84e145103c786c8764cb18e233806417a7b52013 (diff) | |
download | pango-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.c | 1 | ||||
-rw-r--r-- | modules/arabic/arabic-ot.c | 39 |
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 |