static void
hb_form_clusters (hb_buffer_t *buffer)
{
- unsigned int count;
-
- count = buffer->len;
- for (buffer->i = 1; buffer->i < count; buffer->i++)
- if (buffer->unicode->get_general_category (buffer->info[buffer->i].codepoint) == HB_CATEGORY_NON_SPACING_MARK)
- buffer->info[buffer->i].cluster = buffer->info[buffer->i - 1].cluster;
+ unsigned int count = buffer->len;
+ for (unsigned int i = 1; i < count; i++)
+ if (buffer->unicode->get_general_category (buffer->info[i].codepoint) == HB_CATEGORY_NON_SPACING_MARK)
+ buffer->info[i].cluster = buffer->info[i - 1].cluster;
}
static hb_direction_t
static void
hb_mirror_chars (hb_buffer_t *buffer)
{
- unsigned int count;
hb_unicode_get_mirroring_func_t get_mirroring = buffer->unicode->get_mirroring;
if (HB_DIRECTION_IS_FORWARD (buffer->direction))
return;
- count = buffer->len;
- for (buffer->i = 0; buffer->i < count; buffer->i++) {
- buffer->info[buffer->i].codepoint = get_mirroring (buffer->info[buffer->i].codepoint);
+ unsigned int count = buffer->len;
+ for (unsigned int i = 0; i < count; i++) {
+ buffer->info[i].codepoint = get_mirroring (buffer->info[i].codepoint);
}
}
hb_face_t *face,
hb_buffer_t *buffer)
{
- unsigned int count;
-
if (unlikely (!buffer->len))
return;
- count = buffer->len - 1;
- for (buffer->i = 0; buffer->i < count; buffer->i++) {
- if (unlikely (is_variation_selector (buffer->info[buffer->i + 1].codepoint))) {
- buffer->info[buffer->i].codepoint = hb_font_get_glyph (font, face, buffer->info[buffer->i].codepoint, buffer->info[buffer->i + 1].codepoint);
- buffer->i++;
+
+ unsigned int count = buffer->len - 1;
+ for (unsigned int i = 0; i < count; i++) {
+ if (unlikely (is_variation_selector (buffer->info[i + 1].codepoint))) {
+ buffer->info[i].codepoint = hb_font_get_glyph (font, face, buffer->info[i].codepoint, buffer->info[i + 1].codepoint);
+ i++;
} else {
- buffer->info[buffer->i].codepoint = hb_font_get_glyph (font, face, buffer->info[buffer->i].codepoint, 0);
+ buffer->info[i].codepoint = hb_font_get_glyph (font, face, buffer->info[i].codepoint, 0);
}
}
- buffer->info[buffer->i].codepoint = hb_font_get_glyph (font, face, buffer->info[buffer->i].codepoint, 0);
+ buffer->info[count].codepoint = hb_font_get_glyph (font, face, buffer->info[count].codepoint, 0);
}
static void
hb_feature_t *features HB_UNUSED,
unsigned int num_features HB_UNUSED)
{
- unsigned int count;
-
hb_buffer_clear_positions (buffer);
- count = buffer->len;
- for (buffer->i = 0; buffer->i < count; buffer->i++) {
+ unsigned int count = buffer->len;
+ for (unsigned int i = 0; i < count; i++) {
hb_glyph_metrics_t metrics;
- hb_font_get_glyph_metrics (font, face, buffer->info[buffer->i].codepoint, &metrics);
- buffer->pos[buffer->i].x_advance = metrics.x_advance;
- buffer->pos[buffer->i].y_advance = metrics.y_advance;
+ hb_font_get_glyph_metrics (font, face, buffer->info[i].codepoint, &metrics);
+ buffer->pos[i].x_advance = metrics.x_advance;
+ buffer->pos[i].y_advance = metrics.y_advance;
}
}
hb_feature_t *features HB_UNUSED,
unsigned int num_features HB_UNUSED)
{
- unsigned int count;
-
/* TODO Check for kern=0 */
- count = buffer->len;
- for (buffer->i = 1; buffer->i < count; buffer->i++) {
+ unsigned int count = buffer->len;
+ for (unsigned int i = 1; i < count; i++) {
hb_position_t kern, kern1, kern2;
- kern = hb_font_get_kerning (font, face, buffer->info[buffer->i - 1].codepoint, buffer->info[buffer->i].codepoint);
+ kern = hb_font_get_kerning (font, face, buffer->info[i - 1].codepoint, buffer->info[i].codepoint);
kern1 = kern >> 1;
kern2 = kern - kern1;
- buffer->pos[buffer->i - 1].x_advance += kern1;
- buffer->pos[buffer->i].x_advance += kern2;
- buffer->pos[buffer->i].x_offset += kern2;
+ buffer->pos[i - 1].x_advance += kern1;
+ buffer->pos[i].x_advance += kern2;
+ buffer->pos[i].x_offset += kern2;
}
}