diff --git a/src/hb-ot-layout-private.hh b/src/hb-ot-layout-private.hh index c1ae99fd6..fbaff138d 100644 --- a/src/hb-ot-layout-private.hh +++ b/src/hb-ot-layout-private.hh @@ -70,16 +70,18 @@ struct hb_ot_layout_context_t { struct gpos_t { - unsigned int last; /* the last valid glyph--used with cursive positioning */ + unsigned int last; /* the last matched glyph--used with cursive positioning */ hb_position_t anchor_x; /* the coordinates of the anchor point */ - hb_position_t anchor_y; /* of the last valid glyph */ + hb_position_t anchor_y; /* of the last matched glyph */ } gpos; } info; /* Convert from font-space to user-space */ - /* XXX speed up */ - inline hb_position_t scale_x (int16_t v) { return (int64_t) this->font->x_scale * v / this->face->head_table->get_upem (); } - inline hb_position_t scale_y (int16_t v) { return (int64_t) this->font->y_scale * v / this->face->head_table->get_upem (); } + inline hb_position_t scale_x (int16_t v) { return scale (v, this->font->x_scale); } + inline hb_position_t scale_y (int16_t v) { return scale (v, this->font->y_scale); } + + private: + inline hb_position_t scale (int16_t v, unsigned int scale) { return v * (int64_t) scale / this->face->head_table->get_upem (); } };