Subject: bug#74055: 31.0.50; color-lighten-name not lightening black

From: Gerd Möllmann <[email-masked]>
Date: Tue, 29 Oct 2024 09:25:38 +0100

Gerd Möllmann <[email-masked]> writes:

> Eli Zaretskii <[email-masked]> writes:
>
>>> From: Mattias Engdegård <[email-masked]>
>>> Date: Mon, 28 Oct 2024 17:57:49 +0100
>>> Cc: Gerd Möllmann <[email-masked]>,
>>>  Julien Danjou <[email-masked]>,
>>>  [email-masked],
>>>  Noah Friedman <[email-masked]>
>>> 
>>> 28 okt. 2024 kl. 13.39 skrev Eli Zaretskii <[email-masked]>:
>>> 
>>> > Our notion of "lighten color" seems to be to increase the color's
>>> > luminance by P percent.  Since the black color's luminance is zero,
>>> > increasing that by 50% still yields zero.
>>> > 
>>> > By contrast, the page you point to seems to interpret "lighten" to
>>> > mean that P is the percentage of the full scale, not of the original
>>> > color's luminance.
>>> > 
>>> > This goes back to commit 656c2dd66e, which was supposed to fix
>>> > bug#54514.  But maybe Noah's interpretation of "lighten" was
>>> > incorrect, and we should revert that change?  OTOH, if we do revert
>>> > it, then Noah's example will disagree with the above page.
>>> 
>>> That change may have been made in haste. For example, it didn't
>>> touch the corresponding saturate and desaturate functions which use
>>> similar mechanics, so there is now an inconsistency in that respect.
>>> 
>>> But which interpretation is better isn't obvious. It doesn't have
>>> much to do with colour theory per se. As luminance is already a
>>> percentage of sorts, it's not at all clear what it means by
>>> increasing it by a certain percentage. Personally I wouldn't use
>>> either function because of how ill-defined they are.
>>
>> Maybe there are widely-accepted de-facto standards for that?
>
> I think HSL colors (Hue Saturation Luminescence) are used by CSS for
> example, so that's good, and color.el has support for HSL colors. Except
> that something is currently not working right, I guess.

TIL the L in HSL actually stands for lightness. And the math for RGB <->
HSL conversion is nicely explained here:

  https://www.niwa.nu/2013/05/math-behind-colorspace-conversions-rgb-hsl/