Thursday, September 11, 2014

iPhone 6 Plus and The End of Pixels

It's been a long time coming. NeXTStep in 1989 featured DisplayPostscript, and therefore
a device independent imaging model that meant you did not specify graphics in pixels, but
rather in physical units. The default was a variant of the printer's point at 1/72nd of
an inch, which happened to be close the the typical pixel resolution of displays at the
time. However, 1 point never meant 1 pixel, it meant 1/72nd of an inch,
and the combination of floating point coordinates and transformation matrices
meant you could use pretty much any unit you wanted. When NeXT bought Apple, it
brought this imaging model with it, although with some modifications due to Adobe
intransigence about licensing and the addition of anti-aliasing.

However, despite the device-independent APIs, we still have pixel-based content,
and "pixel-accurate" graphics. This has made less and less sense over time,
with retina displays making pixel-accuracy moot (no more screen fonts!) scaled
modes making it impossible and both iOS 7 and OS X 10.10 going for a more
geometric look. Still, the design community has resisted, talking about
@3 pixel art etc.

No more.

The iPhone 6 Plus has a 1920x1080 panel, but the simulator renders at 3x. These
two resolutions don't match and so the pixels will need to be downsampled to
the display resolution. Whether that is accomplished by downsampling pixel art
(which happens automagically with Quartz and the proper device transform set)
or as a separate step that downsamples the entire rendered framebuffer doesn't
matter (much). Either way, there are no more "pixel perfect" pre-rendered
designs.

Device-independent graphics, here we come at last.
We're only a quarter century late.

Update: "Its 401 PPI display is the first display I’ve ever used on which, no matter how close I hold it to my eyes, I can’t perceive the pixels. " - John Gruber (emphasis mine)