Subject: Re: bug#68042: 30.0.50; `face-font' returns nil after adding remap relative for fontset

From: Stefan Kangas <[email-masked]>
Date: Sun, 9 Jun 2024 13:56:26 -0700

Eli Zaretskii <[email-masked]> writes:

>> From: Hanwen Guo <[email-masked]>
>> CC: "[email-masked]" <[email-masked]>
>> Date: Wed, 27 Dec 2023 06:43:46 +0000
>>
>> > If you replace all instances of :fontset above with :font, face-font
>> will not return nil.
>>
>> Actually, if you pass the fontset through the `:font' attribute, only the ASCII font from the fontset is
>> used.
>
> Yes, because the faces that are exposed to Lisp are always the faces
> used for characters supported by the "ASCII font" of a face.  For
> other characters, Emacs creates internally a separate face, which is
> not exposed to Lisp, and determines its font from the fontset in
> effect, merging the other relevant face attributes to produce a face
> as similar as possible to the one used for characters covered by the
> "ASCII font".
>
>> This applies to both `set-face-attribute' and `face-remap-add-relative'. AFAIU, I think when it
>> comes to the face attributes, the fontset feature is more like a way to set different font for diferent
>> character sets, making it able to "display the whole range of characters that Emacs supports" for a
>> given face, since setting the `:family' attribute or assigning a single font to `:font' would suffice for
>> setting font only for ASCII characters. So the case is, either the `:font' attribute needs to consider the
>> full fontset, or the whole fontset feature is, as you said, "obsolete".
>
> Then please explain in more detail what you are trying to achieve, and
> why.  The code snippet you presented makes it hard to guess, since it
> defines a face with a special fontset, and then remaps the 'default'
> face to that face.  Why would you need to do that, instead of simply
> customizing the default-fontset or setting the :fontset attribute of
> the 'default' face?
>
> The technical reason for what you see is that face-remapping creates
> an anonymous face with the specified attributes, and Emacs doesn't
> support the :fontset attribute for anonymous faces.  But since I don't
> really understand why you use face-remap-add-relative, I cannot tell
> whether this is a problem or how to solve it for your needs.

More information was requested, but none was given within 23 weeks, so
I'm closing this bug.  If this is still an issue, please reply to this
email (use "Reply to all" in your email client) and we can reopen the
bug report.