clx-truetype renders TrueType fonts over X11 drawable (window or pixmap) using CLX, XRender, ZPB-TTF, CL-VECTORS.
clx-truetype was originally written for mcclim font rendering by Gilbert Baumann and Andy Hefner.
clx-truetype is maintained in Git:
git clone git://github.com/filonenko-mikhail/clx-truetype
will get you a local copy.
http://github.com/filonenko-mikhail/clx-truetype/
is the GitHub project page, where the issue tracker is located.
clx-truetype is library for text rendering over X11 drawable using CLX, XRender, ZPB-TTF, CL-VECTORS.
TrueType font metrics

Drawing text is quite simple.
First and only one time step is loading font cache using
cache-fonts.
If you add font to your system, you should call it again.
(cache-fonts)
Make instance of font:
(font (make-instance 'font :family "Times New Roman" :subfamily "Bold Italic"
:size 12 :antialiased t))
Draw it using draw-text or draw-text-line functions:
(draw-text window grackon font "The quick brown fox jumps over the lazy dog." 100 100)
Move <<cursor>> using baseline-to-baseline distance.
Here it is complete example. Just insert it into repl, and evaluate (show-window).
(defpackage #:clx-truetype-test
(:nicknames :xft-test)
(:use #:cl #:xft)
(:export show-window))
(in-package :clx-truetype-test)
(defvar *display* (xlib:open-default-display))
(defvar *screen* (xlib:display-default-screen *display*))
(defvar *root* (xlib:screen-root *screen*))
(defun show-window ()
(let* ((black (xlib:screen-black-pixel *screen*))
(white (xlib:screen-white-pixel *screen*))
(window
(xlib:create-window :parent *root* :x 0 :y 0 :width 640 :height 480
:class :input-output
:background white
:event-mask '(:key-press :key-release :exposure :button-press
:structure-notify)))
(grackon (xlib:create-gcontext
:drawable window
:foreground black
:background white))
(font (make-instance 'font :family "Times New Roman" :subfamily "Bold Italic"
:size 12 :antialiased t)))
(unwind-protect
(progn
(xlib:map-window window)
(setf (xlib:gcontext-foreground grackon) black)
(xlib:event-case (*display* :force-output-p t
:discard-p t)
(:exposure ()
(draw-text window grackon font "The quick brown fox jumps over the lazy dog." 100 100)
(when (= 0 (random 2))
(rotatef (xlib:gcontext-foreground grackon) (xlib:gcontext-background grackon)))
(draw-text window grackon font "Съешь же ещё этих мягких французских булок, да выпей чаю." 100 (+ 100 (baseline-to-baseline window font)))
(setf (font-antialiased font) (= 0 (random 2)))
(if (= 0 (random 2))
(setf (font-subfamily font) "Regular")
(setf (font-subfamily font) "Italic"))
(draw-text window grackon font "Жебракують філософи при ґанку церкви в Гадячі, ще й шатро їхнє п’яне знаємо." 100 (+ 100 (* 2 (baseline-to-baseline window font))))
(draw-text window grackon font "Press space to exit. Нажмите пробел для выхода." 100 (+ 100 (* 3 (baseline-to-baseline window font)))))
(:button-press () t)
(:key-press (code state) (char= #\Space (xlib:keycode->character *display* code state)))))
(progn
(xlib:free-gcontext grackon)
(xlib:destroy-window window)
(xlib:display-force-output *display*)))))
Result is

Package contains
apifor TrueType text rendering usingclx, XRender. Glyphs information is obtained byzpb-ttf. Font rasterization is made bycl-vectors.
Returns font subfamilies for current font-family. For e.g. regular, italic, bold, etc.
Class precedence list:
font, standard-object, tSlots:
family— initarg::family; reader:clx-truetype:font-family; writer:(setf clx-truetype:font-family)Font family.
subfamily— initarg::subfamily; reader:clx-truetype:font-subfamily; writer:(setf clx-truetype:font-subfamily)Font subfamily. For e.g. regular, italic, bold, bold italib.
size— initarg::size; reader:clx-truetype:font-size; writer:(setf clx-truetype:font-size)Font size in points.
underline— initarg::underline; reader:clx-truetype:font-underline; writer:(setf clx-truetype:font-underline)Draw line under text string.
strikethrough— initarg::strikethrough; reader:clx-truetype:font-strikethrough; writer:(setf clx-truetype:font-strikethrough)Draw strike through text string.
overline— initarg::overline; reader:clx-truetype:font-overline; writer:(setf clx-truetype:font-overline)Draw line over text string.
background— initarg::background; reader:clx-truetype:font-background; writer:(setf clx-truetype:font-background)Background color.
foreground— initarg::foreground; reader:clx-truetype::font-foreground; writer:(setf clx-truetype::font-foreground)Foreground color.
overwrite-gcontext— initarg:clx-truetype::overwrite-gcontext; reader:clx-truetype:font-overwrite-gcontext; writer:(setf clx-truetype:font-overwrite-gcontext)Use font values for background and foreground colors.
antialias— initarg:clx-truetype::antialias; reader:clx-truetype:font-antialias; writer:(setf clx-truetype:font-antialias)Antialias text string.
string-bboxes— reader:clx-truetype::font-string-bboxes; writer:(setf clx-truetype::font-string-bboxes)Cache for bboxes
string-line-bboxes— reader:clx-truetype::font-string-line-bboxes; writer:(setf clx-truetype::font-string-line-bboxes)Cache for bboxes
Class for representing font information.
Returns t if two font objects are equal, else returns nil.
Returns default dpi for screen. pixel width
*25.4/millimeters width
Returns ascent of font. drawable must be window, pixmap or screen.
Returns descent of font. drawable must be window, pixmap or screen.
Returns line gap of font. drawable must be window, pixmap or screen.
Returns distance between baselines of font. drawable must be window, pixmap or screen. ascent
-descent+line gap
Returns text bounding box. drawable must be window, pixmap or screen. Text bounding box is only for contours. Bounding box for space (#x20) is zero.
Returns width of text bounding box. drawable must be window, pixmap or screen.
Returns height of text bounding box. drawable must be window, pixmap or screen.
Returns text line bounding box. drawable must be window, pixmap or screen. Text line bounding box is bigger than text bounding box. It's height is ascent
+descent, width is sum of advance widths minus sum of kernings.
Returns width of text line bounding box. drawable must be window, pixmap or screen. It is sum of advance widths minus sum of kernings.
Returns height of text line bounding box. drawable must be window, pixmap or screen.
Draws text string using font on drawable with graphic context gcontext. x, y are the left point of base line. start and end are used for substring rendering. If gcontext has background color, text bounding box will be filled with it. Text line bounding box is bigger than text bounding box. drawable must be window or pixmap.
Draws text string using font on drawable with graphic context gcontext. x, y are the left point of base line. start and end are used for substring rendering. If gcontext has background color, text line bounding box will be filled with it. Text line bounding box is bigger than text bounding box. drawable must be window or pixmap.
Returns text lines height in pixels. For one line height is ascender+descender. For more than one line height is ascender+descender+linegap.
(setf screen-dpi): Dictionarybaseline-to-baseline: Dictionarycache-font-file: Dictionarycache-fonts: Dictionarydraw-text: Dictionarydraw-text-line: Dictionaryfont-ascent: Dictionaryfont-descent: Dictionaryfont-equal: Dictionaryfont-line-gap: Dictionaryfont-lines-height: Dictionaryget-font-families: Dictionaryget-font-subfamilies: Dictionaryscreen-default-dpi: Dictionaryscreen-dpi: Dictionarytext-bounding-box: Dictionarytext-height: Dictionarytext-line-bounding-box: Dictionarytext-line-height: Dictionarytext-line-width: Dictionarytext-width: Dictionaryxmax: Dictionaryxmin: Dictionaryymax: Dictionaryymin: DictionaryThis manual is maintained in Texinfo, and automatically translated into other forms (e.g. HTML or pdf). If you're reading this manual in one of these non-Texinfo translated forms, that's fine, but if you want to modify this manual, you are strongly advised to seek out a Texinfo version and modify that instead of modifying a translated version.