]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't lose antialiasing info when hitting `C-x C-+'
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 19 Jun 2022 13:02:01 +0000 (15:02 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 19 Jun 2022 13:03:07 +0000 (15:03 +0200)
* src/xfaces.c (realize_gui_face): Don't lose antialiasing info
when hitting `C-x C-+' (bug#37473).

src/xfaces.c

index 04e5439d9d56f68f095dab1260261e5f7b4b26f4..424220591b7511136c2958fd9c6116362b6eb24e 100644 (file)
@@ -5951,8 +5951,20 @@ realize_gui_face (struct face_cache *cache, Lisp_Object attrs[LFACE_VECTOR_SIZE]
            emacs_abort ();
        }
       if (! FONT_OBJECT_P (attrs[LFACE_FONT_INDEX]))
-       attrs[LFACE_FONT_INDEX]
-         = font_load_for_lface (f, attrs, Ffont_spec (0, NULL));
+       {
+         /* We want attrs to allow overriding most elements in the
+            spec, but we don't want to start with an all-nil font,
+            either, because then we lose attributes like
+            antialiasing.  This should probably be fixed in a
+            different way, see bug#17973 and bug#37473.  */
+         Lisp_Object spec = copy_font_spec (attrs[LFACE_FONT_INDEX]);
+         Ffont_put (spec, QCfoundry, Qnil);
+         Ffont_put (spec, QCfamily, Qnil);
+         Ffont_put (spec, QCregistry, Qnil);
+         Ffont_put (spec, QCadstyle, Qnil);
+         attrs[LFACE_FONT_INDEX]
+           = font_load_for_lface (f, attrs, spec);
+       }
       if (FONT_OBJECT_P (attrs[LFACE_FONT_INDEX]))
        {
          face->font = XFONT_OBJECT (attrs[LFACE_FONT_INDEX]);