changeset 107114:e5188f4e7403

* nsfont.m (nsfont_open): The system's value for the font descent is negative, so round it down to avoid clipping.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 08 Feb 2010 18:39:01 -0500
parents bb513dfefeaf
children 4f195898e986 f401d10ebfb7
files src/ChangeLog src/nsfont.m
diffstat 2 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Mon Feb 08 18:27:29 2010 -0500
+++ b/src/ChangeLog	Mon Feb 08 18:39:01 2010 -0500
@@ -1,3 +1,8 @@
+2010-02-08  Francis Devereux  <francis@devrx.org>
+
+	* nsfont.m (nsfont_open): The system's value for the font descent
+	is negative, so round it down to avoid clipping.
+
 2010-02-06  Chong Yidong  <cyd@stupidchicken.com>
 
 	* charset.c (load_charset_map_from_file)
--- a/src/nsfont.m	Mon Feb 08 18:27:29 2010 -0500
+++ b/src/nsfont.m	Mon Feb 08 18:39:01 2010 -0500
@@ -844,8 +844,10 @@
     /* max bounds */
     font_info->max_bounds.ascent =
       lrint (hshrink * [sfont ascender] + expand * hd/2);
+    /* [sfont descender] is usually negative.  Use floor to avoid
+       clipping descenders. */
     font_info->max_bounds.descent =
-      -lrint (hshrink* [sfont descender] - expand*hd/2);
+      -lrint (floor(hshrink* [sfont descender] - expand*hd/2));
     font_info->height =
       font_info->max_bounds.ascent + font_info->max_bounds.descent;
     font_info->max_bounds.width = lrint (font_info->width);
@@ -880,8 +882,8 @@
 #endif
 
     /* set up metrics portion of font struct */
-    font->ascent = [sfont ascender];
-    font->descent = -[sfont descender];
+    font->ascent = lrint([sfont ascender]);
+    font->descent = -lrint(floor([sfont descender]));
     font->min_width = ns_char_width(sfont, '|');
     font->space_width = lrint (ns_char_width (sfont, ' '));
     font->average_width = lrint (font_info->width);