The Old Way - Windows XP Scaling

As mentioned, Windows XP does have support for higher density displays, but the experience is rarely very good. Changing the DPI settings in Windows XP increases the font size and OS elements, making everything larger on the screen. It works up to a point, but if the system DPI setting is too high, many applications have issues. Even in XP, there’s an API that allows a developer to check what the fonts are set at and scale their forms as needed to make it work with that ratio of font. However, if an application doesn’t check the font DPI level, there are often problems: text boxes overlap UI elements, form fields have text spill out the top or bottom of the field, and other nasty ugliness.

   

Even the OS doesn’t scale very nicely. The minimize and close buttons become very large, title bars are very text heavy in look, and system tray icons are simply scaled up in size giving an aliased and blurry look to them. It’s technically a workable solution, but without extensive developer buy-in, it likely causes as many (or more) problems than it solves.

But Windows XP is now old news, and due to the low PPI displays of the time, it was generally not an issue. DPI scaling in XP was normally used if a person felt the text on the screen was too small, but in almost all cases a better solution was to simply lower the resolution of the monitor, even if it introduced blurriness to the LCD image.

A New Way - DPI Virtualization

Windows Vista introduced a new concept for dealing with applications that are not DPI aware – DPI Virtualization. Below 120 DPI the system would continue to utilize the XP scaling algorithm, but when the DPI settings in Windows are set above 120 DPI, DPI Virtualization is enabled. Any DPI-unaware application that request the DPI setting from the operating system with DPI Virtualization enabled are simply told that the DPI is set at 96 DPI – the base level. Windows then renders the application off screen and then dynamically upscales the application to whatever DPI setting is selected by the user.

While this certainly fixes the issue with fonts falling out of text boxes, it introduces some blurriness to the application. This is not an ideal situation, since the user experience is somewhat compromised. To get around this, Microsoft developed an API to declare that the application is in fact DPI aware on its own. Developers can call SetProcessDpiAwareness to declare that their application is DPI aware, and if so, Windows will not perform any scaling of the application. It’s then up to the application developers to decide how best to handle “non-standard” DPI settings.

Scaling Windows - Introduction Where It All Falls Apart
POST A COMMENT

114 Comments

View All Comments

  • kasakka - Sunday, April 20, 2014 - link

    Many monitors and TVs have reportedly messed up EDID data so it's probably not completely reliable. Reply
  • invinciblegod - Tuesday, April 15, 2014 - link

    Now that I think about it, how would you side swipe with a windowed modern app (to access settings)? Would you sideswipe the application or the edge of the panel? If it's the edge of the panel, that would be sort of weird since it's not part of the window (ironically, Mac users would not find this dichotomy confusing as they already have one in the Menu bar). Reply
  • Brett Howse - Tuesday, April 15, 2014 - link

    Always swipe the right side to access settings.

    If you have two metro apps (or more) open an snapped, it will do settings for the active (last used) window. If you're not sure which is active, the bar in between the two (or more) metro apps will have three dots and a bar, with the bar always on the side of the active app.
    Reply
  • Brett Howse - Tuesday, April 15, 2014 - link

    To specifically answer your question about windowed - obviously we're not sure yet what they will do but I imagine it will be the same as now with the active window having the settings but we won't know until we see some bits from Windows 9. Reply
  • Laststop311 - Tuesday, April 15, 2014 - link

    poor dpi scaling has kept me away from high dpi notebooks. I'm hoping for an alienware 18" m18x with gtx 980m 20nm flagship maxwell in sli and a 4k ips screen. Even tho my personally upgraded m18x r1 is still goin strong with 4.2ghz core i7-2960xm + gtx 680m sli the massive battery gains i will get going to 1st gen 14nm broadwell + 1st gen 20nm maxwell from 2nd gen 32nm sandy bridge + 1st gen 28nm will make it worth it. Just hope sli gtx 980m is enough to game in 4k on at least 1 step below ultra settings Reply
  • Antronman - Tuesday, April 15, 2014 - link

    If you actually want an alienware, you don't the first thing about technology.
    Here, let me fill you in:
    Alienwares = Overpriced, underperforming Dells.
    Reply
  • bznotins - Tuesday, April 15, 2014 - link

    I tried running Win8 in VM on a 13" MBP and even with the tweaks noted in this article, Chrome still doesn't look half as good as it does in OSX. I have no idea if this is a Win8 problem or a Chrome problem (or both), but regardless it keeps me from considering a high DPI Windows laptop. Or even running Win8 fulltime on my MBP. Hopefully they get it fixed at some point in the future. Reply
  • Accord99 - Tuesday, April 15, 2014 - link

    Chrome probably, it used to work well in HiDPI back late last year but something that Google did broke Chrome completely for a period of time, then only partially fixed.

    I don't care too much because I prefer using Firefox which works well.
    Reply
  • darthrevan13 - Wednesday, April 16, 2014 - link

    It also could be the VM driver. It looks okay on a native windows machine with high DPI Reply
  • rxzlmn - Tuesday, April 15, 2014 - link

    How about the other side of the high DPI development, hardware scaling? I have read multiple times on forums that high DPI screens would often not be able to properly scale down to a lower native resolution (i.e. that is an exact fraction of the original resolution), due to internal electronics still doing some kind of interpolation instead of pixel binning.

    For instance, I plan to buy a 4K laptop in the near future (the Lenovo Y50 probably), and one point why I want 4K and not 3K or something else is, that 4K would be able to natively scale down to both 720p (for games) and 1080p (for desktop stuff that is not usable via Windows DPI setting, yes, I'm looking at you Adobe).

    Does anyone have any insight on whether a 4K display on a notebook would use pixel binning to scale down? Or not? And if so, why, and will this be an issue that is intrinsic to the monitor, or somehow be tweakable by SW?
    Reply

Log in

Don't have an account? Sign up now