Ensure font features are applied to styled text (#44219)
- Replace `gpui::styled::Styled.font_family()` calls with `gpui::styled::Styled.font()` when laying out inline diagnostics and inline blame, to ensure that the font's features are also used, and not just the font feature. - Update both `editor::hover_popover::hover_markdown_style` and `editor::hover_popover::diagnostics_markdown_style` to ensure that both the UI and Buffer font features are used in both markdown and diagnostics popover. Closes #44209 Release Notes: - Fixed font feature application for inline git blame, inline diagnostics, markdown popovers and diagnostics popovers
This commit is contained in:
@@ -2340,7 +2340,7 @@ impl EditorElement {
|
||||
.opacity(0.05))
|
||||
.text_color(severity_to_color(&diagnostic_to_render.severity).color(cx))
|
||||
.text_sm()
|
||||
.font_family(style.text.font().family)
|
||||
.font(style.text.font())
|
||||
.child(diagnostic_to_render.message.clone())
|
||||
.into_any();
|
||||
|
||||
|
||||
@@ -607,13 +607,16 @@ async fn parse_blocks(
|
||||
pub fn hover_markdown_style(window: &Window, cx: &App) -> MarkdownStyle {
|
||||
let settings = ThemeSettings::get_global(cx);
|
||||
let ui_font_family = settings.ui_font.family.clone();
|
||||
let ui_font_features = settings.ui_font.features.clone();
|
||||
let ui_font_fallbacks = settings.ui_font.fallbacks.clone();
|
||||
let buffer_font_family = settings.buffer_font.family.clone();
|
||||
let buffer_font_features = settings.buffer_font.features.clone();
|
||||
let buffer_font_fallbacks = settings.buffer_font.fallbacks.clone();
|
||||
|
||||
let mut base_text_style = window.text_style();
|
||||
base_text_style.refine(&TextStyleRefinement {
|
||||
font_family: Some(ui_font_family),
|
||||
font_features: Some(ui_font_features),
|
||||
font_fallbacks: ui_font_fallbacks,
|
||||
color: Some(cx.theme().colors().editor_foreground),
|
||||
..Default::default()
|
||||
@@ -624,6 +627,7 @@ pub fn hover_markdown_style(window: &Window, cx: &App) -> MarkdownStyle {
|
||||
inline_code: TextStyleRefinement {
|
||||
background_color: Some(cx.theme().colors().background),
|
||||
font_family: Some(buffer_font_family),
|
||||
font_features: Some(buffer_font_features),
|
||||
font_fallbacks: buffer_font_fallbacks,
|
||||
..Default::default()
|
||||
},
|
||||
@@ -657,12 +661,15 @@ pub fn diagnostics_markdown_style(window: &Window, cx: &App) -> MarkdownStyle {
|
||||
let settings = ThemeSettings::get_global(cx);
|
||||
let ui_font_family = settings.ui_font.family.clone();
|
||||
let ui_font_fallbacks = settings.ui_font.fallbacks.clone();
|
||||
let ui_font_features = settings.ui_font.features.clone();
|
||||
let buffer_font_family = settings.buffer_font.family.clone();
|
||||
let buffer_font_features = settings.buffer_font.features.clone();
|
||||
let buffer_font_fallbacks = settings.buffer_font.fallbacks.clone();
|
||||
|
||||
let mut base_text_style = window.text_style();
|
||||
base_text_style.refine(&TextStyleRefinement {
|
||||
font_family: Some(ui_font_family),
|
||||
font_features: Some(ui_font_features),
|
||||
font_fallbacks: ui_font_fallbacks,
|
||||
color: Some(cx.theme().colors().editor_foreground),
|
||||
..Default::default()
|
||||
@@ -673,6 +680,7 @@ pub fn diagnostics_markdown_style(window: &Window, cx: &App) -> MarkdownStyle {
|
||||
inline_code: TextStyleRefinement {
|
||||
background_color: Some(cx.theme().colors().editor_background.opacity(0.5)),
|
||||
font_family: Some(buffer_font_family),
|
||||
font_features: Some(buffer_font_features),
|
||||
font_fallbacks: buffer_font_fallbacks,
|
||||
..Default::default()
|
||||
},
|
||||
|
||||
@@ -148,7 +148,7 @@ impl BlameRenderer for GitBlameRenderer {
|
||||
h_flex()
|
||||
.id("inline-blame")
|
||||
.w_full()
|
||||
.font_family(style.font().family)
|
||||
.font(style.font())
|
||||
.text_color(cx.theme().status().hint)
|
||||
.line_height(style.line_height)
|
||||
.child(Icon::new(IconName::FileGit).color(Color::Hint))
|
||||
|
||||
Reference in New Issue
Block a user