|
|
|
@ -109,17 +109,17 @@ indic_features[] = |
|
|
|
|
* These features are applied in order, one at a time, after initial_reordering, |
|
|
|
|
* constrained to the syllable. |
|
|
|
|
*/ |
|
|
|
|
{HB_TAG('n','u','k','t'), F_GLOBAL_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('a','k','h','n'), F_GLOBAL_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('r','p','h','f'), F_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('r','k','r','f'), F_GLOBAL_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('p','r','e','f'), F_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('b','l','w','f'), F_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('a','b','v','f'), F_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('h','a','l','f'), F_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('p','s','t','f'), F_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('v','a','t','u'), F_GLOBAL_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('c','j','c','t'), F_GLOBAL_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('n','u','k','t'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('a','k','h','n'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('r','p','h','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('r','k','r','f'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('p','r','e','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('b','l','w','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('a','b','v','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('h','a','l','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('p','s','t','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('v','a','t','u'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('c','j','c','t'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
/*
|
|
|
|
|
* Other features. |
|
|
|
|
* These features are applied all at once, after final_reordering, constrained |
|
|
|
@ -127,12 +127,12 @@ indic_features[] = |
|
|
|
|
* Default Bengali font in Windows for example has intermixed |
|
|
|
|
* lookups for init,pres,abvs,blws features. |
|
|
|
|
*/ |
|
|
|
|
{HB_TAG('i','n','i','t'), F_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('p','r','e','s'), F_GLOBAL_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('a','b','v','s'), F_GLOBAL_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('b','l','w','s'), F_GLOBAL_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('p','s','t','s'), F_GLOBAL_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('h','a','l','n'), F_GLOBAL_MANUAL_JOINERS}, |
|
|
|
|
{HB_TAG('i','n','i','t'), F_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('p','r','e','s'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('a','b','v','s'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('b','l','w','s'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('p','s','t','s'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
{HB_TAG('h','a','l','n'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE}, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -183,10 +183,10 @@ collect_features_indic (hb_ot_shape_planner_t *plan) |
|
|
|
|
/* Do this before any lookups have been applied. */ |
|
|
|
|
map->add_gsub_pause (setup_syllables_indic); |
|
|
|
|
|
|
|
|
|
map->enable_feature (HB_TAG('l','o','c','l')); |
|
|
|
|
map->enable_feature (HB_TAG('l','o','c','l'), F_PER_SYLLABLE); |
|
|
|
|
/* The Indic specs do not require ccmp, but we apply it here since if
|
|
|
|
|
* there is a use of it, it's typically at the beginning. */ |
|
|
|
|
map->enable_feature (HB_TAG('c','c','m','p')); |
|
|
|
|
map->enable_feature (HB_TAG('c','c','m','p'), F_PER_SYLLABLE); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unsigned int i = 0; |
|
|
|
@ -201,8 +201,6 @@ collect_features_indic (hb_ot_shape_planner_t *plan) |
|
|
|
|
|
|
|
|
|
for (; i < INDIC_NUM_FEATURES; i++) |
|
|
|
|
map->add_feature (indic_features[i]); |
|
|
|
|
|
|
|
|
|
map->add_gsub_pause (_hb_clear_syllables); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|