From 0157121038987feb6c2ea3066a21ce25e689888e Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 5 Nov 2019 03:57:13 +0100 Subject: Improve default font loading --- wgpu/src/font.rs | 18 ++++++++---------- wgpu/src/renderer.rs | 19 +++++++++++-------- 2 files changed, 19 insertions(+), 18 deletions(-) (limited to 'wgpu') diff --git a/wgpu/src/font.rs b/wgpu/src/font.rs index 9bba9b22..31df5bf4 100644 --- a/wgpu/src/font.rs +++ b/wgpu/src/font.rs @@ -1,3 +1,4 @@ +pub use font_kit::error::SelectionError as LoadError; pub use font_kit::family_name::FamilyName as Family; pub struct Source { @@ -11,14 +12,11 @@ impl Source { } } - pub fn load(&self, families: &[Family]) -> Vec { - let font = self - .raw - .select_best_match( - families, - &font_kit::properties::Properties::default(), - ) - .expect("Find font"); + pub fn load(&self, families: &[Family]) -> Result, LoadError> { + let font = self.raw.select_best_match( + families, + &font_kit::properties::Properties::default(), + )?; match font { font_kit::handle::Handle::Path { path, .. } => { @@ -28,10 +26,10 @@ impl Source { let mut reader = std::fs::File::open(path).expect("Read font"); let _ = reader.read_to_end(&mut buf); - buf + Ok(buf) } font_kit::handle::Handle::Memory { bytes, .. } => { - bytes.as_ref().clone() + Ok(bytes.as_ref().clone()) } } } diff --git a/wgpu/src/renderer.rs b/wgpu/src/renderer.rs index c167f2bf..060f07a3 100644 --- a/wgpu/src/renderer.rs +++ b/wgpu/src/renderer.rs @@ -64,14 +64,17 @@ impl Renderer { // TODO: Font customization let font_source = font::Source::new(); - let sans_serif_font = font_source.load(&[font::Family::SansSerif]); - let mono_font = font_source.load(&[font::Family::Monospace]); - - let glyph_brush = GlyphBrushBuilder::using_fonts_bytes(vec![ - sans_serif_font, - mono_font, - ]) - .build(&mut device, TextureFormat::Bgra8UnormSrgb); + let default_font = font_source + .load(&[font::Family::SansSerif, font::Family::Serif]) + .expect("Find sans-serif or serif font"); + + let mono_font = font_source + .load(&[font::Family::Monospace]) + .expect("Find monospace font"); + + let glyph_brush = + GlyphBrushBuilder::using_fonts_bytes(vec![default_font, mono_font]) + .build(&mut device, TextureFormat::Bgra8UnormSrgb); let quad_pipeline = quad::Pipeline::new(&mut device); let image_pipeline = crate::image::Pipeline::new(&mut device); -- cgit