Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Xft(3)				 X Version 11				Xft(3)

NAME
       Xft - X FreeType	interface library

DESCRIPTION
       Xft is a	simple library which draws text	and graphics:

          using information provided by the Fontconfig	library,

          Xft converts	font glyphs using the FreeType rasterizer, and

          displays the	converted font data using the X	Rendering Extension.

       This manual page	barely scratches the surface of	this library.

HEADER FILE
       #include	<X11/Xft/Xft.h>

CONSTANTS
       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

DATA TYPES
       Xft  datatypes  follow  a  naming  convention, prefixing	all names with
       "Xft"

   From	Xlib...
       Xlib datatypes do not follow a naming convention.  They are  documented
       in Xlib - C Language Interface.

       Xft  uses  these	 names:	Bool, Colormap,	Display, Drawable, Pixmap, Re-
       gion, Visual, and XRectangle.

       Some datatypes are especially relevant to Xft:

       Drawable
	    Declared in	<X11/X.h>, this	is an X	resource ID,  e.g.,  a	window
	    associated	with  a	display.  Both windows and pixmaps can be used
	    as sources and destinations	in graphics operations.	 These windows
	    and	pixmaps	are collectively known as drawables.  However, an  In-
	    putOnly  window  cannot  be	 used  as a source or destination in a
	    graphics operation.

       Region
	    Declared in	<X11/Xutil.h> and <X11/Xregion.h>, a Region is an  ar-
	    bitrary  set of pixel locations which Xlib can manipulate.	Inter-
	    nally, a Region is represented by the union	of an arbitrary	number
	    of rectangles.  Xlib maintains a rectangle which tells it the  ex-
	    tent of this union.

       Visual
	    Declared  in  <X11/Xutil.h>,  this	structure contains information
	    about the possible color mapping.

   From	XRender...
       The X Render Extension library datatypes	are inspired by	Xlib, but lack
       the corresponding documentation.	 Refer to the header file for details:

	      <X11/extensions/Xrender.h>

       or read the source code (which provides an outline of libXrender).

       Xft uses	these names: Picture, XGlyphInfo, XRenderColor.

   From	Fontconfig...
       Fontconfig datatypes follow a naming convention,	 prefixing  all	 names
       with "Fc" which are documented in Fontconfig Developers Reference.

       Xft  uses  these	Fontconfig names: FcBool, FcChar8, FcChar16, FcChar32,
       FcCharSet, FcEndian, FcFontSet, FcPattern, and FcResult.

   From	FreeType 2...
       FreeType	2 datatypes follow a naming convention,	 prefixing  all	 names
       with "FT_" which	are documented in FreeType API Reference.

       Xft uses	these names: FT_Face, FT_Library, and FT_UInt.

       FreeType	2 uses FT_UInt (an unsigned integer) to	represent glyphs.

   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 us-
       ing  Xft; it contains general font metrics and pointers to the Fontcon-
       fig character set and pattern associated	with the font.

       XftFonts	are populated with any	of  XftFontOpen(),  XftFontOpenName(),
       XftFontOpenXlfd(),  XftFontOpenInfo(),  or  XftFontOpenPattern().  Xft-
       FontCopy() is used to duplicate XftFonts, and XftFontClose() is used to
       mark an XftFont as unused.  XftFonts are	internally  allocated,	refer-
       ence-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 Ex-
       tension drawable.

       XftGlyphExtents() and the XftTextExtents*() family are used  to	deter-
       mine the	extents	(maximum dimensions) of	an XftFont.

       An  XftFont's  glyph  or	character coverage can be determined with Xft-
       FontCheckGlyph()	or XftCharExists().  XftCharIndex() returns  the  Xft-
       Font-specific  character	 index	corresponding to a given Unicode code-
       point.

       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 inde-
       pendent 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  XftFontIn-
       foDestroy(), and	compared with XftFontInfoEqual().  XftFontInfo objects
       are  internally allocated and freed by Xft; the programmer does not or-
       dinarily	need to	allocate or free storage for them.

       Each XftFontInfo	structure in use is associated with a  unique  identi-
       fier, 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).

       XftColorAllocName() and XftColorAllocValue() request a color allocation
       from  the  X  server  (if necessary) and	initialize the members of Xft-
       Color.  XftColorFree() instructs	the X server to	free  the  color  cur-
       rently allocated	for an XftColor.

       Once  an	 XftColor has been initialized,	XftDrawSrcPicture(), XftDrawG-
       lyphs(),	the XftDrawString*() family,  XftDrawCharSpec(),  XftDrawChar-
       FontSpec(),   XftDrawGlyphSpec(),   XftDrawGlyphFontSpec(),   and  Xft-
       DrawRect() 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 asso-
       ciates 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  XftDraw-
       Change().   XftDraw  objects 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 properties	of an  XftDraw
       can  be	queried	 with XftDrawDisplay(),	XftDrawDrawable(), XftDrawCol-
       ormap(),	and XftDrawVisual(), respectively.

       Several functions use XftDraw objects: XftDrawCharFontSpec(),  XftDraw-
       CharSpec(),   XftDrawGlyphFontSpec(),   XftDrawGlyphSpec(),   XftDrawG-
       lyphs(),	XftDrawRect(),	XftDrawSetClip(),  XftDrawSetClipRectangles(),
       XftDrawSetSubwindowMode(), and the XftDrawString*() family.

       The  X  Rendering  Extension  Picture associated	with an	XftDraw	is re-
       turned by XftDrawPicture(), and XftDrawSrcPicture().   It  is  used  by
       XftCharFontSpecRender(),	XftCharSpecRender(), XftGlyphFontSpecRender(),
       XftGlyphRender(),  XftGlyphSpecRender(),	 and the XftTextRender*() fam-
       ily.

   XftCharSpec
	 typedef struct	_XftCharSpec {
		   FcChar32		ucs4;
		   short		x;
		   short		y;
	 } XftCharSpec;

       XftCharSpec is used by XftDrawCharSpec(), and XftCharSpecRender().

   XftCharFontSpec
	 typedef struct	_XftCharFontSpec {
		   XftFont	       *font;
		   FcChar32		ucs4;
		   short		x;
		   short		y;
	 } XftCharFontSpec;

       XftCharFontSpec is used by XftCharFontSpecRender().

   XftGlyphSpec
	 typedef struct	_XftGlyphSpec {
		   FT_UInt		 glyph;
		   short		 x;
		   short		 y;
	 } XftGlyphSpec;

       XftGlyphSpec is used by XftDrawGlyphSpec().

   XftGlyphFontSpec
	 typedef struct	_XftGlyphFontSpec {
		   XftFont	       *font;
		   FT_UInt		glyph;
		   short		x;
		   short		y;
	 } XftGlyphFontSpec;

       XftGlyphFontSpec	 is  used  by  XftDrawGlyphFontSpec(),	and  XftGlyph-
       FontSpecRender().

FUNCTIONS
   Initialization
       A  typical application using Xft	does not explicitly initialize the li-
       brary.  That is usually done as a side-effect of	opening	a font.

       When Xft	initializes, it	collects information about  the	 display,  and
       stores  some of that information	in a Fontconfig	pattern	(essentially a
       collection of properties	with typed values).  The  calling  application
       can modify that pattern to change the library's behavior.

       Not  all	 of the	collected information is stored	in a pattern.  The re-
       mainder is stored in internal data structures.  Xft makes some of  that
       available to the	application via	functions.

       Bool XftDefaultHasRender	(
		      Display		    *dpy);

	      Obtain  information  about  the display dpy if not done already,
	      and return true if Xft found that	the  display  supports	the  X
	      Render  extension, and if	it is able to find a suitable XRender-
	      PictFormat (X Render's datatype which is analogous to Xlib's Vi-
	      sual) on the display.

       Bool XftDefaultSet (
		      Display		    *dpy,
		      FcPattern		    *defaults);

	      Obtain information about the display dpy if  not	done  already,
	      and  set the Fontconfig pattern holding default properties which
	      Xft will use for this display.

	      Xft uses those properties	initially to obtain these limits:

		 XFT_MAX_GLYPH_MEMORY
		      (maxglyphmemory).	 This is the maximum amount  of	 glyph
		      memory for all fonts used	by Xft (default: 4*1024*1024).

		 XFT_MAX_UNREF_FONTS
		      (maxunreffonts).	This is	the maximum number of unrefer-
		      enced fonts (default: 16).

		 XFT_TRACK_MEM_USAGE
		      (trackmemusage).	 When  true, Xft tracks	usage of glyph
		      memory to	improve	performance when deciding which	to un-
		      load when	the maximum amount of glyph memory is  reached
		      (default:	false).

	      Xft  also	 uses  these  default  properties in XftDefaultSubsti-
	      tute().

       void XftDefaultSubstitute (
		      Display		    *dpy,
		      int		     screen,
		      FcPattern		    *pattern);

	      Xft fills	in missing properties in the given pattern  using  de-
	      fault  properties	for the	specified display dpy, e.g., as	set in
	      XftDefaultSet().

	      Typical Xft applications use this	function  to  help  Fontconfig
	      choose a suitable	font.  These properties	are substituted	before
	      calling FcDefaultSubstitute():

		 FC_ANTIALIAS
		      True  if	FreeType  should  use  antialiasing  (default:
		      False).  (default: True).

		 FC_AUTOHINT
		      True  if	FreeType  should  use  autohinting   (default:
		      False).

		 FC_DPI
		      Dots/inch	 used  for  resolution (default: computed from
		      the display height).

		 FC_EMBOLDEN
		      True if FT_GlyphSlot_Embolden() should be	 used  to  em-
		      bolden a font (default: False).

		 FC_HINTING
		      True  if	hinting	should be used when filling in proper-
		      ties to open a font (default: True).

		 FC_HINT_STYLE
		      Hinting style used when filling in properties to open  a
		      font (default: FC_HINT_FULL).

		 FC_LCD_FILTER
		      Parameter	passed to FT_Library_SetLcdFilter() when load-
		      ing glyphs (default: FC_LCD_DEFAULT).

		 FC_MINSPACE
		      Minimum  space  value used when filling in properties to
		      open a font (default: False).

		 FC_RGBA
		      RGBA value used when filling in  properties  to  open  a
		      font  (default:  computed	by calling XRenderQuerySubpix-
		      elOrder()).

		 FC_SCALE
		      Scale used in Fontconfig (default: 1.0).

		 XFT_MAX_GLYPH_MEMORY
		      Maximum memory for one font (default: 1024*1024).

		 XFT_RENDER
		      True if the display supports  X  Render  extension  (de-
		      fault: result from XftDefaultHasRender()).

       FcBool XftInit (
		      _Xconst char	    *config);

	      Initializes the Fontconfig library (calling FcInit()).

	      The config parameter is unused.

	      Xft  does	 not  deinitialize  the	 Fontconfig library when it is
	      done.

       FcBool XftInitFtLibrary (void);

	      Initializes the FreeType library (calling	FT_Init_FreeType()  to
	      create a library object) if it has not already been initialized.
	      This  is	needed	before using the FreeType library to read font
	      data from	a file.

	      Xft calls	XftInitFtLibrary() internally via  XftFontInfoCreate()
	      and XftFontOpenPattern().

	      Xft   does   not	 discard   the	library	 object	 (e.g.,	 using
	      FT_Done_FreeType()) when it is done.

       int XftGetVersion (void);

	      Return XftVersion, enabling an application to determine the  ac-
	      tual version of Xft which	is in use.

   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  pat-
	      tern  against  the available fonts, and opens the	matching font,
	      sizing it	correctly for screen number  screen  on	 display  dpy.
	      Return the matched font, or 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,
		      _Xconst char	    *name);

	      XftFontOpenName  behaves	as  XftFontOpen	 does,	except that it
	      takes a Fontconfig pattern string	(which is passed to the	 Font-
	      config library's FcNameParse() function).

       XftFont *XftFontOpenXlfd	(
		      Display		    *dpy,
		      int		     screen,
		      _Xconst char	    *xlfd)

	      XftFontOpenXlfd  behaves	as  XftFontOpen	 does,	except that it
	      takes a string containing	an X Logical Font Description  (XLFD),
	      and uses the XftXlfdParse() function.

       FcPattern *XftFontMatch (
		      Display		    *dpy,
		      int		     screen,
		      _Xconst FcPattern	    *pattern,
		      FcResult		    *result);

	      Also used	internally by the XftFontOpen* functions, XftFontMatch
	      can  also	be used	directly to determine the Fontconfig font pat-
	      tern resulting from an Xft font open request.

       FcPattern *XftXlfdParse (
		      _Xconst char	    *xlfd_orig,
		      Bool		    ignore_scalable,
		      Bool		    complete);

	      XftXlfdParse parses the xlfd_orig	parameter according to	the  X
	      Logical  Font Description	Conventions document, but ignores some
	      of the fields: setwidth_name, add_style_name, spacing, and aver-
	      age_width.

	      XftXlfdParse creates a Fontconfig	pattern, setting the  property
	      XFT_XLFD to the xlfd_orig	value, and maps	the collected informa-
	      tion to Fontconfig properties.  Empty or "*" fields are ignored:

		 FC_FOUNDRY
		      from foundry.

		 FC_FAMILY
		      from family.

		 FC_WEIGHT
		      weight_name, defaulting to FC_WEIGHT_MEDIUM.

		 FC_SLANT
		      from slant, defaulting to	FC_SLANT_ROMAN.

		 FC_SIZE
		      from point_size.

		 FC_PIXEL_SIZE
		      from pixel_size.	If point_size was set, as well as res-
		      olution_xand resolution_y, then the value	is scaled con-
		      vert the font's height to	points.

   Families of Functions
       Xft  provides groups of drawing functions which differ according	to the
       way the data is encoded,	e.g., 8-bit (ISO-8859-1) versus	 UTF-8.	  Here
       is a summary of these related functions:
       Encoding	  XftDrawString*       XftTextExtents*	     XftTextRender*
       -------------------------------------------------------------------------
       8	  XftDrawString8       XftTextExtents8	     XftTextRender8
       16	  XftDrawString16      XftTextExtents16	     XftTextRender16
       16BE	  XftDrawString16      XftTextExtents16	     XftTextRender16BE
       16LE	  XftDrawString16      XftTextExtents16	     XftTextRender16LE
       32	  XftDrawString32      XftTextExtents32	     XftTextRender32
       32BE	  XftDrawString32      XftTextExtents32	     XftTextRender32BE
       32LE	  XftDrawString32      XftTextExtents32	     XftTextRender32LE
       UTF-8	  XftDrawStringUtf8    XftTextExtentsUtf8    XftTextRenderUtf8
       UTF-16	  XftDrawStringUtf16   XftTextExtentsUtf16   XftTextRenderUtf16

   Determining Text Extents
       Xft  provides several functions for determining the required height and
       width for displaying a text-string.  After accounting for  the  offset,
       in  cases  where	 the  string  will be shifted up, down,	left or	right,
       these numbers are referred to as	text extents.

       void XftTextExtents8 (
		      Display		    *dpy,
		      XftFont		    *font,
		      _Xconst 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 charac-
	      ters when	drawn with font, storing them in extents.

       void XftTextExtents16 (
		      Display		    *dpy,
		      XftFont		    *font,
		      _Xconst 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 char-
	      acters when drawn	with font, storing them	in extents.

       void XftTextExtents32 (
		      Display		    *dpy,
		      XftFont		    *font,
		      _Xconst 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.

       void XftTextExtentsUtf8 (
		      Display		    *dpy,
		      XftFont		    *font,
		      _Xconst 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.

       void XftTextExtentsUtf16	(
		      Display		    *dpy,
		      XftFont		    *font,
		      _Xconst 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.

       void XftGlyphExtents (
		      Display		    *dpy,
		      XftFont		    *font,
		      _Xconst FT_UInt	    *glyphs,
		      int		     nglyphs,
		      XGlyphInfo	    *extents);

	      Also used	internally by the XftTextExtents*()  functions,	 XftG-
	      lyphExtents computes the pixel extents on	display	dpy of no more
	      than  nglyphs  in	the array glyphs drawn with font, storing them
	      in extents.

	      If any of	the glyphs are missing (determined  by	a  check  with
	      XftFontCheckGlyph()),  the  corresponding	 entry	in  extents is
	      filled with zeroes.

   Managing XftColor
       Bool XftColorAllocName (
		      Display		    *dpy,
		      _Xconst Visual	    *visual,
		      Colormap		     cmap,
		      _Xconst char	    *name,
		      XftColor		    *result);

	      Use XAllocNamedColor() to	look up	the named color	name  for  the
	      screen associated	with the colormap cmap.

	      	  If  XAllocNamedColor()  returns nonzero, XftColorAllocName()
		  fills	in the resulting XftColor pixel	field with the closest
		  color	supported by the screen, as well  as  the  exact  red,
		  green	and blue fields	from the database, and returns True.

	      	  If  XAllocNamedColor() returns zero, XftColorAllocName() re-
		  turns	False, and does	not update the XftColor	referenced  by
		  result.

	      The visual parameter is unused.

       Bool XftColorAllocValue (
		      Display		    *dpy,
		      Visual		    *visual,
		      Colormap		     cmap,
		      _Xconst XRenderColor  *color,
		      XftColor		    *result);

	      Allocate a color value:

	      	  If  the visual class is TrueColor, XftColorAllocValue() sets
		  the pixel field in the XftColor referenced by	 result	 using
		  the red, green and blue fields from the color	parameter.

	      	  If  the  visual class	is not TrueColor, XftColorAllocValue()
		  calls	XAllocColor() to allocate an  entry  in	 the  colormap
		  cmap.	 which returns the pixel value of the color closest to
		  the specified	RGB elements supported by the hardware.

		  If  XAllocColor()  succeeds XftColorAllocValue() stores that
		  pixel	value in the XRenderColor referenced by	result and re-
		  turns	True.

		  If XAllocColor() fails, XftColorAllocValue()	returns	 False
		  and does not modify the result.

       void XftColorFree (
		      Display		    *dpy,
		      Visual		    *visual,
		      Colormap		     cmap,
		      XftColor		    *color);

	      If the visual class is not TrueColor, Xft	calls XFreeColors() to
	      free  the	 entry from the	colormap cmap whose pixel value	in the
	      color parameter was allocated by XftColorAllocName().

   Managing XftDraw
       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.

       XftDraw *XftDrawCreateBitmap (
		      Display		    *dpy,
		      Pixmap		     bitmap);

	      XftDrawCreateBitmap behaves as XftDrawCreate(), except  that  it
	      uses an X	pixmap of color	depth 1	instead	of an X	drawable.

       XftDraw * XftDrawCreateAlpha (
		      Display		    *dpy,
		      Pixmap		     pixmap,
		      int		     depth);

	      XftDrawCreateAlpha  behaves  as  XftDrawCreate(),	except that it
	      uses an X	pixmap of color	depth depth instead of an X drawable.

       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 associated	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,
		      _Xconst XftColor	    *color);

	      Return an	X Render Picture object, which is used	for  rendering
	      glyphs,  e.g.,  with  XftGlyphRender(), XftGlyphSpecRender(), or
	      XftGlyphFontSpecRender(),	 by   XftDrawGlyphs(),	 XftDrawGlyph-
	      Spec(), XftDrawGlyphFontSpec(), respectively.

	      If  the  X server	does not support the X Render extension, those
	      functions	use XftGlyphCore(), XftGlyphSpecCore(),	 or  XftGlyph-
	      FontSpecCore().

       void XftDrawDestroy (
		      XftDraw		    *draw);

	      XftDrawDestroy  destroys draw (created by	one of the XftDrawCre-
	      ate*() functions)	and frees the memory that  was	allocated  for
	      it.

       Bool XftDrawSetClip (
		      XftDraw		    *draw,
		      Region		     r);

	      Set  up  clipping	 for the given XftDraw parameter draw starting
	      with a Region:

	      	  If the Region	parameter r is not null, Xft creates a new Re-
		  gion (to copy	the parameter),

	      	  Xft destroys any existing clipping region.

	      	  Xft sets the clip_type for the draw  parameter  to  XftClip-
		  TypeRegion  if  the  r parameter was not null.  Otherwise it
		  sets the clip_type to	XftClipTypeNone.

	      	  Finally, Xft updates clipping	for existing objects,  updates
		  the  clip_mask  for its X Render Picture object and sets the
		  clipping-mask	in the graphic context	(GC)  associated  with
		  the XftDraw parameter.

	      XftDrawSetClip()	returns	True if	no change was necessary, or if
	      the operation succeeded.	It returns False if it was  unable  to
	      create the new Region().

       Bool XftDrawSetClipRectangles (
		      XftDraw		    *draw,
		      int		     xOrigin,
		      int		     yOrigin,
		      _Xconst XRectangle    *rects,
		      int		     n);

	      Like  XftDrawSetClip(), XftDrawSetClipRectangles() sets up clip-
	      ping for the given XftDraw parameter draw	but uses a  set	 of  n
	      rectangles  (the	rects  parameter)  which could be used to con-
	      struct a Region .

	      Xft sets the clip_type for  draw	to  XftClipTypeRectangles  and
	      uses  XSetClipRectangles()  for core (X11) clipping and XRender-
	      SetPictureClipRectangles() for X Render clipping.

       void XftDrawSetSubwindowMode (
		      XftDraw		    *draw,
		      int		     mode);

	      Sets the subwindow-mode for the given  XftDraw  parameter	 draw.
	      The mode can be either ClipByChildren (the default), or Include-
	      Inferiors:

	      	  For  ClipByChildren, both source and destination windows are
		  additionally clipped by all viewable InputOutput children.

	      	  For IncludeInferiors,	neither	source nor destination	window
		  is clipped by	inferiors.  This will result in	including sub-
		  window  contents in the source and drawing through subwindow
		  boundaries of	the destination.

	      In addition to the subwindow-mode	maintained by Xft, it  updates
	      the  subwindow mode for any associated graphics context GC using
	      XSetSubwindowMode() as well as for an  X	Render	Picture	 using
	      XRenderChangePicture().

   Drawing Strings
       void XftDrawString8 (
		      XftDraw		    *d,
		      _Xconst XftColor	    *color,
		      XftFont		    *font,
		      int		     x,
		      int		     y,
		      _Xconst FcChar8	    *string,
		      int		     len);

	      XftDrawString8  draws  no	 more than len glyphs of string	to Xft
	      drawable d using font in color at	position x, y.

   Drawing Other Things
       void XftDrawRect	(
		      XftDraw		    *d,
		      _Xconst 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.

       void XftCharFontSpecRender (
		      Display		    *dpy,
		      int		     op,
		      Picture		     src,
		      Picture		     dst,
		      int		     srcx,
		      int		     srcy,
		      _Xconst XftCharFontSpec*chars,
		      int		     len);

	      XftCharFontSpecRender()	converts   the	chars  parameter  from
	      XftCharFontSpec to XftGlyphFontSpec, passing the converted array
	      along  with  the	other  parameters   unchanged	to   XftGlyph-
	      FontSpecRender() to render the data.

       void XftDrawGlyphFontSpec (
		      XftDraw		    *draw,
		      _Xconst XftColor	    *color,
		      _Xconst XftGlyphFontSpec*glyphs,
		      int		     len);

	      Draw a list of glyphs associated with fonts at specified coordi-
	      nates, passed as an array	of len XftGlyphFontSpec	structures via
	      the  parameter  glyphs.	All  of	the glyphs are drawn using the
	      color specified in the color parameter.

	      For each entry in	the glyphs array:

	      	  If the associated font uses the X Render extension, then Xft
		  uses XftGlyphFontSpecRender()	to draw	 the  glyph,  using  a
		  Picture  obtained from calling XftDrawSrcPicture () with the
		  draw and color parameters.

	      	  Otherwise, Xft provides an analogous feature using Xlib.

       void XftGlyphFontSpecRender (
		      Display		    *dpy,
		      int		     op,
		      Picture		     src,
		      Picture		     dst,
		      int		     srcx,
		      int		     srcy,
		      _Xconst XftGlyphFontSpec*glyphs,
		      int		     nglyphs);

	      This involves several steps:

	      	  First, Xft ensures that the glyphs array is  complete	 using
		  XftFontCheckGlyph() and loading any missing glyphs with Xft-
		  FontLoadGlyphs().

	      	  Then	Xft  examines  the  glyphs to find the maximum Unicode
		  value.  That determines the encoding size, i.e., the width.

	      	  Then,	for each glyph,	Xft checks if  its  Unicode  value  is
		  handled by the corresponding font.  If not, the value	is set
		  to  zero  (0), to ignore it.	While doing this, Xft also re-
		  members which	was the	first font used, and computes the  po-
		  sition at which each glyph will be drawn.

	      	  Xft  then  constructs	 an  equivalent	array of glyphs	in the
		  format expected by the X Render library.

	      	  Finally, XftGlyphFontSpecRender() uses the X	Render	exten-
		  sion to draw the glyphs, with	the appropriate	XRenderCompos-
		  iteText*()  function	according  to  the width, and discards
		  temporary data.

		  The op, dst, src, srcx, and srcy parameters are used as  de-
		  scribed in the documentation for the X Render	library.

   Manipulating	patterns
       FcFontSet *XftListFonts (
		      Display		    *dpy,
		      int		     screen,
		      ...);

	      Xft   uses   FcPatternVapBuild()	and  FcObjectSetVapBuild()  to
	      process the variable-length parameter list, and FcFontList()  to
	      obtain  a	list of	matching Fontconfig patterns, which it returns
	      to the caller.  The caller can dispose of	the return value using
	      FcPatternDestroy().

       FcPattern *XftNameParse (
		      _Xconst char	    *name);

	      Xft uses Fontconfig to parse the name, passing the name  to  Fc-
	      NameParse(), returning the result.

       FcBool XftNameUnparse (
		      FcPattern		    *pat,
		      char		    *dest,
		      int		     len);

	      Like XfgNameParse(), Xft uses Fontconfig.	 In this case, it uses
	      FcNameUnparse(),	which  converts	 the  pattern  pat back	into a
	      string that can be parsed.  XftNameUnparse() stores  the	result
	      via  the caller's	pointer	dest, but checks first if it will fit,
	      using the	len parameter.	If it fits, Xft	copies the string  and
	      returns FcTrue, otherwise	it returns FcFalse.

   Manipulating	Font data
       void XftFontLoadGlyphs (
		      Display		    *dpy,
		      XftFont		    *pub,
		      FcBool		     need_bitmaps,
		      _Xconst FT_UInt	    *glyphs,
		      int		     nglyph);

	      Using  FT_Load_Glyph(), load nglyphs for the glyph indices (Uni-
	      code values) listed in the array glyphs from the given font pub.

	      Loading a	glyph entails more than	just reading data into memory.
	      Xft uses the Fontconfig pattern associated with the display  dpy
	      (e.g., via XftDefaultSet()) to determine whether to use a	bound-
	      ing  box,	 clip  the glyphs into those bounds, scale the glyphs,
	      compute font metrics, and	add it to the X	Render extension using
	      XRenderAddGlyphs().

       void XftFontUnloadGlyphs	(
		      Display		    *dpy,
		      XftFont		    *pub,
		      _Xconst FT_UInt	    *glyphs,
		      int		     nglyph);

	      Discards data for	up to nglyph glyphs whose glyph	indices	 (Uni-
	      code  values)  are listed	in the array glyphs for	the given font
	      pub.  If the glyphs were added to	the X  Render  extension,  Xft
	      removes those using XRenderFreeGlyphs().	Xft keeps track	of the
	      amount  of memory	used for glyphs, and updates the usage associ-
	      ated with	the display dpy.

       FT_Face XftLockFace (
		      XftFont		    *pub);

	      If no FreeType 2 "face" (in-memory  representation  of  a	 given
	      typeface	in  a  given style) has	been created for the pub font,
	      create one using	FT_New_Face().	 Face-locks  are  a  reference
	      count  used  by Xft to ensure that only one face is created, and
	      that it is retained until	the font is no longer used.

	      Face-locking is used directly in XftCharIndex() and XftFontLoad-
	      Glyphs(),	which in turn are used in many functions of Xft.

	      Face-locking was introduced in version 1 (October	2002).	A  few
	      applications,  such as Gdk/Gimp relied upon these	functions.  In
	      version 2.1.9 (June 2006), face-locking was retained as part  of
	      the  public API when improved shared-library configurations pro-
	      vided for	hiding private symbols.

       void XftUnlockFace (
		      XftFont		    *pub);

	      Decrements the reference count for the FreeType 2	"face" associ-
	      ated with	the font.

	      FT_Face objects are deallocated using FT_Done_Face().  Xft  does
	      this  in XftFontInfoDestroy() and	when cleaning up on failure in
	      XftFontInfoCreate() and XftFontOpenPattern().

DEBUGGING
       Xft reads the environment variable XFT_DEBUG and	converts  that	to  an
       integer.	  Each bit in the resulting value tells	Xft to print debugging
       information to the standard output:

       1    font-opening

       2    additional font-matching and opening (verbose)

       4    shows details about	the XRenderPictFormat which will be used.

       8    shows the string which XftDrawString8() will draw.

       16   shows which	font-ids are matched.

       32   shows useful information about the glyphs which will be drawn

       64   shows an ASCII-art representation of the glyphs.

       128  shows details about	the memory-cache management

       256  shows details about	managing glyph cached-memory

       512  shows a report on memory-usage

       1024 shows details on extended management of glyph cached-memory

COMPATIBILITY
       As of version 2 (May 2002), Xft became relatively stable.   It  is  ex-
       pected to retain	source and binary compatibility	in future releases.

       Xft  provides  a	compatibility interface	to its previous	major version,
       Xft 1.x,	described below.

   Xft 1.x Header File
       #include	<X11/Xft/XftCompat.h>

   Xft 1.x 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  spe-
	      cific 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 list-
	      ing fonts.

AUTHOR
       Keith Packard
       Thomas E. Dickey	(performance improvements)

SEE ALSO
       Fontconfig Developers Reference
       FreeType	API Reference
       Xlib - C	Language Interface
       X Logical Font Description Conventions

X Version 11			 libXft	2.3.8				Xft(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=Xft&sektion=3&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help