Font Rendering on the Kindle 2

The rendering of fonts, especially small ones, is what we engineers call a "non-trivial" problem - that is, it's hard!

Consider what  we're trying to do - draw a small, detailed object on to a screen that is composed of discrete pixels. Because these operations are done algorithmically, they calculate the location and brightness of every pixel being drawn so that the fonts can be scaled to any size.

Now consider this in more detail, referring to the picture to the right. The diagonal line of the letter 'A' crosses a number of pixels. A real, diagonal line would run smoothly from a point on the bottom of the 'A' to the top, but since we're limited by pixels, how does it work?

Suppose a point in the line is calculated to be at a half pixel position. Since pixels are at discrete locations, how does this point get rendered? 

  • Light both pixels
  • Make each pixel 50%
  • Make one pixel 100% and the other 0%


In most cases on modern displays, a point that straddles two (or more) pixels is rendered by spreading its value proportionally across the touched pixels. So if the point is at location 0.75, then the pixel to the left might get 25% of its value while the one on the right gets 75% (in a simplistic case). 

On a device like the Kindle, meant for reading, the appearance of the text is extremely important. As the font sizes get smaller, the rendering becomes increasingly important because the contrast of the eye diminishes for small features. 

As can be seen in the above picture (taken from an actual Kindle 2), the rendering algorithm used in the Kindle is much as described above. Rather than ensuring that at least one of the touched pixels is displayed as "black", they instead partially light a variety of neighboring pixels, resulting in a character that looks very smooth BUT also one which lacks full contrast. The result for many is an unsatisfactory viewing experience.

Now look at the same characters rendered larger. In this case, there are multiple points in the diagonal that cover pixels, so they can be drawn as full black. Pixels on the edge are drawn with intermediate grays, smoothing out the edge, giving it a more pleasant appearance without compromising the contrast of the characters. Again, this is an actual picture taken with a microscope of the screen of my Kindle 2.

A simple solution is to render text below a certain size threshold as binary - black and white, rather than applying any anti-aliasing to it. This is not a perfect solution, as people with extremely sharp vision will notice the blockiness and may find it objectionable. However, for the marjority of the population, the pixelation that occurs will be blurred out by the eye, making the fonts appear bold and smooth. As an example, see the image shown here. Note that the examples below are simulations showing the theory of various types of font rendering, as created in Adobe Photoshop.

Depending on the size and pixel density of your monitor, this text may appear smaller or larger than it appears in the small font on the Kindle. For a fun test, you can save this image to the 'pictures' folder on your Kindle, then bring it up for viewing. Do you notice how much clearer the binary text is? The anti-aliased text appears gray, rather than black. On the other hand, the large fonts, when anti-aliased look quite beautiful and dark. This gives you a real-life example, on your own device, showing how it renders different types of text.

This is literally a graphic example of the need for intelligent anti-aliasing on devices like the Amazon Kindle.

All sample images were created in Adobe Photoshop, using a Times New Roman font. The anti-aliasing was enabled or disabled, and the one example of "faux bold" was also generated using a font setting in Photoshop.

Hopefully, Amazon will provide a software update for the Kindle 2 so that readers can choose to disable anti-aliasing below a certain font size. Or, perhaps they can include several fonts so that users can select that which is most clear for their own reading habits.

Final comment - interestingly, the fonts rendered on the Kindle 2 are better than those produced by Photoshop. Given that Adobe did groundbreaking work in font rendering, the fact that the Kindle's fonts look better than Adobe's is quite remarkable. If they would just allow turning off the anti-aliasing for the smallest fonts, the Kindle 2's display would be truly superb.

(Please feel free to copy and use any of these images as you find useful.)