Changeset 239357 in webkit
- Timestamp:
- Dec 18, 2018 3:38:54 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r239351 r239357 1 2018-12-18 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Thick overlines and line-throughs grow in the wrong direction 4 https://bugs.webkit.org/show_bug.cgi?id=192264 5 6 Reviewed by Dean Jackson. 7 8 I can't figure out a way to test the line-through, so this just tests the overline. 9 10 * fast/css3-text/css3-text-decoration/text-decoration-thicknes-overline-grow-direction-expected.html: Added. 11 * fast/css3-text/css3-text-decoration/text-decoration-thicknes-overline-grow-direction.html: Added. 12 1 13 2018-12-18 Justin Fan <justin_fan@apple.com> 2 14 -
trunk/Source/WebCore/ChangeLog
r239353 r239357 1 2018-12-18 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Thick overlines and line-throughs grow in the wrong direction 4 https://bugs.webkit.org/show_bug.cgi?id=192264 5 6 Reviewed by Dean Jackson. 7 8 Overlines should grow upward, and line-throughs should stay centered. 9 10 Test: fast/css3-text/css3-text-decoration/text-decoration-thicknes-overline-grow-direction.html 11 12 * rendering/TextDecorationPainter.cpp: 13 (WebCore::TextDecorationPainter::paintTextDecoration): 14 * style/InlineTextBoxStyle.cpp: 15 (WebCore::visualOverflowForDecorations): 16 1 17 2018-12-18 Ryosuke Niwa <rniwa@webkit.org> 2 18 -
trunk/Source/WebCore/rendering/TextDecorationPainter.cpp
r238860 r239357 297 297 float wavyOffset = m_styles.overlineStyle == TextDecorationStyle::Wavy ? m_wavyOffset : 0; 298 298 FloatRect rect(localOrigin, FloatSize(m_width, textDecorationThickness)); 299 rect.move(0, -wavyOffset); 299 float autoTextDecorationThickness = TextDecorationThickness::createWithAuto().resolve(m_lineStyle.computedFontSize(), fontMetrics); 300 rect.move(0, autoTextDecorationThickness - textDecorationThickness - wavyOffset); 300 301 paintDecoration(TextDecoration::Overline, m_styles.overlineStyle, m_styles.overlineColor, rect); 301 302 } 302 303 if (m_decorations.contains(TextDecoration::LineThrough)) { 303 304 FloatRect rect(localOrigin, FloatSize(m_width, textDecorationThickness)); 304 rect.move(0, 2 * fontMetrics.floatAscent() / 3); 305 float autoTextDecorationThickness = TextDecorationThickness::createWithAuto().resolve(m_lineStyle.computedFontSize(), fontMetrics); 306 auto center = 2 * fontMetrics.floatAscent() / 3 + autoTextDecorationThickness / 2; 307 rect.move(0, center - textDecorationThickness / 2); 305 308 paintDecoration(TextDecoration::LineThrough, m_styles.linethroughStyle, m_styles.linethroughColor, rect); 306 309 } -
trunk/Source/WebCore/style/InlineTextBoxStyle.cpp
r238860 r239357 126 126 127 127 // These metrics must match where underlines get drawn. 128 // FIXME: Share the code in TextDecorationPainter::paintTextDecoration() so we can just query it for the painted geometry. 128 129 if (decoration & TextDecoration::Underline) { 129 130 // Compensate for the integral ceiling in GraphicsContext::computeLineBoundsAndAntialiasingModeForText() … … 141 142 } 142 143 if (decoration & TextDecoration::Overline) { 144 FloatRect rect(FloatPoint(), FloatSize(1, strokeThickness)); 145 float autoTextDecorationThickness = TextDecorationThickness::createWithAuto().resolve(lineStyle.computedFontSize(), lineStyle.fontMetrics()); 146 rect.move(0, autoTextDecorationThickness - strokeThickness - wavyOffset); 143 147 if (decorationStyle == TextDecorationStyle::Wavy) { 144 extendIntToFloat(overflowResult.bottom, -wavyOffset + wavyStrokeParameters.controlPointDistance + strokeThickness - height); 145 extendIntToFloat(overflowResult.top, wavyOffset + wavyStrokeParameters.controlPointDistance + strokeThickness); 146 } else { 147 extendIntToFloat(overflowResult.bottom, strokeThickness - height); 148 // top is untouched 148 FloatBoxExtent wavyExpansion; 149 wavyExpansion.setTop(wavyStrokeParameters.controlPointDistance); 150 wavyExpansion.setBottom(wavyStrokeParameters.controlPointDistance); 151 rect.expand(wavyExpansion); 149 152 } 153 extendIntToFloat(overflowResult.top, -rect.y()); 154 extendIntToFloat(overflowResult.bottom, rect.maxY() - height); 150 155 } 151 156 if (decoration & TextDecoration::LineThrough) { 152 float baseline = lineStyle.fontMetrics().floatAscent(); 157 FloatRect rect(FloatPoint(), FloatSize(1, strokeThickness)); 158 float autoTextDecorationThickness = TextDecorationThickness::createWithAuto().resolve(lineStyle.computedFontSize(), lineStyle.fontMetrics()); 159 auto center = 2 * lineStyle.fontMetrics().floatAscent() / 3 + autoTextDecorationThickness / 2; 160 rect.move(0, center - strokeThickness / 2); 153 161 if (decorationStyle == TextDecorationStyle::Wavy) { 154 extendIntToFloat(overflowResult.bottom, 2 * baseline / 3 + wavyStrokeParameters.controlPointDistance + strokeThickness - height); 155 extendIntToFloat(overflowResult.top, -(2 * baseline / 3 - wavyStrokeParameters.controlPointDistance - strokeThickness)); 156 } else { 157 extendIntToFloat(overflowResult.bottom, 2 * baseline / 3 + strokeThickness - height); 158 extendIntToFloat(overflowResult.top, -(2 * baseline / 3)); 162 FloatBoxExtent wavyExpansion; 163 wavyExpansion.setTop(wavyStrokeParameters.controlPointDistance); 164 wavyExpansion.setBottom(wavyStrokeParameters.controlPointDistance); 165 rect.expand(wavyExpansion); 159 166 } 167 extendIntToFloat(overflowResult.top, -rect.y()); 168 extendIntToFloat(overflowResult.bottom, rect.maxY() - height); 160 169 } 161 170 return overflowResult;
Note: See TracChangeset
for help on using the changeset viewer.