From 84ebb2c29b5f13cd161766d714e4be48a5261139 Mon Sep 17 00:00:00 2001 From: Xiangrong Fang Date: Thu, 4 Dec 2008 13:41:48 +0800 Subject: this patch uses GetACP() to replace ANSI_CHARSET when creating font instance. The purpose is to solve incorrect text rendering for CJK programs. --- dlls/gdi32/freetype.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c index 2894dca..bb10629 100644 --- a/dlls/gdi32/freetype.c +++ b/dlls/gdi32/freetype.c @@ -3373,7 +3373,16 @@ GdiFont *WineEngCreateFontInstance(DC *dc, HFONT hfont) if(!strcmpiW(lf.lfFaceName, SymbolW)) lf.lfCharSet = SYMBOL_CHARSET; - if(!TranslateCharsetInfo((DWORD*)(INT_PTR)lf.lfCharSet, &csi, TCI_SRCCHARSET)) { + if (lf.lfCharSet == ANSI_CHARSET) { + UINT codepage; + codepage = GetACP(); + FIXME("lf.lfCharSet == ANSI_CHARSET, using GetACP (%d)\n", codepage); + if(!TranslateCharsetInfo((DWORD*)(INT_PTR)codepage, &csi, TCI_SRCCODEPAGE)) { + FIXME("OMG. This hack doesn't work. Let's PRAY.\n"); + csi.fs.fsCsb[0] = 0; + } + lf.lfCharSet = csi.ciCharset; + } else if(!TranslateCharsetInfo((DWORD*)(INT_PTR)lf.lfCharSet, &csi, TCI_SRCCHARSET)) { switch(lf.lfCharSet) { case DEFAULT_CHARSET: csi.fs.fsCsb[0] = 0; -- 1.6.0.2