[Indic] One more try at unbreaking Khmer fonts

See comments and discussion on the list.
This commit is contained in:
Behdad Esfahbod 2012-11-21 01:04:15 -05:00
parent e8cfdd7fa8
commit 16c914c2a6
1 changed files with 10 additions and 6 deletions

View File

@ -284,16 +284,20 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
return &_hb_ot_complex_shaper_default;
case HB_SCRIPT_KHMER:
/* If the font has 'liga', let the generic shaper do it. */
if (!planner->map.found_script[0] ||
/* A number of Khmer fonts in the wild don't have a 'pref' feature,
* and as such won't shape properly via the Indic shaper;
* however, they typically have 'liga' / 'clig' features that implement
* the necessary "reordering" by means of ligature substitutions.
* So we send such pref-less fonts through the generic shaper instead. */
if (planner->map.found_script[0] &&
hb_ot_layout_language_find_feature (planner->face, HB_OT_TAG_GSUB,
planner->map.script_index[0],
planner->map.language_index[0],
HB_TAG ('l','i','g','a'), NULL))
return &_hb_ot_complex_shaper_default;
else
HB_TAG ('p','r','e','f'),
NULL))
return &_hb_ot_complex_shaper_indic;
else
return &_hb_ot_complex_shaper_default;
case HB_SCRIPT_MYANMAR:
/* For Myanmar, we only want to use the Indic shaper if the "new" script