Subject: bug#79083: 31.0.50; Inconsistencies wrt fixed-pitch face

From: Eli Zaretskii <[email-masked]>
Date: Wed, 23 Jul 2025 19:45:19 +0300

> Cc: [email-masked], [email-masked], [email-masked], [email-masked]
> From: Sean Whitton <[email-masked]>
> Date: Wed, 23 Jul 2025 15:27:14 +0100
> 
> (1)
> I had assumed that the purpose of this face was solely to be fixed pitch
> even when the default face uses a variable pitch font.  A Lisp program
> could use this face when something really must display as fixed pitch.
> 
> But in [1] Eli writes:
> > Did you expect the fixed-pitch face to have the same font as the
> > default face?  If so, it's a wrong expectation: we deliberately
> > defined the fixed-pitch face to have a different typeface, so that it
> > stands out.
> 
> This is not incompatible with being a face that's always fixed pitch no
> matter whether the default face is fixed pitch, but it does mean that
> themes, or the user, shouldn't usually customise default and fixed-pitch
> to use the same typeface.  If this is the idea, then it should be
> documented, and I would propose to do so as follows:

Sorry, I object to codifying this kind of stuff.  Faces exist in Emacs
so that users and distros could change them however they wish.  If
they want fixed-pitch to look the same as the default face, they
should be free to do that.  If the result is not to their liking
(which is in the eyes of the beholder), they will see it soon enough
and decide then what they want to do with it.

The mere fact that there is a separate face is already a clear sign
that we _recommend_ it to look differently.  There should be no reason
to say anything beyond that.

> (2)
> The faces are not in fact visually distinct by default on GNU/Linux,

It depends on the font back-end, AFAIK.  Only some of them use the
Monospace family for the default face's font, see
x_default_font_parameter.

> though they are on the non-free macOS and MS-Windows platforms.  This
> should be fixed.

Not sure about the "should" part.  Do people think the typeface used
for symbols in Info manuals looks sub-optimally on GNU/Linux, and
would like it to look differently?  If enough users think that, we
could try a different definition.  But there be dragons: to change
that we need to modify the font family for the default face so that it
is different from the family of the fixed-pitch face, and such changes
might be met with resistance by some parts of the community.  That is
why I suggest that we consider this carefully and thoroughly.  In
general, I'd let these sleeping dogs lie.

> I am not sure where to look in the code base, though
> -- the different typefaces for default and fixed-pitch on MS-Windows,
> for example, aren't defined in faces.el, but presumably somewhere in C.

It's in faces.el, see face-font-family-alternatives.  And it isn't
Windows specific, contrary to what you thought ;-)