diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 65ed14361a8..34e3f296398 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -1770,8 +1770,9 @@ impl Fragment { let font_metrics = text::font_metrics_for_style(layout_context.font_context(), font_style); InlineMetrics::from_block_height(&font_metrics, - block_flow.base.position.size.block + - block_flow.fragment.margin.block_start_end()) + block_flow.base.position.size.block, + block_flow.fragment.margin.block_start, + block_flow.fragment.margin.block_end) } SpecificFragmentInfo::InlineAbsoluteHypothetical(_) => { // Hypothetical boxes take up no space. diff --git a/components/layout/inline.rs b/components/layout/inline.rs index bb4a4354b1a..e429b058b2d 100644 --- a/components/layout/inline.rs +++ b/components/layout/inline.rs @@ -1580,12 +1580,17 @@ impl InlineMetrics { /// Calculates inline metrics from font metrics and line block-size per CSS 2.1 ยง 10.8.1. #[inline] - pub fn from_block_height(font_metrics: &FontMetrics, block_height: Au) -> InlineMetrics { - let leading = block_height - (font_metrics.ascent + font_metrics.descent); + pub fn from_block_height(font_metrics: &FontMetrics, + block_height: Au, + block_start_margin: Au, + block_end_margin: Au) + -> InlineMetrics { + let leading = block_height + block_start_margin + block_end_margin - + (font_metrics.ascent + font_metrics.descent); InlineMetrics { block_size_above_baseline: font_metrics.ascent + leading.scale_by(0.5), depth_below_baseline: font_metrics.descent + leading.scale_by(0.5), - ascent: font_metrics.ascent + leading.scale_by(0.5), + ascent: font_metrics.ascent + leading.scale_by(0.5) - block_start_margin, } } diff --git a/tests/ref/basic.list b/tests/ref/basic.list index da2d103223f..1d322fcaa94 100644 --- a/tests/ref/basic.list +++ b/tests/ref/basic.list @@ -137,6 +137,7 @@ flaky_cpu == append_style_a.html append_style_b.html == incremental_inline_layout_a.html incremental_inline_layout_ref.html != inline_background_a.html inline_background_ref.html == inline_block_baseline_a.html inline_block_baseline_ref.html +== inline_block_block_direction_margins_a.html inline_block_block_direction_margins_ref.html == inline_block_border_a.html inline_block_border_ref.html == inline_block_border_intrinsic_size_a.html inline_block_border_intrinsic_size_ref.html == inline_block_img_a.html inline_block_img_ref.html diff --git a/tests/ref/inline_block_block_direction_margins_a.html b/tests/ref/inline_block_block_direction_margins_a.html new file mode 100644 index 00000000000..382a614bc57 --- /dev/null +++ b/tests/ref/inline_block_block_direction_margins_a.html @@ -0,0 +1,24 @@ + + +
+ + + +