Is Apple’s Font Rendering Really Non-Pixel-Aware?
![]() Microsoft Font Rendering (Windows Firefox) |
![]() Apple Font Rendering (Windows Safari) |
The above two examples (captured from Daring Fireball, which uses a small but legible font) illustrate well the difference between Microsoft’s and Apple’s font rendering. (Both samples were rendered in the Windows operating system, but Safari uses Apple’s font rendering engine, even in Windows.) Microsoft uses a “pixel aware” technique where the rendering engine reshapes each glyph significantly to try to get its edges to coincide with pixel boundaries. Apple’s does not. The difference is easy to discern: Microsoft’s method looks sharper, but Apple’s more exactly matches the look of the font that is being used.
Here’s a close-up of each:
![]() Microsoft |
![]() Apple |
(Both samples exhibit the orange-blue color fringes caused by sub-pixel rendering, but that is unrelated to the subject at hand.)
In the “Paul Kim” close-ups, you can see how the shape of the font has been distorted in the Microsoft version to the point that it looks like some old pixel-based font from the late ’70s or early ’80s. The Apple close-up looks pretty blotchy, but look at the non-close-up renditions (top of article) and it looks just fine — and, in fact, retains the degree of boldness that the font was intended to have. Much of that boldness is lost to the Microsoft method, which forces font strokes that should be, say, 1.5 pixels wide into a 1-pixel wide thickness.
But is Apple’s font rendering engine really pixel-unaware? Does it just render the text over the pixel grid with no regard to pixel boundaries? I suspect that is not the case, and here’s why. Look at this close-up, also from the Apple (Safari) rendering:

The yellow arrows illustrate that a surprising number of vertical and horizontal strokes are coinciding nicely with the pixel boundaries — about as nicely as they do in the Microsoft version. So, while Apple may be using the true shape of the glyph as the font designers specified it, they are probably doing something to help the font match up with pixel boundaries. Whatever it is, it’s a lot more subtle than what Microsoft is doing.




