[PATCH 2/2] usp10: Itemise ZWSP like ZWNJ and ZWJ.

Aric Stewart aric at codeweavers.com
Wed Feb 15 14:39:41 CST 2017


Signed-off-by: Aric Stewart <aric at codeweavers.com>

On 2/13/17 3:57 PM, Henri Verbeet wrote:
> Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
> ---
>  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 2e87d3c..c5cc401 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 221aab4..3595ca2 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;
> 



More information about the wine-patches mailing list