use font_loader::system_fonts::{FontProperty, FontPropertyBuilder};
#[derive(Deserialize, Default, Clone)]
#[serde(deny_unknown_fields)]
pub struct Font {
#[serde(default)]
pub family: Option<String>,
#[serde(default)]
pub monospace: bool,
#[serde(default)]
pub italic: bool,
#[serde(default)]
pub oblique: bool,
#[serde(default)]
pub bold: bool,
}
impl Font {
pub fn property(&self) -> FontProperty {
let mut builder = FontPropertyBuilder::new();
if let Some(ref family) = self.family {
builder = builder.family(family);
}
if self.monospace {
builder = builder.monospace();
}
if self.italic {
builder = builder.italic();
}
if self.oblique {
builder = builder.oblique();
}
if self.bold {
builder = builder.bold();
}
builder.build()
}
}