Home | History | Annotate | Download | only in src

Lines Matching refs:buffer

110 output_char (hb_buffer_t *buffer, hb_codepoint_t unichar, hb_codepoint_t glyph)
112 buffer->cur().glyph_index() = glyph;
113 buffer->output_glyph (unichar);
114 _hb_glyph_info_set_unicode_props (&buffer->prev(), buffer->unicode);
118 next_char (hb_buffer_t *buffer, hb_codepoint_t glyph)
120 buffer->cur().glyph_index() = glyph;
121 buffer->next_glyph ();
125 skip_char (hb_buffer_t *buffer)
127 buffer->skip_glyph ();
135 hb_buffer_t * const buffer = c->buffer;
145 output_char (buffer, a, a_glyph);
147 output_char (buffer, b, b_glyph);
156 output_char (buffer, b, b_glyph);
163 output_char (buffer, a, a_glyph);
165 output_char (buffer, b, b_glyph);
182 len = c->buffer->unicode->decompose_compatibility (u, decomposed);
191 output_char (c->buffer, decomposed[i], glyphs[i]);
199 hb_buffer_t * const buffer = c->buffer;
203 if (shortest && c->font->get_glyph (buffer->cur().codepoint, 0, &glyph))
204 next_char (buffer, glyph);
205 else if (decompose (c, shortest, buffer->cur().codepoint))
206 skip_char (buffer);
207 else if (!shortest && c->font->get_glyph (buffer->cur().codepoint, 0, &glyph))
208 next_char (buffer, glyph);
209 else if (decompose_compatibility (c, buffer->cur().codepoint))
210 skip_char (buffer);
212 next_char (buffer, glyph); /* glyph is initialized in earlier branches. */
219 hb_buffer_t * const buffer = c->buffer;
221 for (; buffer->idx < end - 1;) {
222 if (unlikely (buffer->unicode->is_variation_selector (buffer->cur(+1).codepoint))) {
224 if (font->get_glyph (buffer->cur().codepoint, buffer->cur(+1).codepoint, &buffer->cur().glyph_index()))
226 buffer->replace_glyphs (2, 1, &buffer->cur().codepoint);
231 set_glyph (buffer->cur(), font);
232 buffer->next_glyph ();
233 set_glyph (buffer->cur(), font);
234 buffer->next_glyph ();
237 while (buffer->idx < end && unlikely (buffer->unicode->is_variation_selector (buffer->cur().codepoint)))
239 set_glyph (buffer->cur(), font);
240 buffer->next_glyph ();
243 set_glyph (buffer->cur(), font);
244 buffer->next_glyph ();
247 if (likely (buffer->idx < end)) {
248 set_glyph (buffer->cur(), font);
249 buffer->next_glyph ();
256 hb_buffer_t * const buffer = c->buffer;
257 for (unsigned int i = buffer->idx; i < end; i++)
258 if (unlikely (buffer->unicode->is_variation_selector (buffer->info[i].codepoint))) {
263 while (buffer->idx < end)
270 if (likely (c->buffer->idx + 1 == end))
289 hb_buffer_t *buffer,
295 buffer,
297 buffer->unicode,
310 * this makes two buffer swaps. We can make it faster by moving the last
317 buffer->clear_output ();
318 count = buffer->len;
319 for (buffer->idx = 0; buffer->idx < count;)
322 for (end = buffer->idx + 1; end < count; end++)
323 if (buffer->cur().cluster != buffer->info[end].cluster)
328 buffer->swap_buffers ();
333 count = buffer->len;
336 if (_hb_glyph_info_get_modified_combining_class (&buffer->info[i]) == 0)
341 if (_hb_glyph_info_get_modified_combining_class (&buffer->info[end]) == 0)
352 hb_bubble_sort (buffer->info + i, end - i, compare_combining_class);
367 buffer->clear_output ();
368 count = buffer->len;
370 buffer->next_glyph ();
371 while (buffer->idx < count)
378 HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&buffer->cur())) &&
381 (starter == buffer->out_len - 1 ||
382 _hb_glyph_info_get_modified_combining_class (&buffer->prev()) < _hb_glyph_info_get_modified_combining_class (&buffer->cur())) &&
385 buffer->out_info[starter].codepoint,
386 buffer->cur().codepoint,
392 buffer->next_glyph (); /* Copy to out-buffer. */
393 if (unlikely (buffer->in_error))
395 buffer->merge_out_clusters (starter, buffer->out_len);
396 buffer->out_len--; /* Remove the second composable. */
398 buffer->out_info[starter].codepoint = composed;
399 buffer->out_info[starter].glyph_index() = glyph;
400 _hb_glyph_info_set_unicode_props (&buffer->out_info[starter], buffer->unicode);
406 buffer->next_glyph ();
408 if (_hb_glyph_info_get_modified_combining_class (&buffer->prev()) == 0)
409 starter = buffer->out_len - 1;
411 buffer->swap_buffers ();