aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/xfaces.c3
-rw-r--r--src/xftfont.c24
2 files changed, 26 insertions, 1 deletions
diff --git a/src/xfaces.c b/src/xfaces.c
index 93d1c471407..3ced1d483c3 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -2677,9 +2677,10 @@ FRAME 0 means change the face on all frames, and change the default
2677 { 2677 {
2678 if (NILP (frame)) 2678 if (NILP (frame))
2679 frame = selected_frame; 2679 frame = selected_frame;
2680 f = XFRAME (frame);
2681 2680
2682 CHECK_LIVE_FRAME (frame); 2681 CHECK_LIVE_FRAME (frame);
2682 f = XFRAME (frame);
2683
2683 lface = lface_from_face_name (f, face, false); 2684 lface = lface_from_face_name (f, face, false);
2684 2685
2685 /* If a frame-local face doesn't exist yet, create one. */ 2686 /* If a frame-local face doesn't exist yet, create one. */
diff --git a/src/xftfont.c b/src/xftfont.c
index 7926325419c..34c6f7d3e42 100644
--- a/src/xftfont.c
+++ b/src/xftfont.c
@@ -395,6 +395,24 @@ xftfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
395 395
396 font->ascent = xftfont->ascent; 396 font->ascent = xftfont->ascent;
397 font->descent = xftfont->descent; 397 font->descent = xftfont->descent;
398 /* The following workaround is unnecessary on most systems, and
399 causes annoying differences in glyph height between regular and
400 bold fonts (see bug#22383). However, with some fonts, such as
401 monaco, removing the workaround results in overlapping vertical
402 space of a line, see bug#23360. As long as the way to reconcile
403 these opposites is not known, we provide a user option to work
404 around the problem. */
405 if (pixel_size >= 5
406 && xft_font_ascent_descent_override)
407 {
408 /* The above condition is a dirty workaround because
409 XftTextExtents8 behaves strangely for some fonts
410 (e.g. "Dejavu Sans Mono") when pixel_size is less than 5. */
411 if (font->ascent < extents.y)
412 font->ascent = extents.y;
413 if (font->descent < extents.height - extents.y)
414 font->descent = extents.height - extents.y;
415 }
398 font->height = font->ascent + font->descent; 416 font->height = font->ascent + font->descent;
399 417
400 if (XINT (AREF (entity, FONT_SIZE_INDEX)) == 0) 418 if (XINT (AREF (entity, FONT_SIZE_INDEX)) == 0)
@@ -733,6 +751,12 @@ syms_of_xftfont (void)
733 DEFSYM (QCembolden, ":embolden"); 751 DEFSYM (QCembolden, ":embolden");
734 DEFSYM (QClcdfilter, ":lcdfilter"); 752 DEFSYM (QClcdfilter, ":lcdfilter");
735 753
754 DEFVAR_BOOL ("xft-font-ascent-descent-override",
755 xft_font_ascent_descent_override,
756 doc: /* Non-nil means override the ascent and descent values for Xft font driver.
757This is needed with some fonts to correct vertical overlap of glyphs. */);
758 xft_font_ascent_descent_override = 0;
759
736 ascii_printable[0] = 0; 760 ascii_printable[0] = 0;
737 761
738 xftfont_driver = ftfont_driver; 762 xftfont_driver = ftfont_driver;