Nikolay Sivov : dwrite/fallback: Add mappings for some CJK ranges.

Alexandre Julliard julliard at winehq.org
Tue Aug 9 15:19:54 CDT 2022


Module: wine
Branch: master
Commit: 5b46a8a0653ea8545ad2691fea26827d72b26513
URL:    https://gitlab.winehq.org/wine/wine/-/commit/5b46a8a0653ea8545ad2691fea26827d72b26513

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Sat Aug  6 23:11:02 2022 +0300

dwrite/fallback: Add mappings for some CJK ranges.

Signed-off-by: Nikolay Sivov <nsivov at 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);




More information about the wine-cvs mailing list