gdi32: CLIP_DFA_DISABLE should disable the font association mechanism.
This commit is contained in:
parent
2de2e10d47
commit
80a29e2d31
@ -653,12 +653,15 @@ static DWORD get_associated_charset_info(void)
|
|||||||
return associated_charset;
|
return associated_charset;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_font_code_page( DC *dc )
|
static void update_font_code_page( DC *dc, HANDLE font )
|
||||||
{
|
{
|
||||||
CHARSETINFO csi;
|
CHARSETINFO csi;
|
||||||
int charset = GetTextCharsetInfo( dc->hSelf, NULL, 0 );
|
int charset = GetTextCharsetInfo( dc->hSelf, NULL, 0 );
|
||||||
|
LOGFONTW lf;
|
||||||
|
|
||||||
if (charset == ANSI_CHARSET &&
|
GetObjectW( font, sizeof(lf), &lf );
|
||||||
|
|
||||||
|
if (charset == ANSI_CHARSET && !(lf.lfClipPrecision & CLIP_DFA_DISABLE) &&
|
||||||
get_associated_charset_info() & ASSOC_CHARSET_ANSI)
|
get_associated_charset_info() & ASSOC_CHARSET_ANSI)
|
||||||
charset = DEFAULT_CHARSET;
|
charset = DEFAULT_CHARSET;
|
||||||
|
|
||||||
@ -725,7 +728,7 @@ static HGDIOBJ FONT_SelectObject( HGDIOBJ handle, HDC hdc )
|
|||||||
ret = dc->hFont;
|
ret = dc->hFont;
|
||||||
dc->hFont = handle;
|
dc->hFont = handle;
|
||||||
dc->aa_flags = aa_flags ? aa_flags : GGO_BITMAP;
|
dc->aa_flags = aa_flags ? aa_flags : GGO_BITMAP;
|
||||||
update_font_code_page( dc );
|
update_font_code_page( dc, handle );
|
||||||
GDI_dec_ref_count( ret );
|
GDI_dec_ref_count( ret );
|
||||||
}
|
}
|
||||||
else GDI_dec_ref_count( handle );
|
else GDI_dec_ref_count( handle );
|
||||||
|
@ -2570,6 +2570,22 @@ static void test_GdiGetCodePage(void)
|
|||||||
|
|
||||||
hfont = SelectObject(hdc, hfont);
|
hfont = SelectObject(hdc, hfont);
|
||||||
DeleteObject(hfont);
|
DeleteObject(hfont);
|
||||||
|
|
||||||
|
/* CLIP_DFA_DISABLE turns off the font association */
|
||||||
|
lf.lfClipPrecision = CLIP_DFA_DISABLE;
|
||||||
|
hfont = CreateFontIndirectA(&lf);
|
||||||
|
ok(hfont != 0, "CreateFontIndirectA error %u\n", GetLastError());
|
||||||
|
|
||||||
|
hfont = SelectObject(hdc, hfont);
|
||||||
|
charset = GetTextCharset(hdc);
|
||||||
|
codepage = pGdiGetCodePage(hdc);
|
||||||
|
trace("acp=%d, lfFaceName=%s, lfCharSet=%d, GetTextCharset=%d, GdiGetCodePage=%d\n",
|
||||||
|
acp, lf.lfFaceName, lf.lfCharSet, charset, codepage);
|
||||||
|
ok(codepage == 1252, "GdiGetCodePage returned %d\n", codepage);
|
||||||
|
|
||||||
|
hfont = SelectObject(hdc, hfont);
|
||||||
|
DeleteObject(hfont);
|
||||||
|
|
||||||
ReleaseDC(NULL, hdc);
|
ReleaseDC(NULL, hdc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user