From d55e9c533fececfe4a934fe5a770dbe259d478a0 Mon Sep 17 00:00:00 2001 From: Alp Aker Date: Thu, 28 Jul 2011 14:50:05 -0400 Subject: [PATCH] Fix for raise display property on NS (Bug#8913). * src/nsfont.m (nsfont_open): Remove assignment to voffset and unnecessary vars hshink, expand, hd, full_height, min_height. (nsfont_draw): Use s->ybase as baseline for glyph drawing. * src/nsterm.h (nsfont_info): Remove voffset field. --- src/ChangeLog | 6 ++++++ src/nsfont.m | 18 +++--------------- src/nsterm.h | 1 - 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 3f9c098b99a..f6f64f4211d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -12,6 +12,12 @@ * nsterm.m (ns_dumpglyphs_stretch): Avoid overwriting left fringe or scroll bar (Bug#8470). + * nsfont.m (nsfont_open): Remove assignment to voffset and + unnecessary vars hshink, expand, hd, full_height, min_height. + (nsfont_draw): Use s->ybase as baseline for glyph drawing (Bug#8913). + + * nsterm.h (nsfont_info): Remove voffset field. + 2011-07-28 Alp Aker Implement strike-through and overline on NextStep (Bug#8863). diff --git a/src/nsfont.m b/src/nsfont.m index 3720e9a4615..60f8c5321aa 100644 --- a/src/nsfont.m +++ b/src/nsfont.m @@ -804,8 +804,6 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size) font->props[FONT_FILE_INDEX] = Qnil; { - double expand, hshrink; - float full_height, min_height, hd; const char *fontName = [[nsfont fontName] UTF8String]; int len = strlen (fontName); @@ -837,26 +835,16 @@ nsfont_open (FRAME_PTR f, Lisp_Object font_entity, int pixel_size) [sfont maximumAdvancement].width : ns_char_width (sfont, '0'); brect = [sfont boundingRectForFont]; - full_height = brect.size.height; - min_height = [sfont ascender] - adjusted_descender; - hd = full_height - min_height; - - /* standard height, similar to Carbon. Emacs.app: was 0.5 by default. */ - expand = 0.0; - hshrink = 1.0; font_info->underpos = [sfont underlinePosition]; font_info->underwidth = [sfont underlineThickness]; font_info->size = font->pixel_size; - font_info->voffset = lrint (hshrink * [sfont ascender] + expand * hd / 2); /* max bounds */ - font_info->max_bounds.ascent = - lrint (hshrink * [sfont ascender] + expand * hd/2); + font_info->max_bounds.ascent = lrint ([sfont ascender]); /* Descender is usually negative. Use floor to avoid clipping descenders. */ - font_info->max_bounds.descent = - -lrint (floor(hshrink* adjusted_descender - expand*hd/2)); + font_info->max_bounds.descent = -lrint (floor(adjusted_descender)); font_info->height = font_info->max_bounds.ascent + font_info->max_bounds.descent; font_info->max_bounds.width = lrint (font_info->width); @@ -1165,7 +1153,7 @@ nsfont_draw (struct glyph_string *s, int from, int to, int x, int y, /* set up for character rendering */ - r.origin.y += font->voffset + (s->height - font->height)/2; + r.origin.y = s->ybase; col = (NS_FACE_FOREGROUND (face) != 0 ? ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f) diff --git a/src/nsterm.h b/src/nsterm.h index 227429ed515..6ea9161c922 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -467,7 +467,6 @@ struct nsfont_info #endif char bold, ital; /* convenience flags */ char synthItal; - float voffset; /* mean of ascender/descender offsets */ XCharStruct max_bounds; /* we compute glyph codes and metrics on-demand in blocks of 256 indexed by hibyte, lobyte */ -- 2.39.2