[cairo] Linear colorspace not a good idea
spitzak at d2.com
Mon Mar 13 14:13:28 PST 2006
Although I wrote a lot of arguments in favor of using linear space (see
http://mysite.verizon.net/spitzak/conversion/index.html), there are
serious problems with using this for GUI. I think Cairo has to do all
compositing in the device space (ie sRGB for most of the devices we are
interested in, but allow the backend to decide).
First is that there is a huge supply of icons that have been designed to
be composited in sRGB space and will have bad edges otherwise when put
atop the background they are designed for.
Premultiplied images are almost impossible to correct and then composite
in linear space. Many programs will produce very noisy or incorrect
color values when the alpha is small, dividing by alpha to convert to
linear will amplify this noise to unacceptable levels.
Large areas of partial transparency, such as tinting, or hand-painted
Photoshop corrections, will composite to totally different colors than
Another serious problem is that sometimes people want the perceptual
result of the composite rather than the true result. The most obvious
example is text and thin lines, drawn in different colors on different
backgrounds. People expect the same image drawn in different colors
(such as white on black verses the inverse) will look the same thickness
and weight. Unfortunately this is not true at all in linear space: the
black lines look much thinner than white lines. But in sRGB it does
appear to work, because it is much closer to perceptually linear. Every
line graphics and work processor program in the world relies on this.
Also an obvious problem is that using anything other than device space
will slow down Cairo a huge amount and probably make hardware
Russell Shaw wrote:
> For mathematical operations to work right, gamma correction should be done
> on RGB data so that any nonlinear light-input vs voltage-output on input
> such as cameras are linearized. After the data is transformed in various
> ways, it should gamma "nonlinearized" to compensate for nonlinear
> intensity vs
> voltage of output devices such as CRTs.
More information about the cairo