summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Libraries/LibHTML/Layout/LayoutText.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/Libraries/LibHTML/Layout/LayoutText.cpp b/Libraries/LibHTML/Layout/LayoutText.cpp
index a4739380b9..8850df4891 100644
--- a/Libraries/LibHTML/Layout/LayoutText.cpp
+++ b/Libraries/LibHTML/Layout/LayoutText.cpp
@@ -198,13 +198,16 @@ void LayoutText::split_into_lines(LayoutBlock& container)
for_each_word([&](const Utf8View& view, int start, int length) {
words.append({ Utf8View(view), start, length });
+
});
for (int i = 0; i < words.size(); ++i) {
auto& word = words[i];
int word_width;
- if (isspace(*word.view.begin()))
+ bool is_whitespace = isspace(*word.view.begin());
+
+ if (is_whitespace)
word_width = space_width;
else
word_width = m_font->width(word.view);
@@ -214,7 +217,15 @@ void LayoutText::split_into_lines(LayoutBlock& container)
available_width = container.rect().width();
}
+ if (is_whitespace && line_boxes.last().fragments().is_empty())
+ continue;
+
line_boxes.last().add_fragment(*this, word.start, word.length, word_width, line_height);
available_width -= word_width;
+
+ if (available_width < 0) {
+ line_boxes.append(LineBox());
+ available_width = container.rect().width();
+ }
}
}