===== Color Contrast =====
It seems there are several steps to the calculation of color contrast:
* Convert from 0-255 values to 0-1 values:
* R_{sRGB} = R_{8bit} / 255
* G_{sRGB} = G_{8bit} / 255
* B_{sRGB} = B_{8bit} / 255
* Adjust that conversion for some non-linearity:
* If R_{sRGB} \leq 0.03928 then R = R_{sRGB} / 12.92, R=\left(\left(R_{sRGB} +0.055\right)/1.055\right)^{2.4} otherwise.
* Same adjustment for G and B.
* Calculate the luminosity using this weighting of R, G and B:
* L_1 = 0.2126\times R + 0.7152 \times G + 0.0722 \times B
* Do the same for the background (or adjacent object with with you want to check the contrast). Calculate the ratio: \displaystyle \frac{L_1 + 0.05}{L_2 + 0.05}. The ratio should be greater than 3 for type 14pt or larger if boldface, or 18pt or larger even if plain, greater than 4.5 otherwise.
==== Blues ====
=== On Black ===
As one recognizes from the really low coefficient blue gets (0.0722), blue is relatively "dark", with just over a tenth the luminance of green. This inspires the question, "can blue be used on a black background? If so, what range of blues can?"
If we take [0,0,0] as black, and note that 0/255=0 and 0/12.92=0, we are interested in B satisfying
* \left(0.0722\times B + 0.05\right)/\left(0.05\right)\geq 3.0, or
* 0.0722\times B \geq 3.0\times 0.05 -0.05 = 2.0\times 0.05 = 0.1
* \Rightarrow B\geq \left(0.1\right)/0.0722 which requires B greater than 1: not possible. Blue needs a little "boosting" with red and green to be bright enough to show well on black. If we use equal amounts of red and green to achieve this, we need
* \left(0.0722\times B + 0.9278\times X +0.05\right)/\left(0.05\right) \geq 3.0
* \left(0.0722\times B + 0.9278\times X \right) \geq 0.15-0.05 \; =\; 0.1 which yields, for the brightest blue (1.0)
* 0.9278 \times X \geq 0.1 - 0.0722 = 0.0278 \Rightarrow X\geq 0.0278/0.9278\approx 0.03
* \left(\left(X_{sRGB}+0.055\right)/1.055\right)^2.4 \geq 0.03
* \Rightarrow \left(X_{sRGB}+0.055\right)/1.055 \geq 0.231=\sqrt[2.4]{0.03}
* X_{sRGB}\geq 0.231\times 1.055 -0.055 = 0.2437 - 0.055 = 0.1887
* 255 \times 0.1887 \approx 48 to we can use [48,48,255].
* Less blue will require more X, to be determined by analagous calculations. Boosting using only green and no red is left as an exercise.
=== On White ===
How pale a blue can be used on a white background? White [255,255,255]/255 transforms to [1,1,1], and
* \left(1.055/1.055\right)^{2.4}=1
* (and 0.2126 + 0.7152 + 0.0722= 1.0000) so we are seeking values of B satisfying
* 1.05 \geq 3.0\times\left(0.0722\times B +0.05\right)= 0.2166\times B + 0.15 \Rightarrow 0.90\geq 0.2166\times B \Rightarrow 0.90/0.2166 \geq B
* which holds for all values of B from 0 to 1.0.