[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Automatic face setting based on contrast?

From: Eli Zaretskii
Subject: Re: Automatic face setting based on contrast?
Date: Sat, 09 Oct 2021 10:38:58 +0300

> From: Tim Cross <theophilusx@gmail.com>
> Cc: emacs-devel@gnu.org
> Date: Sat, 09 Oct 2021 12:45:17 +1100
> > In "emacs -Q", I see only 114 faces in that display.
> which makes me wonder why so many packages feel it necessary to add new
> faces rather than just leverage off the 'default' faces.

Because face changes are generally global for the entire frame (and if
you are not careful, for the entire session).  So changing a face used
by other modes would change the appearance of those other modes as

> Would not be as challenging if all those additional faces defaulted
> to inherit from one of the 114 'default' faces, but unfortunately,
> many don't.

I don't see the significance of inheriting in this respect.  It still
creates a separate face, and if the attributes are changed (as they
necessarily will be), the effect on customization will be the same.
Perhaps you assume that the new face will keep the same colors of the
parent one, but I see no reason to make such an assumption, when the
purpose of the face is different.  The font-lock faces aren't made to
make parts of the code stand out, whereas many other faces need to do
precisely that.  So the considerations for choosing the colors are
different from the get-go.

> > I think tweaking 100+ faces is not much easier than tweaking 1000.
> > Both border on the impractical.
> Agreed. However, not all of those 114 are 'semantic' faces. If the
> default for each non-semantic face was to inherit from the semantic
> faces, then most themes would be able to be defined via setting the
> handful of semantic faces and leave more specific customization to the
> end user who want to tweak the them in some manner.

See above: I don't see how this could be true in practice.

> What I was thinking of was a display which would show the inheritance
> hierarchy, possibly in some sort of tree form to give an overview so
> that you could not just tell which faces inherited, but where they
> inherited from.

Feel free to develop this.  But note that a face can inherit from
several faces, so this is not exactly a hierarchy in its classical

> In some respects, the ability to add new faces is possibly a little too
> easy and has encouraged an over proliferation of faces. This makes
> consistent theming much harder than necessary.  

I see no way around that.

> > Eventually, I don't think there's a good solution to color contrast
> > that relies on manual tweaking of the faces.
> I'm not convinced there is a good automatic solution which won't also
> need some manual tweaking, especially given how quickly the number of
> faces blows out once you add some additional packages. While automatic
> contrast setting can help, manual tweaking will still be necessary.

Tweaking should only be needed to account for subjective differences
in perception of colors, which would mean adjusting the color
difference that makes the contrast "good enough".  That's far cry from
having to adjust hundreds of faces.

> Consistent use of inheritance from the core semantic faces would make
> this easier.

As I explain above, I think this is overly optimistic.

> One challenge with automatic contrast setting is that it has no way to
> take aesthetics into account - you can get high contrast colours which
> are simply unappealing.

Making that hypothetical feature understand and avoid bad color
combinations should not be too hard.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]