This is probably the twentieth time I'm trying to make sense out of this marvelous piece of... errr, thing.
I don't resist quoting the best part of it, for your unlimited reading pleasure:
The pixel unit, 'px' is relative to the resolution of the viewing device. For example, the viewing device can be a computer display or a printer. Normally, the pixel unit refers to physical pixels of the viewing device. However, if the pixel density of the output device is very different from that of a typical computer display, the user agent should rescale pixel values. It is recommended that the reference pixel be the visual angle of one pixel on a device with a pixel density of 96dpi and a distance from the reader of an arm's length. For a nominal arm's length of 28 inches, the visual angle is therefore about 0.0213 degrees.
For reading at arm's length, 1px thus corresponds to about 0.26mm (1/96 inch). When printed on a laser printer, meant for reading at a little less than arm's length (55 cm, 21 inches), 1px is about 0.21mm. On a 300 dots-per-inch (dpi) printer, that may be rounded up to 3 dots (0.25 mm); on a 600 dpi printer, it can be rounded to 5 dots.
The two images below illustrate the effect of viewing distance on the size of a pixel and the effect of a device's resolution. In the first image, a reading distance of 71cm (28 inch) results in a px of 0.26mm, while a reading distance of 3.5m (12 feet) requires a px of 1.3mm.
Now, how much nonsense does this make, depending on how long your arm is?
What about accessibility, for people with no arm? :-)
Na, seriously, how the hell do you implement that?
Am I correct in thinking that 1 pixel should be (distance / 28) * (dpi / 96) dots?
Now, how do you deduce the theoretical distance from either the resolution (or more likely from the device size?)...
Errr, maybe the best distance should be 2 times the device physical dimension (x-resolution / dpi)?
So, you may go: 1 pixel = x-resolution * 2 / (28 * 96) dots
My macbook being at 1280 dots horizontally (13"3 diagonal, which means 110 dpi), that should be 1 pixel = 0,9523 dots
Now, let see what happens in browsers...
Mmmm, so, if my delirious calculus is correct, that means browsers think 550 dots gives 480 px, hence that 1px equals 0.87 dot...
Put otherwise, browsers think I'm looking at my screen from a distance of 20 inches (about 50 centimeters).
Or maybe, that my macbook is 13"3 wide, and not 13"3 diagonal...
Assuming the former, this may be tolerable for a couple of minutes on my honorable ol' macbook at the given resolution...
Now, for more confusion... Obviously, 480px won't change whatever the resolution of your machine... I wouldn't be too surprised either that 5in would look just 480px on every computer as well (to be confirmed)...
So, are "inch" even something reliable? If so, is it based on the optimal dpi of the screen, and not on the actual dpi (varying depending on the resolution)? More generally, shall we assume that whatever the screen, at the same dpi, we should all be stuck at 20 inches from the device?
And how does the CSS-WG plans on enforcing px as a "relative to the resolution of the viewing device" unit, while it's quite likely that 99% of the web expect it not to be?And how would that specification expect to resist time while mentioning such things as a "typical computer display", that changed so radically in a decade (remember the 800x600 era, not that long ago?)
I must say this casts some doubts on the future of css3 as-is - if even units are not making sense.
Am I simply understanding all this the wrong way?
Help! :-)
PS to laurentj: yeah yeah, now, just try ranting in the line of "oh, dmp, your style engine doesn't even implement units properly, that's unforgivable!", and I'll receive you with a dozen wet-trouts wrapped inside a printed version of that darn specification, along with a day-long gecko-bashing! :-)