From 55ee727898b3facc67ca2d71484c5efdebc8757c Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Tue, 10 Nov 2026 22:38:49 +0000 Subject: [PATCH] address review: no catalog loading for loaded families when system fallback is off --- crates/fonts/src/fallback.rs | 8 +++++++- crates/fonts/src/fontdb.rs | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/crates/fonts/src/fallback.rs b/crates/fonts/src/fallback.rs index ad7f64c05..6d238df44 100644 --- a/crates/fonts/src/fallback.rs +++ b/crates/fonts/src/fallback.rs @@ -170,7 +170,13 @@ impl FontDb { continue; } if self.is_loaded(fam) || (self.system_fallback_enabled() && self.has_family(fam)) { - let f = self.face(fam, style); + // With system fallback off, only a face that is already loaded: `face` could load more catalog files. + let f = if self.system_fallback_enabled() { + self.face(fam, style) + } else { + let Some(f) = self.find(fam, style) else { continue }; + f + }; if f.family.eq_ignore_ascii_case(fam) && covers_cluster(&f, cluster) { return f; } diff --git a/crates/fonts/src/fontdb.rs b/crates/fonts/src/fontdb.rs index a68b4dca9..55e34134a 100644 --- a/crates/fonts/src/fontdb.rs +++ b/crates/fonts/src/fontdb.rs @@ -1294,7 +1294,7 @@ impl FontDb { Some(f) } - fn find(&self, family: &str, style: &str) -> Option> { + pub(crate) fn find(&self, family: &str, style: &str) -> Option> { if style.contains('{') { { let faces = self.read_faces();