diff options
| author | YAMAMOTO Mitsuharu | 2015-06-05 09:44:40 +0900 |
|---|---|---|
| committer | YAMAMOTO Mitsuharu | 2015-06-05 09:44:40 +0900 |
| commit | 7c9a2ef84579e88447e8cdf46b6f38d83d0a8cc0 (patch) | |
| tree | e72d5dfd14943c4daced4aab65c19189bcbdc766 /src | |
| parent | dcf18b5c84fc9704bb2d1cfd01519710f105d126 (diff) | |
| download | emacs-7c9a2ef84579e88447e8cdf46b6f38d83d0a8cc0.tar.gz emacs-7c9a2ef84579e88447e8cdf46b6f38d83d0a8cc0.zip | |
* src/ftfont.c (ftfont_open2): Round divisions by upEM.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ftfont.c | 16 |
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 | { |