[buffer] HB_NODISCARD next_glyph()
This commit is contained in:
parent
f4bc7673db
commit
8450f43ae1
|
@ -101,7 +101,7 @@ class ConstraintSet (object):
|
|||
self._indent (depth + 2), cp, index + i, ')' if i == len (self._c) - 1 else ' &&'))
|
||||
s.append ('{}{{\n'.format (indent))
|
||||
for i in range (index):
|
||||
s.append ('{}buffer->next_glyph ();\n'.format (self._indent (depth + 1)))
|
||||
s.append ('{}(void) buffer->next_glyph ();\n'.format (self._indent (depth + 1)))
|
||||
s.append ('{}matched = true;\n'.format (self._indent (depth + 1)))
|
||||
s.append ('{}}}\n'.format (indent))
|
||||
else:
|
||||
|
@ -179,7 +179,7 @@ print ('static void')
|
|||
print ('_output_with_dotted_circle (hb_buffer_t *buffer)')
|
||||
print ('{')
|
||||
print (' _output_dotted_circle (buffer);')
|
||||
print (' buffer->next_glyph ();')
|
||||
print (' (void) buffer->next_glyph ();')
|
||||
print ('}')
|
||||
print ()
|
||||
|
||||
|
@ -211,7 +211,7 @@ for script, constraints in sorted (constraints.items (), key=lambda s_c: script_
|
|||
print (' {')
|
||||
print ('\tbool matched = false;')
|
||||
write (str (constraints))
|
||||
print ('\tbuffer->next_glyph ();')
|
||||
print ('\t(void) buffer->next_glyph ();')
|
||||
print ('\tif (matched) _output_with_dotted_circle (buffer);')
|
||||
print (' }')
|
||||
print (' break;')
|
||||
|
|
|
@ -831,7 +831,7 @@ struct StateTableDriver
|
|||
break;
|
||||
|
||||
if (!(entry.flags & context_t::DontAdvance) || buffer->max_ops-- <= 0)
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
|
||||
if (!c->in_place)
|
||||
|
|
|
@ -262,7 +262,7 @@ struct hb_buffer_t
|
|||
|
||||
/* Copies glyph at idx to output and advance idx.
|
||||
* If there's no output, just advance idx. */
|
||||
bool next_glyph ()
|
||||
HB_NODISCARD bool next_glyph ()
|
||||
{
|
||||
if (have_output)
|
||||
{
|
||||
|
|
|
@ -1043,7 +1043,7 @@ static inline bool ligate_input (hb_ot_apply_context_t *c,
|
|||
hb_min (this_comp, last_num_components);
|
||||
_hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_comp);
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
|
||||
last_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur());
|
||||
|
|
|
@ -1782,7 +1782,7 @@ apply_forward (OT::hb_ot_apply_context_t *c,
|
|||
if (applied)
|
||||
ret = true;
|
||||
else
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -205,7 +205,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
{
|
||||
/* Tone mark follows a valid syllable; move it in front, unless it's zero width. */
|
||||
buffer->unsafe_to_break_from_outbuffer (start, buffer->idx);
|
||||
buffer->next_glyph ();
|
||||
if (unlikely (!buffer->next_glyph ())) break;
|
||||
if (!is_zero_width_char (font, u))
|
||||
{
|
||||
buffer->merge_out_clusters (start, end + 1);
|
||||
|
@ -236,7 +236,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
else
|
||||
{
|
||||
/* No dotted circle available in the font; just leave tone mark untouched. */
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
}
|
||||
start = end = buffer->out_len;
|
||||
|
@ -285,13 +285,13 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
* Set jamo features on the individual glyphs, and advance past them.
|
||||
*/
|
||||
buffer->cur().hangul_shaping_feature() = LJMO;
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
buffer->cur().hangul_shaping_feature() = VJMO;
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (t)
|
||||
{
|
||||
buffer->cur().hangul_shaping_feature() = TJMO;
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
end = start + 3;
|
||||
}
|
||||
else
|
||||
|
@ -354,7 +354,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
*/
|
||||
if (has_glyph && !tindex)
|
||||
{
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
s_len++;
|
||||
}
|
||||
if (unlikely (!buffer->successful))
|
||||
|
@ -382,17 +382,15 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
|
||||
if (has_glyph)
|
||||
{
|
||||
/* We didn't decompose the S, so just advance past it. */
|
||||
/* We didn't decompose the S, so just advance past it and fall through. */
|
||||
end = start + 1;
|
||||
buffer->next_glyph ();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
/* Didn't find a recognizable syllable, so we leave end <= start;
|
||||
* this will prevent tone-mark reordering happening.
|
||||
*/
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
buffer->swap_buffers ();
|
||||
}
|
||||
|
|
|
@ -85,13 +85,13 @@ hb_syllabic_insert_dotted_circles (hb_font_t *font,
|
|||
while (buffer->idx < buffer->len && buffer->successful &&
|
||||
last_syllable == buffer->cur().syllable() &&
|
||||
buffer->cur().complex_var_u8_category() == (unsigned) repha_category)
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
|
||||
(void) buffer->output_info (ginfo);
|
||||
}
|
||||
else
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
buffer->swap_buffers ();
|
||||
}
|
||||
|
|
|
@ -323,16 +323,17 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan,
|
|||
|
||||
buffer->clear_output ();
|
||||
unsigned int count = buffer->len;
|
||||
for (buffer->idx = 0; buffer->idx < count && buffer->successful;)
|
||||
for (buffer->idx = 0; buffer->idx < count /* No need for: && buffer->successful */;)
|
||||
{
|
||||
hb_codepoint_t u = buffer->cur().codepoint;
|
||||
if (likely (!IS_SARA_AM (u))) {
|
||||
buffer->next_glyph ();
|
||||
if (likely (!IS_SARA_AM (u)))
|
||||
{
|
||||
if (unlikely (!buffer->next_glyph ())) break;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Is SARA AM. Decompose and reorder. */
|
||||
if (unlikely (!buffer->output_glyph (NIKHAHIT_FROM_SARA_AM (u)))) break;
|
||||
(void) buffer->output_glyph (NIKHAHIT_FROM_SARA_AM (u));
|
||||
_hb_glyph_info_set_continuation (&buffer->prev());
|
||||
if (unlikely (!buffer->replace_glyph (SARA_AA_FROM_SARA_AM (u)))) break;
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ static void
|
|||
_output_with_dotted_circle (hb_buffer_t *buffer)
|
||||
{
|
||||
_output_dotted_circle (buffer);
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -96,12 +96,12 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
buffer->idx + 2 < count &&
|
||||
0x0907u == buffer->cur (2).codepoint)
|
||||
{
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
matched = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -122,7 +122,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
matched = 0x09E2u == buffer->cur (1).codepoint;
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -158,7 +158,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
}
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -182,7 +182,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
matched = 0x0ABEu == buffer->cur (1).codepoint;
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -200,7 +200,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
matched = 0x0B57u == buffer->cur (1).codepoint;
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -214,7 +214,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
{
|
||||
matched = true;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -237,7 +237,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
matched = 0x0C55u == buffer->cur (1).codepoint;
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -255,7 +255,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
matched = 0x0CCCu == buffer->cur (1).codepoint;
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -281,7 +281,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
}
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -316,7 +316,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
}
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -337,7 +337,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
matched = 0x11042u == buffer->cur (1).codepoint;
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -358,7 +358,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
}
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -384,7 +384,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
}
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -404,7 +404,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
}
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
@ -427,7 +427,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
|
|||
matched = 0x116B2u == buffer->cur (1).codepoint;
|
||||
break;
|
||||
}
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
if (matched) _output_with_dotted_circle (buffer);
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -111,7 +111,7 @@ static inline void
|
|||
next_char (hb_buffer_t *buffer, hb_codepoint_t glyph)
|
||||
{
|
||||
buffer->cur().glyph_index() = glyph;
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
@ -236,24 +236,29 @@ handle_variation_selector_cluster (const hb_ot_shape_normalize_context_t *c,
|
|||
{
|
||||
/* Just pass on the two characters separately, let GSUB do its magic. */
|
||||
set_glyph (buffer->cur(), font);
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
set_glyph (buffer->cur(), font);
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
/* Skip any further variation selectors. */
|
||||
while (buffer->idx < end && unlikely (buffer->unicode->is_variation_selector (buffer->cur().codepoint)))
|
||||
while (buffer->idx < end &&
|
||||
buffer->successful &&
|
||||
unlikely (buffer->unicode->is_variation_selector (buffer->cur().codepoint)))
|
||||
{
|
||||
set_glyph (buffer->cur(), font);
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
set_glyph (buffer->cur(), font);
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
}
|
||||
if (likely (buffer->idx < end)) {
|
||||
if (likely (buffer->idx < end))
|
||||
{
|
||||
set_glyph (buffer->cur(), font);
|
||||
buffer->next_glyph ();
|
||||
(void) buffer->next_glyph ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -430,8 +435,8 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
|
|||
buffer->clear_output ();
|
||||
count = buffer->len;
|
||||
unsigned int starter = 0;
|
||||
buffer->next_glyph ();
|
||||
while (buffer->idx < count && buffer->successful)
|
||||
(void) buffer->next_glyph ();
|
||||
while (buffer->idx < count /* No need for: && buffer->successful */)
|
||||
{
|
||||
hb_codepoint_t composed, glyph;
|
||||
if (/* We don't try to compose a non-mark character with it's preceding starter.
|
||||
|
@ -453,9 +458,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
|
|||
font->get_nominal_glyph (composed, &glyph))
|
||||
{
|
||||
/* Composes. */
|
||||
buffer->next_glyph (); /* Copy to out-buffer. */
|
||||
if (unlikely (!buffer->successful))
|
||||
return;
|
||||
if (unlikely (!buffer->next_glyph ())) break; /* Copy to out-buffer. */
|
||||
buffer->merge_out_clusters (starter, buffer->out_len);
|
||||
buffer->out_len--; /* Remove the second composable. */
|
||||
/* Modify starter and carry on. */
|
||||
|
@ -468,7 +471,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
|
|||
}
|
||||
|
||||
/* Blocked, or doesn't compose. */
|
||||
buffer->next_glyph ();
|
||||
if (unlikely (!buffer->next_glyph ())) break;
|
||||
|
||||
if (info_cc (buffer->prev()) == 0)
|
||||
starter = buffer->out_len - 1;
|
||||
|
|
Loading…
Reference in New Issue