From d00f7315e0cec0c2fe34ba5ab2b55cf5718860dd Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 13 Feb 2017 22:57:14 +0100 Subject: [PATCH] usp10: Itemise ZWSP like ZWNJ and ZWJ. Signed-off-by: Henri Verbeet Signed-off-by: Aric Stewart Signed-off-by: Alexandre Julliard --- dlls/usp10/tests/usp10.c | 2 +- dlls/usp10/usp10.c | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dlls/usp10/tests/usp10.c b/dlls/usp10/tests/usp10.c index 2e87d3c554f..c5cc40148c2 100644 --- a/dlls/usp10/tests/usp10.c +++ b/dlls/usp10/tests/usp10.c @@ -1799,7 +1799,7 @@ static void test_ScriptShape(HDC hdc) chars[1] = c; hr = ScriptItemize(chars, 3, 4, NULL, NULL, items, &nb); ok(hr == S_OK, "%s: [%02x] expected S_OK, got %08x\n", lf.lfFaceName, c, hr); - todo_wine_if(c == 0x200b) ok(nb == test_data[j].item_count, "%s: [%02x] Got unexpected item count %d.\n", + ok(nb == test_data[j].item_count, "%s: [%02x] Got unexpected item count %d.\n", lf.lfFaceName, c, nb); item = &items[test_data[j].item]; diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c index 221aab49a96..3595ca21c22 100644 --- a/dlls/usp10/usp10.c +++ b/dlls/usp10/usp10.c @@ -1363,7 +1363,7 @@ static HRESULT _ItemizeInternal(const WCHAR *pwcInChars, int cInChars, for (i = 0; i < cInChars; i++) { /* Joiners get merged preferencially right */ - if (i > 0 && (pwcInChars[i] == ZWJ || pwcInChars[i] == ZWNJ)) + if (i > 0 && (pwcInChars[i] == ZWJ || pwcInChars[i] == ZWNJ || pwcInChars[i] == ZWSP)) { int j; if (i+1 == cInChars) @@ -1372,7 +1372,8 @@ static HRESULT _ItemizeInternal(const WCHAR *pwcInChars, int cInChars, { for (j = i+1; j < cInChars; j++) { - if (pwcInChars[j] != ZWJ && pwcInChars[j] != ZWNJ && pwcInChars[j] != Numeric_space) + if (pwcInChars[j] != ZWJ && pwcInChars[j] != ZWNJ + && pwcInChars[j] != ZWSP && pwcInChars[j] != Numeric_space) { scripts[i] = scripts[j]; break; @@ -1497,14 +1498,15 @@ static HRESULT _ItemizeInternal(const WCHAR *pwcInChars, int cInChars, } /* Joiners get merged preferencially right */ - if (i > 0 && (pwcInChars[i] == ZWJ || pwcInChars[i] == ZWNJ)) + if (i > 0 && (pwcInChars[i] == ZWJ || pwcInChars[i] == ZWNJ || pwcInChars[i] == ZWSP)) { int j; if (i+1 == cInChars && levels[i-1] == levels[i]) strength[i] = strength[i-1]; else for (j = i+1; j < cInChars && levels[i] == levels[j]; j++) - if (pwcInChars[j] != ZWJ && pwcInChars[j] != ZWNJ && pwcInChars[j] != Numeric_space) + if (pwcInChars[j] != ZWJ && pwcInChars[j] != ZWNJ + && pwcInChars[j] != ZWSP && pwcInChars[j] != Numeric_space) { strength[i] = strength[j]; break; -- 2.11.4.GIT