Subject: Re: bug#52493: 29.0.50; Setting Inconsolata up in init.el makes default face rendered wrong

From: martin rudalics <[email-masked]>
Date: Fri, 23 Dec 2022 10:14:16 +0100

> I'm not sure if you caught one of my previous messages, however, so I'd like to repeat:
 >
 > The problem is easily repeatable in the above scenario. But not if I change "InconsolataLGC" to "Inconsolata LGC". Then the resizing stops after the first iteration.
 >
 > In either case, 'M-x describe-face RET default' shows "Family: Inconsolata LGC", though. So it's not like "InconsolataLGC" is entirely unrecognized.

Does it matter?  Whatever you do - have the same form evaluated twice in
a row causing a frame resize must be a bug - somewhere.

 > Anyway, here's the log (evaled the form 3 times):
 >
 > adjust_frame_size .. pixel_height .. 25 .. text_height .. 24
 > adjust_frame_size .. pixel_height .. 900 .. text_height .. 900
 > adjust_frame_size .. pixel_height .. 1296 .. text_height .. 1296
 > adjust_frame_size .. pixel_height .. 1296 .. text_height .. 1296
 > xg_wm_set_size_hint .. line_height .. 36 .. base_height .. 43 .. height_inc .. 18
 > xg_wm_set_size_hint .. line_height .. 36 .. base_height .. 84 .. height_inc .. 18

We start here

 > set-face-attribute
 > xg_wm_set_size_hint .. line_height .. 45 .. base_height .. 88 .. height_inc .. 22

and come up with a frame line height of 45 pixels and an increment hint
of 22 which means that some scaling (by 2 apparently) is in effect here.
Honestly, I have no idea how this is supposed to work.

 > adjust_frame_size .. pixel_height .. 1584 .. text_height .. 1584
 > xg_wm_set_size_hint .. line_height .. 37 .. base_height .. 84 .. height_inc .. 18

Here we ask for the same (due to rounding) increment ...

 > adjust_frame_size .. pixel_height .. 1260 .. text_height .. 1260
 > set-face-attribute
 > adjust_frame_size .. pixel_height .. 1224 .. text_height .. 1224
 > adjust_frame_size .. pixel_height .. 1188 .. text_height .. 1188
 > set-face-attribute
 > adjust_frame_size .. pixel_height .. 1152 .. text_height .. 1152
 > adjust_frame_size .. pixel_height .. 1116 .. text_height .. 1116

... but then we do not set hints any more so it seems that we do all the
shrinking ourselves - just how can we shrink and not send size hints at
the same time is yet a mystery to me.

Please run again with the new patch but also evaluate

(setq frame-size-history '(100))

Then perform some 'set-face-attribute' calls, evaluate

(frame--size-history)

and get me the contents of both buffers *foo* and *frame-size-history*.

Thanks, martin