[indic] Add BASE_POS_LAST_SINHALA
Previously we planted this into the mode used for Khmer. There's not really much in common between the two, so separate again.
This commit is contained in:
parent
9ac6b01e0c
commit
e10453e6fb
|
@ -277,6 +277,7 @@ set_indic_properties (hb_glyph_info_t &info)
|
||||||
|
|
||||||
enum base_position_t {
|
enum base_position_t {
|
||||||
BASE_POS_FIRST,
|
BASE_POS_FIRST,
|
||||||
|
BASE_POS_LAST_SINHALA,
|
||||||
BASE_POS_LAST
|
BASE_POS_LAST
|
||||||
};
|
};
|
||||||
enum reph_position_t {
|
enum reph_position_t {
|
||||||
|
@ -322,7 +323,8 @@ static const indic_config_t indic_configs[] =
|
||||||
{HB_SCRIPT_TELUGU, true, 0x0C4D,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_EXPLICIT, BLWF_MODE_POST_ONLY},
|
{HB_SCRIPT_TELUGU, true, 0x0C4D,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_EXPLICIT, BLWF_MODE_POST_ONLY},
|
||||||
{HB_SCRIPT_KANNADA, true, 0x0CCD,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_IMPLICIT, BLWF_MODE_POST_ONLY},
|
{HB_SCRIPT_KANNADA, true, 0x0CCD,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_IMPLICIT, BLWF_MODE_POST_ONLY},
|
||||||
{HB_SCRIPT_MALAYALAM, true, 0x0D4D,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_LOG_REPHA,BLWF_MODE_PRE_AND_POST},
|
{HB_SCRIPT_MALAYALAM, true, 0x0D4D,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_LOG_REPHA,BLWF_MODE_PRE_AND_POST},
|
||||||
{HB_SCRIPT_SINHALA, false,0x0DCA,BASE_POS_FIRST,REPH_POS_AFTER_MAIN, REPH_MODE_EXPLICIT, BLWF_MODE_PRE_AND_POST},
|
{HB_SCRIPT_SINHALA, false,0x0DCA,BASE_POS_LAST_SINHALA,
|
||||||
|
REPH_POS_AFTER_MAIN, REPH_MODE_EXPLICIT, BLWF_MODE_PRE_AND_POST},
|
||||||
{HB_SCRIPT_KHMER, false,0x17D2,BASE_POS_FIRST,REPH_POS_DEFAULT, REPH_MODE_VIS_REPHA,BLWF_MODE_PRE_AND_POST},
|
{HB_SCRIPT_KHMER, false,0x17D2,BASE_POS_FIRST,REPH_POS_DEFAULT, REPH_MODE_VIS_REPHA,BLWF_MODE_PRE_AND_POST},
|
||||||
{HB_SCRIPT_JAVANESE, false,0xA9C0,BASE_POS_LAST, REPH_POS_DEFAULT, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST},
|
{HB_SCRIPT_JAVANESE, false,0xA9C0,BASE_POS_LAST, REPH_POS_DEFAULT, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST},
|
||||||
};
|
};
|
||||||
|
@ -782,7 +784,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BASE_POS_FIRST:
|
case BASE_POS_LAST_SINHALA:
|
||||||
{
|
{
|
||||||
/* In scripts without half forms (eg. Khmer), the first consonant is always the base. */
|
/* In scripts without half forms (eg. Khmer), the first consonant is always the base. */
|
||||||
|
|
||||||
|
@ -806,6 +808,21 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
|
||||||
info[i].indic_position() = POS_BELOW_C;
|
info[i].indic_position() = POS_BELOW_C;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case BASE_POS_FIRST:
|
||||||
|
{
|
||||||
|
/* The first consonant is always the base. */
|
||||||
|
|
||||||
|
assert (indic_plan->config->reph_mode == REPH_MODE_VIS_REPHA);
|
||||||
|
|
||||||
|
base = start;
|
||||||
|
|
||||||
|
/* Mark all subsequent consonants as below. */
|
||||||
|
for (unsigned int i = base + 1; i < end; i++)
|
||||||
|
if (is_consonant (info[i]) && info[i].indic_position() == POS_BASE_C)
|
||||||
|
info[i].indic_position() = POS_BELOW_C;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -> If the syllable starts with Ra + Halant (in a script that has Reph)
|
/* -> If the syllable starts with Ra + Halant (in a script that has Reph)
|
||||||
|
|
Loading…
Reference in New Issue