[Fontconfig] A few facts about font rendering

Ciprian Popovici ciprian at zuavra.net
Tue Nov 25 01:28:05 EST 2003

I'm preparing a brief, non-technical, newbie-aimed tutorial about font
rendering in X applications. I'm no expert myself, so I'd like to ask
you if the facts below are fundamentally correct, from that shallow POV.
Please help me clear any misconceptions I might have and perhaps you
could point me towards appropriate documentation.

* [Modern] X applications use Xft as a common unified interface for all
their font needs. Xft, in turn, uses: fontconfig for "getting fonts"
(ie. all kinds of information about fonts available in that particular
setup); X Render extension to improve performance; FreeType to actually
render fonts.

* Various toolkits (widget libraries) come with their own API's or
abstraction layers for font handling. Such API's are (or should be)
placed between the application and Xft in the chain above. Some of these
toolkit API's will circumvent Xft and access some deeper parts of the
chain directly.

* Font anti-aliasing is actually done by FreeType, but can be turned
on/off or adjusted in several places in the chain above.

* The "old model" of doing things was somewhat similar to the modern
chain above. Except for a few things: instead of fontconfig, X used (and
continues using) its own font retrieval mechanism in the form of
FontPath or the X Font Server. (Can't fontconfig replace them? If yes,
why hasn't it? Is it for backwards compatibility?) Just like the modern
chain, it uses Xft, freetype and xrender. Xft has suffered a few
transformations, moving from it's own font retrieval mechanism
(XftConfig) in 1.0 to using fontconfig in 1.1, and to a more advanced
use of Xrender in 2.0.

Question: what is the main difference between apps using some toolkits
(QTv2+, GTKv2+) and the ones using other toolkits (GTKv1, wxWindows,
fltk) as far as modern font rendering is concerned? Is it simply the
toolkit technology being outdated and the toolkit API's not making
modern stuff (AA for instance) available to the application?

* The way I see it, there are many libraries (X related, widget toolkits
related) which have to be converted one by one to the modern way of
"doing fonts". Some have, some still haven't, so we currently have
half-way hacks like Xft 1.1 still being deployed for the sake of
backwards compatibility.

Ciprian Popovici

More information about the Fontconfig mailing list