Commit d575d17e authored by Kent Tamura's avatar Kent Tamura Committed by Commit Bot

RubyNG: Fix empty ruby base behaivor

- If a ruby base box has only zero-width lines, we should not
  allow overhang.

- If a ruby base box didn't provide baseline, the corresponding
  ruby text box should provide it.

These behaviors are compatible with the legacy layout.
This fixes five failing tests.

Bug: 1069817
Change-Id: Ibe42f27cf2a60b07e39f6fb979f177e3d08cb6d3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2230141Reviewed-by: default avatarYoshifumi Inoue <yosin@chromium.org>
Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#775196}
parent 91422196
......@@ -43,9 +43,11 @@ NGAnnotationOverhang GetOverhang(const NGInlineItemResult& item) {
for (const auto& base_child_link :
To<NGPhysicalContainerFragment>(child_fragment)
.PostLayoutChildren()) {
found_line = true;
const LayoutUnit line_inline_size =
NGFragment(writing_mode, *base_child_link).InlineSize();
if (line_inline_size == LayoutUnit())
continue;
found_line = true;
const LayoutUnit start =
base_child_link.offset
.ConvertToLogical(writing_mode, base_style.Direction(),
......
......@@ -2879,6 +2879,11 @@ void NGBlockLayoutAlgorithm::LayoutRubyText(
}
container_builder_.AddResult(*result,
LogicalOffset(LayoutUnit(), ruby_text_top));
// RubyText provides baseline if RubyBase didn't.
// This behavior doesn't make much sense, but it's compatible with the legacy
// layout.
if (!container_builder_.Baseline())
PropagateBaselineFromChild(ruby_text_fragment, ruby_text_top);
}
} // namespace blink
......@@ -3993,17 +3993,12 @@ crbug.com/930297 external/wpt/html/infrastructure/urls/resolving-urls/query-enco
crbug.com/930297 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=workers [ Timeout ]
# RubyNG TODOs
crbug.com/1069817 external/wpt/css/css-ruby/empty-ruby-base-container-abs.html [ Failure ]
crbug.com/1069817 external/wpt/css/css-ruby/empty-ruby-base-container-float.html [ Failure ]
crbug.com/1069817 external/wpt/css/css-ruby/empty-ruby-base-container.html [ Failure ]
crbug.com/1069817 external/wpt/css/css-ruby/line-break-around-ruby-001.html [ Failure ]
crbug.com/1069817 fast/ruby/base-shorter-than-text.html [ Failure ]
crbug.com/1069817 fast/ruby/float-overhang-from-ruby-text.html [ Failure ]
crbug.com/1069817 fast/ruby/line-break-ruby.html [ Failure ]
crbug.com/1069817 fast/ruby/position-after.html [ Failure ]
crbug.com/1069817 fast/ruby/ruby-empty-rt.html [ Failure ]
crbug.com/1069817 fast/ruby/ruby-run-break.html [ Failure ]
crbug.com/1069817 fast/ruby/rubyDOM-remove-text2.html [ Failure ]
crbug.com/1069817 fast/ruby/select-ruby.html [ Failure ]
crbug.com/1069817 [ Linux ] fast/writing-mode/Kusa-Makura-background-canvas.html [ Failure ]
crbug.com/1069817 [ Mac ] fast/writing-mode/Kusa-Makura-background-canvas.html [ Failure ]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment