diff --git a/graphics/x11drv/xfont.c b/graphics/x11drv/xfont.c
index 64b863e19d39f48c4fedd3a8e5ccc8badb810049..ab81a5e221059d0937c5a21c0ff1e48030c5c631 100644
--- a/graphics/x11drv/xfont.c
+++ b/graphics/x11drv/xfont.c
@@ -2601,6 +2601,17 @@ static UINT XFONT_MatchFIList( fontMatch* pfm )
   return score;
 }
 
+/***********************************************************************
+ *	XFONT_is_ansi_charset
+ *
+ *  returns TRUE if the given charset is ANSI_CHARSET.
+ */
+static BOOL XFONT_is_ansi_charset( UINT charset )
+{
+	return ((charset == ANSI_CHARSET) ||
+		(charset == DEFAULT_CHARSET && GetACP() == 1252));
+}
+
 /***********************************************************************
  *          XFONT_MatchDeviceFont
  *
@@ -2619,7 +2630,9 @@ static void XFONT_MatchDeviceFont( fontResource* start, fontMatch* pfm)
 
     pfm->pfi = NULL;
 
-    if( !fm.plf->lfFaceName[0] )
+    /* the following hard-coded font binding assumes 'ANSI_CHARSET'. */
+    if( !fm.plf->lfFaceName[0] &&
+	XFONT_is_ansi_charset(fm.plf->lfCharSet) )
     {
         switch(fm.plf->lfPitchAndFamily & 0xf0)
 	{