Module: wine Branch: master Commit: c683ad72b25443377f612548e3828744df0e64fe URL: http://source.winehq.org/git/wine.git/?a=commit;h=c683ad72b25443377f612548e3...
Author: Akihiro Sagawa sagawa.aki@gmail.com Date: Thu Feb 9 01:32:58 2012 +0900
gdi32/tests: Add tests for East Asian font selection.
---
dlls/gdi32/tests/font.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/dlls/gdi32/tests/font.c b/dlls/gdi32/tests/font.c index 8d30cdb..52a1873 100644 --- a/dlls/gdi32/tests/font.c +++ b/dlls/gdi32/tests/font.c @@ -4166,6 +4166,63 @@ static void test_vertical_font(void) DeleteFile(ttf_name); }
+static INT CALLBACK has_vertical_font_proc(const LOGFONT *lf, const TEXTMETRIC *ntm, + DWORD type, LPARAM lParam) +{ + if (lf->lfFaceName[0] == '@') { + return 0; + } + return 1; +} + +static void test_east_asian_font_selection(void) +{ + HDC hdc; + UINT charset[] = { SHIFTJIS_CHARSET, HANGEUL_CHARSET, JOHAB_CHARSET, + GB2312_CHARSET, CHINESEBIG5_CHARSET }; + size_t i; + + hdc = GetDC(NULL); + + for (i = 0; i < sizeof(charset)/sizeof(charset[0]); i++) + { + LOGFONTA lf; + HFONT hfont; + char face_name[LF_FACESIZE]; + int ret; + + memset(&lf, 0, sizeof lf); + lf.lfFaceName[0] = '\0'; + lf.lfCharSet = charset[i]; + + if (EnumFontFamiliesEx(hdc, &lf, has_vertical_font_proc, 0, 0)) + { + skip("Vertical font for charset %u is not installed\n", charset[i]); + continue; + } + + hfont = CreateFontIndirectA(&lf); + hfont = SelectObject(hdc, hfont); + memset(face_name, 0, sizeof face_name); + ret = GetTextFaceA(hdc, sizeof face_name, face_name); + todo_wine ok(ret && face_name[0] != '@', + "expected non-vertical face for charset %u, got %s\n", charset[i], face_name); + DeleteObject(SelectObject(hdc, hfont)); + + memset(&lf, 0, sizeof lf); + strcpy(lf.lfFaceName, "@"); + lf.lfCharSet = charset[i]; + hfont = CreateFontIndirectA(&lf); + hfont = SelectObject(hdc, hfont); + memset(face_name, 0, sizeof face_name); + ret = GetTextFaceA(hdc, sizeof face_name, face_name); + ok(ret && face_name[0] == '@', + "expected vertical face for charset %u, got %s\n", charset[i], face_name); + DeleteObject(SelectObject(hdc, hfont)); + } + ReleaseDC(NULL, hdc); +} + START_TEST(font) { init(); @@ -4220,6 +4277,7 @@ START_TEST(font) test_fullname();
test_vertical_font(); + test_east_asian_font_selection(); /* CreateScalableFontResource should be last test until RemoveFontResource * is properly implemented. */