Subject: bug#37473: 27.0.50; antialias setting is not preserved by inheriting

From: Lars Ingebrigtsen <[email-masked]>
Date: Fri, 20 May 2022 12:42:42 +0200

YAMAMOTO Mitsuharu <[email-masked]> writes:

> 1. % emacs -Q -fn monospace:antialias=0 &
>
>    As expected, the normal text in the *scratch* buffer is not
>    antialiased.  But the bold text in the mode line is unexpectedly
>    antialiased.
>
> 2. C-x C-+
>
>    Observe that the scaled text in the *scratch* buffer is
>    unexpectedly antialiased.

I can reproduce this in Emacs 29, too, and

diff --git a/src/xfaces.c b/src/xfaces.c
index 7395ce157e..1939a73d5e 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -5950,7 +5950,7 @@ realize_gui_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]);

Fixes the issue.  But that would bring bug#17973 back, I think.

What we want to happen here is, I think, that we want the "initial" font
spec (which would here just be family monospace + antialias, and not the
entire font spec that we initially realised?  I think?

Is it immediately obvious to somebody how to achieve that here?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no