1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-04 19:10:37 -08:00

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.
This commit is contained in:
Alp Aker 2011-07-28 14:50:05 -04:00 committed by Chong Yidong
parent bf3492a57e
commit d55e9c533f
3 changed files with 9 additions and 16 deletions

View file

@ -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 <alp.tekin.aker@gmail.com>
Implement strike-through and overline on NextStep (Bug#8863).

View file

@ -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)

View file

@ -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 */