[Indic] Apply 'cfar' for Khmer

Mark stuff after a pre-base reordering Ro 'cfar'.  Used in Khmer.
This allows distinguishing the following cases with MS Khmer fonts:

  U+1784,U+17D2,U+179A,U+17D2,U+1782
  U+1784,U+17D2,U+1782,U+17D2,U+179A
This commit is contained in:
Behdad Esfahbod 2012-07-17 13:55:10 -04:00
parent 55f70ebfb9
commit 0201e0a464
2 changed files with 16 additions and 2 deletions

View File

@ -154,6 +154,7 @@ indic_basic_features[] =
{HB_TAG('h','a','l','f'), false},
{HB_TAG('a','b','v','f'), false},
{HB_TAG('p','s','t','f'), false},
{HB_TAG('c','f','a','r'), false},
{HB_TAG('c','j','c','t'), false},
{HB_TAG('v','a','t','u'), true},
};
@ -169,6 +170,7 @@ enum {
HALF,
ABVF,
PSTF,
CFAR,
CJCT,
VATU
};
@ -547,8 +549,18 @@ initial_reordering_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buff
if (is_halant_or_coeng (info[i]) &&
info[i + 1].indic_category() == OT_Ra)
{
info[i].mask |= basic_mask_array[PREF];
info[i + 1].mask |= basic_mask_array[PREF];
info[i++].mask |= basic_mask_array[PREF];
info[i++].mask |= basic_mask_array[PREF];
/* Mark the subsequent stuff with 'cfar'. Used in Khmer.
* Read the feature spec.
* This allows distinguishing the following cases with MS Khmer fonts:
* U+1784,U+17D2,U+179A,U+17D2,U+1782
* U+1784,U+17D2,U+1782,U+17D2,U+179A
*/
for (; i < end; i++)
info[i].mask |= basic_mask_array[CFAR];
break;
}
}

View File

@ -10,3 +10,5 @@
រ្ឥ
ងឹ្ឈ
ង្ឈឹ
ង្គ្រ
ង្រ្គ