The following example illustrates
how Xft's version constants might be used:
#if (XFT_VERSION >= 20107)
(void) puts("Version 2.1.7 or later of the Xft library is in"
" use.");
#else
(void) printf("Insufficient version of Xft (%d.%d.%d) installed;
" need at least version 2.1.7.rsn", XFT_MAJOR,
XFT_MINOR,
XFT_REVISION);
#endif
typedef struct _XftFont {
int ascent;
int descent;
int height;
int max_advance_width;
FcCharSet *charset;
FcPattern *pattern;
} XftFont;
An XftFont is the primary data structure of interest to programmers using
Xft; it contains general font metrics and pointers to the Fontconfig character
set and pattern associated with the font. The FcCharSet and FcPattern data
types are defined by the Fontconfig library. typedef struct _XftColor {
unsigned long pixel;
XRenderColor color;
} XftColor;
An XftColor object permits text and other items to be rendered in a particular
color (or the closest approximation offered by the X visual in use). The
XRenderColor data type is defined by the X Render Extension library. typedef struct _XftCharSpec {
FcChar32 ucs4;
short x;
short y;
} XftCharSpec;
typedef struct _XftCharFontSpec {
XftFont *font;
FcChar32 ucs4;
short x;
short y;
} XftCharFontSpec;
typedef struct _XftGlyphSpec {
FT_UInt glyph;
short x;
short y;
} XftGlyphSpec;
typedef struct _XftGlyphFontSpec {
XftFont *font;
FT_UInt glyph;
short x;
short y;
} XftGlyphFontSpec;
XftFont *
XftFontOpen (Display *dpy,
int screen,
...);
XftFontOpen takes a list of pattern element triples of the form field,
type, value (terminated with a NULL), matches that pattern against the
available fonts, and opens the matching font, sizing it correctly for screen
number screen on display dpy. The Display data type is defined by the X11
library. Returns NULL if no match is found.
Example:
font = XftFontOpen (dpy, screen,
XFT_FAMILY, XftTypeString, "charter",
XFT_SIZE, XftTypeDouble, 12.0,
NULL);
This opens the lqcharterrq font at 12 points. The point size is automatically
converted to the correct pixel size based on the resolution of the monitor.
XftFont *
XftFontOpenName (Display *dpy,
int screen,
unsigned char *name);
XftFontOpenName behaves as XftFontOpen does, except that it takes a Fontconfig
pattern string (which is passed to the Fontconfig library's FcNameParse()
function).
XftFont *
XftFontOpenXlfd (Display *dpy,
int screen,
unsigned char *xlfd)
XftFontOpenXlfd behaves as XftFontOpen does, except that it takes a string
containing an X Logical Font Description (XLFD).
FcPattern *
XftFontMatch (Display *dpy,
int screen,
FcPattern *pattern,
FcResult *result);
Also used internally by the XftFontOpen* functions, XftFontMatch can also
be used directly to determine the Fontconfig font pattern resulting from
an Xft font open request. The FcPattern and FcResult data types are defined
by the Fontconfig library.
void
XftTextExtents8 (Display *dpy,
XftFont *font,
FcChar8 *string,
int len,
XGlyphInfo *extents);
XftTextExtents8 computes the pixel extents on display dpy of no more than
len glyphs of a string consisting of eight-bit characters when drawn with
font, storing them in extents. The FcChar8 data type is defined by the Fontconfig
library, and the XGlyphInfo data type is defined by the X Rendering Extension
library.
void
XftTextExtents16 (Display *dpy,
XftFont *font,
FcChar16 *string,
int len,
XGlyphInfo *extents);
XftTextExtents16 computes the pixel extents on display dpy of no more than
len glyphs of a string consisting of sixteen-bit characters when drawn with
font, storing them in extents. The FcChar16 data type is defined by the
Fontconfig library, and the XGlyphInfo data type is defined by the X Rendering
Extension library.
void
XftTextExtents32 (Display *dpy,
XftFont *font,
FcChar32 *string,
int len,
XGlyphInfo *extents);
XftTextExtents32 computes the pixel extents on display dpy of no more than
len glyphs of a string consisting of thirty-two-bit characters when drawn
with font, storing them in extents. The FcChar32 data type is defined by
the Fontconfig library, and the XGlyphInfo data type is defined by the
X Rendering Extension library.
void
XftTextExtentsUtf8 (Display *dpy,
XftFont *font,
FcChar8 *string,
int len,
XGlyphInfo *extents);
XftTextExtentsUtf8 computes the pixel extents on display dpy of no more
than len bytes of a UTF-8 encoded string when drawn with font, storing them
in extents. The XGlyphInfo data type is defined by the X Rendering Extension
library.
void
XftTextExtentsUtf16 (Display *dpy,
XftFont *font,
FcChar8 *string,
FcEndian endian,
int len,
XGlyphInfo *extents);
XftTextExtentsUtf16 computes the pixel extents on display dpy of no more
than len bytes of a UTF-16LE- or UTF-16BE-encoded string when drawn with font,
storing them in extents. The endianness of string must be specified in endian.
The FcEndian data type is defined by the Fontconfig library, and the XGlyphInfo
data type is defined by the X Rendering Extension library.
void
XftGlyphExtents (Display *dpy,
XftFont *font,
FT_UInt *glyphs,
int nglyphs,
XGlyphInfo *extents);
Also used internally by the XftTextExtents* functions, XftGlyphExtents
computes the pixel extents on display dpy of no more than nglyphs in the
array glyphs drawn with font, storing them in extents. The FT_UInt data
type is defined by the FreeType library, and the XGlyphInfo data type is
defined by the X Rendering Extension library.
XftDraw *
XftDrawCreate (Display *dpy,
Drawable drawable,
Visual *visual,
Colormap colormap);
XftDrawCreate creates a structure that can be used to render text and rectangles
using the specified drawable, visual, and colormap on display. The Drawable,
Visual, and Colormap data types are defined by the X11 library.
XftDraw *
XftDrawCreateBitmap (Display *dpy,
Pixmap bitmap);
XftDrawCreateBitmap behaves as XftDrawCreate, except it uses an X pixmap
of color depth 1 instead of an X drawable. The Pixmap data type is defined
by the X11 library.
XftDraw *
XftDrawCreateAlpha (Display *dpy,
Pixmap pixmap,
int depth);
XftDrawCreateAlpha behaves as XftDrawCreate, except it uses an X pixmap
of color depth depth instead of an X drawable. The Pixmap data type is defined
by the X11 library.
void
XftDrawChange (XftDraw *draw,
Drawable drawable);
XftDrawChange changes the X drawable association of the existing Xft draw
object draw from its current value to drawable.
Display * XftDrawDisplay (XftDraw *draw);XftDrawDisplay returns a pointer to the display associated with the Xft draw object draw.
Drawable XftDrawDrawable (XftDraw *draw);XftDrawDrawable returns the X drawable associated with the Xft draw object draw.
Colormap XftDrawColormap (XftDraw *draw);XftDrawColormap returns the colormap associatied with the Xft draw object draw.
Visual * XftDrawVisual (XftDraw *draw);XftDrawVisual returns a pointer to the visual associated with the Xft draw object draw.
Picture XftDrawPicture (XftDraw *draw);XftDrawPicture returns the picture associated with the Xft draw object draw. If the the X server does not support the X Rendering Extension, 0 is returned.
Picture
XftDrawSrcPicture (XftDraw *draw,
XftColor *color);
XftGlyphCore is used.
void XftDrawDestroy (XftDraw *draw);XftDrawDestroy destroys draw (created by one of the XftCreate functions) and frees the memory that was allocated for it.
void
XftDrawString8 (XftDraw *d,
XRenderColor *color,
XftFont *font,
int x,
int y,
unsigned char *string,
int len);
XftDrawString8 draws no more than len glyphs of string to Xft drawable
d using font in color at position x, y. The XRenderColor data type is defined
by the X Rendering Extension library.
void
XftDrawRect (XftDraw *d,
XRenderColor *color,
int x,
int y,
unsigned int width,
unsigned int height);
XftDrawRect draws a solid rectangle of the specified color, width, and
height at position x, y to Xft drawable d.
Xft does provide a compatibility interface to its previous major version, Xft 1.x, described below.