My LCD Monitor is 22 inch ViewSonic, windows resolution screen is default 96 DPI. I realize that 1 inch in computer does not fit to 1 inch in real. My LCD Screen Resolution is 1680 x 1050, so the diagonal measurement is root of (1680^2 + 1050^2) = 1981 pixel. So I think the resolution (dpi) of system should be 1981 / 22 = 90 DPI instead of 96 dpi. Why windows OS always set resolution 96 dpi for all LCD monitor?
migrated from stackoverflow.com Aug 22 '11 at 15:38
This question came from our site for professional and enthusiast programmers.
Roughly in order:
True resolution independent rendering won't happen until the DPI of monitors start to approach the DPI of printers. 600 dots per inch, there's a long way to go. GDI+ was a first attempt but was widely panned, WPF is getting taken serious but got a lot of flak for fuzzy text. Largely solved in version 4 btw.
96dpi is just a number that, through weight of history, equates to the native resolution of a monitor. The dpi values has never been more than a rough approximation to the true physical value. In fact, you can swap monitors and the dpi value is not changed, it is simply not related to the monitor.
Modern panels have higher pixel density, e.g. recent iPhones. At some point in the future it will be common for computer panels to have much higher dpi than 96. Windows Vista paved the way for this by allowing apps to declare themselves to be high-dpi aware. But the change is slow to arrive because so much software does not support high dpi.
I would not be surprised if 96dpi always was taken to mean the native resolution. Since Windows presents font scaling in terms of a percentage relative to native, this would not impact on the user. The big problem, and one that exists today, is how to know absolute sizes of objects you paint on the screen. In fact, I believe that pixels are typically not even square so it really is a free-for-all.