diff -u xlockmore-4.00BETA-/marquee.c xlockmore-4.00BETA/marquee.c
--- xlockmore-4.00BETA-/marquee.c	Thu Jan 30 22:48:57 1997
+++ xlockmore-4.00BETA/marquee.c	Sat Feb  8 10:39:43 1997
@@ -422,13 +422,22 @@
 					mp->x += char_back_char_width(ch);
 					mp->words += 2;
 				} else {
+				    if (*(unsigned char *)ch & 0x80) {
+					XDrawString(display, window, mp->gc,
+					   mp->x, mp->y + mp->ascent, ch, 2);
+					mp->x += 2*char_width[(int) (unsigned char) *ch];
+				    } else {
 					XDrawString(display, window, mp->gc,
 					   mp->x, mp->y + mp->ascent, ch, 1);
 					mp->x += char_width[(int) (unsigned char) *ch];
+				    }
 				}
 				mp->t++;
 		}
-		mp->words++;
+		if (*(unsigned char *)(mp->words) & 0x80)
+		    mp->words += 2;
+		else
+		    mp->words++;
 	}
 }
 
diff -u xlockmore-4.00BETA-/resource.c xlockmore-4.00BETA/resource.c
--- xlockmore-4.00BETA-/resource.c	Thu Jan 30 22:49:02 1997
+++ xlockmore-4.00BETA/resource.c	Sat Feb  8 10:59:58 1997
@@ -134,6 +134,7 @@
 #define DEF_FONT	"-b&h-lucida-medium-r-normal-sans-24-*-*-*-*-*-iso8859-1"
 #endif /* !AIXV3 */
 #endif
+#define DEF_FONTSET     DEF_FONT ## ",-*--24-*"
 #define DEF_MSGFONT     "-adobe-courier-medium-r-*-*-14-*-*-*-m-*-iso8859-1"
 #define DEF_BG		"White"
 #define DEF_FG		"Black"
@@ -407,6 +408,7 @@
 	{"-timeout seconds", "number of seconds before password times out"},
 	{"-font fontname", "font to use for password prompt"},
 	{"-msgfont fontname", "font to use for message"},
+	{"-fontset fontsetname", "fontset to use"},
 	{"-bg color", "background color to use for password prompt"},
 	{"-fg color", "foreground color to use for password prompt"},
 	{"-background color", "background color to use for password prompt"},
@@ -496,6 +498,7 @@
 int         timeout;
 
 char       *fontname;
+char       *fontsetname;
 char       *messagefont;
 char       *background;
 char       *foreground;
@@ -563,6 +566,7 @@
    {(caddr_t *) & lockdelay, "lockdelay", "LockDelay", DEF_LOCKDELAY, t_Int},
 	{(caddr_t *) & timeout, "timeout", "Timeout", DEF_TIMEOUT, t_Int},
 	{(caddr_t *) & fontname, "font", "Font", DEF_FONT, t_String},
+    {(caddr_t *) & fontsetname, "fontset", "Fontset", DEF_FONTSET, t_String},
     {(caddr_t *) & messagefont, "msgfont", "MsgFont", DEF_MSGFONT, t_String},
     {(caddr_t *) & background, "background", "Background", DEF_BG, t_String},
     {(caddr_t *) & foreground, "foreground", "Foreground", DEF_FG, t_String},
diff -u xlockmore-4.00BETA-/xlock.c xlockmore-4.00BETA/xlock.c
--- xlockmore-4.00BETA-/xlock.c	Thu Jan 30 22:49:08 1997
+++ xlockmore-4.00BETA/xlock.c	Sat Feb  8 11:00:21 1997
@@ -238,6 +238,7 @@
 char       *ProgramName;	/* argv[0] */
 perscreen   Scr[MAXSCREENS];
 Display    *dsp = NULL;		/* server display connection */
+XFontSet fontset;
 
 extern char user[PASSLENGTH];
 extern float saturation;
@@ -266,6 +267,7 @@
 extern Bool use3d;
 
 extern char *fontname;
+extern char *fontsetname;
 extern char *messagefont;
 extern char *background;
 extern char *foreground;
@@ -1659,6 +1661,25 @@
 	buffer = NULL;
 }
 
+#define XFSNAME "fixed,-*--14-*"
+static XFontSet
+GetFontSet(Display *disp, char *xfsname)
+{
+  XFontSet fs;
+  char **miss, *def;
+  int n_miss;
+
+  if ((fs = XCreateFontSet(disp, xfsname, &miss, &n_miss, &def)) == NULL) {
+      fprintf(stderr, "%s: WARNING -- Can't get fontset %s, trying '%s'\n",
+	      ProgramName, xfsname, XFSNAME);
+      if ((fs = XCreateFontSet(disp, XFSNAME, &miss, &n_miss, &def)) == NULL)
+	  fprintf(stderr, "%s: ERROR -- Can't get fontset '%s'\n",
+		  ProgramName, XFSNAME);
+  }
+
+  return (fs);
+}
+
 int
 main(int argc, char **argv)
 {
@@ -1668,6 +1689,11 @@
 	char      **msgp;
 	int         tmp;
 
+	if (setlocale(LC_ALL, "") == NULL) {
+	    fprintf(stderr, "Can't set locale\n");
+	    return (1);
+	}
+
 	ProgramName = strrchr(argv[0], '/');
 	if (ProgramName)
 		ProgramName++;
@@ -1682,6 +1708,11 @@
 	SRAND(start_time);	/* random mode needs the seed set. */
 
 	getResources(argc, argv);
+	if (XSupportsLocale() == False) {
+	    fprintf(stderr, "X: Not support locale\n");
+	    return (1);
+	}
+	fontset = GetFontSet(dsp, fontsetname);
 
 	checkResources();
 
diff -u xlockmore-4.00BETA-/xlock.h xlockmore-4.00BETA/xlock.h
--- xlockmore-4.00BETA-/xlock.h	Thu Jan 30 22:49:10 1997
+++ xlockmore-4.00BETA/xlock.h	Sat Feb  8 10:30:20 1997
@@ -33,10 +33,15 @@
  *            for HP-UX 8.0.
  *
  */
+#if defined( __linux__ )
+# define X_LOCALE
+#endif
+
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <X11/Xos.h>
 #include <X11/Xresource.h>
+#include <X11/Xlocale.h>
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -337,4 +342,8 @@
 #define USE_SOUND
 #endif
 
+extern XFontSet fontset;
+#define XTextWidth(f,s,l) XmbTextEscapement(fontset,s,l)
+#define XDrawString(d,w,g,x,y,s,l) XmbDrawString(d,w,fontset,g,x,y,s,l)
+#define XDrawImageString(d,w,g,x,y,s,l) XmbDrawImageString(d,w,fontset,g,x,y,s,l)
 #endif /* __XLOCK_XLOCK_H__ */
