Subject: Re: bug#65803: 29.1; Noto Sans Mono CJK JP has doubled-width on Windows

From: Eli Zaretskii <[email-masked]>
Date: Sat, 09 Sep 2023 17:57:36 +0300

> From: Po Lu <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Sat, 09 Sep 2023 21:38:32 +0800
> 
>     font->min_width = font->average_width = font->space_width
>       = (scalable ? ft_face->max_advance_width * size / upEM + 0.5
> 	 : ft_face->size->metrics.max_advance >> 6);
> 
> That aside, Fontconfig does not judge Noto Sans Mono CJK JP a fixed
> pitch font on my system.

Basically, calculating our own estimate of the average width means we
discard the attribute reported by the font, in effect backing up on
the change made in OpenType spec v3, which deprecated the previous
requirement to compute the average width based only on ASCII
characters.  This seems to be justified only because Emacs uses the
average width of the font for one purpose only: to calculate the
default column width of a frame.  So this calculation is only relevant
for when a font is used as the default face's font.  If we ever decide
to use the average width for anything else, we might be bitten by
this.

So I think a cleaner solution would be to leave the average width
attribute as the font reports it, and introduce a new attribute for
the average width of the ASCII characters.  Not sure how urgent this
is, but we should at least describe this subtlety in the comments.