Nikolay Sivov : dwrite: Improve strikethrough and underline thickness extraction logic.

Alexandre Julliard julliard at winehq.org
Tue Dec 20 16:23:24 CST 2016


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Dec 20 12:37:03 2016 +0300

dwrite: Improve strikethrough and underline thickness extraction logic.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dwrite/opentype.c   | 13 +++----------
 dlls/dwrite/tests/font.c | 12 +++---------
 2 files changed, 6 insertions(+), 19 deletions(-)

diff --git a/dlls/dwrite/opentype.c b/dlls/dwrite/opentype.c
index c666275..c829813 100644
--- a/dlls/dwrite/opentype.c
+++ b/dlls/dwrite/opentype.c
@@ -1243,17 +1243,10 @@ void opentype_get_font_metrics(struct file_stream_desc *stream_desc, DWRITE_FONT
         metrics->underlineThickness = GET_BE_WORD(tt_post->underlineThickness);
     }
 
-    /* use any of thickness values if another one is zero, if both are zero use estimate */
-    if (metrics->strikethroughThickness || metrics->underlineThickness) {
-        if (!metrics->strikethroughThickness)
-            metrics->strikethroughThickness = metrics->underlineThickness;
-        if (!metrics->underlineThickness)
-            metrics->underlineThickness = metrics->strikethroughThickness;
-    }
-    else {
-        metrics->strikethroughThickness = metrics->designUnitsPerEm / 14;
+    if (metrics->underlineThickness == 0)
         metrics->underlineThickness = metrics->designUnitsPerEm / 14;
-    }
+    if (metrics->strikethroughThickness == 0)
+        metrics->strikethroughThickness = metrics->underlineThickness;
 
     /* estimate missing metrics */
     if (metrics->xHeight == 0)
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index eb47a05..ba9866a 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -1725,16 +1725,10 @@ static void get_expected_font_metrics(IDWriteFontFace *fontface, DWRITE_FONT_MET
         metrics->underlineThickness = GET_BE_WORD(tt_post->underlineThickness);
     }
 
-    if (metrics->strikethroughThickness || metrics->underlineThickness) {
-        if (!metrics->strikethroughThickness)
-            metrics->strikethroughThickness = metrics->underlineThickness;
-        if (!metrics->underlineThickness)
-            metrics->underlineThickness = metrics->strikethroughThickness;
-    }
-    else {
-        metrics->strikethroughThickness = metrics->designUnitsPerEm / 14;
+    if (metrics->underlineThickness == 0)
         metrics->underlineThickness = metrics->designUnitsPerEm / 14;
-    }
+    if (metrics->strikethroughThickness == 0)
+        metrics->strikethroughThickness = metrics->underlineThickness;
 
     if (tt_os2)
         IDWriteFontFace_ReleaseFontTable(fontface, os2_context);




More information about the wine-cvs mailing list