GNU bug report logs - #52493
29.0.50; Setting Inconsolata up in init.el makes default face rendered wrong

Previous Next

Package: emacs;

Reported by: Dmitry Gutov <dgutov <at> yandex.ru>

Date: Tue, 14 Dec 2021 23:45:01 UTC

Severity: normal

Found in version 29.0.50

Full log


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

From: martin rudalics <rudalics <at> gmx.at>
To: Dmitry Gutov <dgutov <at> yandex.ru>, Eli Zaretskii <eliz <at> gnu.org>
Cc: rpluim <at> gmail.com, 52493 <at> debbugs.gnu.org
Subject: Re: bug#52493: 29.0.50; Setting Inconsolata up in init.el makes
 default face rendered wrong
Date: Sat, 31 Dec 2022 20:01:32 +0100
[Message part 1 (text/plain, inline)]
I've rewritten the output routines so they catch the width changes but
didn't change anything else.  The output in *foo* should be almost
self-explanatory now but see first one I ran with emacs -Q and the
following four evaluations

(set-face-attribute 'default nil :height 120 :family "DejaVu Sans Mono")
(set-face-attribute 'default nil :height 140 :family "DejaVu Sans Mono")
(set-face-attribute 'default nil :height 130 :family "DejaVu Sans Mono")
(set-face-attribute 'default nil :height 120 :family "DejaVu Sans Mono")

here.  This got me


adjust_frame_size old native pixels 80x25 new native pixels 80x25 old text pixels 80x25 new text pixels 80x24 old text chars 80x25 new text chars 80x24
adjust_frame_size old native pixels 80x25 new native pixels 736x450 old text pixels 80x25 new text pixels 720x450 old text chars 80x25 new text chars 80x25
adjust_frame_size old native pixels 736x450 new native pixels 736x648 old text pixels 720x450 new text pixels 720x648 old text chars 80x25 new text chars 80x36
adjust_frame_size old native pixels 736x648 new native pixels 752x648 old text pixels 720x648 new text pixels 720x648 old text chars 80x36 new text chars 80x36
xg_frame_set_char_size old native pixels 752x648 new native pixels 752x648 outer pixels 752x673
xg_wm_set_size_hint scale 1 char width 9 vscroll 16 fringes 16 borders 0 base width 41 width inc 9
    char height 18 menubar 25 toolbar 0 hscroll 0 borders 0 base height 43 height inc 18
xg_wm_set_size_hint scale 1 char width 9 vscroll 16 fringes 16 borders 0 base width 41 width inc 9
    char height 18 menubar 25 toolbar 41 hscroll 0 borders 0 base height 84 height inc 18
xg_frame_set_char_size old native pixels 752x648 new native pixels 752x648 outer pixels 752x714 outer rest 0x0

x_new_font old char size 9x18 new char size 10x19 text chars 80x36 old text pixels 720x648 new text pixels 800x684
xg_wm_set_size_hint scale 1 char width 10 vscroll 16 fringes 16 borders 0 base width 42 width inc 10
    char height 19 menubar 25 toolbar 41 hscroll 0 borders 0 base height 85 height inc 19
xg_frame_set_char_size old native pixels 752x648 new native pixels 832x684 outer pixels 832x750 outer rest 0x0
xg_frame_resized old native pixels 752x648 new native pixels 832x684
adjust_frame_size old native pixels 752x648 new native pixels 832x684 old text pixels 720x648 new text pixels 800x684 old text chars 80x36 new text chars 80x36

x_new_font old char size 10x19 new char size 11x23 text chars 80x36 old text pixels 800x684 new text pixels 880x828
xg_wm_set_size_hint scale 1 char width 11 vscroll 16 fringes 16 borders 0 base width 43 width inc 11
    char height 23 menubar 25 toolbar 41 hscroll 0 borders 0 base height 89 height inc 23
xg_frame_set_char_size old native pixels 832x684 new native pixels 912x828 outer pixels 912x894 outer rest 0x0
xg_frame_resized old native pixels 832x684 new native pixels 912x828
adjust_frame_size old native pixels 832x684 new native pixels 912x828 old text pixels 800x684 new text pixels 880x828 old text chars 80x36 new text chars 80x36

x_new_font old char size 11x23 new char size 10x21 text chars 80x36 old text pixels 880x828 new text pixels 800x756
xg_wm_set_size_hint scale 1 char width 10 vscroll 16 fringes 16 borders 0 base width 42 width inc 10
    char height 21 menubar 25 toolbar 41 hscroll 0 borders 0 base height 87 height inc 21
xg_frame_set_char_size old native pixels 912x828 new native pixels 832x756 outer pixels 832x822 outer rest 0x0
xg_frame_resized old native pixels 912x828 new native pixels 832x756
adjust_frame_size old native pixels 912x828 new native pixels 832x756 old text pixels 880x828 new text pixels 800x756 old text chars 80x36 new text chars 80x36

x_new_font old char size 10x21 new char size 10x19 text chars 80x36 old text pixels 800x756 new text pixels 800x684
xg_wm_set_size_hint scale 1 char width 10 vscroll 16 fringes 16 borders 0 base width 42 width inc 10
    char height 19 menubar 25 toolbar 41 hscroll 0 borders 0 base height 85 height inc 19
xg_frame_set_char_size old native pixels 832x756 new native pixels 832x684 outer pixels 832x750 outer rest 0x0
xg_frame_resized old native pixels 832x756 new native pixels 832x684
adjust_frame_size old native pixels 832x756 new native pixels 832x684 old text pixels 800x756 new text pixels 800x684 old text chars 80x36 new text chars 80x36


where each x_new_font paragraph corresponds to one evaluation above.
Note the following two properties:

- As soon as things clear up, the size of the frame in text characters
  is 80x36 and never changes after that.  The same will have to hold for
  your 'set-face-attribute' calls regardless of what the pixel sizes
  say.

- "outer rest 0x0" stands for a zero rest when dividing the requested
  size minus the base size by the size increments.  The same will have
  to hold for your 'set-face-attribute' calls.

Maybe I'm just lucky here or it's because I do not scale.  I invite
everyone on GTK with some spare time to apply the attached
x_scale_font.diff, do some random 'set-face-attribute' calls and consult
the contents of the *foo* buffer.  If the two properties don't hold,
something might be wrong and we should investigate that.

martin
[x_scale_font.diff (text/x-patch, attachment)]

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

Previous Next


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