Subject: bug#22780: 25.1.50; wrong average width picked for bold face for 7x13 X11 font

From: [email-masked] (Andrew M. Bishop)
Date: Tue, 14 Mar 2017 19:50:40 +0000

I have also found this problem since I use 7x13 as my default font.
The widening of the bold version of this font makes Emacs version 25
unusable by me.

Using Alex Khesin's test case:

$ emacs -Q --eval '(progn (set-face-font '\''default "7x13") (print (face-font "default")) (print (face-font "bold")))'

I find that these fonts all work correctly (the width is the same for
normal and bold versions):  6x9, 6x10, 6x12, 6x13, 7x14, 8x13, 8x16.

It is only the 7x13 font that does not scale correctly since it gives
different widths (80 compared to 70) for the bold compared to normal
font:

  -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso8859-1
  -misc-fixed-bold-r-normal--13-120-75-75-c-80-iso8859-1

Using 'git bisect' I traced down the change that caused it and
demonstrated that it can be fixed by this patch.

-------------------- src/xfaces.c patch --------------------
diff --git a/src/xfaces.c b/src/xfaces.c
index 5077cb2d94..c898b7886f 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -5485,7 +5485,7 @@ realize_x_face (struct face_cache *cache, Lisp_Object attrs[LFACE_VECTOR_SIZE])
 	}
       if (! FONT_OBJECT_P (attrs[LFACE_FONT_INDEX]))
 	attrs[LFACE_FONT_INDEX]
-	  = font_load_for_lface (f, attrs, Ffont_spec (0, NULL));
+	  = font_load_for_lface (f, attrs, attrs[LFACE_FONT_INDEX]);
       if (FONT_OBJECT_P (attrs[LFACE_FONT_INDEX]))
 	{
 	  face->font = XFONT_OBJECT (attrs[LFACE_FONT_INDEX]);
-------------------- src/xfaces.c patch --------------------

This reverts a patch that was made as part of bug #17973.  The change
in src/font.c that was also made in that bug report seems to not be
relevant.

This is clearly a regression from Emacs 24 but since this change was
made to fix another bug it might be quite difficult to find a change
that works for both.