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.
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.
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...
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!
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
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?
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.
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!
Do you think it's crazy that the same thing goes for OS X?
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.
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