Improve default font loading

This commit is contained in:
Héctor Ramón Jiménez 2019-11-05 03:57:13 +01:00
parent 40e9a2f6ae
commit 0157121038
2 changed files with 18 additions and 17 deletions

View file

@ -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<u8> {
let font = self
.raw
.select_best_match(
families,
&font_kit::properties::Properties::default(),
)
.expect("Find font");
pub fn load(&self, families: &[Family]) -> Result<Vec<u8>, 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())
}
}
}

View file

@ -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 default_font = font_source
.load(&[font::Family::SansSerif, font::Family::Serif])
.expect("Find sans-serif or serif font");
let glyph_brush = GlyphBrushBuilder::using_fonts_bytes(vec![
sans_serif_font,
mono_font,
])
.build(&mut device, TextureFormat::Bgra8UnormSrgb);
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);