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

From: Dmitry Gutov <[email-masked]>
Date: Wed, 28 Dec 2022 14:31:46 +0200

Hi Martin!

On 28/12/2022 12:08, martin rudalics wrote:
> The base_height value (84 pixels) we calculate here is the sum of the
> line_height value, the menubar_height value and the toolbar_height
> values divided by the scale factor:
> 
> (/ (+ 37 50 82) 2)
> 
> height_inc (18) is the line height divided by the scale factor (/ 37 2).
> 
> These size hints have mutter expect us to resize our frame to something
> like
> 
> (+ base_height (* height_inc N))
> 
> for some positive integer N.  Now we want to resize the frame to
> line_height times lines, that is (* 37 35) yielding 1295 pixels.
> 
> But (% (/ 1295 2) 18) is not zero and so mutter declines our request
> giving us 1260 pixels text height instead.  Apparently, mutter starts
> with (/ 1295 2) that is 647, 630 is the next multiple of 18 it finds, so
> (* 630 2) is the value it concedes us.
> 
> So the height we should ask for with scaling is 1296 instead of 1295.
> 
> Please try the attached patch - I can't test it here because I don't
> scale.  If it doesn't work, please post the contents of *foo* as usual.

It certainly does work. One of the changes I saw right away is the width 
of the frame right after startup with my config increased from 84 to 90 
columns. Not sure if it's good or bad, so let's go back to the behavior 
with '-Q'.

The height stopped shrinking.

The width started growing. :-D

I don't know if *foo* is helpful here yet, but here you go:

adjust_frame_size .. old pixels/lines .. 25 .. 25 .. new pixels/lines .. 
25 .. 24
adjust_frame_size .. old pixels/lines .. 25 .. 25 .. new pixels/lines .. 
900 .. 25
adjust_frame_size .. old pixels/lines .. 900 .. 25 .. new pixels/lines 
.. 1296 .. 36
xg_frame_set_char_size .. old .. 1296 .. arg .. 1296 .. new .. 1296
   outer .. 698 .. gheight .. 200
xg_frame_set_char_size .. old .. 1296 .. arg .. 1296 .. new .. 1296
   outer .. 673 .. gheight .. 200
xg_frame_resized .. old .. 1296 .. req .. 1296 .. con/text .. 1346 .. 1346
xg_wm_set_size_hint .. line_height & scale .. 36 .. 2 .. base_height .. 
43 .. height_inc .. 18
   menubar_height .. 50 .. toolbar_height .. 0
xg_frame_resized .. old .. 1296 .. req .. 1346 .. con/text .. 1296 .. 1296
xg_wm_set_size_hint .. line_height & scale .. 36 .. 2 .. base_height .. 
84 .. height_inc .. 18
   menubar_height .. 50 .. toolbar_height .. 82
xg_frame_set_char_size .. old .. 1296 .. arg .. 1296 .. new .. -1
   outer .. 714 .. gheight .. 673
x_new_font .. line_height .. 45 .. lines .. 36 .. new_text_height .. 1620
xg_wm_set_size_hint .. line_height & scale .. 45 .. 2 .. base_height .. 
88 .. height_inc .. 22
   menubar_height .. 50 .. toolbar_height .. 82
xg_frame_set_char_size .. old .. 1296 .. arg .. 1656 .. new .. -1
   outer .. 894 .. gheight .. 714
xg_frame_resized .. old .. 1296 .. req .. -1 .. con/text .. 1628 .. 1628
adjust_frame_size .. old pixels/lines .. 1296 .. 36 .. new pixels/lines 
.. 1628 .. 36
x_new_font .. line_height .. 37 .. lines .. 36 .. new_text_height .. 1332
xg_wm_set_size_hint .. line_height & scale .. 37 .. 2 .. base_height .. 
84 .. height_inc .. 18
   menubar_height .. 50 .. toolbar_height .. 82
xg_frame_set_char_size .. old .. 1628 .. arg .. 1368 .. new .. -1
   outer .. 750 .. gheight .. 880
xg_frame_resized .. old .. 1628 .. req .. -1 .. con/text .. 1368 .. 1368
adjust_frame_size .. old pixels/lines .. 1628 .. 36 .. new pixels/lines 
.. 1368 .. 36
x_new_font .. line_height .. 37 .. lines .. 36 .. new_text_height .. 1332
xg_frame_set_char_size .. old .. 1368 .. arg .. 1368 .. new .. -1
   outer .. 750 .. gheight .. 750
xg_frame_resized .. old .. 1368 .. req .. -1 .. con/text .. 1368 .. 1368
x_new_font .. line_height .. 37 .. lines .. 36 .. new_text_height .. 1332
xg_frame_set_char_size .. old .. 1368 .. arg .. 1368 .. new .. -1
   outer .. 750 .. gheight .. 750
xg_frame_resized .. old .. 1368 .. req .. -1 .. con/text .. 1368 .. 1368
x_new_font .. line_height .. 37 .. lines .. 36 .. new_text_height .. 1332
xg_frame_set_char_size .. old .. 1368 .. arg .. 1368 .. new .. -1
   outer .. 750 .. gheight .. 750
xg_frame_resized .. old .. 1368 .. req .. -1 .. con/text .. 1368 .. 1368
x_new_font .. line_height .. 37 .. lines .. 36 .. new_text_height .. 1332
xg_frame_set_char_size .. old .. 1368 .. arg .. 1368 .. new .. -1
   outer .. 750 .. gheight .. 750
xg_frame_resized .. old .. 1368 .. req .. -1 .. con/text .. 1368 .. 1368