diff --git a/Libraries/LibWeb/Layout/TreeBuilder.cpp b/Libraries/LibWeb/Layout/TreeBuilder.cpp index d8017ae5cf..68ebe0595e 100644 --- a/Libraries/LibWeb/Layout/TreeBuilder.cpp +++ b/Libraries/LibWeb/Layout/TreeBuilder.cpp @@ -447,7 +447,9 @@ void TreeBuilder::create_first_letter_wrapper_if_needed(DOM::Element& element, B first_letter_slice = make_ref_counted(document, Utf16String::from_utf16(text.utf16_view().substring_view(0, letter_end))); } - auto first_letter_wrapper = make_ref_counted(document, nullptr, *first_letter_style); + auto first_letter_wrapper = DOM::Element::create_layout_node_for_display_type(document, first_letter_style->display(), *first_letter_style, nullptr); + if (!first_letter_wrapper) + return; first_letter_wrapper->set_generated_for(CSS::PseudoElement::FirstLetter, element); first_letter_wrapper->set_children_are_inline(true); first_letter_wrapper->append_child(*first_letter_slice); diff --git a/Tests/LibWeb/Ref/expected/wpt-import/css/css-pseudo/first-letter-and-whitespace-ref.html b/Tests/LibWeb/Ref/expected/wpt-import/css/css-pseudo/first-letter-and-whitespace-ref.html new file mode 100644 index 0000000000..d193306fe4 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/wpt-import/css/css-pseudo/first-letter-and-whitespace-ref.html @@ -0,0 +1,11 @@ + + +CSS Reference File + +

Pass if no space between "A", space between "B".

+
AA
+
AA
+
B B
+
B B
+
AAB B
+
AAB B
diff --git a/Tests/LibWeb/Ref/input/wpt-import/css/css-pseudo/first-letter-and-whitespace.html b/Tests/LibWeb/Ref/input/wpt-import/css/css-pseudo/first-letter-and-whitespace.html new file mode 100644 index 0000000000..b1b5628615 --- /dev/null +++ b/Tests/LibWeb/Ref/input/wpt-import/css/css-pseudo/first-letter-and-whitespace.html @@ -0,0 +1,31 @@ + + +CSS Test: White-spaces around floated ::first-letter + + + + + +

Pass if no space between "A", space between "B".

+
AA
+
A A
+
B B
+
B B
+
AAB B
+
AAB B
+