Scaling Windows - The DPI Arms Race
by Brett Howse on April 15, 2014 2:00 PM EST- Posted in
- Operating Systems
- Windows
- Microsoft
- Windows 8.1
- High DPI
Windows 8.1 - More DPI Changes
When Microsoft launched Windows 8.1, it continued to refine the scaling functionality. To assist with people using a tablet such as the Microsoft Surface as a desktop replacement, Windows 8.1 now has the ability to have independent DPI settings per display. This was sorely needed, as anyone who used a Surface Pro (a 1920x1080 pixel 10.6” display) and then connected it to an external 1080p monitor that was two to three times the size of the tablet display complained bitterly about what a terrible experience this was. The Surface Pro’s on-device screen is set at 150% scaling which is necessary to make that resolution work on a 10” screen, but on a 24” monitor all on-screen elements are enormous.
Having two independent DPI settings is not without its challenges. Applications are initially scaled at the DPI setting of whichever monitor they are opened on. With any multi-monitor system, the operating system has to be able to deal with a person moving an application from one monitor to the other. If the application is scaled at the initial DPI, how to you keep it from becoming too large or too small when moved? The solution is once again DPI Virtualization, and once again it’s a solution that works but it’s not ideal.
If the initial monitor is a lower DPI, the application will be scaled up when moved to the higher DPI display, and if it moves from a High DPI monitor to a low DPI display, it will be scaled down. Just like with the Windows Vista DPI Virtualization, this method can result in applications that aren’t as sharp as they should be, as well as quirks with user elements. To get around these issues, Microsoft has expanded the DPI API to allow for per-monitor DPI-aware applications.
Applications that are per-monitor DPI-aware are expected to automatically re-scale themselves when moved between displays. They can do this because the operating system will send a WM_DPICHANGED message to the application when most of the application’s area has moved to a display with a different DPI level. The message sent to the application includes a recommended DPI level, but the application can choose whatever value it wants.
Windows 8.1 also improves several other key elements of DPI settings, continuing the tweaks made since the days of Windows XP where you had to reboot for a DPI change.
High DPI Windows Features | |||||
Feature | Windows XP | Windows Vista | Windows 7 | Windows 8 | Windows 8.1 |
DPI Virtualization of DPI-unaware apps | No | Yes | Yes | Yes | Yes |
DPI Virtualization of System DPI-aware apps | No | No | No | No | Yes |
API to declare DPI awareness level | No | Yes | Yes | Yes | Yes |
API to declare per-monitor DPI awareness | No | No | No | No | Yes |
APIs to retrieve system metrics and DPI | Yes | Yes | Yes | Yes | Yes |
Window notification of DPI change | No | No | No | No | Yes |
APIs to retrieve monitor DPI | No | No | No | No | Yes |
Requires reboot for monitor DPI change | N/A | N/A | N/A | N/A | No |
Requires a reboot/log off for system DPI change | Reboot | Reboot | Log off | Log off | Log off |
Per user DPI setting | No | No | Yes | Yes | Yes |
Auto configuration of DPI at first logon | No | No | Yes | Yes | Yes |
Viewing distance incorporated in default DPI calculation | No | No | No | No | Yes |
All of this DPI talk has focused 100% on the desktop environment. That is because the Modern environment for Windows has the luxury of being built with no legacy applications to deal with, so it can actually work in a manner similar to Apps on iOS and Android.
Windows 8.1 - Windows Store Apps
Love it or hate it, the Modern environment for Windows came at a time when High DPI devices already existed. This allowed it to be architected with support for native scaling for all applications. Windows Store apps are automatically scaled by Windows based on physical screen size, resolution, and device form factor at a ratio of 100%, 140%, and 180%. Windows Store apps encourage the use of scalable vector graphics if possible, or multiple copies of bitmap images to allow crisp images regardless of the scaling used.
Windows Store apps, and even Windows itself, scales not only the DPI of the application, but also how much content the application can display based on the physical screen size. Larger displays, much like in the desktop world, are often used to see and do more on the screen rather than just make everything larger as on a phone, and the Windows Runtime allows for all of this.
Windows Store apps require far less work from the developer in order to achieve this scaling. The app doesn’t have to be DPI aware, because by default all applications automatically are. Instead, things such as XAML layouts and SVG graphics allow the apps to be rescaled completely by the operating system.
Here is Adobe Touch, a Windows Store app version of Adobe Reader. It’s perfectly at home even at 3200x1800 on a 13.3” display. All of the UI elements are correctly sized and of course still usable by touch.
114 Comments
View All Comments
Taracta - Friday, April 18, 2014 - link
I could say the IBM started the high density displays with the T220/T221 4K 22" monitors in 2001 with a ~200 DPI but I won't because these were not followed up on like the Sony laptop display you mentioned. I believe that it only counts when you follow up on it and make it part of your product portfolio, which is what Apple did, which forced the others to do it too.So I give credit to Apple and not IBM, for them mainstreaming HiDPI by requesting HiDPI panels from their ODMs suppliers. This in turn allowed the others to have access to the technology but Apple was the leader in mainstreaming it.
Gigaplex - Wednesday, April 16, 2014 - link
Apple didn't make the panels, they bought them off suppliers that were making them anyway. Often those panel suppliers were also Android manufacturers, so don't try to tell us that those screens wouldn't have made it to Android without Apple.yasamoka - Wednesday, April 16, 2014 - link
Hint, those displays were MADE for Apple. Upon Apple's request. Nobody cares who made the displays, they didn't appear out of thin air and then Apple went: OH PERFECT, this is a perfect fit!psyq321 - Thursday, April 17, 2014 - link
Sony introduced a 4" 1024x600 display (296 PPI) in 2007 --> look up Sony Vaio UXSony also introduced a 13" 1920x1080 display (170 PPI) in 2010 --> look up Sony Vaio VPC-Z
So, no, Apple did not invent high DPI screens. Apple invented a marketing name for them ("Retina"), though.
By the way, Apple's notebook displays were low-DPI garbage before Retina Macbook Pro. I switched to Retina Macbook Pro since Sony stopped innovating and retired Vaio Z and Apple finally decided to produce a real high-end notebook. I could not even think of this before Apple decided to put a decent resolution display in their notebook.
psyq321 - Thursday, April 17, 2014 - link
Before I switched to 15" Retina Macbook Pro, I had all generations of Sony Vaio Z.Sony switched to 13" Full HD panels in 2010. Two years before Apple's switch to "retina" screens in their laptops. Before Apple Retina Macbook Pro, the DPI of their notebooks was pathetic.
Also, Sony had Vaio UX with 1024x600 4" screen in 2007.
munim - Tuesday, April 15, 2014 - link
These problems are why I won't be upgrading from my 96 DPI 24 inch monitor for the foreseeable future.jhoff80 - Tuesday, April 15, 2014 - link
"The Surface Pro’s on-device screen is set at 200% scaling which is necessary to make that resolution work on a 10” screen"No, it isn't. Out of the box, the Surface Pro and Surface Pro 2 are set to 150% scaling on their own displays. And for what it's worth, 125% scaling is completely usable as well - I've used it that way since release of the Pro 1 (since upgraded to the Pro 2).
bountygiver - Tuesday, April 15, 2014 - link
Exactly, even with only 125%, I have no problem navigating most legacy applications with touch.Brett Howse - Tuesday, April 15, 2014 - link
Sorry about that - fixed now.darthrevan13 - Tuesday, April 15, 2014 - link
"Few high resolution devices"? That's no excuse! You can move the slider up to 150-200% even on your current low res display and then things will have to get 1.5-2 times bigger. It's not hard at all! I am a developer and I can't understand that. Microsoft released the API for this at the start of 2007, that makes 6 years not including this one.Most of all Adobe has no excuse at all! They should offer all of their next version apps which scale correctly for free!