From aa25a38f2c4a67a39e84bed3cfea73fa366f2db4 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 10 Jul 2022 11:32:05 +0300 Subject: Fix the startup.el behavior when 'face-font-rescale-alist' is non-nil * lisp/startup.el (command-line-1, normal-top-level): Reset the default face's font only if 'face-font-rescale-alist' affects that face's font. For the use case where it matters, see https://lists.gnu.org/archive/html/emacs-devel/2022-07/msg00157.html. Make the 'inhibit-startup-screen' and non-inhibit branches behave the same in that case. --- lisp/startup.el | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'lisp/startup.el') diff --git a/lisp/startup.el b/lisp/startup.el index 4b42cd236c9..45b99eb8931 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -800,10 +800,12 @@ It is the default value of the variable `top-level'." ;; face-font-rescale-alist into account. For such ;; situations, we ought to have a way to find all font ;; objects and regenerate them; currently we do not. As a - ;; workaround, we specifically reset te default face's :font - ;; attribute here. See bug#1785. - (unless (eq face-font-rescale-alist - old-face-font-rescale-alist) + ;; workaround, we specifically reset the default face's :font + ;; attribute here, if it was rescaled. See bug#1785. + (when (and (not (eq face-font-rescale-alist + old-face-font-rescale-alist)) + (assoc (font-xlfd-name (face-attribute 'default :font)) + face-font-rescale-alist #'string-match-p)) (set-face-attribute 'default nil :font (font-spec))) ;; Modify the initial frame based on what .emacs puts into @@ -2840,6 +2842,14 @@ nil default-directory" name) ;; before doing any output. (run-hooks 'emacs-startup-hook 'term-setup-hook) + ;; See the commentary in `normal-top-level' for why we do + ;; this. + (when (and (not (eq face-font-rescale-alist + old-face-font-rescale-alist)) + (assoc (font-xlfd-name (face-attribute 'default :font)) + face-font-rescale-alist #'string-match-p)) + (set-face-attribute 'default nil :font (font-spec))) + ;; It's important to notice the user settings before we ;; display the startup message; otherwise, the settings ;; won't take effect until the user gives the first -- cgit v1.2.3