diff --git a/components/layout_2020/display_list/mod.rs b/components/layout_2020/display_list/mod.rs index 30ff68e3e1a..49d6f4f1643 100644 --- a/components/layout_2020/display_list/mod.rs +++ b/components/layout_2020/display_list/mod.rs @@ -140,16 +140,14 @@ impl Fragment { let mut rect = rect; rect.origin.y = rect.origin.y + font_metrics.ascent - font_metrics.underline_offset; rect.size.height = font_metrics.underline_size; - let rect = rect.to_webrender(); - let wavy_line_thickness = (0.33 * rect.size.height).ceil(); - builder.wr.push_line( - &common, - &rect, - wavy_line_thickness, - wr::LineOrientation::Horizontal, - &rgba(color), - wr::LineStyle::Solid, - ); + self.build_display_list_for_text_decoration(builder, &rect, color); + } + + // Overline. + if text_decorations.overline { + let mut rect = rect; + rect.size.height = font_metrics.underline_size; + self.build_display_list_for_text_decoration(builder, &rect, color); } // Text. @@ -162,6 +160,24 @@ impl Fragment { None, ); } + + fn build_display_list_for_text_decoration( + &self, + builder: &mut DisplayListBuilder, + rect: &PhysicalRect, + color: cssparser::RGBA, + ) { + let rect = rect.to_webrender(); + let wavy_line_thickness = (0.33 * rect.size.height).ceil(); + builder.wr.push_line( + &builder.common_properties(rect), + &rect, + wavy_line_thickness, + wr::LineOrientation::Horizontal, + &rgba(color), + wr::LineStyle::Solid, + ); + } } struct BuilderForBoxFragment<'a> {