Lines Matching full:clusters
321 ALLOCATE_ARRAY (hb_graphite2_cluster_t, clusters, buffer->len); in _hb_graphite2_shape()
326 hb_memset (clusters, 0, sizeof (clusters[0]) * buffer->len); in _hb_graphite2_shape()
329 clusters[0].cluster = buffer->info[0].cluster; in _hb_graphite2_shape()
338 clusters[0].advance = gr_seg_advance_X(seg) * xscale - curradv; in _hb_graphite2_shape()
341 clusters[0].advance = 0; in _hb_graphite2_shape()
348 while (clusters[ci].base_char > before && ci) in _hb_graphite2_shape()
350 clusters[ci-1].num_chars += clusters[ci].num_chars; in _hb_graphite2_shape()
351 clusters[ci-1].num_glyphs += clusters[ci].num_glyphs; in _hb_graphite2_shape()
352 clusters[ci-1].advance += clusters[ci].advance; in _hb_graphite2_shape()
356 …if (gr_slot_can_insert_before (is) && clusters[ci].num_chars && before >= clusters[ci].base_char +… in _hb_graphite2_shape()
358 hb_graphite2_cluster_t *c = clusters + ci + 1; in _hb_graphite2_shape()
359 c->base_char = clusters[ci].base_char + clusters[ci].num_chars; in _hb_graphite2_shape()
373 clusters[ci].advance += origin_X - curradv; in _hb_graphite2_shape()
378 clusters[ci].num_glyphs++; in _hb_graphite2_shape()
380 if (clusters[ci].base_char + clusters[ci].num_chars < after + 1) in _hb_graphite2_shape()
381 clusters[ci].num_chars = after + 1 - clusters[ci].base_char; in _hb_graphite2_shape()
385 clusters[ci].advance += curradv; in _hb_graphite2_shape()
387 clusters[ci].advance += gr_seg_advance_X(seg) * xscale - curradv; in _hb_graphite2_shape()
392 for (unsigned int j = 0; j < clusters[i].num_glyphs; ++j) in _hb_graphite2_shape()
394 hb_glyph_info_t *info = &buffer->info[clusters[i].base_glyph + j]; in _hb_graphite2_shape()
395 info->codepoint = gids[clusters[i].base_glyph + j]; in _hb_graphite2_shape()
396 info->cluster = clusters[i].cluster; in _hb_graphite2_shape()
397 info->var1.i32 = clusters[i].advance; // all glyphs in the cluster get the same advance in _hb_graphite2_shape()