diff --git a/crates/markdown/src/markdown.rs b/crates/markdown/src/markdown.rs index 560ee02b8cf7b4210c3bf4013f58fff670144700..c2d8e45f16ea6f8dbe788cffae00a0bf7fc2b640 100644 --- a/crates/markdown/src/markdown.rs +++ b/crates/markdown/src/markdown.rs @@ -157,32 +157,6 @@ impl MarkdownStyle { rule_color: colors.border, block_quote_border_color: colors.border, code_block_overflow_x_scroll: true, - heading_level_styles: Some(HeadingLevelStyles { - h1: Some(TextStyleRefinement { - font_size: Some(rems(1.15).into()), - ..Default::default() - }), - h2: Some(TextStyleRefinement { - font_size: Some(rems(1.1).into()), - ..Default::default() - }), - h3: Some(TextStyleRefinement { - font_size: Some(rems(1.05).into()), - ..Default::default() - }), - h4: Some(TextStyleRefinement { - font_size: Some(rems(1.).into()), - ..Default::default() - }), - h5: Some(TextStyleRefinement { - font_size: Some(rems(0.95).into()), - ..Default::default() - }), - h6: Some(TextStyleRefinement { - font_size: Some(rems(0.875).into()), - ..Default::default() - }), - }), code_block: StyleRefinement { padding: EdgesRefinement { top: Some(DefiniteLength::Absolute(AbsoluteLength::Pixels(px(8.)))), @@ -1124,7 +1098,7 @@ impl MarkdownElement { text_align_override: Option, ) { let align = text_align_override.unwrap_or(self.style.base_text_style.text_align); - let mut heading = div().mb_2(); + let mut heading = div().mt_4().mb_2(); heading = apply_heading_style(heading, level, self.style.heading_level_styles.as_ref()); heading = match align { @@ -3650,4 +3624,33 @@ mod tests { } } } + + #[gpui::test] + fn test_heading_font_sizes_are_distinct(cx: &mut TestAppContext) { + let rendered = render_markdown("# H1\n\n## H2\n\n### H3\n\nBody text", cx); + + assert!( + rendered.lines.len() >= 4, + "expected at least 4 rendered lines, got {}", + rendered.lines.len() + ); + + let h1_line_height = rendered.lines[0].layout.line_height(); + let h2_line_height = rendered.lines[1].layout.line_height(); + let h3_line_height = rendered.lines[2].layout.line_height(); + let body_line_height = rendered.lines[3].layout.line_height(); + + assert!( + h1_line_height > h2_line_height, + "H1 line height ({h1_line_height:?}) should be greater than H2 ({h2_line_height:?})" + ); + assert!( + h2_line_height > h3_line_height, + "H2 line height ({h2_line_height:?}) should be greater than H3 ({h3_line_height:?})" + ); + assert!( + h3_line_height > body_line_height, + "H3 line height ({h3_line_height:?}) should be greater than body text ({body_line_height:?})" + ); + } }