Subject: Re: bug#35816: 26.2; set-frame-font cannot set some fonts which autocomplete suggests due to dashes in names. I.e. gnu-unifont

From: Eli Zaretskii <[email-masked]>
Date: Thu, 12 Aug 2021 09:56:05 +0300

> From: Lars Ingebrigtsen <[email-masked]>
> Date: Wed, 11 Aug 2021 22:04:37 +0200
> Cc: Vladimir Nikishkin <[email-masked]>, [email-masked]
> 
> Lars Ingebrigtsen <[email-masked]> writes:
> 
> > Thanks!  After an "apt install fonts-mikachan" I can now reproduce the
> > problem on this Debian/bullseye system, too, and I'll try to see whether
> > I can come up with a solution.
> 
> And I've now made font_parse_xlfd try harder to make sense of font names
> like:
> 
> (set-frame-font "-Take-mikachan-puchi-normal-normal-normal-*-*-*-*-*-*-0-iso10646-1")
> 
> I've tried to be as backwards-compatible as possible -- only trying to
> interpret this as a family name of "mikachan-puchi" is parsing it the
> normal way fails.

Thanks.

set-frame-font is not the only API that accepts font names, and XLFD
is not the only format of fonts Emacs accepts (see the node "Fonts" in
the Emacs user manual for description of all of the forms users can
specify a font).  Another important API that accepts font names is
set-face-font, and you will see that there's already some heuristics
in set-face-attribute to support the likes of "Courier-10", which is a
Fontconfig format of specifying a font family.  (The log message for
the change which allowed such font families to be supported includes a
URL where you will be able to find a test case for that.)  Do the
changes you made affect that code in any way, i.e. does that code
still work (looks like it does in my limited testing, but I cannot
test the full Fontconfig format here, and neither can I test the GTK
format).  Also, perhaps set-face-font can now accept font names that
include a dash which not only precedes a numeric size, in which case
at least the doc string of set-face-font should be amended?

Finally, I think it would be good to have some tests for these issues,
as much as possible (we cannot set fonts in batch mode, but perhaps
using lower-level APIs that parse the font spec would allow such
tests).