Module: wine Branch: master Commit: 6e356742e3a7758182b722b73dcf432573ebc4d8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6e356742e3a7758182b722b73d...
Author: Nikolay Sivov nsivov@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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);