Myndex / SAPC-APCA

APCA (Accessible Perceptual Contrast Algorithm) is a new method for predicting contrast for use in emerging web standards (WCAG 3) for determining readability contrast. APCA is derived form the SAPC (S-LUV Advanced Predictive Color) which is an accessibility-oriented color appearance model designed for self-illuminated displays.
https://git.apcacontrast.com/documentation/APCAeasyIntro
Other
435 stars 14 forks source link

Definition of contrast values unclear #11

Closed joshuakraemer closed 2 years ago

joshuakraemer commented 3 years ago

First, thank you very much for your ongoing work on color contrast.

I am confused about the definition of the APCA/SAPC contrast values, as the available articles seem to contain contradicting information. The calculators show Lc values, but the wiki page https://www.w3.org/WAI/GL/task-forces/silver/wiki/Visual_Contrast_of_Text_Subgroup talks about percentages. Also, on that page, #0A0 on #000 is said to have "-80% contrast". However, the APCA calculator gives an Lc value of -47.88, and the SAPC calculator a value of -44.54.

Could you please clarify if the Lc values and percentages are identical, or maybe represent different versions of the algorithm?

Also, how is the contrast reference of 100% defined?

I understand that everything is a work in progress and documentation is incomplete, but I think even a very short introduction at the top of the GitHub readme including a definition of the contrast values would be very helpful.

Myndex commented 3 years ago

Hey Joshua @joshuakraemer Thank you for the comments.

Yes, this is mainly a documentation issue — I have a massive amount on my plate, and documentation tends to be delayed as a result.

Early this year we did a significant rescaling and adjustment of the constants, and mods to the math, so the documentation has not fully caught up. In the rescaling, what was 80% became Lc 50 ish to 60 - ish.

The "most current" right now is the SAPC calculator, this is where early beta are tested first. APCA is the next step, and more stable. As of the moment, APCA has not been updated with the G-4g series constants.

Also, we changed from using a percentage % to Lc to clarify that this is suprathreshold perceptual lightness contrast, and not to be confused with other contrast measures that use percentages and are based on JND/threshold contrasts.

As for how is 100% defined: it's not, as it is not a percentage really — on an sRGB monitor, full white and full black will be a little over Lc 100.

The "key" levels are 60, 75, 90. Lc is scaled to hit these key levels, and also to be similar to clinical threshold values at very low contrasts (i.e. 1% or 2%)

The Lc curve(s) are set such that if you double the Lc value, it represents a perceptual doubling of contrast, and if you halve the Lc value, it represents cutting the perceived contrast in half.

∆Lc15 is similar to a change in font weight of 200 to 300 — i.e. in theory if you increase the weight of a standard font like Helvetica from 400 to 600 you can reduce the Lc by 15 and have a similar perceived contrast. This is for fonts less than about 36px.

Lc 60 was set to be "sort of like" WCAG 2.x 4.5:1, and Lc 45 is sort of like 3:1, etc. (Of course, WCAG 2.x is not perceptual, so as the color pair gets darker, the old WCAG 2.x becomes increasingly inaccurate.)

The current algorithm version is 0.98 G, constants 4g. This does seem stable in testing, and will probably be the version to move forward. But we are also discussing other related issues such as conformance, and how to specify the guidelines in a way that is easy to implement and use — so until that becomes more clear, other things like documentation and NPM modules have been on hold.

This is common for the early beta development, but in this case it is a public beta so issues like this may seem more prominent.

Please let me know if you have further questions

Thank you

Andy

Andrew Somers W3 WAI Invited Expert Myndex Color Science Researcher Inventor of SAPC/APCA

joshuakraemer commented 3 years ago

Thank you very much, it's all clear now!