aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYAMAMOTO Mitsuharu2015-06-05 09:44:40 +0900
committerYAMAMOTO Mitsuharu2015-06-05 09:44:40 +0900
commit7c9a2ef84579e88447e8cdf46b6f38d83d0a8cc0 (patch)
treee72d5dfd14943c4daced4aab65c19189bcbdc766 /src
parentdcf18b5c84fc9704bb2d1cfd01519710f105d126 (diff)
downloademacs-7c9a2ef84579e88447e8cdf46b6f38d83d0a8cc0.tar.gz
emacs-7c9a2ef84579e88447e8cdf46b6f38d83d0a8cc0.zip
* src/ftfont.c (ftfont_open2): Round divisions by upEM.
Diffstat (limited to 'src')
-rw-r--r--src/ftfont.c16
1 files 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,
1179 bool scalable; 1179 bool scalable;
1180 int spacing; 1180 int spacing;
1181 int i; 1181 int i;
1182 int upEM; 1182 double upEM;
1183 1183
1184 val = assq_no_quit (QCfont_entity, AREF (entity, FONT_EXTRA_INDEX)); 1184 val = assq_no_quit (QCfont_entity, AREF (entity, FONT_EXTRA_INDEX));
1185 if (! CONSP (val)) 1185 if (! CONSP (val))
@@ -1235,9 +1235,9 @@ ftfont_open2 (struct frame *f,
1235 && XINT (AREF (entity, FONT_AVGWIDTH_INDEX)) == 0); 1235 && XINT (AREF (entity, FONT_AVGWIDTH_INDEX)) == 0);
1236 if (scalable) 1236 if (scalable)
1237 { 1237 {
1238 font->ascent = ft_face->ascender * size / upEM; 1238 font->ascent = ft_face->ascender * size / upEM + 0.5;
1239 font->descent = - ft_face->descender * size / upEM; 1239 font->descent = - ft_face->descender * size / upEM + 0.5;
1240 font->height = ft_face->height * size / upEM; 1240 font->height = ft_face->height * size / upEM + 0.5;
1241 } 1241 }
1242 else 1242 else
1243 { 1243 {
@@ -1255,7 +1255,7 @@ ftfont_open2 (struct frame *f,
1255#endif /* FC_DUAL */ 1255#endif /* FC_DUAL */
1256 ) 1256 )
1257 font->min_width = font->average_width = font->space_width 1257 font->min_width = font->average_width = font->space_width
1258 = (scalable ? ft_face->max_advance_width * size / upEM 1258 = (scalable ? ft_face->max_advance_width * size / upEM + 0.5
1259 : ft_face->size->metrics.max_advance >> 6); 1259 : ft_face->size->metrics.max_advance >> 6);
1260 else 1260 else
1261 { 1261 {
@@ -1285,8 +1285,10 @@ ftfont_open2 (struct frame *f,
1285 font->vertical_centering = 0; 1285 font->vertical_centering = 0;
1286 if (scalable) 1286 if (scalable)
1287 { 1287 {
1288 font->underline_position = -ft_face->underline_position * size / upEM; 1288 font->underline_position = (-ft_face->underline_position * size / upEM
1289 font->underline_thickness = ft_face->underline_thickness * size / upEM; 1289 + 0.5);
1290 font->underline_thickness = (ft_face->underline_thickness * size / upEM
1291 + 0.5);
1290 } 1292 }
1291 else 1293 else
1292 { 1294 {