Bytecode Interpreter Patents (used by FreeType) Finaly Expired: Get Ready to Dramatically Improve Font Readability on Your Linux Desktop

The TrueType bytecode interpreter patents have expired !!! It means you’ll get much better and nice looking font rendering on your Linux desktop, by default, without the need of hacking or exchanging packages.

FreeType without Bytecode InterpreterFreeType with Bytecode Interpreter
Bytecode Interpreter Patents (used by FreeType) Finaly Expired: Get Ready to Dramatically Improve Font Readability on Your Linux Desktopfreetype4-bci.png
freetype1-nbci.pngfreetype1-bciaa.png freetype1-bci.png
freetype2-nbci.pngfreetype2-bciaa.png freetype2-bci.png
freetype3-nbci.pngfreetype3-bciaa.png freetype3-bci.png

As the writer and mainteiner of the official Linux Font-HOWTO [official home], I feel good now to paste an updated excerpt that explain what is BCI and its implications. Here it goes…

Why Fonts on Linux Aren’t Straight Forward ?

Fonts are used on the screen and for printing. These medias differ a lot in DPI resolution: screens have 72 to 96 DPI, while modern printers use to have 300 DPI. So low-resolution medias as the screen need better font rendering algorithms to workaround the media’s limitations.

To get optimal fonts on the screen you need:

  1. Good fonts designed for low resolution media.True Type font technology evolved to be the best thing you can get nowadays. But for optimal screen beauty, you also need fonts that were designed for this purpose. We found that Tahoma and Verdana are the best fonts you can get for the screen.
  2. A good font renderer.Current Linux distributions include the excelent and very mature FreeType font renderer library.

A .ttf file contains information to draw the characters at any size, so you eventually can convert a text into a scalable outline drawing (built from line segments and quadratic bezier arcs) with tools like or CorelDraw.

Font drawing algorithms are extremely complex because they have to decide which pixels to highlight based on the mathematical equations inside the .ttf file. When you need text in big sizes like 48 or 60, one or two pixels these algorithms “forget” to highlight doesn’t make much difference, but when you need text at size 8pt or 11px, each pixel counts. And these use to be the text size for KDE and Gnome widgets, text for web browsing, and almost everything else we see on the screen.

To solve this problem more efficiently, beside of the mathematical equations inside a .ttf file, a font designer (a human being with a font creation software) also put some extra information to help the font renderer make correct decisions for this small size text. This process is called grid-fitting or hinting.

The point is: the technologies to interpret this hinting information are patented by Apple, and they are commonly called True Type Byte Code Interpreters (or simply BCI in our document, from now on).

With reverse engineering, the Freetype Project has implemented a byte code interpreter, but due to legal issues in some countries, some Linux distributions had to disable it at compilation and packaging time.

FreeType tries to workaround this legal issues developing autohinting algorithms, but in our tests, BCI algorithms gave us much better font rendering results on the screen.

The Linux Font HOWTO updated excerpt

Leave a Reply

Your email address will not be published. Required fields are marked *