[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