On Fri, May 27, 2011 at 04:28:44PM +0400, Alexander Polakov wrote: > This diff works for me with some fonts (fixed, snap, even verdana), > but doesn't work with terminus (black squares instead of chars).
I have been meaning to write this diff for years. I will try and get to it soon. Cheers, -0- > > Index: app/cwm/calmwm.c > =================================================================== > RCS file: /cvs/xenocara/app/cwm/calmwm.c,v > retrieving revision 1.54 > diff -u -p -u -r1.54 calmwm.c > --- app/cwm/calmwm.c 11 May 2011 13:53:51 -0000 1.54 > +++ app/cwm/calmwm.c 27 May 2011 12:35:51 -0000 > @@ -30,6 +30,7 @@ > #include <string.h> > #include <stdio.h> > #include <unistd.h> > +#include <locale.h> > > #include "calmwm.h" > > @@ -61,6 +62,8 @@ main(int argc, char **argv) > const char *conf_file = NULL; > char *display_name = NULL; > int ch; > + > + setlocale(LC_CTYPE, ""); > > while ((ch = getopt(argc, argv, "c:d:")) != -1) { > switch (ch) { > Index: app/cwm/font.c > =================================================================== > RCS file: /cvs/xenocara/app/cwm/font.c,v > retrieving revision 1.14 > diff -u -p -u -r1.14 font.c > --- app/cwm/font.c 11 May 2011 13:53:51 -0000 1.14 > +++ app/cwm/font.c 27 May 2011 12:35:51 -0000 > @@ -66,7 +66,7 @@ font_width(struct screen_ctx *sc, const > { > XGlyphInfo extents; > > - XftTextExtents8(X_Dpy, sc->font, (const XftChar8*)text, > + XftTextExtentsUtf8(X_Dpy, sc->font, (unsigned char*)text, > len, &extents); > > return (extents.xOff); > @@ -77,9 +77,8 @@ font_draw(struct screen_ctx *sc, const c > Drawable d, int x, int y) > { > XftDrawChange(sc->xftdraw, d); > - /* Really needs to be UTF8'd. */ > - XftDrawString8(sc->xftdraw, &sc->xftcolor, sc->font, x, y, > - (const FcChar8*)text, len); > + XftDrawStringUtf8(sc->xftdraw, &sc->xftcolor, sc->font, x, y, > + (const unsigned char*)text, len); > } > > XftFont * > > -- > Alexander Polakov | plhk.ru > -- When the going gets tough, the tough get empirical -- Jon Carroll