diff --git a/TODO b/TODO index ef009e13f..dee6e2e01 100644 --- a/TODO +++ b/TODO @@ -12,8 +12,6 @@ General fixes: - Warn at compile time (and runtime with HB_DEBUG?) if no Unicode / font funcs found / set. -- Do proper rounding when scaling from font space? May be a non-issue. - - Misc features: * init/medi/fina/isol for non-cursive scripts diff --git a/src/hb-font-private.hh b/src/hb-font-private.hh index bdc6259e2..acea1d724 100644 --- a/src/hb-font-private.hh +++ b/src/hb-font-private.hh @@ -461,7 +461,11 @@ struct hb_font_t { } private: - inline hb_position_t em_scale (int16_t v, int scale) { return v * (int64_t) scale / face->get_upem (); } + inline hb_position_t em_scale (int16_t v, int scale) + { + unsigned int upem = face->get_upem (); + return (v * (int64_t) scale + upem / 2) / upem; + } }; #define HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS