From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/dwrite/analyzer.c | 42 +++++++++++++++++++++++++++++++++++++- dlls/dwrite/tests/layout.c | 12 ++++------- 2 files changed, 45 insertions(+), 9 deletions(-)
diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c index f93d06a84d9..ccce2c63976 100644 --- a/dlls/dwrite/analyzer.c +++ b/dlls/dwrite/analyzer.c @@ -248,9 +248,49 @@ system_fallback_config[] =
{ "1800-18AF, 11660-1167F", L"Noto Sans Mongolian" },
- { "3000-30FF, 31F0-31FF, 4E00-9FFF", L"Meiryo" }, + /* CJK Symbols and Punctuation - 3000-303F + Hiragana - 3040-309F + Katakana - 30A0-30FF + Katakana Phonetic Ext. - 31F0-31FF */ + + { "3000-30FF, 31F0-31FF", L"Noto Sans CJK SC", L"zh-Hans" }, + { "3000-30FF, 31F0-31FF", L"Noto Sans CJK TC", L"zh-Hant" }, + { "3000-30FF, 31F0-31FF", L"Noto Sans CJK KR", L"ko" }, + { "3000-30FF, 31F0-31FF", L"Noto Sans CJK JP" }, + + /* CJK Unified Ext A - 3400-4DBF + CJK Unified - 4E00-9FFF */ + + { "3400-4DBF, 4E00-9FFF", L"Noto Sans CJK SC", L"zh-Hans" }, + { "3400-4DBF, 4E00-9FFF", L"Noto Sans CJK TC", L"zh-Hant" }, + { "3400-4DBF, 4E00-9FFF", L"Noto Sans CJK KR", L"ko" }, + { "3400-4DBF, 4E00-9FFF", L"Noto Sans CJK JP" }, + + /* CJK Compatibility Ideographs - F900-FAFF */ + + { "F900-FAFF", L"Noto Sans CJK SC", L"zh-Hans" }, + { "F900-FAFF", L"Noto Sans CJK TC", L"zh-Hant" }, + { "F900-FAFF", L"Noto Sans CJK KR", L"ko" }, + { "F900-FAFF", L"Noto Sans CJK JP" }, + + /* Vertical Forms - FE10-FE1F */ + + { "FE10-FE1F", L"Noto Sans CJK SC", L"zh-Hans" }, + { "FE10-FE1F", L"Noto Sans CJK KR", L"ko" }, + { "FE10-FE1F", L"Noto Sans CJK TC" }, + + /* CJK Compatibility Forms - FE30-FE4F + Small Form Variants - FE50-FE6F */ + + { "FE30-FE6F", L"Noto Sans CJK SC", L"zh-Hans" }, + { "FE30-FE6F", L"Noto Sans CJK KR", L"ko" }, + { "FE30-FE6F", L"Noto Sans CJK JP", L"ja" }, + { "FE30-FE6F", L"Noto Sans CJK TC" },
/* Halfwidth and Fullwidth Forms */ + { "FF00-FFEF", L"Noto Sans CJK SC", L"zh-Hans" }, + { "FF00-FFEF", L"Noto Sans CJK TC", L"zh-Hant" }, + { "FF00-FFEF", L"Noto Sans CJK KR", L"ko" }, { "FF00-FFEF", L"Noto Sans CJK JP" }, };
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c index 3b2289b40ce..8d32037315c 100644 --- a/dlls/dwrite/tests/layout.c +++ b/dlls/dwrite/tests/layout.c @@ -4686,14 +4686,12 @@ static void test_MapCharacters(void) hr = IDWriteFontFallback_MapCharacters(fallback, &analysissource, 1, 2, NULL, NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, &mappedlength, &font, &scale); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine - ok(mappedlength == 1, "got %u\n", mappedlength); + ok(mappedlength == 1, "Unexpected length %u.\n", mappedlength); ok(scale == 1.0f, "got %f\n", scale); - todo_wine ok(font != NULL, "got %p\n", font); -if (font) { - IDWriteFont_Release(font); -} + if (font) + IDWriteFont_Release(font); + /* Try with explicit collection, Tahoma will be forced. */ /* 1. Latin part */ g_source = str2W; @@ -4726,7 +4724,6 @@ if (font) { ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(mappedlength == 1, "got %u\n", mappedlength); ok(scale == 1.0f, "got %f\n", scale); - todo_wine ok(font != NULL, "got %p\n", font);
if (font) @@ -4736,7 +4733,6 @@ if (font) { ok(hr == S_OK && exists, "Unexpected hr %#lx, exists %d.\n", hr, exists); hr = IDWriteLocalizedStrings_GetString(strings, 0, buffW, ARRAY_SIZE(buffW)); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); - todo_wine ok(lstrcmpW(buffW, L"Tahoma"), "Unexpected string %s.\n", wine_dbgstr_w(buffW)); IDWriteLocalizedStrings_Release(strings); IDWriteFont_Release(font);