- Revision
- 216440
- Author
- za...@apple.com
- Date
- 2017-05-08 11:38:20 -0700 (Mon, 08 May 2017)
Log Message
Text overlaps on http://www.duden.de/rechtschreibung/Acre
https://bugs.webkit.org/show_bug.cgi?id=171796
<rdar://problem/31036028>
Reviewed by Simon Fraser.
Source/WebCore:
Simple line layout pre-measures space using the primary font,
even if the space glyph requires a fallback font (and even if the string does not have a space in it at all).
When this width gets cached (see WidthCache) we might end up using it later during normal line layout and
it could produce incorrect layout.
This patch removes the space width caching from Simple line layout, since Font already caches it.
Test: fast/text/simple-line-layout-fallback-space-glyph.html
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::createLineRuns):
* rendering/SimpleLineLayoutTextFragmentIterator.cpp:
(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
(WebCore::SimpleLineLayout::TextFragmentIterator::skipToNextPosition):
(WebCore::SimpleLineLayout::TextFragmentIterator::textWidth):
* rendering/SimpleLineLayoutTextFragmentIterator.h:
LayoutTests:
* fast/text/simple-line-layout-fallback-space-glyph-expected.html: Added.
* fast/text/simple-line-layout-fallback-space-glyph.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (216439 => 216440)
--- trunk/LayoutTests/ChangeLog 2017-05-08 18:28:23 UTC (rev 216439)
+++ trunk/LayoutTests/ChangeLog 2017-05-08 18:38:20 UTC (rev 216440)
@@ -1,3 +1,14 @@
+2017-05-08 Zalan Bujtas <za...@apple.com>
+
+ Text overlaps on http://www.duden.de/rechtschreibung/Acre
+ https://bugs.webkit.org/show_bug.cgi?id=171796
+ <rdar://problem/31036028>
+
+ Reviewed by Simon Fraser.
+
+ * fast/text/simple-line-layout-fallback-space-glyph-expected.html: Added.
+ * fast/text/simple-line-layout-fallback-space-glyph.html: Added.
+
2017-05-08 Michael Catanzaro <mcatanz...@igalia.com>
Unreviewed, rolling out r216419.
Added: trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph-expected.html (0 => 216440)
--- trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph-expected.html (rev 0)
+++ trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph-expected.html 2017-05-08 18:38:20 UTC (rev 216440)
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>This tests simple line layout when space glyph needs a fallback font.</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style>
+@font-face{
+ font-family: Icons;
+ src: url("data:application/font-woff;base64,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");
+}
+body {
+ font-family: Icons, sans-serif;
+}
+</style>
+<script>
+if (internal.settings)
+ internals.settings.setSimpleLineLayoutEnabled(false);
+</script>
+</head>
+<body>0
+<div style="display: inline-block;">
+1<b> </b>
+<span>2</span>
+3 <div> 4 5 6 7 8 9 0 1 2 </div></div>
+<div>❞<div>3 4<span>5</span></div></div>
+</body>
+</html>
Added: trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph.html (0 => 216440)
--- trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph.html (rev 0)
+++ trunk/LayoutTests/fast/text/simple-line-layout-fallback-space-glyph.html 2017-05-08 18:38:20 UTC (rev 216440)
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>This tests simple line layout when space glyph needs a fallback font.</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style>
+@font-face{
+ font-family: Icons;
+ src: url("data:application/font-woff;base64,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");
+}
+body {
+ font-family: Icons, sans-serif;
+}
+</style>
+</head>
+<body>0
+<div style="display: inline-block;">
+1<b> </b>
+<span>2</span>
+3 <div> 4 5 6 7 8 9 0 1 2 </div></div>
+<div>❞<div>3 4<span>5</span></div></div>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (216439 => 216440)
--- trunk/Source/WebCore/ChangeLog 2017-05-08 18:28:23 UTC (rev 216439)
+++ trunk/Source/WebCore/ChangeLog 2017-05-08 18:38:20 UTC (rev 216440)
@@ -1,3 +1,27 @@
+2017-05-08 Zalan Bujtas <za...@apple.com>
+
+ Text overlaps on http://www.duden.de/rechtschreibung/Acre
+ https://bugs.webkit.org/show_bug.cgi?id=171796
+ <rdar://problem/31036028>
+
+ Reviewed by Simon Fraser.
+
+ Simple line layout pre-measures space using the primary font,
+ even if the space glyph requires a fallback font (and even if the string does not have a space in it at all).
+ When this width gets cached (see WidthCache) we might end up using it later during normal line layout and
+ it could produce incorrect layout.
+ This patch removes the space width caching from Simple line layout, since Font already caches it.
+
+ Test: fast/text/simple-line-layout-fallback-space-glyph.html
+
+ * rendering/SimpleLineLayout.cpp:
+ (WebCore::SimpleLineLayout::createLineRuns):
+ * rendering/SimpleLineLayoutTextFragmentIterator.cpp:
+ (WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
+ (WebCore::SimpleLineLayout::TextFragmentIterator::skipToNextPosition):
+ (WebCore::SimpleLineLayout::TextFragmentIterator::textWidth):
+ * rendering/SimpleLineLayoutTextFragmentIterator.h:
+
2017-05-08 Chris Dumez <cdu...@apple.com>
Refactor ImageInputType::width() / height() for clarity
Modified: trunk/Source/WebCore/rendering/SimpleLineLayout.cpp (216439 => 216440)
--- trunk/Source/WebCore/rendering/SimpleLineLayout.cpp 2017-05-08 18:28:23 UTC (rev 216439)
+++ trunk/Source/WebCore/rendering/SimpleLineLayout.cpp 2017-05-08 18:38:20 UTC (rev 216440)
@@ -626,7 +626,7 @@
// It does not work properly with non-collapsed leading tabs when font is enlarged.
auto adjustedAvailableWidth = availableWidth - style.hyphenStringWidth;
if (!line.isEmpty())
- adjustedAvailableWidth += style.spaceWidth;
+ adjustedAvailableWidth += style.font.spaceWidth();
if (!enoughWidthForHyphenation(adjustedAvailableWidth, style.font.pixelSize()))
return std::nullopt;
@@ -769,7 +769,7 @@
static bool createLineRuns(LineState& line, const LineState& previousLine, Layout::RunVector& runs, TextFragmentIterator& textFragmentIterator)
{
const auto& style = textFragmentIterator.style();
- line.setCollapedWhitespaceWidth(style.spaceWidth + style.wordSpacing);
+ line.setCollapedWhitespaceWidth(style.font.spaceWidth() + style.wordSpacing);
bool lineCanBeWrapped = style.wrapLines || style.breakFirstWordOnOverflow || style.breakAnyWordOnOverflow;
auto fragment = firstFragment(textFragmentIterator, line, previousLine, runs);
while (fragment.type() != TextFragmentIterator::TextFragment::ContentEnd) {
Modified: trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp (216439 => 216440)
--- trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp 2017-05-08 18:28:23 UTC (rev 216439)
+++ trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp 2017-05-08 18:38:20 UTC (rev 216440)
@@ -45,7 +45,6 @@
, breakFirstWordOnOverflow(breakAnyWordOnOverflow || (style.breakWords() && (wrapLines || preserveNewline)))
, breakNBSP(wrapLines && style.nbspMode() == SPACE)
, keepAllWordsForCJK(style.wordBreak() == KeepAllWordBreak)
- , spaceWidth(useSimplifiedTextMeasuring ? font.widthForSimpleText(StringView(&space, 1)) : font.width(TextRun(StringView(&space, 1))))
, wordSpacing(font.wordSpacing())
, tabWidth(collapseWhitespace ? 0 : style.tabSize())
, shouldHyphenate(style.hyphens() == HyphensAuto && canHyphenate(style.locale()))
@@ -228,7 +227,7 @@
if (measureText)
width = this->textWidth(currentPosition, nextPosition, xPosition);
else if (startPosition < nextPosition)
- width = m_style.spaceWidth + m_style.wordSpacing;
+ width = m_style.font.spaceWidth() + m_style.wordSpacing;
return nextPosition;
}
@@ -259,7 +258,7 @@
width = m_style.font.width(run);
}
if (measureWithEndSpace)
- width -= (m_style.spaceWidth + m_style.wordSpacing);
+ width -= (m_style.font.spaceWidth() + m_style.wordSpacing);
return std::max<float>(0, width);
}
Modified: trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.h (216439 => 216440)
--- trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.h 2017-05-08 18:28:23 UTC (rev 216439)
+++ trunk/Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.h 2017-05-08 18:38:20 UTC (rev 216440)
@@ -115,7 +115,6 @@
bool breakFirstWordOnOverflow;
bool breakNBSP;
bool keepAllWordsForCJK;
- float spaceWidth;
float wordSpacing;
unsigned tabWidth;
bool shouldHyphenate;