Disable ligatures in SSH connection dialogue (#20549)

Conrad Irwin created

Closes #20381

Release Notes:

- Fixed password dialog for remote server showing ligatures

Change summary

crates/gpui/src/text_system/font_features.rs  | 5 +++++
crates/recent_projects/src/ssh_connections.rs | 5 +++--
2 files changed, 8 insertions(+), 2 deletions(-)

Detailed changes

crates/gpui/src/text_system/font_features.rs 🔗

@@ -7,6 +7,11 @@ use schemars::schema::{InstanceType, SchemaObject};
 pub struct FontFeatures(pub Arc<Vec<(String, u32)>>);
 
 impl FontFeatures {
+    /// Disables `calt`.
+    pub fn disable_ligatures() -> Self {
+        Self(Arc::new(vec![("calt".into(), 0)]))
+    }
+
     /// Get the tag name list of the font OpenType features
     /// only enabled or disabled features are returned
     pub fn tag_value_list(&self) -> &[(String, u32)] {

crates/recent_projects/src/ssh_connections.rs 🔗

@@ -7,8 +7,8 @@ use editor::Editor;
 use futures::channel::oneshot;
 use gpui::{
     percentage, Animation, AnimationExt, AnyWindowHandle, AsyncAppContext, DismissEvent,
-    EventEmitter, FocusableView, ParentElement as _, PromptLevel, Render, SemanticVersion,
-    SharedString, Task, TextStyleRefinement, Transformation, View, WeakView,
+    EventEmitter, FocusableView, FontFeatures, ParentElement as _, PromptLevel, Render,
+    SemanticVersion, SharedString, Task, TextStyleRefinement, Transformation, View, WeakView,
 };
 use gpui::{AppContext, Model};
 
@@ -178,6 +178,7 @@ impl SshPrompt {
         let mut text_style = cx.text_style();
         let refinement = TextStyleRefinement {
             font_family: Some(theme.buffer_font.family.clone()),
+            font_features: Some(FontFeatures::disable_ligatures()),
             font_size: Some(theme.buffer_font_size.into()),
             color: Some(cx.theme().colors().editor_foreground),
             background_color: Some(gpui::transparent_black()),