Home | History | Annotate | Download | only in src

Lines Matching refs:buffer

167 						   hb_buffer_t  *buffer)
169 unsigned int count = buffer->len;
171 if (_hb_glyph_info_get_general_category (&buffer->info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) {
172 unsigned int combining_class = _hb_glyph_info_get_modified_combining_class (&buffer->info[i]);
173 combining_class = recategorize_combining_class (buffer->info[i].codepoint, combining_class);
174 _hb_glyph_info_set_modified_combining_class (&buffer->info[i], combining_class);
180 zero_mark_advances (hb_buffer_t *buffer,
185 if (_hb_glyph_info_get_general_category (&buffer->info[i]) == HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
187 buffer->pos[i].x_advance = 0;
188 buffer->pos[i].y_advance = 0;
195 hb_buffer_t *buffer,
201 if (!font->get_glyph_extents (buffer->info[i].codepoint,
207 hb_glyph_position_t &pos = buffer->pos[i];
218 if (buffer->props.direction == HB_DIRECTION_LTR) {
221 } else if (buffer->props.direction == HB_DIRECTION_RTL) {
287 hb_buffer_t *buffer,
293 if (!font->get_glyph_extents (buffer->info[base].codepoint,
297 zero_mark_advances (buffer, base + 1, end);
300 base_extents.x_bearing += buffer->pos[base].x_offset;
301 base_extents.y_bearing += buffer->pos[base].y_offset;
303 unsigned int lig_id = get_lig_id (buffer->info[base]);
304 unsigned int num_lig_components = get_lig_num_comps (buffer->info[base]);
307 if (HB_DIRECTION_IS_FORWARD (buffer->props.direction)) {
308 x_offset -= buffer->pos[base].x_advance;
309 y_offset -= buffer->pos[base].y_advance;
317 if (_hb_glyph_info_get_modified_combining_class (&buffer->info[i]))
320 unsigned int this_lig_id = get_lig_id (buffer->info[i]);
321 unsigned int this_lig_component = get_lig_comp (buffer->info[i]) - 1;
344 unsigned int this_combining_class = _hb_glyph_info_get_modified_combining_class (&buffer->info[i]);
351 position_mark (plan, font, buffer, cluster_extents, i, this_combining_class);
353 buffer->pos[i].x_advance = 0;
354 buffer->pos[i].y_advance = 0;
355 buffer->pos[i].x_offset += x_offset;
356 buffer->pos[i].y_offset += y_offset;
359 if (HB_DIRECTION_IS_FORWARD (buffer->props.direction)) {
360 x_offset -= buffer->pos[i].x_advance;
361 y_offset -= buffer->pos[i].y_advance;
363 x_offset += buffer->pos[i].x_advance;
364 y_offset += buffer->pos[i].y_advance;
372 hb_buffer_t *buffer,
381 if (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&buffer->info[i])))
386 if (!HB_UNICODE_GENERAL_CATEGORY_IS_MARK (_hb_glyph_info_get_general_category (&buffer->info[j])))
389 position_around_base (plan, font, buffer, i, j);
398 hb_buffer_t *buffer)
401 unsigned int last_cluster = buffer->info[0].cluster;
402 unsigned int count = buffer->len;
404 if (buffer->info[i].cluster != last_cluster) {
405 position_cluster (plan, font, buffer, start, i);
407 last_cluster = buffer->info[i].cluster;
409 position_cluster (plan, font, buffer, start, count);
417 hb_buffer_t *buffer)
419 unsigned int count = buffer->len;
420 hb_mask_t kern_mask = plan->map.get_1_mask (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction) ?
423 OT::hb_apply_context_t c (1, font, buffer, kern_mask, true/*auto_zwj*/);
426 for (buffer->idx = 0; buffer->idx < count;)
428 OT::hb_apply_context_t::skipping_forward_iterator_t skippy_iter (&c, buffer->idx, 1);
431 buffer->idx++;
436 font->get_glyph_kerning_for_direction (buffer->info[buffer->idx].codepoint,
437 buffer->info[skippy_iter.idx].codepoint,
438 buffer->props.direction,
443 buffer->pos[buffer->idx].x_advance += kern1;
444 buffer->pos[skippy_iter.idx].x_advance += kern2;
445 buffer->pos[skippy_iter.idx].x_offset += kern2;
449 buffer->pos[buffer->idx].y_advance += kern1;
450 buffer->pos[skippy_iter.idx].y_advance += kern2;
451 buffer->pos[skippy_iter.idx].y_offset += kern2;
453 buffer->idx = skippy_iter.idx;