From 9b148f3dcc5e4281bfadd515efd817bcdbf21bc3 Mon Sep 17 00:00:00 2001 From: Junkui Zhang <364772080@qq.com> Date: Wed, 2 Oct 2024 01:32:31 +0800 Subject: [PATCH] Limit the value can be set for font weight (#18594) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #18531 This PR limits the range of values that can be set for `FontWeight`. Since any value less than 1.0 or greater than 999.9 causes Zed to crash on Windows, I’ve restricted `FontWeight` to this range. I could apply this constraint only on Windows, but considering the documentation at https://zed.dev/docs/configuring-zed#buffer-font-weight indicates that `FontWeight` should be between 100 and 900, I thought it might be a good idea to apply this restriction in the settings. Release Notes: - Changed `ui_font_weight` and `buffer_font_weight` settings to require values to be between `100` and `950` (inclusive). --------- Co-authored-by: Marshall Bowers --- crates/theme/src/settings.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/theme/src/settings.rs b/crates/theme/src/settings.rs index 7fa9a870de559b06793f8aa112de0d2ca60d7b24..86383cec8ea07933a98198fb766b264b601a9d25 100644 --- a/crates/theme/src/settings.rs +++ b/crates/theme/src/settings.rs @@ -520,6 +520,10 @@ pub fn reset_ui_font_size(cx: &mut AppContext) { } } +fn clamp_font_weight(weight: f32) -> FontWeight { + FontWeight(weight.clamp(100., 950.)) +} + impl settings::Settings for ThemeSettings { const KEY: Option<&'static str> = None; @@ -579,7 +583,7 @@ impl settings::Settings for ThemeSettings { this.buffer_font.fallbacks = Some(FontFallbacks::from_fonts(value)); } if let Some(value) = value.buffer_font_weight { - this.buffer_font.weight = FontWeight(value); + this.buffer_font.weight = clamp_font_weight(value); } if let Some(value) = value.ui_font_family.clone() { @@ -592,7 +596,7 @@ impl settings::Settings for ThemeSettings { this.ui_font.fallbacks = Some(FontFallbacks::from_fonts(value)); } if let Some(value) = value.ui_font_weight { - this.ui_font.weight = FontWeight(value); + this.ui_font.weight = clamp_font_weight(value); } if let Some(value) = &value.theme {