From 10f964623f003c70f6bdd33423420abda3820ce0 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 9 Aug 2013 09:40:01 -0400 Subject: [PATCH] Round when scaling values Doesn't matter for most users since they should be working in a fixed sub-pixel scale anyway (ie. 22.10, 26.6, 16.16, etc). --- TODO | 2 -- src/hb-font-private.hh | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) 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