Today we feature a very interesting interview with David Turner, one of the main Freetype developers, discussing the project’s past and future. These days, David continues his work in Freetype even after having been hired by Google.1. What drove you to work with Freetype and typography in general?
David Turner: I started working on FreeType 1 during the winter of 1995. At that time I was a graduate student and was developing mostly on OS/2. It was really a nifty operating system but it didn’t support
TrueType fonts at all. I had read on the Internet that it was possible to “plug” a new font renderer
into the system with a properly written DLL. Despite the fact that I had absolutely no documentation
on the topic, I thought it would be a cool and useful project, and I started cranking my first
rasterizer in Pascal, no less
I had something working after a few months (but not DLL, nor really stellar rendering) and decided
to put the code on the Internet. I was quickly contacted by Robert Wilhelm, and later by Werner
Lemberg who helped me tremendously manage the project. Robert retired from the team a long time
ago, but Werner is still very actively maintaining FreeType, taking care of all the little details
I generally do not do. the project owes a lot to his careful work and attention. I’d really like to
dedicate this interview to him: Werner, you just rock !
And did you know that he is a professional musician working at a German Opera house ? I love this guy.
2. What are the main advances of Freetype in the last few years?
David Turner: Mainly the work being performed on the auto-hinter. A really great deal of tuning and experimentation has been provided, coming from many diverse people. The final result is not too bad in my opinion,
though there is still room for improvements (even big ones). Making it better is however a very slow
process because there are many push-pull effects: tune the algorithm to improve some shapes of some
fonts, and you have high chances of ruining some others in the same fonts or different ones. Sometimes,
you only discover the problem you introduced by chance, or because a user downloaded the CVS version
and tells you that some russian letter is no longer correct. And the worst is that you nearly don’t
notice any difference with the original one
And people have their own preferences. Do a change, some people will complain while others will be
very happy with it. With auto-hinting, or even hinting in general, it’s pretty impossible to please
everyone so you need to make choices.
We try to compromise when we can. For example, we already have distinct algorithms for Latin-based
scripts and non-Latin ones. I hope to be able to introduce more specialization in the future, but
this will be introduced very slowly.
3. If the patent owner of hinting gives the Freetype project a free license, would you accept it?
David Turner: It really depends on the terms of this “free license”. Basically if it means the patent can not be freely re-licensed to other people, I really don’t see why I would find that useful. If you absolutely need
the bytecode interpreter, you can be patient and wait for October 9, 2009, when the patents expire.
Or use the auto-hinter. It’s not that bad, really.
4. What did you think of Vista’s new font renderer?
David Turner: I don’t have Vista and I’ve never touched a computer that runs it, except those displayed in computer stores. so all I know about it comes from the web (screenshots, articles, opinions, etc…). I believe that
what has changed from XP is basically a better color filter and sub-pixel positioning.
And in the grand debate between ClearType and OSX rendering, which became the rage since Safari was
released for Windows, I tend to think that the “fuzzier” rendering is better for several reasons:
– it’s true to the original glyph shape.
– it allows you to implement fine-grained kerning
– it allows for true device independence when performing text layout.
The latter buys you some cool features, like being able to zoom a document without the need to reflow
the text, no matter how complex it is (like, in this ad,
for example )
It’s now possible to get sub-pixel positioning in Vista, but I believe this feature is only available for WPF
applications. this makes this option pretty useless if you target a large percentage of Windows users though.
On the other hand, I understand why Windows users are complaining. the big difference is that ClearType’s hinting
improves the contrast of text, so a Safari window will invariably look more fuzzy than the rest of the system on
Windows.
The thing is, it’s pretty easy to get used to the fuzziness if it’s a system-wide setting. that’s why there were
no general uproar when the first version of OS X was released on the Mac, which was even *more* fuzzy than this
OS’ current text rendering.
5. For best results, what’s best? Enabling hinting, or having fonts specially designed to work best with Freetype?
David Turner: It depends on what you want, really. For best contrast/sharpness, you can’t beat hand-coded bitmaps but these don’t scale. For best shapes, you should go the un-hinted path. Everything between is a compromise.
Native TrueType hinting represents an ingenious way to obtain hand-coded level results that scale to different
sizes, but designing a high-quality TrueType font takes a *lot* of time. As an example, I’ve been told by
people in the industry that the original four Times New Roman font files available in Windows had been developed
by a team of 12 people working at Monotype for a year. Even though font design tools have matured in the last years,
there is still a lot of work involved to generate good TrueType hints.
ClearType is a technique that allows you to “expand” the horizontal resolution of your display, making hinting
less necessary in this direction. OS X implements ClearType-like LCD filtering without the hinting, and this
improves things quite a bit on certain displays. Unfortunately, the quality improvement is also very relative
to the display being used, your own visual system and of course preferences.
There is no clear answer as to what is best. Personally, I can’t stand native TrueType hinted fonts anymore, they
look too distorted to me, even if their contrast is better. My favorite Linux distribution is Ubuntu at the moment,
and the first thing I do after installing it is to wipe the version of FreeType provided with it to get rid of the
bytecode interpreter :o)
Also, I still don’t understand why Debian and Ubuntu keep distributing patent-infringing code in FreeType, while
they keep MP3 and DVD playback out of their normal installs. I’m not even sure it’s DFSG compliant…
6. What features not-yet implemented can further improve Freetype’s performance and visual quality?
David Turner: Regarding visual quality, I’d like to add other script-specific hinting modules to the engine, but this is relatively hard for me because I’m not too familiar with the many subtleties of international
scripts. For example, I know the Arabic script(s) very well, but I wouldn’t claim being an expert on
Arabic typography and the way it should be best hinted/rendered on screen.
Algorithmic knowledge doesn’t translate into good taste
I’d like to better handle symmetric and quasi-symmetric character shapes, as well as better handle
accents and some other “composites”. I have already experimented with these, but the results are still too
random to be part of the default build (which means, it works well for a large set of characters, but
totally ruins a small set of others…)
There is still some possible work on improvement the LCD filtering capabilities that were added in 2.3.0,
though the current ones are still very good for a large set of screens.
On the other hand, I believe it’s still possible to make more drastic improvements on *top* of the font engine
to improve the quality of text rendering on a typical Unix desktop. I’m thinking about things like sub-pixel
positioning, automatic-kerning directed by auto-hinter parameters (to improve inter-character spacing),
gamma-correct alpha composition. Unfortunately, all of these require some non trivial changes to libraries
like Pango, Cairo or LibXft, and even the X Server. it’s certainly not gonna happen quickly.
7. Do you believe that Freetype is currently well-optimized for inclusion in embedded systems?
David Turner: Yes, it’s been designed from the start to be used in very memory and CPU constrained environment. and I routinely profile it to keep it that way. A lot of the algorithms used, especially in the
auto-hinter, were chosen because they run well on limited hardware with very widely different inputs.
I never quite understood the people who say that you should not worry about optimizing your code until
very late in the project. My experience is that this attitude leads developers to choose very sophisticated
and generic designs that are extremely difficult to retrofit into something efficient later, because so
many layers in the code depend on them. I’m not advocating micro-optimization, simply the fact that you
should be able to profile and adjust your designs incrementally during development.
And in case you didn’t know, FreeType is already heavily used in the embedded industry. It’s
running in various amounts of electronic gizmos: cell-phones, set-top-boxes, cameras, GPS and even video
games. Since I’ve started working for Google, I’ve met many people in the Silicon Valley during my
trips here, and I’ve heard things like “we use your stuff” many many times
i LOVE my fonts, i use freetype 2.1.9, and im really scared of upgrading, cause in my opinion, my fonts are simply perfect. Though its what other people call “fuzzy”.
in latest freetype, is it possible to get same rendering as i have now? i do not use hinting.
I’m using Freetype, XFT and Cairo I’ve got from this how-to http://ubuntuforums.org/showthread.php?t=343670 , and fonts look way different. Without hinting they look very similar to OSX, with full hinting it’s like Windows’ ClearType but much better.
http://img149.imageshack.us/img149/5831/fontsyd1.png
This screenshot shows text without hinting and with full hinting, it’s using subpixel rendering.
if you selected “no hints” in your Gnome/KDE font dialog, you’ll get exactly the same results, independently of the version of FreeType installed on your system…
this is the settings:
http://img530.imageshack.us/my.php?image=kdefontsettingszh8.png
that makes me quite happy, knowing that i can upgrade without having to worry.
Whenever I use Ubuntu I always go into the Gnome font panel and set it to “no hinting”. Otherwise the fonts are unbearable for me. Does anyone know why they don’t just turn on the autohinter like Red Hat/Fedora do?
Great interview BTW.
http://img528.imageshack.us/my.php?image=kpdfconfia2.png
this is in KDE apps.
and this is in gtk+2 apps(is is from xchat):
http://img530.imageshack.us/my.php?image=xchatfontstw5.png
and this is how i want them
I can’t wait until extremely high resolution displays are common, and hinting simply doesn’t make sense any more. I suspect that’ll start to happen even before that patent runs out. (only two years, I’m an optimist)
I’m also in the camp that prefers Mac OS X/Safari 3 font rendering (I even prefer Safari on Windows just for that – now if I could only remember my OSAlert username/password which is stored in Firefox ;-P ).
Couldn’t you just look the username/password up (Preferences, Privacy, Passwords)? The only catch is that it’s not easy when you have loads of passwords remembered. I often let it sort on Username, because the Site entry is quite variable.
That interview was a nice read, thanks for posting. Only one correction though:
Also, I still don’t understand why Debian and Ubuntu keep distributing patent-infringing code in FreeType, while they keep MP3 and DVD playback out of their normal installs. I’m not even sure it’s DFSG compliant…
Debian installs MP3 and DVD playback by default.
I stand corrected for Debian, but this is still true for Ubuntu, which I find kind of silly, really…
Now that they’re selling commercial support, Apple could well stick them with a huge fine if it wanted to.
I personally like the OS X font rendering over ClearType, but like others I don find it a bit annoying on Windows for no other reason than it being different. Reguardless of what you have as far as font rendring goes, uniformity is generally a must.
David and the team are geniouses. I decided to attempt a port of FreeType to my operating system last year, and expected it to occupy a couple of weeks.
To my big surprise, the code only depends on a small subset of C99 and plugging it into almost any kind of architecture and build system is really easy.
I wish all coders was this quality minded.
End result? My tiny OS has better looking fonts than Windows
Edited 2007-06-29 06:50
The thing is, it’s pretty easy to get used to the fuzziness
While I respect and appreciate the work of David, I have a hard time being convinced by the fact that fuzzy fonts are better. Granted that fonts that use ClearType on Windows are reshaped and are not authentic, but at least they have better contrast. Unless you plan to write printed artwork in an advertising company, I think it’s not worth having to pass through the fuzzyness punishment.
I’m also having a hard time believing that he hasn’t tried Windows Vista at least one time to see how fonts look like on the new version of Windows. After all, fonts on Windows has been a reference for many people. I’ve seen many requests on the Freetype mailing list to know how to make fonts look like those on Windows. He may not like Windows, but at least trying it would be interesting.
but at least they have better contrast
My experience is that high contrast strains the eye, and create some curious reaction in how image is perceived by the brain. To me, high contrast fonts create a kind of bright glow around characters, and with high density the glow goes over other character, making them very difficult to read. So as you can guess i prefer fuzzy rendering, and i often sigh after Mac OS X font rendering. Since breezy & feisty, font rendering is much better though.
You should see Gutsy. Its beautiful. If I can notice a difference then they must have definitely improved. I personally like OSX’s font rendering it works great on OSX itself but in safari on windows it looks off due to the lack of uniformity.
It’s a question of personal preferences. I *really* prefer the OS X/Freetype way of rendering fonts. Then again, I use rather high resolutions (1280×768 on my laptop, 1600×1200 on my desktop) so the fuzziness is barely noticeable.
it’s all about preferences. there is no universal “best” setting so anyone is entitled to his own opinion. You’re free to like high-contrast better, which is exactly why there is a auto-hinter (or truetype bytecode interpreter) in FreeType. See, it’s not like I was limiting your choices…
And I still think that it’s pretty easy to get “used” to the fuzziness. that doesn’t mean you’ll get all hot and warm about it though
regarding Vista, there are plenty of screenshots on the Internet to know exactly what it looks like. I just didn’t feel the need to buy a new computer just to look at that.
Edited 2007-06-29 15:40
You’re not alone. I think ClearType is beautiful. It achieves the contrast of aliased with three times the detail. I mean, that’s what every filtering scheme hopes to ultimately achieve, right? If so, ClearType sets the bar.
And according to the ClearType patent, the glyphs are only resized horizontally/vertically. No points are moved, so the tails on your ‘y’ will still look as curvy as ever.
Edited 2007-06-29 20:27
Excuse me for my ignorance…I’m trying to understand a bit of what is meant by “fuzzy”. I’m running a few distributions (FC6, F7, and Ubuntu Feisty) at the moment, all of which have an LCD display. On each of these I configure gnome to use subpixel smoothing, which enables full hinting. To me, this looks outstanding…probably better than Windows XP (I have not seen Vista) and MacOS X.
Are the “fuzzy” proponents saying that they like it better when you disable hinting? For gnome, this would mean going into Details, checking None for hinting, and leaving smoothing at subpixel? When I do this, yes, the font gets fuzzier and I can see more blue and red bordering each character. Is this what you prefer?
I got a question for you, Mr. Turner
I’m one of those who HATE fuzzy fonts. CRT or LCD: it doesn’t matter. I can’t browse the web with a default Ubuntu setup. My eyes hurt after 5 minutes.
However, with auto-hinter, things get better. I love high-contrast. I loved the days of bitmap fonts. Unfortunately, a problem remains: fonts sizes are incorrect.
I use Tahoma, Times New Roman, Courier New, Arial and Verdana. I use Ubuntu (Feisty) and I have xorg.conf’s DisplaySize set in a way that makes Xorg think im using a 96dpi display. This is a common trick and Windows does the same. I also have Xft.dpi set to 96dpi. But for a reason I still doesn’t know, fonts sizes are incorrect. Tahoma, for exemple, always renders too small while Verdana renders too big. Courier New is too small too. I think Times New Roman is ok.
I can’t simply tell Gnome to use Tahoma 8pt for menus and dialogs to mimic Windows because it will be too small. I have to make compromises all the time.
Is this normal?
Thank you!
I have another question for you, David!
What’s the freetype equivalent of the ‘standard’ method to smooth edges of screen fonts used by Windows? It doesn’t introduced fuzziness and make Windows fonts even more enjoyable.
Thank you!
I think to date there hasn’t been a better font rendering on screen than ClearType. I’m not a Microsoft fan at all, I disapprove their philosophy and politics, but I agree that fonts rendered with Cleartype are clean, have high contrast and you don’t get tired after a day of work in front of your computer.
There has been some effort to enhance fonts on Linux. Fonts on Linux are pretty good (ie: on CentOS). I think they still can be improved, and ClearType should be a goal (maybe it is already). Then, if some people prefer fuzzy fonts, they can turn ClearType off.
I second this. ClearType is not just an unjustified request by a minority of users. There has been studies made by the University of Texas and by Microsoft that show that most people prefered ClearType, and that ClearType improves readability. You can say the Microsoft study is questionable but what would they gain lying? I think the free desktop (Linx, *BSD, Solaris) should take the best of both worlds, that would be in this case implement something like ClearType, but change the name, maybe CleanType, I’m out of imagination today (Friday evening)
It’s not about choosing something a small number of people prefer, it’s about taking into account the result of 2 independant studies and implementing what the majority prefers or feels more comfortable with.
Here’s the list of documents of the surveys and studies on ClearType:
Study – ClearType helps – Clemson, SC. – 11 April 2001
http://www.microsoft.com/typography/links/news.aspx?NID=1885
ClearType = Clear Mind
http://blogs.msdn.com/fontblog/archive/2005/12/13/503236.aspx
University of Texas – A resource for investigating how people read on screens
http://www.ischool.utexas.edu/%7Ect/chi_p618.pdf
And these are blog entries:
Cleartype improves reading comprehension, study says
http://scobleizer.com/2005/10/29/cleartype-improves-reading-compreh…
What’s Wrong With Apple’s Font Rendering?
http://www.codinghorror.com/blog/archives/000884.html
I do agree with most of you: ClearType beats Linux and OSX fonts renderers.
But ClearType is no good compared to the standard Windows fonts renderer.
Take a look:
Standard: http://img520.imageshack.us/img520/5431/standardjz8.png
cleartype: http://img165.imageshack.us/img165/7873/cleartypeku2.png
I don’t understand why people prefer ClearType over standard. ClearType produces fuzzy output. I’m using a 400$ LCD monitor and I can see the artifacts introduced by sub-pixel rendering.
Why do people like fuzzy fonts? What’s wrong with the good old fonts? Help me understand…
I much prefer ClearType too. Easier on the eyes, because what you call “fuzziness” actually helps interpret the characters faster.
I used to say the same thing.
“Standard” windows fonts without hinting only look good because the fonts are precisely lined up with the pixels. This effect is achievable in Linux too.
Example:
Hinting:
http://ordorica.org/misc/gnomedesktop.png (Old freetype)
No Hinting:
http://ordorica.org/misc/xfce.png
Unfortunately, it also means the font has to be of high quality in the first place. MS Windows truetype fonts qualify, but good luck with various linux fonts (except for DejaVu). Its funny how the first fonts I always download in linux are MS fonts. (I know they are not strictly for linux either)
The pictures in the Xorg + Font wiki came from my laptop:
http://gentoo-wiki.com/HOWTO_Xorg_and_Fonts
Since then however my font settings (and Freetype) has changed. Updated pictures are due.
Once you switch to cleartype, you’ll never go back. Another thing: Cleartype fonts look best on a DVI (or digital connection) LCD. VGA doesn’t do them justice (for the lack of sub-pixel precision). In fact, VGA just makes almost any LCD monitor blurry (comparatively).
You have to remember that cleartype contrast settings are also changeable:
http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys….
Personally, I cannot get used to Mac OS “fuzzy” fonts even though they are technically the most correct.
http://ordorica.org/misc/safari.vs.firefox.png
Moral of the story? With enough time on any one font system, my eyes will adapt. Each time I “prefer” my current fonts and can’t imagine switching.
So I disagree with David on that, but “Linux” fonts had been a sore point for many years, and these days they look great.
Thanks David.
cleartype is totally horrible, as is default winblows.
default winblows will show non antialiased very ugly looking fonts, and if you enable cleartype, well, the only way to describe it is that it looks as though the fonts are like one tenth of a pixel thick(ofcourse this can not be), and are basically impossible to read.
Fonts in linux have been very good for me since i started caring about my fonts, that was around 2003 i think.
Freetype 2.2.1 is in the repository. What security issues are there that keep 2.3.4 from being ready for Sid?