GNU bug report logs - #46971
28.0.50; Fontifications in Info buffers break alignment in @multitable

Previous Next

Package: emacs;

Reported by: Eli Zaretskii <eliz <at> gnu.org>

Date: Sat, 6 Mar 2021 17:17:01 UTC

Severity: minor

Found in version 28.0.50

To reply to this bug, email your comments to 46971 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#46971; Package emacs. (Sat, 06 Mar 2021 17:17:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Eli Zaretskii <eliz <at> gnu.org>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 06 Mar 2021 17:17:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: 28.0.50; Fontifications in Info buffers break alignment in @multitable
Date: Sat, 06 Mar 2021 19:16:01 +0200
To reproduce:

  emacs -Q
  C-u C-h i ../info/elisp.info RET
  C-s Syntax name

You should now see the table of syntax categories.  The characters in
the rightmost column don't align, which looks ugly.

This happens because font-lock is instructed to do this:

  (defvar Info-mode-font-lock-keywords
    '(("‘\\([‘’]\\|[^‘’]*\\)’" (1 'Info-quoted))))

Thus the quotes and the quoted text use different faces, and if those
faces use different fonts (as they do by default), the table will not
be aligned.

One possible solution would be to modify Info-mode-font-lock-keywords
such that the quotes are also fontified in Info-quoted face.

In GNU Emacs 28.0.50 (build 1071, i686-pc-mingw32)
 of 2021-03-06 built on HOME-C4E4A596F7
Repository revision: 45b1151696287e469dcb426f8b6e908125635373
Repository branch: master
Windowing system distributor 'Microsoft Corp.', version 5.1.2600
System Description: Microsoft Windows XP Service Pack 3 (v5.1.0.2600)

Configured using:
 'configure -C --prefix=/d/usr --with-wide-int --with-modules
 --enable-checking=yes,glyphs 'CFLAGS=-O0 -gdwarf-4 -g3''

Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY
W32NOTIFY PDUMPER PNG RSVG SOUND THREADS TIFF TOOLKIT_SCROLL_BARS XPM
ZLIB

Important settings:
  value of $LANG: ENU
  locale-coding-system: cp1255

Major mode: Info

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail
rmail-loaddefs auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json map text-property-search time-date
subr-x seq byte-opt gv bytecomp byte-compile cconv mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
mule-util info iso-transl tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel dos-w32 ls-lisp disp-table term/w32-win
w32-win w32-vars term/common-win tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core term/tty-colors frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads w32notify
w32 lcms2 multi-tty make-network-process emacs)

Memory information:
((conses 16 89749 8422)
 (symbols 48 8122 1)
 (strings 16 27031 2327)
 (string-bytes 1 724882)
 (vectors 16 13691)
 (vector-slots 8 179164 12452)
 (floats 8 27 294)
 (intervals 40 5234 210)
 (buffers 888 11))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46971; Package emacs. (Sun, 26 Sep 2021 14:35:02 GMT) Full text and rfc822 format available.

Message #8 received at 46971 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefan <at> marxist.se>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 46971 <at> debbugs.gnu.org
Subject: Re: bug#46971: 28.0.50; Fontifications in Info buffers break
 alignment in @multitable
Date: Sun, 26 Sep 2021 07:34:24 -0700
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:

> To reproduce:
>
>   emacs -Q
>   C-u C-h i ../info/elisp.info RET
>   C-s Syntax name

> You should now see the table of syntax categories.  The characters in
> the rightmost column don't align, which looks ugly.
>
> This happens because font-lock is instructed to do this:
>
>   (defvar Info-mode-font-lock-keywords
>     '(("‘\\([‘’]\\|[^‘’]*\\)’" (1 'Info-quoted))))
>
> Thus the quotes and the quoted text use different faces, and if those
> faces use different fonts (as they do by default), the table will not
> be aligned.
>
> One possible solution would be to modify Info-mode-font-lock-keywords
> such that the quotes are also fontified in Info-quoted face.

That fix solves this issue in "emacs -Q" here, but not in my personal
Emacs configuration where I use a different font.

In "emacs -Q" I have these fonts for the column text (1), and the
whitespace in between columns (2), and everything lines up:

  1. ftcrhb:-bitstream-Courier 10
Pitch-normal-normal-normal-*-16-*-*-*-m-0-iso10646-1 (#x08)
  2. ftcrhb:-Bits-Bitstream Vera Sans
Mono-normal-normal-normal-*-16-*-*-*-m-0-iso10646-1 (#x03)

With my personal configuration, I have these fonts for the column text
(1), and the whitespace in between (2), and the alignment is wrong (see
screenshots below):

  1. ftcrhb:-Bits-Bitstream Vera Sans
Mono-normal-normal-normal-*-21-*-*-*-m-0-iso10646-1 (#xB7)
  2. ftcrhb:-DAMA-Ubuntu
Mono-normal-normal-normal-*-21-*-*-*-m-0-iso10646-1 (#x03)

I don't know if this is relevant, but in "emacs -Q", the cursor stays
the same size when I move it from a character using font 1 to one using
font 2.

With my personal Emacs configuration, the cursor gets noticeably smaller
when I move it from a character using font 1 to one using font 2.  The
attached screenshots demonstrate this effect.
[screenshot1.png (image/png, attachment)]
[screenshot2.png (image/png, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46971; Package emacs. (Sat, 02 Oct 2021 04:58:01 GMT) Full text and rfc822 format available.

Message #11 received at 46971 <at> debbugs.gnu.org (full text, mbox):

From: Protesilaos Stavrou <info <at> protesilaos.com>
To: Stefan Kangas <stefan <at> marxist.se>, Eli Zaretskii <eliz <at> gnu.org>
Cc: 46971 <at> debbugs.gnu.org
Subject: Re: bug#46971: 28.0.50; Fontifications in Info buffers break
 alignment in @multitable
Date: Sat, 02 Oct 2021 07:56:40 +0300
On 2021-09-26, 07:34 -0700, Stefan Kangas <stefan <at> marxist.se> wrote:

> Eli Zaretskii <eliz <at> gnu.org> writes:
>
>> To reproduce:
>>
>>   emacs -Q
>>   C-u C-h i ../info/elisp.info RET
>>   C-s Syntax name
>
>> You should now see the table of syntax categories.  The characters in
>> the rightmost column don't align, which looks ugly.
>>
>> This happens because font-lock is instructed to do this:
>>
>>   (defvar Info-mode-font-lock-keywords
>>     '(("‘\\([‘’]\\|[^‘’]*\\)’" (1 'Info-quoted))))
>>
>> Thus the quotes and the quoted text use different faces, and if those
>> faces use different fonts (as they do by default), the table will not
>> be aligned.
>>
>> One possible solution would be to modify Info-mode-font-lock-keywords
>> such that the quotes are also fontified in Info-quoted face.
>
> That fix solves this issue in "emacs -Q" here, but not in my personal
> Emacs configuration where I use a different font.
>
> In "emacs -Q" I have these fonts for the column text (1), and the
> whitespace in between columns (2), and everything lines up:
>
>   1. ftcrhb:-bitstream-Courier 10
> Pitch-normal-normal-normal-*-16-*-*-*-m-0-iso10646-1 (#x08)
>   2. ftcrhb:-Bits-Bitstream Vera Sans
> Mono-normal-normal-normal-*-16-*-*-*-m-0-iso10646-1 (#x03)
>
> With my personal configuration, I have these fonts for the column text
> (1), and the whitespace in between (2), and the alignment is wrong (see
> screenshots below):

Hello Stefan,

The reason you are getting two distinct fonts is because the
'Info-quoted' face is inheriting from 'fixed-pitch'.

Does the alignment get fixed if you make fixed-pitch use the same font
as the default?  Such as with this:

    (set-face-attribute 'fixed-pitch nil
                        :family (face-attribute 'default :family)
                        :height (face-attribute 'default :height))

All the best,
Protesilaos

-- 
Protesilaos Stavrou
https://protesilaos.com

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46971; Package emacs. (Wed, 06 Oct 2021 00:44:02 GMT) Full text and rfc822 format available.

Message #14 received at 46971 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefan <at> marxist.se>
To: Protesilaos Stavrou <info <at> protesilaos.com>, Eli Zaretskii <eliz <at> gnu.org>
Cc: 46971 <at> debbugs.gnu.org
Subject: Re: bug#46971: 28.0.50; Fontifications in Info buffers break
 alignment in @multitable
Date: Tue, 5 Oct 2021 20:43:45 -0400
Protesilaos Stavrou <info <at> protesilaos.com> writes:

> The reason you are getting two distinct fonts is because the
> 'Info-quoted' face is inheriting from 'fixed-pitch'.
>
> Does the alignment get fixed if you make fixed-pitch use the same font
> as the default?  Such as with this:
>
>     (set-face-attribute 'fixed-pitch nil
>                         :family (face-attribute 'default :family)
>                         :height (face-attribute 'default :height))

Interesting!  Yes, that fixes the issue here.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46971; Package emacs. (Wed, 06 Oct 2021 04:16:02 GMT) Full text and rfc822 format available.

Message #17 received at 46971 <at> debbugs.gnu.org (full text, mbox):

From: Protesilaos Stavrou <info <at> protesilaos.com>
To: Stefan Kangas <stefan <at> marxist.se>
Cc: 46971 <at> debbugs.gnu.org
Subject: Re: bug#46971: 28.0.50; Fontifications in Info buffers break
 alignment in @multitable
Date: Wed, 06 Oct 2021 07:14:52 +0300
On 2021-10-05, 20:43 -0400, Stefan Kangas <stefan <at> marxist.se> wrote:

> Protesilaos Stavrou <info <at> protesilaos.com> writes:
>
>> The reason you are getting two distinct fonts is because the
>> 'Info-quoted' face is inheriting from 'fixed-pitch'.
>>
>> Does the alignment get fixed if you make fixed-pitch use the same font
>> as the default?  Such as with this:
>>
>>     (set-face-attribute 'fixed-pitch nil
>>                         :family (face-attribute 'default :family)
>>                         :height (face-attribute 'default :height))
>
> Interesting!  Yes, that fixes the issue here.

There is an option in the modus-themes 1.6.0 (emacs-28) that can disable
this behaviour of some faces inheriting from 'fixed-pitch':
'modus-themes-no-mixed-fonts'.

In my upstream repo I have decided to make that opt-in, instead of
opt-out, seeing as it can create surprising results (as in this case).
So the new option is 'modus-themes-mixed-fonts', which is nil by
default.

Do you think this is something that should be patched for the emacs-28
branch?  Otherwise I will sync my changes with 'master' when I release
the next version (maybe in a month from now).

-- 
Protesilaos Stavrou
https://protesilaos.com




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46971; Package emacs. (Wed, 06 Oct 2021 12:35:02 GMT) Full text and rfc822 format available.

Message #20 received at 46971 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Protesilaos Stavrou <info <at> protesilaos.com>
Cc: 46971 <at> debbugs.gnu.org, stefan <at> marxist.se
Subject: Re: bug#46971: 28.0.50;
 Fontifications in Info buffers break alignment in @multitable
Date: Wed, 06 Oct 2021 15:34:28 +0300
> From: Protesilaos Stavrou <info <at> protesilaos.com>
> Date: Wed, 06 Oct 2021 07:14:52 +0300
> Cc: 46971 <at> debbugs.gnu.org
> 
> There is an option in the modus-themes 1.6.0 (emacs-28) that can disable
> this behaviour of some faces inheriting from 'fixed-pitch':
> 'modus-themes-no-mixed-fonts'.
> 
> In my upstream repo I have decided to make that opt-in, instead of
> opt-out, seeing as it can create surprising results (as in this case).
> So the new option is 'modus-themes-mixed-fonts', which is nil by
> default.
> 
> Do you think this is something that should be patched for the emacs-28
> branch?  Otherwise I will sync my changes with 'master' when I release
> the next version (maybe in a month from now).

This sounds like a bugfix, so I think it's okay for the release
branch.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#46971; Package emacs. (Wed, 06 Oct 2021 13:54:01 GMT) Full text and rfc822 format available.

Message #23 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Protesilaos Stavrou <info <at> protesilaos.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 28.0.60; [PATCH] Disable modus-themes font mixing by default
 (bug#46971)
Date: Wed, 06 Oct 2021 16:53:31 +0300
[Message part 1 (text/plain, inline)]
Dear maintainers,

This is a bugfix for the emacs-28 branch, prompted by the discussion in
bug#46971.  It changes the default behaviour of the modus-themes to not
inherit the 'fixed-pitch' face in various spacing sensitive faces.  This
now becomes an opt-in feature and its utility is documented in the doc
string of the new user option as well as the manual.

Note that I have already made these changes to the modus-themes repo and
was planning to sync them with the Emacs 'master' branch upon the next
release of the project (maybe in a month from now).

Please let me know if you think this should be applied to emacs-28.

All the best,
Protesilaos

-- 
Protesilaos Stavrou
https://protesilaos.com
[0001-Disable-modus-themes-font-mixing-by-default-bug-4697.patch (text/x-patch, attachment)]

This bug report was last modified 2 years and 210 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.