Alan Coopersmith wrote :
FreeType2 is what converts a TTF or other font file into a pattern of bits displayed on the screen, but it has lots of flags that control how that’s done (anti-aliasing, hinting, LCD optimization, etc.).
Xft2 is the library that calls FreeType to get a bit pattern and then displays that bit pattern on the X server, via either the Render extension or plain Xlib (but plain Xlib is slow).
fontconfig is the library that finds /usr/X11/lib/X11/fonts/TTF/Times.ttf when you ask for “Times Roman 12”. (It’s called by either Xft2 or pango, I forget which.)
pango is the library that calls Xft with a list of glyphs and locations to display them at, after determining what ordering and spacing they should be laid out in, and what glyphs to display for a given character string (which is much easier for English than for languages like Arabic
GTK+ is the library that applications call to draw their interface on screen (the toolkit), and it calls pango to draw the text portion of those interfaces.
I’m not sure if cairo calls pango or goes direct to Xft2.