unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Font height issue
@ 2016-02-25 19:34 Tassilo Horn
  2016-02-25 19:49 ` Marcin Borkowski
  2016-02-25 20:04 ` Eli Zaretskii
  0 siblings, 2 replies; 4+ messages in thread
From: Tassilo Horn @ 2016-02-25 19:34 UTC (permalink / raw)
  To: emacs-devel

Hi all,

I have the problem that the font I want to use in Emacs (PragmataPro in
size 10, sizes 9 or 11 seem to be not affected) seems to have slightly
different heights in the regular and the bold version, or at least Emacs
thinks so.  As a result, when modes change text to/from regular to bold
or vice versa dynamically (e.g., show-paren-mode with a bold
show-paren-match face), the height of the line changes which is
extremely annoying.

When I searched the net I found many others having this kind of issue
with different fonts (like DejaVu Sans Mono), too, and I also found this
workaround

  https://www.reddit.com/r/emacs/comments/3zto22/i_sort_of_fixed_a_font_rendering_bug_of_emacs/

suggesting this patch:

--8<---------------cut here---------------start------------->8---
diff --git a/src/xftfont.c b/src/xftfont.c
index 110f99a..95e7e52 100644
--- a/src/xftfont.c
+++ b/src/xftfont.c
@@ -395,16 +395,16 @@ xftfont_open (struct frame *f, Lisp_Object entity, int pixel_size)
 
   font->ascent = xftfont->ascent;
   font->descent = xftfont->descent;
-  if (pixel_size >= 5)
-    {
-      /* The above condition is a dirty workaround because
-        XftTextExtents8 behaves strangely for some fonts
-        (e.g. "Dejavu Sans Mono") when pixel_size is less than 5. */
-      if (font->ascent < extents.y)
-       font->ascent = extents.y;
-      if (font->descent < extents.height - extents.y)
-       font->descent = extents.height - extents.y;
-    }
+  /* if (pixel_size >= 5) */
+  /*   { */
+  /*     /\* The above condition is a dirty workaround because */
+  /*    XftTextExtents8 behaves strangely for some fonts */
+  /*    (e.g. "Dejavu Sans Mono") when pixel_size is less than 5. *\/ */
+  /*     if (font->ascent < extents.y) */
+  /*   font->ascent = extents.y; */
+  /*     if (font->descent < extents.height - extents.y) */
+  /*   font->descent = extents.height - extents.y; */
+  /*   } */
   font->height = font->ascent + font->descent;
 
   if (XINT (AREF (entity, FONT_SIZE_INDEX)) == 0)
--8<---------------cut here---------------end--------------->8---

And indeed, that does solve the issue for me.  Now the regular and the
bold version are displayed with the same height.

I have no idea about font handling, so I cannot tell if the above DTRT.
However, it fixes an annoying issue that seems to happen only with
Emacs.  Somewhere on the net I've read that Emacs seems to be the only
one being correct, i.e., it displays what the font says, and if the bold
version of a font is higher than the regular one, that's a (mis)feature
of the font.

Anyhow, since the results can be annoying and apparently not so few
users are affected, can we have a customize option for that?

Bye,
Tassilo



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-02-25 20:07 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-25 19:34 Font height issue Tassilo Horn
2016-02-25 19:49 ` Marcin Borkowski
2016-02-25 20:04 ` Eli Zaretskii
2016-02-25 20:07   ` Tassilo Horn

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).