Uses Xrender extension to allow client side font rendering.
Adds nice things like anti-aliased text.

diff --git a/graphics/x11drv/clipping.c b/graphics/x11drv/clipping.c
index d890f12..1200da0 100644
--- a/graphics/x11drv/clipping.c
+++ b/graphics/x11drv/clipping.c
@@ -99,6 +99,8 @@
         dc->DCOrgY = org_y;
         physDev->drawable = drawable;
         TSXSetSubwindowMode( gdi_display, physDev->gc, mode );
+	if(physDev->xrender)
+	  X11DRV_XRender_UpdateDrawable(dc);
         GDI_ReleaseObj( hdc );
     }
 }
diff --git a/graphics/x11drv/init.c b/graphics/x11drv/init.c
index 040f825..a1f675c 100644
--- a/graphics/x11drv/init.c
+++ b/graphics/x11drv/init.c
@@ -66,6 +66,9 @@
 
     if (!X11DRV_BITMAP_Init()) return FALSE;
 
+    /* Initialize XRender */
+    X11DRV_XRender_Init();
+
     /* Initialize fonts and text caps */
 
     log_pixels_x = MulDiv( WidthOfScreen(screen), 254, WidthMMOfScreen(screen) * 10 );
@@ -157,6 +160,9 @@
 BOOL X11DRV_DeleteDC( DC *dc )
 {
     X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
+
+    if(physDev->xrender)
+      X11DRV_XRender_DeleteDC(dc);
     wine_tsx11_lock();
     XFreeGC( gdi_display, physDev->gc );
     while (physDev->used_visuals-- > 0)
diff --git a/graphics/x11drv/text.c b/graphics/x11drv/text.c
index 5e7d223..f01453f 100644
--- a/graphics/x11drv/text.c
+++ b/graphics/x11drv/text.c
@@ -46,11 +46,17 @@
     BOOL		dibUpdateFlag = FALSE;
     BOOL                result = TRUE; 
 
+
+    if(dc->gdiFont)
+        return X11DRV_XRender_ExtTextOut(dc, x, y, flags, lprect, wstr, count,
+					 lpDx);
+
+
     if (!X11DRV_SetupGCForText( dc )) return TRUE;
 
     pfo = XFONT_GetFontObject( physDev->font );
     font = pfo->fs;
-     
+
     if (pfo->lf.lfEscapement && pfo->lpX11Trans)
         rotated = TRUE;
     dfBreakChar = (char)pfo->fi->df.dfBreakChar;
diff --git a/graphics/x11drv/xfont.c b/graphics/x11drv/xfont.c
index 08a2629..5b517a0 100644
--- a/graphics/x11drv/xfont.c
+++ b/graphics/x11drv/xfont.c
@@ -206,6 +206,10 @@
     { "1", DEFAULT_CHARSET, 0, X11DRV_CPTABLE_UNICODE },
     { NULL, DEFAULT_CHARSET, 0, X11DRV_CPTABLE_UNICODE }};
 
+static const SuffixCharset sufch_dec[] = {
+    { "dectech", SYMBOL_CHARSET, CP_SYMBOL, X11DRV_CPTABLE_SBCS },
+    { NULL, 0, 0, X11DRV_CPTABLE_SBCS }};
+
 /* Each of these must be matched explicitly */
 static const SuffixCharset sufch_any[] = {
     { "fontspecific", SYMBOL_CHARSET, CP_SYMBOL, X11DRV_CPTABLE_SBCS },
@@ -244,6 +248,7 @@
 			{ "unicode",      sufch_unicode,      &__fETTable[19]},
 			{ "iso10646",     sufch_iso10646,     &__fETTable[20]},
 			{ "cp",           sufch_windows,      &__fETTable[21]},
+			{ "dec",          sufch_dec,          &__fETTable[22]},
 			/* NULL prefix matches anything so put it last */
 			{   NULL,         sufch_any,          NULL },
 };
@@ -2919,6 +2924,10 @@
 
   RAW_ASCENT  = TSXInternAtom(gdi_display, "RAW_ASCENT", TRUE);
   RAW_DESCENT = TSXInternAtom(gdi_display, "RAW_DESCENT", TRUE);
+
+  if(X11DRV_XRender_Installed)
+    XTextCaps |= TC_VA_ABLE;
+
   return XTextCaps;
 }
 
@@ -3166,10 +3175,16 @@
     LOGFONT16 lf;
     X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
 
+    TRACE("dc=%p, hfont=%04x\n", dc, hfont);
+
     if (!GetObjectW( hfont, sizeof(logfont), &logfont )) return GDI_ERROR;
 
-    /* If we want to use a gdi font, we should check for XRender extension
-       and return FALSE here */
+    TRACE("dc->gdiFont = %p\n", dc->gdiFont);
+
+    if(dc->gdiFont && X11DRV_XRender_Installed) {
+        X11DRV_XRender_SelectFont(dc, hfont);
+	return FALSE;
+    }
 
     EnterCriticalSection( &crtsc_fonts_X11 );