gpui: Add more default font fallbacks (#35086)

Release Notes:

- N/A

---

- Set `.SystemUIFont` as the GPUI default font.
- Add `Arial` to font fallback list.
- Add `Adwaita Sans` to default fallback list for Gnome.
- Move `Ubuntu` font to front of Gnome to make sure Ubuntu System takes
priority over `Ubuntu` font.

Our application get some crash report:

```
panicked at /Users/admin/.cargo/git/checkouts/zed-a70e2ad075855582/f1db3b4/crates/gpui/src/text_system.rs:150:9:
failed to resolve font 'Helvetica' or any of the fallbacks: Zed Plex Mono, Helvetica, Segoe UI, Cantarell, Ubuntu, Noto Sans, DejaVu Sans
```

This change to add `Arial` to fallback list, this font was included in
macOS and Windows.
Ref link (search "Arial"):

> Mac OS X (now known as [macOS](https://en.wikipedia.org/wiki/MacOS))
was the first Mac OS version to include Arial;
> https://en.wikipedia.org/wiki/Arial

- macOS Sequoia: https://support.apple.com/en-us/120414
- Windows 10:
https://learn.microsoft.com/en-us/typography/fonts/windows_10_font_list
- Gnome: https://developer.gnome.org/hig/guidelines/typography.html
This commit is contained in:
Jason Lee
2025-10-15 16:33:26 -07:00
committed by GitHub
parent 43baa5d8b8
commit 83f9f9d9e3
6 changed files with 8 additions and 17 deletions
-1
View File
@@ -374,7 +374,6 @@ impl DataTable {
impl Render for DataTable {
fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
div()
.font_family(".SystemUIFont")
.bg(gpui::white())
.text_sm()
.size_full()
-1
View File
@@ -20,7 +20,6 @@ impl Render for GradientViewer {
let color_space = self.color_space;
div()
.font_family(".SystemUIFont")
.bg(gpui::white())
.size_full()
.p_4()
-2
View File
@@ -47,7 +47,6 @@ impl Render for ImageGallery {
div()
.image_cache(self.image_cache.clone())
.id("main")
.font_family(".SystemUIFont")
.text_color(gpui::black())
.bg(rgb(0xE9E9E9))
.overflow_y_scroll()
@@ -102,7 +101,6 @@ impl Render for ImageGallery {
.child(image_cache(simple_lru_cache("lru-cache", IMAGES_IN_GALLERY)).child(
div()
.id("main")
.font_family(".SystemUIFont")
.bg(rgb(0xE9E9E9))
.text_color(gpui::black())
.overflow_y_scroll()
-1
View File
@@ -328,7 +328,6 @@ impl Render for PaintingViewer {
let dashed = self.dashed;
div()
.font_family(".SystemUIFont")
.bg(gpui::white())
.size_full()
.p_4()
+1 -7
View File
@@ -403,13 +403,7 @@ impl Default for TextStyle {
TextStyle {
color: black(),
// todo(linux) make this configurable or choose better default
font_family: if cfg!(any(target_os = "linux", target_os = "freebsd")) {
"FreeMono".into()
} else if cfg!(target_os = "windows") {
"Segoe UI".into()
} else {
"Helvetica".into()
},
font_family: ".SystemUIFont".into(),
font_features: FontFeatures::default(),
font_fallbacks: None,
font_size: rems(1.).into(),
+7 -5
View File
@@ -75,11 +75,13 @@ impl TextSystem {
font(".ZedMono"),
font(".ZedSans"),
font("Helvetica"),
font("Segoe UI"), // Windows
font("Cantarell"), // Gnome
font("Ubuntu"), // Gnome (Ubuntu)
font("Noto Sans"), // KDE
font("DejaVu Sans")
font("Segoe UI"), // Windows
font("Ubuntu"), // Gnome (Ubuntu)
font("Adwaita Sans"), // Gnome 47
font("Cantarell"), // Gnome
font("Noto Sans"), // KDE
font("DejaVu Sans"),
font("Arial"), // macOS, Windows
],
}
}