6 ms·
you can say what you want about Apple in general, but they way they "fixed" this issue with the retina macs is so much better than what windows is doing. Windo
by pilif 13y ago
you can say what you want about Apple in general, but they way they "fixed" this issue with the retina macs is so much better than what windows is doing.
Windows has had the DPI selector ever since 3.1 (or even 3.0), but because nobody traditionally tweaked the settings, nobody bothered to make their apps look right and because nobody bothered to make the apps look right, nobody tweaked the settings because running higher DPI modes was breaking apps all over the place.
Mac OS did this too - I think in the 10.4 timeframe there was an option to actually switch into a higher DPI mode and many of the OS-internal UI assets were vector images. They probably noticed that it will never work out, so they opted to go for a hack:
With the exact quadrupling of the resolution, we got a solution that works mostly transparently for the applications. They still think they are drawing with a one-pixel resolution, so the burden of getting this right moved from the app makers to the OS maker.
Even if an application has no modifications for retina displays, it will look mostly right (minus some blurring issues for pixel art). There will be no scaling issues, no texts will be cropped and everything will be scaled by the same factor.
If you want to 'optimize' your app for retina, all you do is provide higher resolution bitmaps and you're mostly fine.
The exception is some text-editors (sublime) and browsers (chrome) that were doing some manual text rendering, not relying on the OS API. These had to be fixed manually, but there really weren't that many applications like that.
Yes, the way Windows does it is probably more "purist". Yes, the way Windows does it allows for arbitrary scaling factors (also sub 200%).
But it doesn't work in practice.
Yes. The Apple solution is a hack. Yes, it doesn't allow scaling to arbitrary factors. Yes, providing 2x bitmaps instead of one vector image is annoying.
But it works in practice.
On a retina mac, you'd never see the issues the OP complained about seeing on their Windows machine. What you get there might be superior from a technical standpoint, but it all boils down to an ugly half-working mess because developers just don't bother to get it right.
I'm not excluding myself here. I've done a few windows apps and I f'ed up high dpi modes as many times as everybody else - also because my development environment (Delphi) made some assumptions that just didn't work well with high-dpi modes.
Getting HDPI right on Windows (Desktop): Really hard and thus not worth it for most developers. Getting HDPI right on the Mac: Trivially easy.
- swombat 13y agoMac does this even better. It does allow arbitrary scaling - for some definitions of arbitrary. For example, my MBPR 13" is set to the setting between "Best (Retina)" (which is the exact 2x, 1280x800 I think) and "More space") (which is 1.52x, 1680x1050), so I get 1.77x the space (1440x900). You control the DPI there and everything remains nice and sharp. Apps aren't even aware of this scaling, so everything works perfectly well.
- pilif 13y agoYeah. But the virtual resolutions are fixed depending on the screen. There's no way to arbitrarily set a virtual resolution and the OS only offers this for screens it knows (see the MacPro Review from anandtech where they tried to enable HDPI with that 4K display: the os only offered the 2x mode). That's why I wouldn't call that arbitrary scaling. If they could offer it using their method, I'm sure they would.
- 4ad 13y agoIt's not exposed in the settings, but it can scale to any apparent resolution. There are various 3rd party programs that can set any apparent resolution for you. And of course, you can see this without any 3rd party software if you connect it to a monitor or projector with a weird resolution and enable mirror mode.
- eropple 13y agoI get what you're saying, but this is probably not a great way to think about it because it isn't arbitrary scaling, it's arbitrary backbuffer resizing. The way this works internally is to render to a HiDPI buffer at 1680x1050 Cocoa points (mapping pixels:points at 2:1). It's still @2x, the buffer just gets downsampled afterwards and the pixel density is high enough that it's difficult to tell in practice.
- lmm 13y agoIn fairness, high-DPI screens on Windows are a new thing. If (and I realize it's a big if) apps get fixed over the next couple of years to handle different DPI settings, then the end result will be a lot more usable for e.g. vision-impaired users who want to use a higher DPI setting than the default.