From 7c9a2ef84579e88447e8cdf46b6f38d83d0a8cc0 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 5 Jun 2015 09:44:40 +0900 Subject: [PATCH] * src/ftfont.c (ftfont_open2): Round divisions by upEM. --- src/ftfont.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/ftfont.c b/src/ftfont.c index afeaecac60c..b37b404c5ef 100644 --- a/src/ftfont.c +++ b/src/ftfont.c @@ -1179,7 +1179,7 @@ ftfont_open2 (struct frame *f, bool scalable; int spacing; int i; - int upEM; + double upEM; val = assq_no_quit (QCfont_entity, AREF (entity, FONT_EXTRA_INDEX)); if (! CONSP (val)) @@ -1235,9 +1235,9 @@ ftfont_open2 (struct frame *f, && XINT (AREF (entity, FONT_AVGWIDTH_INDEX)) == 0); if (scalable) { - font->ascent = ft_face->ascender * size / upEM; - font->descent = - ft_face->descender * size / upEM; - font->height = ft_face->height * size / upEM; + font->ascent = ft_face->ascender * size / upEM + 0.5; + font->descent = - ft_face->descender * size / upEM + 0.5; + font->height = ft_face->height * size / upEM + 0.5; } else { @@ -1255,7 +1255,7 @@ ftfont_open2 (struct frame *f, #endif /* FC_DUAL */ ) font->min_width = font->average_width = font->space_width - = (scalable ? ft_face->max_advance_width * size / upEM + = (scalable ? ft_face->max_advance_width * size / upEM + 0.5 : ft_face->size->metrics.max_advance >> 6); else { @@ -1285,8 +1285,10 @@ ftfont_open2 (struct frame *f, font->vertical_centering = 0; if (scalable) { - font->underline_position = -ft_face->underline_position * size / upEM; - font->underline_thickness = ft_face->underline_thickness * size / upEM; + font->underline_position = (-ft_face->underline_position * size / upEM + + 0.5); + font->underline_thickness = (ft_face->underline_thickness * size / upEM + + 0.5); } else { -- 2.39.5