Index: Source/core/rendering/InlineTextBox.cpp |
diff --git a/Source/core/rendering/InlineTextBox.cpp b/Source/core/rendering/InlineTextBox.cpp |
index dcb093c0379302ef922e0d75d88c12ff06442363..a28b0d4d71c23401efd9c990bf81fd919f4ac800 100644 |
--- a/Source/core/rendering/InlineTextBox.cpp |
+++ b/Source/core/rendering/InlineTextBox.cpp |
@@ -920,7 +920,18 @@ static int computeUnderlineOffset(const TextUnderlinePosition underlinePosition, |
{ |
// Compute the gap between the font and the underline. Use at least one |
// pixel gap, if underline is thick then use a bigger gap. |
- const int gap = std::max<int>(1, ceilf(textDecorationThickness / 2.f)); |
+ int gap = 0; |
+ |
+ // Underline position of zero means draw underline on Baseline Position, |
+ // in Blink we need at least 1-pixel gap to adding following check. |
+ // Positive underline Position means underline should be drawn above baselin e |
+ // and negative value means drawing below baseline, negating the value as in Blink |
+ // downward Y-increases. |
+ |
+ if (fontMetrics.underlinePosition()) |
+ gap = -fontMetrics.underlinePosition(); |
+ else |
+ gap = std::max<int>(1, ceilf(textDecorationThickness / 2.f)); |
// FIXME: We support only horizontal text for now. |
switch (underlinePosition) { |