Commit 303f8042 authored by Hugh McMaster's avatar Hugh McMaster Committed by Alexandre Julliard

conhost: Set correct face name when the specified font is not available.

conhost.exe currently copies the user-specified face name from the LOGFONT structure. This results in an invalid face name when the specified font is not available. Signed-off-by: 's avatarHugh McMaster <hugh.mcmaster@outlook.com> Signed-off-by: 's avatarJacek Caban <jacek@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent fb0f6b4b
......@@ -678,6 +678,7 @@ static BOOL set_console_font( struct console *console, const LOGFONTW *logfont )
struct font_info *font_info = &console->active->font;
HFONT font, old_font;
TEXTMETRICW tm;
WCHAR face_name[LF_FACESIZE];
CPINFO cpinfo;
HDC dc;
......@@ -703,6 +704,7 @@ static BOOL set_console_font( struct console *console, const LOGFONTW *logfont )
old_font = SelectObject( dc, font );
GetTextMetricsW( dc, &tm );
font_info->face_len = GetTextFaceW( dc, ARRAY_SIZE(face_name), face_name ) - 1;
SelectObject( dc, old_font );
ReleaseDC( console->win, dc );
......@@ -712,9 +714,8 @@ static BOOL set_console_font( struct console *console, const LOGFONTW *logfont )
font_info->weight = tm.tmWeight;
free( font_info->face_name );
font_info->face_len = wcslen( logfont->lfFaceName );
font_info->face_name = malloc( font_info->face_len * sizeof(WCHAR) );
memcpy( font_info->face_name, logfont->lfFaceName, font_info->face_len * sizeof(WCHAR) );
memcpy( font_info->face_name, face_name, font_info->face_len * sizeof(WCHAR) );
/* FIXME: use maximum width for DBCS codepages since some chars take two cells */
if (GetCPInfo( console->output_cp, &cpinfo ) && cpinfo.MaxCharSize == 2)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment