From db24483159f8836c080a4552eedbdab690965679 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Wed, 15 Nov 2017 19:01:29 +0900 Subject: [PATCH] improve font charset penalty system --- win32ss/gdi/ntgdi/freetype.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/win32ss/gdi/ntgdi/freetype.c b/win32ss/gdi/ntgdi/freetype.c index 5fb58cf3e4..c8378a951b 100644 --- a/win32ss/gdi/ntgdi/freetype.c +++ b/win32ss/gdi/ntgdi/freetype.c @@ -4037,29 +4037,31 @@ GetFontPenalty(const LOGFONTW * LogFont, Byte = SYMBOL_CHARSET; } } - - if (Byte != TM->tmCharSet) + if (Byte == DEFAULT_CHARSET) { - if (Byte != DEFAULT_CHARSET && Byte != ANSI_CHARSET) + if (UserCharSet != TM->tmCharSet && ANSI_CHARSET != TM->tmCharSet) { /* CharSet Penalty 65000 */ /* Requested charset does not match the candidate's. */ Penalty += 65000; } - else + if (UserCharSet != TM->tmCharSet) { - if (UserCharSet != TM->tmCharSet) - { - /* UNDOCUMENTED */ - Penalty += 100; - if (ANSI_CHARSET != TM->tmCharSet) - { - /* UNDOCUMENTED */ - Penalty += 100; - } - } + /* UNDOCUMENTED */ + Penalty += 100; + } + if (ANSI_CHARSET != TM->tmCharSet) + { + /* UNDOCUMENTED */ + Penalty += 50; } } + if (Byte != DEFAULT_CHARSET && Byte != TM->tmCharSet) + { + /* CharSet Penalty 65000 */ + /* Requested charset does not match the candidate's. */ + Penalty += 65000; + } Byte = LogFont->lfOutPrecision; if (Byte == OUT_DEFAULT_PRECIS) -- 2.14.2