Subject: Re: bug#14647: 24.3.50; doc of `set-face-font'

From: Eli Zaretskii <[email-masked]>
Date: Sat, 02 Nov 2019 12:49:04 +0200

> From: Lars Ingebrigtsen <[email-masked]>
> Date: Fri, 01 Nov 2019 18:29:47 +0100
> Cc: [email-masked]
> 
> Lars Ingebrigtsen <[email-masked]> writes:
> 
> > Drew Adams <[email-masked]> writes:
> >
> >> 1. Neither the Elisp manual (node `Attribute Functions') nor the doc
> >> string says what form the string FONT must or may take.
> >
> > Good question.  The function is barely used in the Emacs source code
> > tree.  The only usage I could find that set it to something was this:
> >
> > (defvar gamegrid-font "-*-courier-medium-r-*-*-*-140-100-75-*-*-iso8859-*"
> >   "Name of the font used in X mode.")
> 
> But it's basically any string that describes a font on your system,
> depending on what font system you have.  So "futura:size=20" works fine,
> too.

That's inaccurate.  The function accepts any form of the :font
attribute, including font objects etc., but this is a command, and
interactively it only allows strings.

Also, "futura:size=20" might not work on MS-Windows, where these forms
are emulated by Emacs (since there's no Fontconfig); you may need to
use "Futura-20" instead.

> >> 2. The manual says that this command sets the :font attribute.  The doc
> >> string says instead that it sets attributes :family, :foundry, :width,
> >> :height, :weight, and :slant.  Which is it?

Both, actually.

> > Yeah.
> 
> It looks like it's the latter, so I've altered the documentation in the
> manual.

I've now altered the docs again to say that :font is set, and the
other attributes are also set.

> >> 3. #1 is all the more imporatnt because the doc string of `x-list-fonts'
> >> says that it returns a list of strings that are "suitable as arguments
> >> to `set-face-font'.  Really?  Just what kind of strings are so suitable?
> >>
> >> I think, but am not sure, that FONT must be in XLFD form.  Whatever the
> >> acceptable form(s), the doc needs to spell this out.
> 
> I don't think so -- we aren't told what the form is, because that seems
> unnecessary.  If we're curious for some reason, we can just call the
> function.

The various forms are documented in the Emacs manual, under "Fonts".
A cross-reference leads there from the ELisp manual.