From 2880aa2b023dc6638c20c6cbae160d040b3fb292 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 4 Aug 2015 15:23:11 -0700 Subject: [PATCH] layout: Take borders into account when positioning inline fragments on their baselines. Improves the Rust GitHub page. --- components/layout/fragment.rs | 16 ++++++++++++---- tests/ref/basic.list | 1 + tests/ref/inline_border_baseline_a.html | 7 +++++++ tests/ref/inline_border_baseline_ref.html | 7 +++++++ 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 tests/ref/inline_border_baseline_a.html create mode 100644 tests/ref/inline_border_baseline_ref.html diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 1f7ecce5fe9..c7b29d6212a 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -1818,15 +1818,23 @@ impl Fragment { .computed_block_size(); InlineMetrics { block_size_above_baseline: computed_block_size + - self.border_padding.block_start_end(), - depth_below_baseline: Au(0), - ascent: computed_block_size + self.border_padding.block_start_end(), + self.border_padding.block_start, + depth_below_baseline: self.border_padding.block_end, + ascent: computed_block_size + self.border_padding.block_start, } } SpecificFragmentInfo::ScannedText(ref text_fragment) => { // See CSS 2.1 § 10.8.1. let line_height = self.calculate_line_height(layout_context); - InlineMetrics::from_font_metrics(&text_fragment.run.font_metrics, line_height) + let font_derived_metrics = + InlineMetrics::from_font_metrics(&text_fragment.run.font_metrics, line_height); + InlineMetrics { + block_size_above_baseline: font_derived_metrics.block_size_above_baseline + + self.border_padding.block_start, + depth_below_baseline: font_derived_metrics.depth_below_baseline + + self.border_padding.block_end, + ascent: font_derived_metrics.ascent + self.border_padding.block_start, + } } SpecificFragmentInfo::InlineBlock(ref info) => { // See CSS 2.1 § 10.8.1. diff --git a/tests/ref/basic.list b/tests/ref/basic.list index 76f4786540d..eabd615e31b 100644 --- a/tests/ref/basic.list +++ b/tests/ref/basic.list @@ -157,6 +157,7 @@ experimental == iframe/size_attributes_vertical_writing_mode.html iframe/size_at == inline_block_stacking_context_a.html inline_block_stacking_context_ref.html == inline_block_with_margin_a.html inline_block_with_margin_ref.html # inline_border_a.html inline_border_b.html +== inline_border_baseline_a.html inline_border_baseline_ref.html == inline_element_border_a.html inline_element_border_ref.html == inline_hypothetical_box_a.html inline_hypothetical_box_ref.html == inline_margin_multiple_fragments_a.html inline_margin_multiple_fragments_ref.html diff --git a/tests/ref/inline_border_baseline_a.html b/tests/ref/inline_border_baseline_a.html new file mode 100644 index 00000000000..faddd7cdabc --- /dev/null +++ b/tests/ref/inline_border_baseline_a.html @@ -0,0 +1,7 @@ + +I am very excited! + diff --git a/tests/ref/inline_border_baseline_ref.html b/tests/ref/inline_border_baseline_ref.html new file mode 100644 index 00000000000..d6f24201f53 --- /dev/null +++ b/tests/ref/inline_border_baseline_ref.html @@ -0,0 +1,7 @@ + +I am very excited! +