[USE] Implement dotted-circle
This makes USE feature-complete as far as the Indic-like features are concerned.
This commit is contained in:
parent
7ce03ebe7c
commit
40c4a991c7
|
@ -116,6 +116,15 @@ vowel_cluster =
|
|||
final_consonants
|
||||
;
|
||||
|
||||
broken_cluster =
|
||||
R?
|
||||
consonant_modifiers
|
||||
medial_consonants
|
||||
dependent_vowels
|
||||
vowel_modifiers
|
||||
final_consonants
|
||||
;
|
||||
|
||||
number_joiner_terminated_cluster = N VS? (HN N VS?)* H;
|
||||
numeral_cluster = N VS? (HN N VS?)*;
|
||||
symbol_cluster = S VS? SMAbv* SMBlw*;
|
||||
|
@ -129,6 +138,7 @@ main := |*
|
|||
number_joiner_terminated_cluster => { found_syllable (number_joiner_terminated_cluster); };
|
||||
numeral_cluster => { found_syllable (numeral_cluster); };
|
||||
symbol_cluster => { found_syllable (symbol_cluster); };
|
||||
broken_cluster => { found_syllable (broken_cluster); };
|
||||
*|;
|
||||
|
||||
|
||||
|
|
|
@ -160,6 +160,7 @@ enum syllable_type_t {
|
|||
number_joiner_terminated_cluster,
|
||||
numeral_cluster,
|
||||
symbol_cluster,
|
||||
broken_cluster,
|
||||
};
|
||||
|
||||
#include "hb-ot-shape-complex-use-machine.hh"
|
||||
|
@ -317,7 +318,9 @@ reorder_syllable (const hb_ot_shape_plan_t *plan,
|
|||
if (unlikely (!(FLAG_SAFE (syllable_type) &
|
||||
(FLAG (virama_terminated_cluster) |
|
||||
FLAG (consonant_cluster) |
|
||||
FLAG (vowel_cluster)))))
|
||||
FLAG (vowel_cluster) |
|
||||
FLAG (broken_cluster) |
|
||||
0))))
|
||||
return;
|
||||
|
||||
hb_glyph_info_t *info = buffer->info;
|
||||
|
@ -376,7 +379,6 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
hb_font_t *font,
|
||||
hb_buffer_t *buffer)
|
||||
{
|
||||
#if 0
|
||||
/* Note: This loop is extra overhead, but should not be measurable. */
|
||||
bool has_broken_syllables = false;
|
||||
unsigned int count = buffer->len;
|
||||
|
@ -391,6 +393,10 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
return;
|
||||
|
||||
|
||||
hb_codepoint_t dottedcircle_glyph;
|
||||
if (!font->get_glyph (0x25CCu, 0, &dottedcircle_glyph))
|
||||
return;
|
||||
|
||||
hb_glyph_info_t dottedcircle = {0};
|
||||
if (!font->get_glyph (0x25CCu, 0, &dottedcircle.codepoint))
|
||||
return;
|
||||
|
@ -412,6 +418,13 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
info.cluster = buffer->cur().cluster;
|
||||
info.mask = buffer->cur().mask;
|
||||
info.syllable() = buffer->cur().syllable();
|
||||
/* TODO Set glyph_props? */
|
||||
|
||||
/* Insert dottedcircle after possible Repha. */
|
||||
while (buffer->idx < buffer->len &&
|
||||
last_syllable == buffer->cur().syllable() &&
|
||||
buffer->cur().use_category() == USE_R)
|
||||
buffer->next_glyph ();
|
||||
|
||||
buffer->output_info (info);
|
||||
}
|
||||
|
@ -420,7 +433,6 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
}
|
||||
|
||||
buffer->swap_buffers ();
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue