Tina Russell writes: > :distant-foreground is a very useful concept for a face property: text > will be rendered with the :foreground color, unless it’s too close to > the current background color, in which case :distant-foreground kicks > in. Like, try this in Eshell or IELM: > > (propertize "Greetings, esteemed Emacs developers!" 'face '(:foreground > "yellow" :background "yellow")) > > You’ll get a solid band of yellow, of course. But, with > :distant-foreground… > > (propertize "Greetings, esteemed Emacs developers!" 'face '(:foreground > "yellow" :background "yellow" :distant-foreground "black")) > > Now it is a friendly greeting. (Naturally, you wouldn’t normally set > :background and :distant-foreground in the same face, this is just an > example.) > > But, try this: > > (propertize "Greetings, esteemed Emacs developers!" 'face '(:foreground > "yellow" :background "white" :distant-foreground "black")) > > :distant-foreground doesn’t kick in—and you’re left with yellow-on-white > text that’s impossible to read, the exact scenario that > :distant-foreground was quite rightly designed to avoid. > > I’m not the only one who’s noticed this; there’s a good StackExchange > thread from 2015 here: > https://emacs.stackexchange.com/questions/7982/ The author notes that > there should be a user option to set the amount of “distance” (between > foreground and background colors) that is required for > distant-foreground to kick in, and adds that a good way to measure > color distance in real-world circumstances is described here: > http://web.mst.edu/~rhall/web_design/color_readability.html A commenter > suggested that he file a bug, but I can’t find an Emacs bug report > related to this issue, so I’m filing this now. > > I really hope this gets addressed, because :distant-foreground is a > really nice and clever feature. Thanks! > > In GNU Emacs 26.1.90 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) > of 2019-01-02 built on pannychis > Repository revision: 08840f2f7bfc6144bd163dd85efe87d28541e425 > Windowing system distributor 'The X.Org Foundation', version 11.0.11906000 > System Description: Ubuntu 18.04.1 LTS > > Configured using: > 'configure --with-xaw3d --with-modules --with-xwidgets' I've created a patch that introduces a new variable `face-near-same-color-threshold', with a default value of 30000 (as was defined in NEAR_SAME_COLOR_THRESHOLD in xfaces.c). Changing this variable's value will make certain color combinations be considered as 'same', which will lead to :distant-foreground being used. For example: M-: (setq face-near-same-color-threshold 200000) M-: (clear-font-cache) Then, using your third example, the text will be displayed with a black foregound. Is this a reasonable fix, or should we consider implementing another way of measuring distance between colors like Tina mentioned?