[PATCH 5/5] dwrite/tests: Test that pair kerning affects shaping

Nikolay Sivov nsivov at codeweavers.com
Mon Jul 6 01:06:38 CDT 2015


---

-------------- next part --------------
From a6c2cacc318defee9882a349f9c89f5e7a19a480 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon, 6 Jul 2015 08:45:54 +0300
Subject: [PATCH 5/5] dwrite/tests: Test that pair kerning affects shaping

---
 dlls/dwrite/tests/layout.c | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index 6e55c60..232f127 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -1839,13 +1839,15 @@ if (0) /* crashes on native */
 
 static void test_SetPairKerning(void)
 {
-    static const WCHAR strW[] = {'a','b','c','d',0};
+    static const WCHAR strW[] = {'a','e',0x0300,'d',0}; /* accent grave */
+    DWRITE_CLUSTER_METRICS clusters[4];
     IDWriteTextLayout1 *layout1;
     IDWriteTextFormat *format;
     IDWriteTextLayout *layout;
     DWRITE_TEXT_RANGE range;
     IDWriteFactory *factory;
     BOOL kerning;
+    UINT32 count;
     HRESULT hr;
 
     factory = create_factory();
@@ -1881,9 +1883,22 @@ if (0) { /* crashes on native */
     hr = IDWriteTextLayout1_GetPairKerning(layout1, 0, &kerning, &range);
     ok(hr == S_OK, "got 0x%08x\n", hr);
     ok(!kerning, "got %d\n", kerning);
+    ok(range.length == ~0u, "got %u\n", range.length);
 
+    count = 0;
+    hr = IDWriteTextLayout1_GetClusterMetrics(layout1, clusters, 4, &count);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+todo_wine
+    ok(count == 3, "got %u\n", count);
+if (count == 3) {
+    ok(clusters[0].length == 1, "got %u\n", clusters[0].length);
+    ok(clusters[1].length == 2, "got %u\n", clusters[1].length);
+    ok(clusters[2].length == 1, "got %u\n", clusters[2].length);
+}
+    /* pair kerning flag participates in itemization - combining characters
+       breaks */
     range.startPosition = 0;
-    range.length = 1;
+    range.length = 2;
     hr = IDWriteTextLayout1_SetPairKerning(layout1, 2, range);
     ok(hr == S_OK, "got 0x%08x\n", hr);
 
@@ -1892,6 +1907,15 @@ if (0) { /* crashes on native */
     ok(hr == S_OK, "got 0x%08x\n", hr);
     ok(kerning == TRUE, "got %d\n", kerning);
 
+    count = 0;
+    hr = IDWriteTextLayout1_GetClusterMetrics(layout1, clusters, 4, &count);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    ok(count == 4, "got %u\n", count);
+    ok(clusters[0].length == 1, "got %u\n", clusters[0].length);
+    ok(clusters[1].length == 1, "got %u\n", clusters[1].length);
+    ok(clusters[2].length == 1, "got %u\n", clusters[2].length);
+    ok(clusters[3].length == 1, "got %u\n", clusters[3].length);
+
     IDWriteTextLayout1_Release(layout1);
     IDWriteFactory_Release(factory);
 }
-- 
2.1.4



More information about the wine-patches mailing list