From 67b6b90158f0e5db92de623b108b03ef4d20af5a Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Sun, 17 Mar 2024 11:25:11 +0100 Subject: [PATCH] fonts: dont panic on load error --- src/gui/font.rs | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/gui/font.rs b/src/gui/font.rs index f1d561b..de47b58 100644 --- a/src/gui/font.rs +++ b/src/gui/font.rs @@ -115,7 +115,7 @@ impl FontCache { let pattern = pattern.font_match(&mut self.fc); - if let Some(path) = pattern.filename() { + for path in pattern.filename().iter() { log::debug!( "Loading font: {} {}pt", pattern.name().unwrap_or(path), @@ -124,12 +124,20 @@ impl FontCache { let font_idx = pattern.face_index().unwrap_or(0); - let face = self - .ft - .new_face(path, font_idx as _) - .expect("Failed to load font face"); - face.set_char_size(size << 6, size << 6, 96, 96) - .expect("Failed to set font size"); + let face = match self.ft.new_face(path, font_idx as _) { + Ok(face) => face, + Err(e) => { + log::warn!("Failed to load font at {}: {:?}", path, e); + break; + } + }; + match face.set_char_size(size << 6, size << 6, 96, 96) { + Ok(_) => {} + Err(e) => { + log::warn!("Failed to set font size: {:?}", e); + break; + } + }; let idx = coll.fonts.len(); for cp in 0..0xFFFF { @@ -156,11 +164,10 @@ impl FontCache { let font = Font { face, glyphs }; coll.fonts.push(font); - idx - } else { - coll.cp_map.insert(cp, 0); - 0 + return idx; } + coll.cp_map.insert(cp, 0); + 0 } fn get_glyph_for_cp(