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) {