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

From: Po Lu <[email-masked]>
Date: Tue, 13 Dec 2022 09:16:48 +0800

Eli Zaretskii <[email-masked]> writes:

> If this is so, why not disable that only for Haiku?

It's also rather pointless to disable just :extra, as it's a property
list of extra properties, which should have their individual options.

> "Nuisance" is an exaggeration.  But I agree that using more
> descriptive values is more convenient, if and when someone needs to
> change the default value.  And I have a proposal for how to do this
> without sacrificing performance; read on.

> People are reportedly running Emacs sessions with several thousands of
> faces, in which case 2 to 4 usec per face could add up to a
> significant number.  So it cannot do any harm to try to make the
> "usual" case faster.

I agree it can't do harm, but 2 to 4 usec times a few thousand faces is
still probably going to be less than 50 msec, so that still won't hurt.
And that's assuming all the faces are realized at once.

> Anyway, here's my proposal:
>
>  . we change the default value of the variable to be t, and document
>    that this stands for (:weight :width :slant)
>  . we change the code to reset only those 3 attributes when the
>    value is t, and to reset nothing when the value is nil
>  . the (slower) code which loops over the list will only run if the
>    value of the variable is neither nil nor t
>  . we avoid resetting the :extra attribute on Haiku
>
> Is this okay with you both?  I volunteer to make these changes if you
> agree.

I'm fine with that, thanks.