Scaling Windows - The DPI Arms Raceby Brett Howse on April 15, 2014 2:00 PM EST
- Posted in
- Operating Systems
- Windows 8.1
- High DPI
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.
Post Your CommentPlease log in or sign up to comment.
View All Comments
Brett Howse - Tuesday, April 15, 2014 - linkYou should do the math - 1280x1024 @ 17" is 96 DPI (called out in the article) and 1600x1200 @ 21" is also exactly 96 DPI.
So not high DPI. Even going down a couple inches on screen size isn't going to change the DPI much.
MonkeyPaw - Tuesday, April 15, 2014 - linkInterestingly enough, I had an Acer "Centrino" laptop circa 2004 that I believe had a 14" screen at 1280x1024. I remember needing to use 125% scaling. It was my first high DPI experience.
solraun - Tuesday, April 15, 2014 - linkGreat article! Thank you for calling out Adobe. But you are right, they are probably working overtime for a solution.
One important point though:
The resolution dictates how much detail any screen can display. The screen size determines how far away you want to be.
Actual dpi is unimportant.
The bigger the screen, the further away you will want to use it. The actual field of view, or angle, that the screen represents in for your eye stays the same. Sit in front of your monitor, then take out your smart phone and place it in the distance you would normally use it, but in front of the monitor. It will mostly match the outlines of the monitor.
So for me, if I am using 1080p on my 24'' screen or 1080p on my 5'' smartphone: it is the same number of pixels per degree of my view.
Similarly, I just bought a 4k 24'' screen, and while many people say 4k makes only sense on bigger displays, I disagree. I would have to sit further away from a 30'' monitor, and I don't have the space.
bountygiver - Tuesday, April 15, 2014 - linkthat's why windows 8.1 has a feature that solve this.
It queries the dpi and screen size and calculate the viewing distance and decide how it scales.
And I love how it scales real time when you move the apps across different monitors.
Taracta - Tuesday, April 15, 2014 - linkAdobe, with postscript and PDF (especially PDF which was meant to scale from the 10s of DPI on monitors to thousands of DPI on printing presses) in their portfolio that were meant to scale with DPI and their applications don't scale properly! RIDICULOUSNESS!
bengildenstein - Tuesday, April 15, 2014 - linkWhat? We're now giving Apple sole credit for the trend to improve mobile screen resolutions? Utterly preposterous.
The DPI race did not "begin" with the iPhone 4. Screen resolutions (and by direct implication PPI/DPIs -- given a fixed screen area) have been steadily increasing over time, with Android devices showing a far smoother increase curve than the single iPhone "retina" release. Additionally the increase in resolution requires a larger industry of components to support them. And smartphone resolutions continue to increase while the iPhone screen remains stagnant at a sub-HD resolution.
I'm not arguing whether Apple is influential. But I think it's high-time that we stop crediting them with creating innovations that have already happened and were trending at the time of their release.
Taracta - Tuesday, April 15, 2014 - linkApple deserve the credit for the increase in DPI and screen resolutions. Without Apple you would not have had the Android device push ever higher DPI and laptops with now 4K screens. The only thing that was happening was the defaulting of resolutions to 1080p because of HDTV but DPI was actually going down as you were just getting bigger and bigger 1080p monitors. Actually 1080p was a regression from the 1920X1200 monitors that had existed before!
So yes, Apple deserve the credit for starting the trend of increasing DPI and resolution.
evonitzer - Tuesday, April 15, 2014 - linkIn the phone space, not exactly. The OG iPhone, 3G, and 3GS were all 320x480 devices (165ppi). Meanwhile, Android phones had bumped their way up to 480x800 and 480x854 (265ppi @ 3.7"). The 3GS was released in June 2009, and 4-5 months later the OG Droid came out with a higher resolution. Then in June 2010 Apple released the iPhone 4, which further bumped up the resolution to 'retina', or 330 ppi. I'm not sure when the first 720P Android phone came out, but roughly 16 months later, Android phones matched the 330ppi and have kept going up.
So I dunno. Perhaps the Android manufacturers would have stagnated without Apple countering them in 2010, but I would suggest that Android phones were pressuring Apple to improve and so they did. Push and pull from good competition. Who deserves the credit?
Brett Howse - Tuesday, April 15, 2014 - linkIt's all about marketing. The "Retina" branding of the screens worked with consumers.
You could say the same about the Touch ID. Not the first phone with a fingerprint sensor, but certainly the first one that average consumers would know about.
In tech, it's rarely about who gets to market first, but more about who resonates with consumers with a product and in these two cases I'd argue Apple did that.
They are not always the product innovators, but sometimes they are the ones that get average people to know enough to ask about an innovation.
hackbod - Wednesday, April 16, 2014 - linkIf you think us having high density displays in mobile today owes *anything* to Apple, you are delusional. This would have happened without Apple lifting a finger, it was *already* happening without them, and was actually happening long before the iPhone came out.
Android devices were clearly increasing screen densities first, and in the Android world as soon as that happened, the platform had the full extensive density support it has today that allows seamless scaling down and up in density, to 320dpi and beyond, without changes to applications (once they were tweaked to be compatible with the implementation in Android 1.6, which was even a bit before the Droid). Nobody needed to push this along: screen resolution has *always* been one of those marketing numbers manufacturers use to convince people that their hardware is better, and in fact for the densities we are talking about here this is one of the more useful numbers because its impact is clearly visible right on the screen. The fact that they continue to push screen densities up to 480dpi and beyond pretty clearly shows that nobody needed Apple to make up a word and act like they were the Big Innovator in order to spur things on.
But this was all happening well before Android or the iPhone. This increase in screen density actually happened well before that, in the Palm device world, with the introduction double density (160dpi) screens on Palm devices and support in that platform for scaling based on density. In fact this experience with how important it is to handle multiple densities on mobile devices had a big impact on the design of Android, planning for this from the start and thus having better intrinsic support for it.
If you are actually familiar at all with the development of the mobile market, I think it is pretty clear that this increase in density is actually some intrinsic aspect to this market compared to what happened in desktops. There are probably a lot of reasons for this; for example, mobile screens can't really grow in size so increases in screen pixels need to be done as density increases rather than screen size increases, and these screens are starting at a much lower resolution so the simple 2x jump in density is a lot easier (keep in mind that 2x screen density means 4x the pixels to render, and when you are talking about desktop screens starting from their current resolutions that actually pushes you up in to resolutions that are pretty expensive to drive).
Thinking that Apple had anything to do with pushing this part of the industry just shows a severe lack of knowledge about the history of the mobile market.