[PATCH] dwrite: Improve strikethrough and underline thickness extraction logic
Nikolay Sivov
nsivov at codeweavers.com
Tue Dec 20 03:37:03 CST 2016
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
This fixes a test failure that shows up on test page:
font.c:1762: Test failed: font L"AR CENA": underlineThickness 71, expected 50
font.c:1762: Test failed: font L"AR DECODE": underlineThickness 71, expected 50
font.c:1762: Test failed: font L"AR DELANEY": underlineThickness 71, expected 50
It's not Vista specific, and happens on Win7 too with the same font;
I think it's safe enough to have this in now.
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 c6662757c4..c8298138b7 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 eb47a059a5..ba9866af27 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);
--
2.11.0
More information about the wine-patches
mailing list