Subject: bug#59347: 29.0.50; `:family` face setting ignored

From: Stefan Monnier <[email-masked]>
Date: Sat, 19 Nov 2022 11:01:03 -0500

> But I'd be happier if you could step through the code and verified
> that indeed the foundry mismatch is what causes us to reject DejaVu
> Sans, and that after we reject it, we never try it with foundry set to
> nil in the font-spec.  Perhaps we first set family to nil and only
> after that set foundry to nil?

I'll try that, tho I haven't looked at that code in quite a while, so
it'll take some time for me to figure out how&where to look.

>> PS: Things become really weird with:
>> 
>>     src/emacs -Q --eval '(progn (custom-set-faces `(variable-pitch ((t
>> (:family "DejaVu Sans" :foundry "*"))))) (add-to-list `default-frame-alist
>> `(font . "-*-fixed-*-*-semicondensed-*-13-*-*-*-*-*-*-*"))
>> (font-lock-mode -1) (insert (propertize "hello" `face `variable-pitch) "
>> world"))'
>> 
>> where "hello" ends up with the following font:
>> 
>>     ftcrhb:-urw-Century Schoolbook L-medium-normal-normal-*-13-*-*-*-*-0-iso10646-1
>
> Why is this weird?

To me this font comes literally out of nowhere.

AFAICT the only relevant face specifications at play here are the two
pieces of font-info in the recipe (and `face-font-family-alternatives`
but this doesn't seem to play any role).

So, how do we end up with the `Century Schoolbook L` family (rather
than either `fixed` or `DejaVu Sans` both of such seem just as
qualified)?

And if `urw` matches `*`, then why doesn't `PfEd` match it as well?

        Stefan