Fill out combining class resetting for fallback shaping Thai/Lao/Tibetan

This commit is contained in:
Behdad Esfahbod 2012-08-09 21:12:30 -04:00
parent a321e1d51e
commit 56c9e7c004
3 changed files with 42 additions and 5 deletions

View File

@ -49,7 +49,9 @@ recategorize_combining_class (unsigned int modified_combining_class)
* from hb-unicode.cc. */ * from hb-unicode.cc. */
switch (modified_combining_class) switch (modified_combining_class)
{ {
/* Hebrew */ /* Hebrew */
case HB_MODIFIED_COMBINING_CLASS_CCC10: /* sheva */ case HB_MODIFIED_COMBINING_CLASS_CCC10: /* sheva */
case HB_MODIFIED_COMBINING_CLASS_CCC11: /* hataf segol */ case HB_MODIFIED_COMBINING_CLASS_CCC11: /* hataf segol */
case HB_MODIFIED_COMBINING_CLASS_CCC12: /* hataf patah */ case HB_MODIFIED_COMBINING_CLASS_CCC12: /* hataf patah */
@ -79,7 +81,9 @@ recategorize_combining_class (unsigned int modified_combining_class)
case HB_MODIFIED_COMBINING_CLASS_CCC21: /* dagesh */ case HB_MODIFIED_COMBINING_CLASS_CCC21: /* dagesh */
break; break;
/* Arabic and Syriac */ /* Arabic and Syriac */
case HB_MODIFIED_COMBINING_CLASS_CCC27: /* fathatan */ case HB_MODIFIED_COMBINING_CLASS_CCC27: /* fathatan */
case HB_MODIFIED_COMBINING_CLASS_CCC28: /* dammatan */ case HB_MODIFIED_COMBINING_CLASS_CCC28: /* dammatan */
case HB_MODIFIED_COMBINING_CLASS_CCC30: /* fatha */ case HB_MODIFIED_COMBINING_CLASS_CCC30: /* fatha */
@ -94,7 +98,39 @@ recategorize_combining_class (unsigned int modified_combining_class)
case HB_MODIFIED_COMBINING_CLASS_CCC32: /* kasra */ case HB_MODIFIED_COMBINING_CLASS_CCC32: /* kasra */
return HB_UNICODE_COMBINING_CLASS_BELOW; return HB_UNICODE_COMBINING_CLASS_BELOW;
/* TODO Thai, Lao, and Tibetan */
/* Thai */
/* Note: to be useful we also need to position U+0E3A that has ccc=9 (virama).
* But viramas can be both above and below based on the codepoint / script. */
case HB_MODIFIED_COMBINING_CLASS_CCC103: /* sara u / sara uu */
return HB_UNICODE_COMBINING_CLASS_BELOW;
case HB_MODIFIED_COMBINING_CLASS_CCC107: /* mai */
return HB_UNICODE_COMBINING_CLASS_ABOVE;
/* Lao */
case HB_MODIFIED_COMBINING_CLASS_CCC118: /* sign u / sign uu */
return HB_UNICODE_COMBINING_CLASS_BELOW;
case HB_MODIFIED_COMBINING_CLASS_CCC122: /* mai */
return HB_UNICODE_COMBINING_CLASS_ABOVE;
/* Tibetan */
case HB_MODIFIED_COMBINING_CLASS_CCC129: /* sign aa */
return HB_UNICODE_COMBINING_CLASS_BELOW;
case HB_MODIFIED_COMBINING_CLASS_CCC130: /* sign i*/
return HB_UNICODE_COMBINING_CLASS_ABOVE;
case HB_MODIFIED_COMBINING_CLASS_CCC132: /* sign u */
return HB_UNICODE_COMBINING_CLASS_BELOW;
} }
return modified_combining_class; return modified_combining_class;

View File

@ -260,8 +260,9 @@ extern HB_INTERNAL const hb_unicode_funcs_t _hb_unicode_funcs_nil;
/* Thai /* Thai
* *
* Modify U+0E38 and U+0E39 (ccc=104) to be reordered before U+0E3A (ccc=9). * Modify U+0E38 and U+0E39 (ccc=103) to be reordered before U+0E3A (ccc=9).
* Uniscribe does this too. * Assign 3, which is unassigned otherwise.
* Uniscribe does this reordering too.
*/ */
#define HB_MODIFIED_COMBINING_CLASS_CCC103 3 /* sara u / sara uu */ #define HB_MODIFIED_COMBINING_CLASS_CCC103 3 /* sara u / sara uu */
#define HB_MODIFIED_COMBINING_CLASS_CCC107 107 /* mai * */ #define HB_MODIFIED_COMBINING_CLASS_CCC107 107 /* mai * */
@ -273,7 +274,7 @@ extern HB_INTERNAL const hb_unicode_funcs_t _hb_unicode_funcs_nil;
/* Tibetan */ /* Tibetan */
#define HB_MODIFIED_COMBINING_CLASS_CCC129 129 /* sign aa */ #define HB_MODIFIED_COMBINING_CLASS_CCC129 129 /* sign aa */
#define HB_MODIFIED_COMBINING_CLASS_CCC130 130 /* sign i */ #define HB_MODIFIED_COMBINING_CLASS_CCC130 130 /* sign i */
#define HB_MODIFIED_COMBINING_CLASS_CCC133 132 /* sign u */ #define HB_MODIFIED_COMBINING_CLASS_CCC132 132 /* sign u */
#endif /* HB_UNICODE_PRIVATE_HH */ #endif /* HB_UNICODE_PRIVATE_HH */

View File

@ -358,7 +358,7 @@ _hb_modified_combining_class[256] =
HB_MODIFIED_COMBINING_CLASS_CCC129, HB_MODIFIED_COMBINING_CLASS_CCC129,
HB_MODIFIED_COMBINING_CLASS_CCC130, HB_MODIFIED_COMBINING_CLASS_CCC130,
131, 131,
HB_MODIFIED_COMBINING_CLASS_CCC133, HB_MODIFIED_COMBINING_CLASS_CCC132,
133, 134, 135, 136, 137, 138, 139, 133, 134, 135, 136, 137, 138, 139,