提交 5e720710 编写于 作者: B Behdad Esfahbod

[Indic] Stop looking for base upon seeing joiners

Not sure where this is documented, but I remember this being the desired
behavior.

test-shape-complex failures are down from 48 to 46.  Meh.
上级 28168399
...@@ -439,11 +439,15 @@ found_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t ...@@ -439,11 +439,15 @@ found_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t
* base consonants. * base consonants.
*/ */
unsigned int base = 0; unsigned int base = end;
/* -> starting from the end of the syllable, move backwards */ /* -> starting from the end of the syllable, move backwards */
i = end; i = end;
unsigned int limit = start + (info[start].indic_category() == OT_Ra ? 2 : 0); unsigned int limit = start;
if (info[start].indic_category() == OT_Ra && start + 2 <= end) {
limit += 2;
base = start;
};
do { do {
i--; i--;
/* -> until a consonant is found */ /* -> until a consonant is found */
...@@ -476,6 +480,9 @@ found_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t ...@@ -476,6 +480,9 @@ found_consonant_syllable (const hb_ot_map_t *map, hb_buffer_t *buffer, hb_mask_t
* be the base. */ * be the base. */
base = i; base = i;
} }
else
if (is_joiner (info[i]))
break;
} while (i > limit); } while (i > limit);
if (base < start) if (base < start)
base = start; /* Just in case... */ base = start; /* Just in case... */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册