From 76d4e19f8984128d9253673fa91ce5423e9293f1 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 28 Apr 2022 10:50:50 +0300 Subject: [PATCH] Fix handling of proportional fonts on MS-Windows * src/xfaces.c (Fx_family_fonts): Consider fonts whose :spacing value is numeric, but still indicates that they are proportional, to be proportional. * lisp/textmodes/artist.el (artist-mode): Fix test for monospaced fonts. --- lisp/textmodes/artist.el | 7 +++++-- src/xfaces.c | 9 ++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el index e37b0d988ab..686d5f494c9 100644 --- a/lisp/textmodes/artist.el +++ b/lisp/textmodes/artist.el @@ -1371,8 +1371,11 @@ Keymap summary (t ;; Turn mode on (artist-mode-init) - (let ((font (face-attribute 'default :font))) - (when (and (fontp font) (not (font-get font :spacing))) + (let* ((font (face-attribute 'default :font)) + (spacing-prop (if (fontp font) + (font-get font :spacing) + t))) + (when (or (null spacing-prop) (eq spacing-prop 0)) (message "The default font isn't monospaced, so the drawings in this buffer may look odd")))))) ;; Init and exit diff --git a/src/xfaces.c b/src/xfaces.c index d7f1f4d96e5..c41782f4f38 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -1573,7 +1573,14 @@ the face font sort order. */) make_fixnum (point), FONT_WEIGHT_SYMBOLIC (font), FONT_SLANT_SYMBOLIC (font), - NILP (spacing) || EQ (spacing, Qp) ? Qnil : Qt, + (NILP (spacing) + || EQ (spacing, Qp) + /* If the font was specified in a way + different from XLFD (e.g., on MS-Windows), + we will have a number there, not 'p'. */ + || EQ (spacing, + make_fixnum (FONT_SPACING_PROPORTIONAL))) + ? Qnil : Qt, Ffont_xlfd_name (font, Qnil), AREF (font, FONT_REGISTRY_INDEX)); result = Fcons (v, result); -- 2.39.2