Xft - X FreeType interface library
Xft is a simple library designed to interface the FreeType rasterizer with the X Rendering Extension. This manual page barely scratches the surface of this library.
#include <X11/Xft/Xft.h>
XFT_MAJOR is the major version number of Xft. XFT_MINOR is the minor version number of Xft. XFT_REVISION is the revision number of Xft. XFT_VERSION is XFT_MAJOR times 10000 (ten thousand), plus XFT_MINOR times 100, plus XFT_REVISION. XftVersion is an alias for XFT_VERSION. 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.\n", XFT_MAJOR, XFT_MINOR, XFT_REVISION); #endif
XftFont 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. XftFonts are populated with any of XftFontOpen(), XftFontOpenName(), XftFontOpenXlfd(), XftFontOpenInfo(), or XftFontOpenPattern(). XftFontCopy() is used to duplicate XftFonts, and XftFontClose() is used to mark an XftFont as unused. XftFonts are internally allocated, reference-counted, and freed by Xft; the programmer does not ordinarily need to allocate or free storage for them. XftDrawGlyphs(), the XftDrawString*() family, XftDrawCharSpec(), and XftDrawGlyphSpec() use XftFonts to render text to an XftDraw object, which may correspond to either a core X drawable or an X Rendering Extension drawable. XftGlyphExtents() and the XftTextExtents*() family are used to determine the extents (maximum dimensions) of an XftFont. An XftFont's glyph or character coverage can be determined with XftFontCheckGlyph() or XftCharExists(). XftCharIndex() returns the XftFont-specific character index corresponding to a given Unicode codepoint. XftGlyphRender(), XftGlyphSpecRender(), XftCharSpecRender(), and the XftTextRender*() family use XftFonts to draw into X Rendering Extension Picture structures. Note: XftDrawGlyphs(), the XftDrawString*() family, XftDrawCharSpec(), and XftDrawGlyphSpec() provide a means of rendering fonts that is independent of the availability of the X Rendering Extension on the X server. XftFontInfo is an opaque object that stores information about a font. XftFontInfo structures are created with XftFontInfoCreate(), freed with XftFontInfoDestroy(), and compared with XftFontInfoEqual(). XftFontInfo objects are internally allocated and freed by Xft; the programmer does not ordinarily need to allocate or free storage for them. Each XftFontInfo structure in use is associated with a unique identifier, which can be retrieved with XftFontInfoHash(). An XftFont can be opened based on XftFontInfo data with XftFontOpenInfo(). XftColor 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. XftColorAllocName() and XftColorAllocValue() request a color allocation from the X server (if necessary) and initialize the members of XftColor. XftColorFree() instructs the X server to free the color currently allocated for an XftColor. One an XftColor has been initialized, XftDrawSrcPicture(), XftDrawGlyphs(), the XftDrawString*() family, XftDrawCharSpec(), XftDrawCharFontSpec(), XftDrawGlyphSpec(), XftDrawGlyphFontSpec(), and XftDrawRect() may be used to draw various objects using it. XftDraw is an opaque object which holds information used to render to an X drawable using either the core protocol or the X Rendering extension. XftDraw objects are created with any of XftDrawCreate() (which associates an XftDraw with an existing X drawable), XftDrawCreateBitmap(), or XftDrawCreateAlpha(), and destroyed with XftDrawDestroy(). The X drawable associated with an XftDraw can be changed with XftDrawChange(). XftDraws are internally allocated and freed by Xft; the programmer does not ordinarily need to allocate or free storage for them. The X Display, Drawable, Colormap, and Visual of an XftDraw can be queried with XftDrawDisplay(), XftDrawDrawable(), XftDrawColormap(), and XftDrawVisual(), respectively. The X Rendering Extension Picture associated with an XftDraw is returned by XftDrawPicture(). XftCharSpec typedef struct _XftCharSpec { FcChar32 ucs4; short x; short y; } XftCharSpec; The FcChar32 data type is defined by the Fontconfig library. XftCharFontSpec typedef struct _XftCharFontSpec { XftFont *font; FcChar32 ucs4; short x; short y; } XftCharFontSpec; The FcChar32 data type is defined by the Fontconfig library. XftGlyphSpec typedef struct _XftGlyphSpec { FT_UInt glyph; short x; short y; } XftGlyphSpec; The FT_UInt data type is defined by the FreeType library. XftGlyphFontSpec typedef struct _XftGlyphFontSpec { XftFont *font; FT_UInt glyph; short x; short y; } XftGlyphFontSpec; The FT_UInt data type is defined by the FreeType library.
Opening and Matching Fonts 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 "charter" 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. Determining the Pixel Extents of a Text String 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. Drawing Strings (and Other Things) 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); This function is never called if the X server doesn't support the X Rendering Extension; instead, 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, XftColor *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. void XftDrawRect (XftDraw *d, XftColor *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.
As of version 2, Xft has become relatively stable and is expected to retain source and binary compatibility in future releases. Xft does provide a compatibility interface to its previous major version, Xft 1.x, described below. Xft 1.x Compatibility Header File #include <X11/Xft/XftCompat.h> Xft 1.x Compatibility Data Types XftPattern holds a set of names with associated value lists; each name refers to a property of a font. XftPatterns are used as inputs to the matching code as well as holding information about specific fonts. XftFontSet contains a list of XftPatterns. Internally, Xft uses this data structure to hold sets of fonts. Externally, Xft returns the results of listing fonts in this format. XftObjectSet holds a set of names and is used to specify which fields from fonts are placed in the the list of returned patterns when listing fonts.
Keith Packard
Fontconfig Developers Reference FreeType API Reference Xlib - C Language Interface
Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.
Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.
Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.
Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.
The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.
Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.
Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.
Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.