DPI Scaling has arguably been the bane of Windows users looking for more visual fidelity with each advancing version of the operating system. Unfortunately, due to the way Windows processes text, display scaling has been frustrating endeavor at best for some users.
However, with the Windows 10 Anniversary Update, it looks as though the Windows team is looking more into improving the display scaling experience.
Peter Felts, a senior program manager in the developer platform group guest hosted an Ask the Core Team blog post overviewing the technical aspects, tweaks, and improvements to display scaling. The post covers issues that includes efforts to bring legacy software scaling up to par with UWA performance and the issues with design patterns that have hindered a full-scale overhaul of Windows DPI adjusting.
For a bit of background, another Microsoft employee by the name of Steve Wright covers three of the most common problems that occur with Windows display scaling.
Problem Statement:
- Blurry text and UI components.
- Applications sized incorrectly (too big or too small).
- Applications are sized correctly and are not blurry, but have other layout issues (such as clipped text or other UI components).
These problems are most frequently seen whenever the display scale factor of a Windows PC changes while the user is logged in and/or if an application is moved from the “main display” to a display that has a different display scale factor.
With Windows rounding the corner on 30 years of public use, many still question the operating systems’ inability to nail down a decent display scaling experience. Why not simply do a system overhaul with the next iteration of Windows, be it Windows 7, 8, 10 or newer?
Why doesn’t Microsoft Just Fix Display Scaling on Windows?
This is a valid question that many of us have asked ourselves when joining teams that are working on this problem space.
The main challenge that we face, however, is that many, many, applications that run on Windows are using a design pattern where they ask Windows for information about the system when they launch (questions such as how big the display is, what is the display scale factor, what is the size of the font that should be used for default text, as well as others) and then cache this information and never expect it to change. Because of this, even if Windows did start giving these applications information about a DPI change, most, if not all, of these applications wouldn’t even be asking and therefore would not respond correctly. Furthermore, if Windows did start providing dynamic display-scale-factor-related information this would be a nightmare for application compatibility and would probably cause more problems for application stability than it would help in terms of high DPI display issues.
Enough with the why’s and how’s of Windows display shortcomings here is how the talented people behind Windows 10 and specifically, Windows 10 Redstone 1 update, have sought to address this long standing issue.
Before the Windows 10 Anniversary Update, if an application developer tried to update their desktop application to respond to a display-scale-factor changes, they would soon discover that the NCA would not resize when the scale factor changed. This meant that their application would have undersized or oversized titlebars when the scale-factor changed (Figure 1).
For the Windows 10 Anniversary Update we now support automatic scaling of NCA via use of a new “EnableNonClientDpiScaling” API.
Next up, the use of Mixed-Mode DPI scaling, a process in which “we’ve broken the process-wide constraint on an application’s display-scaling mode such that developer can now specify a different scaling mode for each (top-level) window. In other words: developers can focus their development time on making the important parts of their UI handle display scaling well, while letting Windows handle the other windows in the application.”
Other improvements include the aforementioned support of “EnableNonClientDpScaling” and Mixe-Mode DPI have found their way into apps and services such as Office and Windows Presentation Framework (WPF).
By no means has the Windows team done away with all the issues users have experienced with display scaling and Felts acknowledges that there were areas that were missed leading up to the Anniversary Update release. The team is hard at work trying to address desktop icon scaling, common control scaling and WinForms as well making the entire switching process a log less (logging in and out apply adjustments) endeavor. for more details on how Windows display scaling works or what the Windows team has planned to address the issue, visit Microsoft’s Ask the Core Team blog. The Windows team has some ground to cover before the DPI scaling complaints subside, but at least now, users can start to make out a path of development toward addressing issues, albeit a still somewhat blurry path. Sorry, the pun was right there.