Windows 8 Has Scaling Issues On High-PPI Displays
crookedvulture writes "High-PPI displays are becoming increasingly popular on tablets and notebooks, but Windows 8 may not be ready for them. On a 13" notebook display with a 1080p resolution, the RTM version of Win8 scales up some desktop UI elements nicely. However, there are serious issues with Metro, which produces tiles and text that are either too small or too large depending on the PPI setting used. That setting, by the way, is a simple on/off switch that tells the OS to 'make everything bigger.' Web browsing is particularly problematic, with Internet Explorer 10 introducing ugly rendering artifacts when scaling pages in both Metro and desktop modes. Clearly, there's work to be done on the OS side to properly support higher pixel densities."
...that MS has been one of the first to do the "device-independent drawing stuff" with GDI, and yet twenty years later, there's still no working device-independent UI from them.
Ezekiel 23:20
I once worked on hardware rendering with a webkit-based browser, and these kind of issues are very common when you're converting between floating-point layout coordinate and integer screen space.
Some rendering pipelines make it harder than others to deal with, especially if you can't control the behaviour of non-integer pixels at the edge of images. To fix it, you have to visit all the conversion sites and decide how you want to handle the conversion. It gets especially tricky if you're scaling and stitching images together that you've uploaded as multiple textures to get around maximum texture size issues. Concatenated transformations through composition layers can be tricky too depending on what your graphics API does.
I blame apple...if the wouldn't have released those retina displays high-PPI displays would have never come and windows 8 would have been a huge success. Apple can you not leave Microsoft in peace for one second?!
1080p is just 1920x1080 - that part almost certainly works fine. It's that pixel density has, for years, been within a fairly narrow range (22-27 inch displays all maxing out at 1920x1200 or 1920x1080). The problem is pixel density is now increasing, think apple retina displays, and that's a problem most of us on the software side were never expecting and aren't used to having to cope with. At least not for desktops/laptops (phones is another matter because they are a rapidly maturing product used in a completely different way).
Besides that, different groups will have people who are more or less aware of this problem and trying to deal with it. Microsoft *should* have testing labs for all of these different things, and feedback about a very uneven experience should have moved up and down the chain. But as someone who writes games for a living, most of the stuff I have done in the last 5 or 6 years would look like shit on a 13 inch display at 1920x1080. Everything would be too small unless the screen is 10cm from your face. That's the catch here, we've designed for a single pixel to take up a certain fraction of your personal field of view, suddenly higher density displays come along, to which we initially ask, why, was there something wrong with the old pixel densities? Is this technology actually better or is it just going to be a method to sell expensive video cards. These new displays people are physically positioning the way their old setups were, but well, all of the assumptions about field of view get tossed.
This is not a Windows issue but rather the way that developers support High DPI in their apps.
Way too many developers are still using MFC and Win32 for UI development, which has no concept of High-DPI and requires scaling to be done manually. If the app doesn't even poll for the current DPI of the OS then nothing is going to scale correctly using those antiquated API's.
WPF automatically adjusts controls to the DPI settings of the OS, however if you don't use vector paths to render UI elements you might see an ugly bitmap stretch here and there. Haven't fully investigated Windows RT (the framework, not the tablet), but I am sure DPI awareness is also a fundamental part of its presentation framework. If a developer throws a 16x16 icon into an app resource, you are going to get and ugly scale.
When it comes to web pages then its anyone's guess how the web designer will support high DPI. Web pages are still mostly a bunch of static jpg's so scaling up something that looks like a line on regular DPI settings, only to see it smear and blur into a bar as shown in the article is purely the fault of the web page designer.
I do agree that as a whole Microsoft needs to do a little better job supporting High DPI across their API's, but most of what this article mentions comes from poor app/web design more then anything.
I haven't thought of anything clever to put here, but then again most of you haven't either.
Thanks for the typical obligatory karma whoring post full of snark.
Meanwhile, they did figure it out to the extent it can be.
http://blogs.msdn.com/b/b8/archive/2012/03/21/scaling-to-different-screens.aspx
Meanwhile, Apple has similar issues with their retina display:
http://blog.macsales.com/14111-15-macbook-pro-with-retina-display-lessens-web-experience
http://www.robertotoole.com/2012/06/17/macbook-pro-retina-display/
Meanwhile, let the anti-MS bashfest continue.
Yes. There is something VERY wrong with old pixel densities.
Aside from the idea that I had a 1600x1200 display TWENTY YEARS AGO and since then WE'VE GONE BACKWARDS, I can offer a lot of very good reasons.
1. Clearer pictures. My phone can snap images many times larger than the effective res of my monitor. My monitor should not be the bottleneck.
2. Font smoothing - Subpixel rendering is an ugly hack and makes things look like garbage (If it looks good to you, you need glasses. Yes. You do.) You really need "retina" level pixel densities before font smoothing should even be considered.
3. Truely scalable UIs - Until you reach a certain pixel density you can't scale small UI elements without looking like complete garbage. Think about it. If you have pixels many times smaller than you can see, then your UI should scale to any aspect ratio or any size and still look ok.
The Metro APIs were designed for web front-end programmers, not people who write for real GUI toolkits. You can build quite competent Metro apps in HTML and Javascript, and if you reach any limits, your web shop could hire a third party to write a module in C# or C++ to work around it.
The API for web programmers includes also rules that that apps should be made for a finite set of fixed screen sizes. Not resolutions -- screen sizes. Metro was never designed to be scalable.
This is not only a Windows problem, though. MacOS X on Retina(tm) displays is just as bad, but there the OS draws everything twice as big to begin with and scales down if needed when compositing windows. Apple never cared about hinting anyway, so all controls and labels are just as fuzzy scaled to 125% as always.
"We mustn't be caught by surprise by our own advancing technology" -- Aldous Huxley
So Microsoft is being blamed for graphical limitations they had nothing to do with. From what I'm seeing the problem isn't that elements within the GUI are scaling poorly, it's that designers didn't account for the fact that some day someone might want to blow up their graphics on a much higher resolution display. It's ridiculous and unfair to blame Microsoft for this considering this would affect any high res display in any OS. What do you think happens when you run an iPhone 3 app on an iPad? By the logic displayed in this article that should also be Apple's fault.
Anyone with the most trivial experience in resizing photos will understand that this is an unavoidable problem. There's no practical way to fix it unless you rebuild the app to account for wildly varied resolutions. You could use vector art, but it's not a realistic solution for a lot of things. There's no elegant solution but hopefully the pixel density is high enough that these artifacts aren't all that obvious. This is one of those situations where it's on the third party developers can only fix the problem after it's arisen. Microsoft can't fix it for them.
That's the catch here, we've designed for a single pixel to take up a certain fraction of your personal field of view, suddenly higher density displays come along, to which we initially ask, why, was there something wrong with the old pixel densities?
Yes, there was. The existing low-density displays require ugly (and often patented) hacks like hinting and subpixel rendering to display fonts at normal point sizes. When the pixel density is increased enough, this all becomes unnecessary. And it looks a lot better when it's done right. Have you ever tried using the new iPad? To me, it was a revelation: with a web page or PDF fully zoomed out, the letters were still incredibly sharp and clear, with none of the usual "cloudiness" that results from standard anti-aliasing techniques.
ClearType on Windows is very nice, but it's still just a hack compared to real high-DPI display. I am looking forward to cheap 4K TVs in smaller sizes (32" or so) so that I can use one of them as a desktop monitor. We've been held back by repurposed 1080p HDTV panels for too long.
One of the arguments to leave XP behind is that it can't work at all beyond 100 DPI or the apps will break. I assumed Windows 8 Modern UI took care of this? This issue alone made me weary of a macbook as 200 DPI will not run so great in bootcamp with Windows with most of the apps all misrendered.
Windows 7 does DPI scaling pretty well. There are a handful of misbehaved apps that break, but unless you're unlucky enough to regularly use one of these, you'll be fine. The usual stuff will work fine.
I don't know what happened with Windows 8 Metro. According to their blog, it was supposed to scale based on the screen resolution. But Metro has been such a clusterf*** that nothing would surprise me at this point.
I think it's crazy that Windows still does not support vector icons (SVG or a similar format). Instead, Windows icon files contain about a half dozen different sizes of raster images (each at multiple color depths!), maxing out at 256x256, and then scales these bitmaps as needed if there isn't an exact match.
256x256 is good enough for icons even on high-DPI displays, but this is still an incredibly clumsy and inelegant way of doing things. I can understand why you'd want a custom 16x16 icon because at that small size, scaling down a vector image usually won't work, and you need a hand-drawn substitute. But there is no good reason why two different bitmaps should be needed to render the same icon at 48x48 and 256x256. A single SVG could handle both quite nicely, and could handle even higher resolutions than that if needed.
Man, don't you know that when MS does it, it's a colossal fuck up, but when Apple does it, it's a feature? I understand it's hard to make the distinction sometimes.
I got here through a series of tubes
What's strange is: my work just bought me an Asus Zenbook Prime and I'm running 150% on it (I nuked the OS to get rid of the crapware and to be able to log on to the domain, so I've actually never seen it stock). I can scale web pages easily by doing a pinch-zoom on the touchpad and they look terrific, including images. (I mean, sure, the images ARE scaled up, which never looks 100% perfect, but it's just not that noticeable, and doesn't look anything the article.)
What they may be noticing is ASUS Splendid Video Enhancement Technology which is turned on by default (I'm told, I didn't install it after reading that people were trying frantically to get rid of it). Basically, it's supposed to "fix" your graphics so they look "more lifelike". But I've seen cases where people report that web graphics were getting very blurred by it, exactly like what the article is showing.
After using 150% and browser scaling for the past week, I've been pleasantly surprised by just how "arrived" high-DPI scaling was in Windows 7. I really didn't think it would work, but it's terrific so far, with ultra-readable text that's incredibly easy on the eyes and looks just as good as Apple's Retina displays.
Peter predicted that you would "deliberately forget" creation 2000 years ago...
Meanwhile, let the anti-MS bashfest continue.
You'd think that a company with billions of dollars in revenue could test the product or at least re-use some old perfectly functional scaling code in prior products that performed the same task. /snark
Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
Your first link is a very interesting link, which kind of proves that MS doesn't understand dpi since they insist on a "minimum resolution" instead of a "minimum size" for screens for the Metro UI. Way off the point.
Both links on the Apple side of the story, however, are so stupid I have to assume you haven't even had a look at them. Basically, both complain that the UI elements have the same size on the MacBook Retina than on a normal MacBook !!! Right from your second link: "This configuration should offer amazing detail but you don’t actually get any more desktop space". Well, guess what: That was the point, very precisely.
Overall you just proved that MS doesn't know what they are doing and Apple does. Nice way to illustrate an anti MS bashfest. Wait... wasn't that your intent?
Write boring code, not shiny code!
You'd think that the most valuable company in the world, with billions of dollars just sitting in the bank and a(n increasingly unwarranted) reputation for polished products, could test the product or at least quickly develop a decent solution.
Aside from the idea that I had a 1600x1200 display TWENTY YEARS AGO and since then WE'VE GONE BACKWARDS
You are so right there... I would not have believed 10 years ago that newer large monitors I bought would feature worse resolution. Yet that has been the case for years with monitors that align to 1080p...
Thankfully we are finally starting to break free and actually get more resolution at last, as with the Korean displays people have mentioned here... going to get one of those soon I think.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Owning an ipad 2 myself, I can say that iphone apps scale horribly to ipad
It's a simple 2x scaling, but it does have one redeeming aspect - if the images are larger than original size, you get more pixels.
It's no mystery why when they increased the resolution on the ipad 3, they had to evenly multiply from 1072x768.
They did not have to but it made everyone's life much simpler.
Apple themselves even had a blunder when they changed aspect ratios (lol letterbox phone.)
See? They didn't have to @2x new resolutions all the time. The iPhone 5 is proof of it. As for the aspect ratio changing, most apps needed only minor adjustments to auto-resizing rules. What people who claim iOS cannot handle different screen sizes well always forget is that the screen changes size every time you take a call, and the call status bar drops down... the iPhone 5 is just the display going the other direction in size, so the existing rules app developers already had in place mostly worked.
In iOS6 there is an amazing new API for Autolayout and a number of classes that let you do extremely complex non-linear layout, so to claim the OS cannot handle application scaling well is dramatically wrong.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
The retina display scales everything by 200%, which means that a grid of one-pixel lines will at least be displayed evenly even with bilinear filtering. In TFA, they scaled to 125%, causing (predictably) this to mess up in IE. If anything I'd blame the user, although the argument can be made that IE should use a nicer scaling algorithm.
Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
The issue comes into being most likely due to off-by-a-fraction errors when doing non-integer scaling of multiple elements.
One solution is just to get all your fractions right across the entire rendering pipeline. That is hard, and maybe impossible in some cases.
An easier solution is just to render to a canvas that is an integer multiple of the "base" or "expected" case, then finally apply a single scaling from that canvas to the display size at the last moment before the image is displayed.
For instance, let's say that software was developed for a 100 dpi display, and for a given device, that works out to a 1366x768 resolution (if its screen were 100 dpi). Now the screen is really 1920x1080, but that is not an integer multiple of 1366x768, so instead we render to a canvas that is 2x both dimensions: 2732x1536. The rendering here should be without any issues, since it's an integer multiple of 1366x768. From here, there are two paths to follow. If the display controller of the device can automatically scale 2732x1536 to 1920x1080, then let it do that. Otherwise, have the GPU scale the the canvas size to the display size, then display that. (Typically, the display controller can do a better job with multiple tap filters.)
Note that this requires extra rendering power and bandwidth vs. the first solution. However, that's what hardware is good at, right?
Note also that doing non-integer scaling will always result in what looks like "blurriness" around what would have otherwise been sharp pixel edges. This is not avoidable, really (unless you want really ugly results where some lines are fatter than others).
What we need is a better standard than SVG for static vector images.
In what ways does SVG fall short? It's a widely supported open standard, which does pretty much everything you need for 2D vector graphics. It can even be tweaked by hand, since it's XML-based. (I've done a couple of simple SVGs entirely in Notepad.)
Well, and significantly improved tools for producing them.
Adobe Illustrator has supported both import and export of SVG files for some time. And while Inkscape is far from perfect, it's a workable free solution for most non-professional users. Are there other, better vector editing tools that don't allow the creation of SVGs?
They chose to build their own hardware specifically so that they don't have to solve unsolvable problems.
They did no such thing. If grandma buys a mid-size imac, can't see it well enough, and scales it 30% it still looks like crap. Apple can't control what the customer is going to do anymore than Microsoft can.
If someone buys a 1080p 13" display designed to show a lot of content in a really small space, then it works great. If the user (or idiot reviewer in this case) decides he wants the text 30% bigger then its going to look like crap.
Your eyes can't quite make out the web on your ipad? Want it 30% bigger? Its going to look like crap.
Doesn't matter what OS it is. If the user steps outside the native resolution, it looks like crap.
Apple's little trick with the retina display is a clumsy hack. If you buy a retina macbook and happen to like it just as it is then your golden... new apps designed for it work, old apps designed for 1/4 the screen are pixel doubled to work as well.
But what if you don't happen to like it exactly as it is. What if you've got good eyesight and bought a retina display to make real use of some of that extra pixel space instead of just having smoother fonts at the same size you had on the old one? Scale it down? 30% to give you some more space... looks like crap.
What if your older and the default on the retina display is too small for you... scale it up 30% to read it better. Looks like crap.
Apple didn't "solve" the problem through hardware. The problem is unsolved and unsolvable. The only difference is that this particular reviewer didn't happen to try scaling things up by 30% on a Mac when he made his "discovery" that scaling off native pixel resolution looks like crap.
Perhaps, perhaps not.
Have you seen the Retina MacBook Pro running at a scaled mode? You have a variety of settings - from the 2x 1440x900 mode to the decidedly non-integral 1920x1200 mode.
And 1920x1200 is, despite not being a nice integral factor of the native resolutoin, looks practically native. As in, no scaling artifacts.
What happens is that internally, OS X creates a double height frame buffer - 3840x2400, renders to that "retina style" 2x mode, then runs a scaler (custom-designed by Apple so both the 650M and Intel 4000 scale it identically) to bring it back down to 2880x1800. And the results are DAMN good - you can't tell, other than the fact that the GPU is now too underpowered to do 60fps.
And this is 150% scaling (1920x1200 -> 2880x1800), and looks awesome - you definitely don't get the "non-native resolution" crap you see on other displays.
OTOH, the low end mode, I think there's one where it runs at something like 1366x768 or so. It looks awful because even in 2x mode, the virtual framebuffer is smaller than the screen resolution, leading to the hardware having to scale the image up again.
But going from logical 1440x900 to 1920x1200 on the same 2880x1800 panel? Looks damn nice for a 150% scale up.
So hold on, super-high resolution displays should only be used so that the rounded corners are more rounded?
Thanks, but no thanks. The entire point of higher resolution displays is displaying more information on the same space. Apple's way of just doubling the resolution for each length is good for backwards compatibility, but it shouldn't be the standard for new applications: they should be designed to take advantage of the high resolution displays, and I don't just mean better text rendering.
Your first link is a very interesting link, which kind of proves that MS doesn't understand dpi since they insist on a "minimum resolution" instead of a "minimum size" for screens for the Metro UI. Way off the point.
What do you mean by "minimum size"? Like 7 inches wide? So you want MS to proclaim that all Metro apps are supposed to support a minimum of 7" width regardless of the resolution? So does that mean the apps must support a device with 320x240 resolution?
Well... everyone's talking about resolution independent interface, and that's really what it should be about. Of course, it makes no sense. So there is the Apple approach that take shortcuts that work well, and the MS approach which tries to accommodate for every fucking screen on the planet. Guess who's more efficient? Guess who will end up with an average interface that will work so-so on most configs but will look clunky on not so common screens. Interestingly that's the very same approach that did lead them to the pre-ipad tablets. Talk about learning about one's mistake.
Both links on the Apple side of the story, however, are so stupid I have to assume you haven't even had a look at them. Basically, both complain that the UI elements have the same size on the MacBook Retina than on a normal MacBook !!!
They're no more stupid than TFA, which I suggest you read, and which complains about the same problem with scaling up graphics on the web.
I was not comparing to TFA. I was just mentioning that apart from asserting that their author is utterly clueless, they pretty much serve no purpose.
Write boring code, not shiny code!
On a retina display you have the exact same real estate than on a regular (equivalent) display. You just have the ability to have more precise drawings, that's all.
How the developer want to use it is really the developer concern. Apple doesn't dictate anything in this regard.
However, just having the same per-pixel ratio for apps would have rendered pretty much everything useless. Apple's approach (pixel doubling) was just the sensible one.
But to be honest, for most applications, retina means sharper display and nothing more.
Write boring code, not shiny code!
Win8 Metro apps did take care of it.
For the desktop, it's the same as Vista/Win7 - it'll bitmap-scale apps that do not declare themselves as DPI-aware in the app manifest, but will let them do what they see fit if they do declare themselves such. Unfortunately, there has been a number apps that add the declaration but ignore the requirements.
Do you think it's crazy that the same thing goes for OS X?
Apple can't control what the customer is going to do anymore than Microsoft can.
You really haven't been paying attention.
So there is the Apple approach that take shortcuts that work well, and the MS approach which tries to accommodate for every fucking screen on the planet.
That's the advantage of being vertically integrated, you control the hardware and the software.
Apple crushed itself near death with it's own CEO, Microsoft just happened to be there at the time.
Write boring code, not shiny code!
You're thinking old-school, and thus are part of the problem. The point of high-DPI displays isn't to have more screen real estate or to display more information in the same space, it's to have sharper text and image display at a usable size. Since this is a transition period, images are going to be worse off than text. I'm sick and tired of displays that are approximately 100dpi or so (given the average 17" laptop display). Display technology has lagged behind every other improvement in technology over the last 15 years. Thank God there's finally a push for higher pixel density. The best of both worlds will be when image and video editing apps make use of the higher resolution while still displaying UI at a reasonable size. Ever wonder why a lot of people have run LCD displays at non-native resolutions? Because without resolution independence, high-res displays present UI and text that is way too small for them to read. Proper resolution independence will allow people to run their displays at native, without worrying about being able to read what's on the screen.
As with anything, early adopters tend to get burnt or otherwise are dissatisfied with the performance. Apple does happen to have a leg up here, with their experience on the iPhone/iPod touch 4. The fact that Apple uses integer ratios for their screens (even on the Macbook Pro where the resolution can be adjusted, the backend renders at an integer ratio) is a big plus as it means that what we see in these screenshots won't happen. I may not like some of Apple's business practices, but they completely win when it comes to presentation and aesthetics. Microsoft would do well to learn some lessons from them.
FC Closer
I've read your posts in this thread and can't for the life of me figure out your actual reason for arguing against high-DPI displays. Thank fuck you don't have any say-so in the industry.
FC Closer