Printer Friendly Version      Send     
Click to Rate and Give Feedback
Related Articles
Learn how to use Windows Presentation Foundation (WPF), XAML, and the deep XML support in Visual Basic to generate user interfaces dynamically.

By Beth Massi (October 2008)
The ESP simulation engine, the basis for Microsoft Flight Simulator, handles visual rendering, physics, sound, and other virtual world capabilities. Take a look inside.

By Todd Landstad (September 2008)
We introduce you to the EDI functionality within BizTalk Server 2006 R2, illustrating schema creation, document mapping, EDI delivery and transmission, and exception handling.

By Mark Beckner (August 2008)
Complete freedom in creating the user experience can be a double-edged sword, but a little bit of artistry can transform an application's usability.

By Howard Dierking (August 2008)
More ...
Articles by this Author
Bill Hill discusses his Digital Declaration of Independence.

By Bill Hill (Launch 2008)
Considering human visual fields in software design.

By Bill Hill (November 2006)
More ...
Popular Articles
ADO.NET Data Services provide Web-accessible endpoints that allow you to filter, sort, shape, and page data without having to build that functionality yourself.

By Shawn Wildermuth (September 2008)
We introduce you to the EDI functionality within BizTalk Server 2006 R2, illustrating schema creation, document mapping, EDI delivery and transmission, and exception handling.

By Mark Beckner (August 2008)
We take a look at planned support for parallel programming for both managed and native code in the next version of Visual Studio.

By Stephen Toub and Hazim Shafi (October 2008)
Efficient parallel applications aren’t born by merely running an old app on a parallel processor machine. Tuning needs to be done if you’re to gain maximum benefit.

By Rahul V. Patil and Boby George (June 2008)
More ...
Read the Blog
Well designed code keeps things that have to change together as close together in the code as possible and allows unrelated things in the code to change independently, while minimizing duplication in the code. In the October 2008 issue of MSDN Magazine, Jeremy Miller shows you some design ...
Read more!
The process for ink capture and analysis on the Tablet PC is straightforward in managed code. To the uninitiated developer, however, creating unmanaged Tablet PC applications can be rather daunting. In the October 2008 issue of MSDN Magazine, Gus Class a quick introduction to the Tablet PC ...
Read more!
Multicore systems are becoming increasingly prevalent, but the majority of software today will not automatically take advantage of this additional processing ability. And multithreaded programming, for anything but the most trivial of systems, is incredibly difficult and error prone today. In the October 2008 issue of MSDN ...
Read more!
Concurrent programming is notoriously difficult, even for experts. You have all of the correctness and security challenges of sequential programs plus all of the difficulties of parallelism and concurrent access to shared resources. In the October 2008 issue of MSDN Magazine, David Callahan describes ...
Read more!
A major advantage of AJAX and Silverlight applications is that they can transparently and continuously interact with a back-end service. The problem is that they run over HTTP, which wasn't designed with security in mind. In the September 2008 issue of MSDN Magazine, Dino Esposito shows you ...
Read more!
Unhandled exception processing shouldn't be a mystery. It's actually quite useful since it gives a crashing application an opportunity to perform last-minute diagnostic logging about what went wrong. In the September 2008 issue of MSDN Magazine, Gaurav Khanna discusses how ...
Read more!
More ...
{ End Bracket }
It's Not Just Fonts
Bill Hill


Creating a typeface that's truly readable on a screen is much more complex than people realize. The average core font in Windows®, for instance, has about 25,000 lines of executable code as well as the outline and other data. The constraints are brutal. You just can't make the text bigger and use more pixels. Humans need body text that's between 9 and 12 points high (there are 72 points in an inch). Reading involves a high-resolution section of the human retina called the fovea, which is only 0.2mm in diameter. Physiology is the driver.
There are some general features every font must have, even for print. The top and bottom curves of lowercase letters like "o" are generally slightly higher and lower than the height of the "x". These "overshoots" and "undershoots" are necessary; otherwise the "o" would appear smaller, and the type would look rather odd.
You need to incorporate 5,500 years of learning when you design type. How do the letters fit together? Each glyph is designed with general spacing around it. But when you bring two specific letters together in a word, they often don't fit well. The classic example is a capital "T" paired with the lowercase "o", in the word "To". Such pairs of letters need special optical spacing and the pair-kerning data for this is provided by the font designer.
There are some pairs, or even triplets, of letters that won't fit well even with kerning (an adjustment to the space between characters). A kerned lowercase "f" and "i" usually clash because the dot above the "i" collides with the top of the "f". They're normally replaced with a new character for the "fi" combination, called a ligature. There are common ligatures for fl, ffi, ffl, and so on, as well as more arcane ligatures in some fonts (for instance in Palatino Linotype, one of the core fonts in Windows) for combinations like "ct", "st", and "Qu".
Figure 1 "f" and "st" Ligatures in Palatino Linotype 
When it comes to the screen, which is much lower resolution, you can't easily fit complex letter-shapes into its coarse pixel grid. Mapping the outline shape to the grid causes rounding errors; some pixels get turned on when they should be off, and vice-versa, and the text is awful to read. So the rasterizer, the code that turns outline data into pixels, needs a lot of help.
The solution is font hinting, a set of programs that manipulate the outlines so the right pixels get turned on. Hinting is really a hierarchy of programs; at the highest level you have global hints, which keep stem weights uniform across a font, or harmonize across a family, so the Bold weight of the font has a constant relationship to the Regular weight, going all the way down to very specific instructions (known as delta hints). These can be as specific as "in this font, at 10-point on a display of 100ppi, turn on this pixel in the lowercase 'a'..."
Many of the problems associated with displaying readable type on the screen are dramatically reduced by ClearType®, which Bert Keely, Greg Hitchcock, Mike Duggan, and I invented back in 1998. Font hinting has become simpler in many ways, and now needs a lighter touch. ClearType has evolved a lot over the years, and the latest and best version of it will ship as part of "Avalon," the code name for the presentation subsystem class libraries in WinFX. When the next version of Windows, code-named "Longhorn," ships, it will contain seven new fonts, specially designed to take maximum advantage of ClearType. There will be six new fonts for Latin-based languages—including a brand-new monospaced font, Consolas, designed to make your lines of code much easier to read. They've been created by some of the world's top font designers, and hinted to the highest standards possible.
There's a new Japanese font called Meiryo, which will offer the best on-screen Japanese ever. It contains no embedded bitmaps, so it's fully scalable. We used the TrueType hinting language to do the stroke-reduction.
I'm privileged to manage a group of folks at Microsoft who are passionate about creating the best type in the world for the screen. But the passion goes all the way to the top. I've actually had e-mail from BillG, at 10:30 P.M. on a Saturday night, asking me about ligature support! So please, next time you read on screen, remember you're using software technology with 5,500 years of history behind it. And never think of type, ever again, as "just fonts."

Bill Hill joined Microsoft in 1995 because he believed the company would lead the transition from reading on paper to reading on the screen. He is one of the inventors of the ClearType technology which dramatically improved the screen readability of text.

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; reproduction in part or in whole without permission is prohibited.
Page view tracker