The devices are not what determines the pixel per inch value. This is determined instead by the browser used. This allows it to be more standardized, but not perfect by any means. All browsers convert physical units like `cm` and `in` to pixel values out of necessity for display. However, their true pixel values [depends on whether or not it's a high resolution device or print or low resolution device](http://stackoverflow.com/a/13895271/2065702). High resolution and prints are *supposed* to be the same as the physical length, but it is not perfect. As for what pixel values physical lengths are converted to, you can view a [full chart of conversions](http://destination-code.blogspot.com/2008/10/font-size-absolute-length-units-pt-pc.html). In practice, using physical units is acceptable as a scalar for pixels. But you have to keep in mind that `1in` will not really be 1 inch. However, you must test the output on all the relevant platforms that interest you (possibly including print) to make sure it behaves the way you desire. Also keep in mind that really old browsers (IE6 and below) cannot scale physical units when zoomed. Another potential issue is that really old monitors may not be able to send their size to the OS, which would make it impossible to use physical units as media query points on those devices. For a more full history of the physical units conundrum, you can [read this post](http://static.zealous-studios.co.uk/projects/web_tests/PPI%20tests.html).