Move DCFuncs ExtTextOut and GetTextExtentPoint to Unicode.
Map a few Unicode chars to the first 0xff in psdrv.
Don't expect x11drv to display Unicode chars yet.

diff --git a/include/gdi.h b/include/gdi.h
index dad6816..c2aace3 100644
--- a/include/gdi.h
+++ b/include/gdi.h
@@ -198,7 +198,7 @@
     INT      (*pExtDeviceMode)(LPSTR,HWND,LPDEVMODEA,LPSTR,LPSTR,LPDEVMODEA,
 			       LPSTR,DWORD); 
     BOOL     (*pExtFloodFill)(DC*,INT,INT,COLORREF,UINT);
-    BOOL     (*pExtTextOut)(DC*,INT,INT,UINT,const RECT*,LPCSTR,UINT,
+    BOOL     (*pExtTextOut)(DC*,INT,INT,UINT,const RECT*,LPCWSTR,UINT,
 			    const INT*);
     BOOL     (*pFillPath)(DC*);
     BOOL     (*pFillRgn)(DC*,HRGN,HBRUSH);
@@ -206,7 +206,7 @@
     BOOL     (*pFrameRgn)(DC*,HRGN,HBRUSH,INT,INT);
     BOOL     (*pGetCharWidth)(DC*,UINT,UINT,LPINT);
     COLORREF (*pGetPixel)(DC*,INT,INT);
-    BOOL     (*pGetTextExtentPoint)(DC*,LPCSTR,INT,LPSIZE);
+    BOOL     (*pGetTextExtentPoint)(DC*,LPCWSTR,INT,LPSIZE);
     BOOL     (*pGetTextMetrics)(DC*,TEXTMETRICA*);
     INT      (*pIntersectClipRect)(DC*,INT,INT,INT,INT);
     BOOL     (*pInvertRgn)(DC*,HRGN);    
diff --git a/include/metafiledrv.h b/include/metafiledrv.h
index 9157909..1502218 100644
--- a/include/metafiledrv.h
+++ b/include/metafiledrv.h
@@ -54,7 +54,7 @@
 extern BOOL MFDRV_ExtFloodFill( DC *dc, INT x, INT y,
 				COLORREF color, UINT fillType );
 extern BOOL MFDRV_ExtTextOut( DC *dc, INT x, INT y,
-			      UINT flags, const RECT *lprect, LPCSTR str,
+			      UINT flags, const RECT *lprect, LPCWSTR str,
 			      UINT count, const INT *lpDx );
 extern BOOL MFDRV_FillPath( DC *dc );
 extern BOOL MFDRV_FillRgn( DC *dc, HRGN hrgn, HBRUSH hbrush );
diff --git a/include/psdrv.h b/include/psdrv.h
index a08b888..46a46ae 100644
--- a/include/psdrv.h
+++ b/include/psdrv.h
@@ -264,6 +264,7 @@
 extern BOOL PSDRV_CopyColor(PSCOLOR *col1, PSCOLOR *col2);
 extern void PSDRV_CreateColor( PSDRV_PDEVICE *physDev, PSCOLOR *pscolor,
 		     COLORREF wincolor );
+extern char PSDRV_UnicodeToANSI(int u);
 
 
 extern INT PSDRV_WriteHeader( DC *dc, LPCSTR title );
@@ -278,7 +279,7 @@
 extern BOOL PSDRV_WriteRRectangle(DC *dc, INT x, INT y, INT width, 
 			INT height);
 extern BOOL PSDRV_WriteSetFont(DC *dc, BOOL UseANSI);
-extern BOOL PSDRV_WriteShow(DC *dc, char *str, INT count);
+extern BOOL PSDRV_WriteShow(DC *dc, LPCWSTR str, INT count);
 extern BOOL PSDRV_WriteReencodeFont(DC *dc);
 extern BOOL PSDRV_WriteSetPen(DC *dc);
 extern BOOL PSDRV_WriteArc(DC *dc, INT x, INT y, INT w, INT h,
@@ -328,11 +329,11 @@
 extern INT PSDRV_Escape( DC *dc, INT nEscape, INT cbInput, 
 			   SEGPTR lpInData, SEGPTR lpOutData );
 extern BOOL PSDRV_ExtTextOut( DC *dc, INT x, INT y, UINT flags,
-				const RECT *lprect, LPCSTR str, UINT count,
+				const RECT *lprect, LPCWSTR str, UINT count,
 				const INT *lpDx );
 extern BOOL PSDRV_GetCharWidth( DC *dc, UINT firstChar, UINT lastChar,
 				  LPINT buffer );
-extern BOOL PSDRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT count,
+extern BOOL PSDRV_GetTextExtentPoint( DC *dc, LPCWSTR str, INT count,
 					LPSIZE size );
 extern BOOL PSDRV_GetTextMetrics( DC *dc, TEXTMETRICA *metrics );
 extern BOOL PSDRV_LineTo( DC *dc, INT x, INT y );
diff --git a/include/ts_xlib.h b/include/ts_xlib.h
index 05b9465..ac414b5 100644
--- a/include/ts_xlib.h
+++ b/include/ts_xlib.h
@@ -69,8 +69,8 @@
 extern int  TSXDrawPoint(Display*, Drawable, GC, int, int);
 extern int  TSXDrawRectangle(Display*, Drawable, GC, int, int, unsigned int, unsigned int);
 extern int  TSXDrawSegments(Display*, Drawable, GC, XSegment*, int);
-extern int  TSXDrawString(Display*, Drawable, GC, int, int, const  char*, int);
-extern int  TSXDrawText(Display*, Drawable, GC, int, int, XTextItem*, int);
+extern int  TSXDrawString16(Display*, Drawable, GC, int, int, const  XChar2b*, int);
+extern int  TSXDrawText16(Display*, Drawable, GC, int, int, XTextItem16*, int);
 extern int  TSXFillArc(Display*, Drawable, GC, int, int, unsigned int, unsigned int, int, int);
 extern int  TSXFillPolygon(Display*, Drawable, GC, XPoint*, int, int, int);
 extern int  TSXFillRectangle(Display*, Drawable, GC, int, int, unsigned int, unsigned int);
@@ -129,8 +129,8 @@
 extern int  TSXStoreColor(Display*, Colormap, XColor*);
 extern int  TSXStoreName(Display*, Window, const  char*);
 extern int  TSXSync(Display*, int);
-extern int  TSXTextExtents(XFontStruct*, const  char*, int, int*, int*, int*, XCharStruct*);
-extern int  TSXTextWidth(XFontStruct*, const  char*, int);
+extern int  TSXTextExtents16(XFontStruct*, const  XChar2b*, int, int*, int*, int*, XCharStruct*);
+extern int  TSXTextWidth16(XFontStruct*, const  XChar2b*, int);
 extern int  TSXUngrabKeyboard(Display*, Time);
 extern int  TSXUngrabPointer(Display*, Time);
 extern int  TSXUngrabServer(Display*);
diff --git a/include/ttydrv.h b/include/ttydrv.h
index 4eef618..cdfa46c 100644
--- a/include/ttydrv.h
+++ b/include/ttydrv.h
@@ -75,11 +75,11 @@
 extern BOOL TTYDRV_DC_Ellipse(struct tagDC *dc, INT left, INT top, INT right, INT bottom);
 extern INT TTYDRV_DC_Escape(struct tagDC *dc, INT nEscape, INT cbInput, SEGPTR lpInData, SEGPTR lpOutData);
 extern BOOL TTYDRV_DC_ExtFloodFill(struct tagDC *dc, INT x, INT y, COLORREF color, UINT fillType);
-extern BOOL TTYDRV_DC_ExtTextOut(struct tagDC *dc, INT x, INT y, UINT flags, const RECT *lpRect, LPCSTR str, UINT count, const INT *lpDx);
+extern BOOL TTYDRV_DC_ExtTextOut(struct tagDC *dc, INT x, INT y, UINT flags, const RECT *lpRect, LPCWSTR str, UINT count, const INT *lpDx);
 extern BOOL TTYDRV_DC_GetCharWidth(struct tagDC *dc, UINT firstChar, UINT lastChar, LPINT buffer);
 extern COLORREF TTYDRV_DC_GetPixel(struct tagDC *dc, INT x, INT y);
 
-extern BOOL TTYDRV_DC_GetTextExtentPoint(struct tagDC *dc, LPCSTR str, INT count, LPSIZE size);
+extern BOOL TTYDRV_DC_GetTextExtentPoint(struct tagDC *dc, LPCWSTR str, INT count, LPSIZE size);
 extern BOOL TTYDRV_DC_GetTextMetrics(struct tagDC *dc, TEXTMETRICA *metrics);
 extern BOOL TTYDRV_DC_LineTo(struct tagDC *dc, INT x, INT y);
 extern HANDLE TTYDRV_DC_LoadOEMResource(WORD resid, WORD type);
diff --git a/include/win16drv.h b/include/win16drv.h
index 8cf53d6..0fb32be 100644
--- a/include/win16drv.h
+++ b/include/win16drv.h
@@ -208,12 +208,12 @@
 extern BOOL WIN16DRV_GetCharWidth( struct tagDC *dc, UINT firstChar, UINT lastChar,
 				   LPINT buffer );
 
-extern BOOL WIN16DRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT count,
+extern BOOL WIN16DRV_GetTextExtentPoint( DC *dc, LPCWSTR str, INT count,
                                            LPSIZE size );
 extern BOOL WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRICA *metrics );
 
 extern BOOL WIN16DRV_ExtTextOut( DC *dc, INT x, INT y, UINT flags,
-                                  const RECT *lprect, LPCSTR str, UINT count,
+                                  const RECT *lprect, LPCWSTR str, UINT count,
                                   const INT *lpDx );
 extern BOOL WIN16DRV_LineTo( DC *dc, INT x, INT y );
 extern BOOL WIN16DRV_MoveToEx(DC *dc,INT x,INT y,LPPOINT pt);
diff --git a/include/x11drv.h b/include/x11drv.h
index a3c9c40..33810ea 100644
--- a/include/x11drv.h
+++ b/include/x11drv.h
@@ -93,7 +93,7 @@
 				      DEVICEFONTENUMPROC dfeproc, LPARAM lp );
 extern BOOL X11DRV_GetCharWidth( struct tagDC *dc, UINT firstChar,
                                    UINT lastChar, LPINT buffer );
-extern BOOL X11DRV_GetTextExtentPoint( struct tagDC *dc, LPCSTR str,
+extern BOOL X11DRV_GetTextExtentPoint( struct tagDC *dc, LPCWSTR str,
                                          INT count, LPSIZE size );
 extern BOOL X11DRV_GetTextMetrics(struct tagDC *dc, TEXTMETRICA *metrics);
 extern BOOL X11DRV_PatBlt( struct tagDC *dc, INT left, INT top,
@@ -139,7 +139,7 @@
 				   COLORREF color, UINT fillType );
 extern BOOL X11DRV_ExtTextOut( struct tagDC *dc, INT x, INT y,
 				 UINT flags, const RECT *lprect,
-				 LPCSTR str, UINT count, const INT *lpDx );
+				 LPCWSTR str, UINT count, const INT *lpDx );
 extern BOOL X11DRV_CreateBitmap( HBITMAP hbitmap );
 extern BOOL X11DRV_DeleteObject( HGDIOBJ handle );
 extern LONG X11DRV_BitmapBits( HBITMAP hbitmap, void *bits, LONG count,