[indic] Allow context when matching for Malayalam new-spec
Test sequence: U+0995,U+09CD,U+09B0 With Nirmala shipped on Windows 10, this failed to form the below form. Works now. Reported by Sairus.
This commit is contained in:
parent
eaf1e93ef1
commit
508cc3d3cf
|
@ -557,8 +557,15 @@ data_create_indic (const hb_ot_shape_plan_t *plan)
|
||||||
indic_plan->virama_glyph = (hb_codepoint_t) -1;
|
indic_plan->virama_glyph = (hb_codepoint_t) -1;
|
||||||
|
|
||||||
/* Use zero-context would_substitute() matching for new-spec of the main
|
/* Use zero-context would_substitute() matching for new-spec of the main
|
||||||
* Indic scripts, and scripts with one spec only, but not for old-specs. */
|
* Indic scripts, and scripts with one spec only, but not for old-specs.
|
||||||
bool zero_context = !indic_plan->is_old_spec;
|
* The new-spec for all dual-spec scripts says zero-context matching happens.
|
||||||
|
*
|
||||||
|
* However, testing with Malayalam shows that old and new spec both allow
|
||||||
|
* context. Testing with Bengali new-spec however shows that it doesn't.
|
||||||
|
* So, the heuristic here is the way it is. It should *only* be changed,
|
||||||
|
* as we discover more cases of what Windows does. DON'T TOUCH OTHERWISE.
|
||||||
|
*/
|
||||||
|
bool zero_context = !indic_plan->is_old_spec && plan->props.script != HB_SCRIPT_MALAYALAM;
|
||||||
indic_plan->rphf.init (&plan->map, HB_TAG('r','p','h','f'), zero_context);
|
indic_plan->rphf.init (&plan->map, HB_TAG('r','p','h','f'), zero_context);
|
||||||
indic_plan->pref.init (&plan->map, HB_TAG('p','r','e','f'), zero_context);
|
indic_plan->pref.init (&plan->map, HB_TAG('p','r','e','f'), zero_context);
|
||||||
indic_plan->blwf.init (&plan->map, HB_TAG('b','l','w','f'), zero_context);
|
indic_plan->blwf.init (&plan->map, HB_TAG('b','l','w','f'), zero_context);
|
||||||
|
|
Loading…
Reference in New Issue