41a42
> #include <X11/Xft/Xft.h> /* XFT */
111c112
< 		XFontStruct *xfont;
---
> 		XftFont *xfont;
488,491c489
< 	if(dc.font.set)
< 		XFreeFontSet(dpy, dc.font.set);
< 	else
< 		XFreeFont(dpy, dc.font.xfont);
---
> 
794a793,808
> 
> 	/*
> 	 *	Color assignment and conversion to Xft's coloring
> 	 */
> 
> 	XftColor color;
> 	color.color.red = ((col[invert ? ColBG : ColFG]  & 0xFF0000) >> 16 )* 0x101;
> 	color.color.green = ((col[invert ? ColBG : ColFG]  & 0x00FF00) >> 8 )* 0x101;
> 	color.color.blue = ((col[invert ? ColBG : ColFG]  & 0x0000FF) )* 0x101;
> 	color.color.alpha = 0xFFFF;
> 	color.pixel = 0xFFFFFF00;
> 	Colormap cmap = DefaultColormap(dpy, screen);
> 
> 	XftColorAllocValue(dpy, DefaultVisual(dpy, screen), cmap, &color.color, &color);
> 	XftDraw *draw = XftDrawCreate(dpy, dc.drawable, DefaultVisual(dpy, screen), cmap);
> 
808,812c822,825
< 	XSetForeground(dpy, dc.gc, col[invert ? ColBG : ColFG]);
< 	if(dc.font.set)
< 		XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);
< 	else
< 		XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);
---
> 
> 	XftDrawStringUtf8(draw, &color, dc.font.xfont, x, y, (XftChar8 *)buf, len);
> 
> 	free(draw);
1060,1061c1073,1074
< 		if(!(dc.font.xfont = XLoadQueryFont(dpy, fontstr))
< 		&& !(dc.font.xfont = XLoadQueryFont(dpy, "fixed")))
---
> 		if(!(dc.font.xfont = XftFontOpenXlfd(dpy,screen, fontstr))
> 		&& !(dc.font.xfont = XftFontOpenXlfd(dpy,screen, "fixed")))
1624,1625d1636
< 	if(!dc.font.set)
< 		XSetFont(dpy, dc.gc, dc.font.xfont->fid);
1695a1707
> 	XGlyphInfo ext;
1701c1713,1715
< 	return XTextWidth(dc.font.xfont, text, len);
---
> 
> 	XftTextExtentsUtf8(dpy, dc.font.xfont, (XftChar8 *)text, len, &ext);
> 	return ext.xOff;
