1
1
Looking at Windows 8.1 DPI Scaling Enhancements it is clear that Windows 8.1 is going in the right direction for giving Windows decent Hi DPI support, but the description of how it uses a "normalized 1-foot DPI value", made me realise that for some devices, the way you are using the device could determine what the "Normalized DPI" value should be at that time.
For instance consider the case of using a Microsoft Surface Pro 3, with 12" 2160x1440 display, where you could be using it as a laptop or holding it as a tablet:
- As a laptop, it would need a "normalized 1-foot DPI value" of around 118 dpi1ft, when it is 2ft from your eyes.
- As a tablet, it would need a "normalized 1-foot DPI value" of around 216 dpi1ft, the same as the screens DPI value (dpi), at 1ft from your eyes.
Adding these to the examples given by Gavin Gear in his blog post, we get:
Display Resolution DPI 1ft Normalised DPI
12" Surface Pro 3 at 22" 2160 x 1440 ~216 dpi ~118 dpi1ft
12" Surface Pro 3 at 12" 2160 x 1440 ~216 dpi ~216 dpi1ft
4.5" HDTV 720 display at 9" 768 x 1280 ~332 dpi ~250 dpi1ft
23" Full HD display at 22" 1920 x 1080 ~96 dpi ~150 dpi1ft (I calculate 176!)
27" WQHD display at 22" 2560 x 1440 ~109 dpi ~175 dpi1ft (I calculate 200!)
32" 4K monitor at 22" 3840 x 2160 ~138 dpi ~250 dpi1ft
Thanks to Sven Neuhaus's DPI Calculator / PPI Calculator
Given that in order to scale according to normalised dpi, either the display size and/or dpi value must be being stored, is there any way to change this value for a given display? Perhaps it is stored in the registry somewhere, or in the monitor driver or .inf
file?
Even if there isn't a supported way of changing an explicit explicit dpi1ft value, perhaps it could be done by manipulating some value that it is derived from, for instance the screen size.
If you could make Windows think that a 12" Surface Pro 3 screen was only 6.5" when using it at 22", it would have roughly the same normalised dpi value:
6.5" Surface Pro 3 at 22" 2160 x 1440 pixels ~396 dpi ~218 dpi1ft
So, can anyone think of a way to either change the "Normalized DPI" value of a Windows monitor, or change any of the underlying parameters which might result in the "Normalized DPI" value changing?