Nikolay Sivov : dwrite/tests: Test that pair kerning affects shaping.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jul 6 06:37:36 CDT 2015


Module: wine
Branch: master
Commit: b49f9f609a9882372e2876ac5647a9452bf899d8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b49f9f609a9882372e2876ac5647a9452bf899d8

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Jul  6 09:06:38 2015 +0300

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);
 }




More information about the wine-cvs mailing list