Software Development

Correcting The Future

Font Patents

,

Here's an article about how the True Type Bytecode Interpreter patent has expired. So FreeType will be getting better looking fonts, especially for smaller fonts.

I use FreeType in Project V. So I know what this is about. At smaller sizes, the fonts really do look bad. So this will be a really good thing for everyone. What does this bytecode interpreter do? Well, at reduced sizes, you're dealing with PIXELS, not curves. Curves are what's stored in fonts, specifically Cubic and Quadratic Bézier curves. I know, I've actually loaded them up in raw format and computed how it would look on screen. Unfortunately, there was a bug in my code and some of the coordinates for the curves were wrong. I corrected it later on, but it wasn't necessary. Anyhow, there is an image in that last link that show how I shrunk the letter S. Beyond that point, you get into individual pixels where simple scaling no longer works. Well, you can do it. But it's really awful. So I switched to FreeType. It does a better job, but still nothing great. So now FreeType will have the bytecode interpreter enabled by default.

What happens is that True Type fonts have hinting information for what pixels to use at lower sizes. This is information that was manually put together for the most aesthetically pleasing version of the font. This hinting information and the code found in the font files can now be used by FreeType.

While all of this is indeed good news, it's not the end of the road for FreeType. There are other patents that I wish did not exist. These are Microsoft patents for sub-pixel rendering. In Windows, this "technology" is called ClearType. It makes your fonts look smoother overall. With LCD monitors, there are usually three vertical LED's for each pixel sandwiched together. Each vertical LED is for Red, Green and Blue. So what sub pixel rendering does is vary the intensity of these LED's within each pixel to create more definition and resolution on the font. It isn't without its problems though. Some colours (like green) have more effect than either red or blue. So you have to be careful with colour bleeding. But these problems are already solved for the most part.

What happens now is that no one except Microsoft and allies can use this "technology". This is not something that people would never have invented. The 10 or so patents that Microsoft has are useless in making sure that humanity doesn't lose this invention. Someone would have thought of it. In fact, similar technology existed 20 years ago. But fighting patents is a difficult process and enhancements on existing technology (which Microsoft references) can also be protected by patents.

I ran into this myself when I started to use FreeType in Project V. I can enable this feature because FreeType can produce the data. But it is not responsible for rendering onto the screen. So it cannot break that patent. But no one can use the feature. FreeType does support general anti-aliasing. It looks pretty good. And it works great with my DirectX graphics engine. So the point may be moot for me at this point. Still, I never got the chance to explore the possibilities. For text, I can change the way my engine renders images by drawing back to front instead of the usual front to back. Newer video cards could also support a triple alpha channel quite easily. As it is now, all that will have to wait until at least 2015 when the first patents on this start to expire. It may take another 10 years after that for all of them to expire. Will we still be using LCD's by then? Higher resolution will likely make subpixel rendering obsolete, or at least redundant.

Software patents are just plain stupid. I'm all for protecting clever ideas. But don't stop others from coming up with the same ideas. Patents weren't put in place for things that people will create no matter what. Besides, the computing world changes faster than most other fields. Patents can last longer than the devices they are meant to work on. This means that these "inventions" aren't meant for humanity, but for the sole profit of a single organization. Again, not the point of patents.

Many programmers think that patents don't affect them directly. The reason you often don't worry about it is perhaps that you're using an OS from a company that owns all the patents that DO affect you. You're locked in without knowing it. Maybe it's fine for one person. But someone else will want to exercise their freedom to choose an alternative product. That's when it hits them. Directly! Software patents are beyond useless according to their intended purpose. The issues I encountered with FreeType are just one example. Do anything significant and you'll wish they never existed.

Another C++ Link (Updated with yet another link!)C++ Protected Interfaces Inadequate

Write a comment

New comments have been disabled for this post.

June 2012
S M T W T F S
May 2012July 2012
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30