Re: [dwm] Font recomendation to get unicode in statusbar?

2009-04-18 Thread Preben Randhol
On Sat, 18 Apr 2009 06:41:40 -0400
Ian Daniher  wrote:

> The "Fixed" font is superb. For unicode I've had great luck with
> -misc-fixed-medium-r-normal-*-13-*-*-*-*-*-iso10646-* which has
> flawless greek support as well as support for a variety of arrows,
> miscellaneous and technical glyphs.

If I put this font I still get ugly greek support in the statusbar
(greek letters are italic and there are space between each character).
In xterm it looks good. I don't understand the reason.



Re: [dwm] Font recomendation to get unicode in statusbar?

2009-04-18 Thread Ian Daniher
The "Fixed" font is superb. For unicode I've had great luck with
-misc-fixed-medium-r-normal-*-13-*-*-*-*-*-iso10646-* which has flawless
greek support as well as support for a variety of arrows, miscellaneous and
technical glyphs. I discovered the fixed font after I decided I wanted to
take notes for physics class on my laptop. I have also written a handy
script that utalizes dmenu and a hierarchical file format to browse, select,
and copy unicode charecters to the keyboard. I'll post the script to the
list in the near future.
Best,
--
IT Daniher

On Sat, Apr 18, 2009 at 6:00 AM, Szabolcs Nagy  wrote:

> On 4/17/09, Preben Randhol  wrote:
> > Problem is that fixed font in xterm looks nice, but in the status bar
> > it looks ugly for Greek language. the letters are both bold and italic.
> > How do you define font[] ?
>
> you are right greek looks ugly here as well
> maybe the XCreateFontSet() + XmbDrawString() approach is not optimal
> and XLoadQueryFont() + XDrawString16() should be used..
> someone should figure out how fonts, encodings and locales work in X
>
>


Re: [dwm] Font recomendation to get unicode in statusbar?

2009-04-18 Thread Szabolcs Nagy
On 4/17/09, Preben Randhol  wrote:
> Problem is that fixed font in xterm looks nice, but in the status bar
> it looks ugly for Greek language. the letters are both bold and italic.
> How do you define font[] ?

you are right greek looks ugly here as well
maybe the XCreateFontSet() + XmbDrawString() approach is not optimal
and XLoadQueryFont() + XDrawString16() should be used..
someone should figure out how fonts, encodings and locales work in X



Re: [dwm] Font recomendation to get unicode in statusbar?

2009-04-17 Thread Preben Randhol
On Fri, 17 Apr 2009 21:47:27 +0800
Haomin Wen  wrote:

> I manage to use wenquanyi bitmap song to display Chinese characters on
> the dwm bar in Arch linux,  but there is always something wrong on
> Ubuntu. Now I give up. I begin to use Xft.
> 
> You can use Xft. There are several patches which enable Xft.
> 
> The attached patch uses pango to render text. You can apply the patch
> and change your font to something like sans-10. Then pango and
> fontconfig will select proper fonts for you.
> 
> I found this patch on this mailing list, but I do not remember who
> write it.

Interesting! I'll have a look.
Thanks

Preben



Re: [dwm] Font recomendation to get unicode in statusbar?

2009-04-17 Thread Preben Randhol
On Fri, 17 Apr 2009 15:33:53 +0200
Szabolcs Nagy  wrote:

> On 4/17/09, Preben Randhol  wrote:
> > Is there another font you would recommend that works with
> > unicode?
> 
> fixed font
> 
> more details: http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html
> 

Problem is that fixed font in xterm looks nice, but in the status bar
it looks ugly for Greek language. the letters are both bold and italic.
How do you define font[] ?

Preben



Re: [dwm] Font recomendation to get unicode in statusbar?

2009-04-17 Thread Haomin Wen
I manage to use wenquanyi bitmap song to display Chinese characters on
the dwm bar in Arch linux,  but there is always something wrong on
Ubuntu. Now I give up. I begin to use Xft.

You can use Xft. There are several patches which enable Xft.

The attached patch uses pango to render text. You can apply the patch
and change your font to something like sans-10. Then pango and
fontconfig will select proper fonts for you.

I found this patch on this mailing list, but I do not remember who write it.

On Fri, Apr 17, 2009 at 9:21 PM, Preben Randhol  wrote:
> I'm currently using the terminus font, but it doesn't seem to work with
> unicode. Is there another font you would recommend that works with
> unicode?
>
> Thanks in advance
>
> Preben
>
>
>
diff -r b4e7c220422d config.mk
--- a/config.mk	Sat Feb 21 19:20:11 2009 +
+++ b/config.mk	Sun Mar 01 15:22:30 2009 +0800
@@ -15,8 +15,8 @@
 #XINERAMAFLAGS = -DXINERAMA
 
 # includes and libs
-INCS = -I. -I/usr/include -I${X11INC}
-LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${XINERAMALIBS}
+INCS = -I. -I/usr/include -I${X11INC} `pkg-config --cflags xft pango pangoxft`
+LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${XINERAMALIBS} `pkg-config --libs xft pango pangoxft`
 
 # flags
 CPPFLAGS = -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
diff -r b4e7c220422d dwm.c
--- a/dwm.c	Sat Feb 21 19:20:11 2009 +
+++ b/dwm.c	Sun Mar 01 15:22:30 2009 +0800
@@ -36,6 +36,10 @@
 #include 
 #include 
 #include 
+#include 
+#include 
+#include 
+#include 
 #ifdef XINERAMA
 #include 
 #endif
@@ -46,8 +50,12 @@
 #define INRECT(X,Y,RX,RY,RW,RH) ((X) >= (RX) && (X) < (RX) + (RW) && (Y) >= (RY) && (Y) < (RY) + (RH))
 #define ISVISIBLE(x)(x->tags & tagset[seltags])
 #define LENGTH(x)   (sizeof x / sizeof x[0])
+#ifndef MAX
 #define MAX(a, b)   ((a) > (b) ? (a) : (b))
+#endif
+#ifndef MIN
 #define MIN(a, b)   ((a) < (b) ? (a) : (b))
+#endif
 #define MAXTAGLEN   16
 #define MOUSEMASK   (BUTTONMASK|PointerMotionMask)
 #define WIDTH(x)((x)->w + 2 * (x)->bw)
@@ -98,12 +106,19 @@
 	unsigned long sel[ColLast];
 	Drawable drawable;
 	GC gc;
+
+	XftColor  xftnorm[ColLast];
+	XftColor  xftsel[ColLast];
+	XftDraw  *xftdrawable;
+
+	PangoContext *pgc;
+	PangoLayout  *plo;
+	PangoFontDescription *pfd;
+
 	struct {
 		int ascent;
 		int descent;
 		int height;
-		XFontSet set;
-		XFontStruct *xfont;
 	} font;
 } DC; /* draw context */
 
@@ -152,7 +167,7 @@
 static void focusin(XEvent *e);
 static void focusstack(const Arg *arg);
 static Client *getclient(Window w);
-static unsigned long getcolor(const char *colstr);
+//static unsigned long getcolor(const char *colstr);
 static long getstate(Window w);
 static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size);
 static void grabbuttons(Client *c, Bool focused);
@@ -351,10 +366,6 @@
 	lt[sellt] = &foo;
 	while(stack)
 		unmanage(stack);
-	if(dc.font.set)
-		XFreeFontSet(dpy, dc.font.set);
-	else
-		XFreeFont(dpy, dc.font.xfont);
 	XUngrabKey(dpy, AnyKey, AnyModifier, root);
 	XFreePixmap(dpy, dc.drawable);
 	XFreeGC(dpy, dc.gc);
@@ -568,7 +579,7 @@
 		return;
 	olen = strlen(text);
 	h = dc.font.ascent + dc.font.descent;
-	y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent;
+	y = dc.y;
 	x = dc.x + (h / 2);
 	/* shorten text if necessary */
 	for(len = MIN(olen, sizeof buf); len && textnw(text, len) > dc.w - h; len--);
@@ -577,11 +588,8 @@
 	memcpy(buf, text, len);
 	if(len < olen)
 		for(i = len; i && i > len - 3; buf[--i] = '.');
-	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);
+	pango_layout_set_text(dc.plo, text, len);
+	pango_xft_render_layout(dc.xftdrawable, (col==dc.norm?dc.xftnorm:dc.xftsel)+(invert?ColBG:ColFG), dc.plo, x * PANGO_SCALE, y * PANGO_SCALE);
 }
 
 void
@@ -671,13 +679,13 @@
 }
 
 unsigned long
-getcolor(const char *colstr) {
+getcolor(const char *colstr, XftColor *color) {
 	Colormap cmap = DefaultColormap(dpy, screen);
-	XColor color;
+	Visual *vis = DefaultVisual(dpy, screen);
 
-	if(!XAllocNamedColor(dpy, cmap, colstr, &color, &color))
+	if(!XftColorAllocName(dpy,vis,cmap,colstr, color))
 		die("error, cannot allocate color '%s'\n", colstr);
-	return color.pixel;
+	return color->pixel;
 }
 
 long
@@ -762,36 +770,20 @@
 
 void
 initfont(const char *fontstr) {
-	char *def, **missing;
-	int i, n;
+	PangoFontMetrics *metrics;
 
-	missing = NULL;
-	dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def);
-	if(missing) {
-		while(n--)
-			fprintf(stderr, "dwm: missing fontset: %s\n", missing[n]);
-		XFreeStringList(missing);
-	}
-	if(dc.font.set) {
-		XFontSetExtents *font_extents;
-		XFontStruct **xfonts;
-		char **font_names;
-		dc.font.ascent = dc.font.descent = 0;
-		font_extents = XExtentsOfFontSet(dc.font.set);
-		n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names);
-		

Re: [dwm] Font recomendation to get unicode in statusbar?

2009-04-17 Thread Szabolcs Nagy
On 4/17/09, Preben Randhol  wrote:
> Is there another font you would recommend that works with
> unicode?

fixed font

more details: http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html