Round instead of trunc
diff --git a/src/hb-ot-layout-gpos-private.hh b/src/hb-ot-layout-gpos-private.hh index e72e7b3..bd72aae 100644 --- a/src/hb-ot-layout-gpos-private.hh +++ b/src/hb-ot-layout-gpos-private.hh
@@ -103,10 +103,10 @@ x_scale = context->font->x_scale; y_scale = context->font->y_scale; /* design units -> fractional pixel */ - if (format & xPlacement) glyph_pos->x_offset += _hb_16dot16_mul_trunc (x_scale, *(SHORT*)values++); - if (format & yPlacement) glyph_pos->y_offset += _hb_16dot16_mul_trunc (y_scale, *(SHORT*)values++); - if (format & xAdvance) glyph_pos->x_advance += _hb_16dot16_mul_trunc (x_scale, *(SHORT*)values++); - if (format & yAdvance) glyph_pos->y_advance += _hb_16dot16_mul_trunc (y_scale, *(SHORT*)values++); + if (format & xPlacement) glyph_pos->x_offset += _hb_16dot16_mul_round (x_scale, *(SHORT*)values++); + if (format & yPlacement) glyph_pos->y_offset += _hb_16dot16_mul_round (y_scale, *(SHORT*)values++); + if (format & xAdvance) glyph_pos->x_advance += _hb_16dot16_mul_round (x_scale, *(SHORT*)values++); + if (format & yAdvance) glyph_pos->y_advance += _hb_16dot16_mul_round (y_scale, *(SHORT*)values++); x_ppem = context->font->x_ppem; y_ppem = context->font->y_ppem; @@ -136,8 +136,8 @@ inline void get_anchor (hb_ot_layout_context_t *context, hb_codepoint_t glyph_id HB_GNUC_UNUSED, hb_position_t *x, hb_position_t *y) const { - *x = _hb_16dot16_mul_trunc (context->font->x_scale, xCoordinate); - *y = _hb_16dot16_mul_trunc (context->font->y_scale, yCoordinate); + *x = _hb_16dot16_mul_round (context->font->x_scale, xCoordinate); + *y = _hb_16dot16_mul_round (context->font->y_scale, yCoordinate); } inline bool sanitize (SANITIZE_ARG_DEF) { @@ -162,8 +162,8 @@ { /* TODO Contour * NOTE only adjust directions with nonzero ppem */ - *x = _hb_16dot16_mul_trunc (context->font->x_scale, xCoordinate); - *y = _hb_16dot16_mul_trunc (context->font->y_scale, yCoordinate); + *x = _hb_16dot16_mul_round (context->font->x_scale, xCoordinate); + *y = _hb_16dot16_mul_round (context->font->y_scale, yCoordinate); } inline bool sanitize (SANITIZE_ARG_DEF) { @@ -187,8 +187,8 @@ inline void get_anchor (hb_ot_layout_context_t *context, hb_codepoint_t glyph_id HB_GNUC_UNUSED, hb_position_t *x, hb_position_t *y) const { - *x = _hb_16dot16_mul_trunc (context->font->x_scale, xCoordinate); - *y = _hb_16dot16_mul_trunc (context->font->y_scale, yCoordinate); + *x = _hb_16dot16_mul_round (context->font->x_scale, xCoordinate); + *y = _hb_16dot16_mul_round (context->font->y_scale, yCoordinate); /* pixel -> fractional pixel */ if (context->font->x_ppem)