use egui::{FontFamily, FontId, TextStyle};
pub fn install_fonts(ctx: &egui::Context) {
install_egui_fonts(ctx);
install_text_styles(ctx);
}
fn install_egui_fonts(ctx: &egui::Context) {
let mut fonts = egui::FontDefinitions::default();
egui_phosphor::add_to_fonts(&mut fonts, egui_phosphor::Variant::Regular);
ctx.set_fonts(fonts);
}
pub fn install_phosphor_variant(ctx: &egui::Context, variant: egui_phosphor::Variant) {
let mut fonts = egui::FontDefinitions::default();
egui_phosphor::add_to_fonts(&mut fonts, variant);
ctx.set_fonts(fonts);
}
fn install_text_styles(ctx: &egui::Context) {
let text_styles: std::collections::BTreeMap<TextStyle, FontId> = [
(
TextStyle::Name("display".into()),
FontId::new(40.0, FontFamily::Proportional),
),
(
TextStyle::Heading,
FontId::new(28.0, FontFamily::Proportional),
),
(
TextStyle::Name("h2".into()),
FontId::new(20.0, FontFamily::Proportional),
),
(
TextStyle::Name("h3".into()),
FontId::new(16.0, FontFamily::Proportional),
),
(
TextStyle::Name("body-lg".into()),
FontId::new(16.0, FontFamily::Proportional),
),
(TextStyle::Body, FontId::new(14.0, FontFamily::Proportional)),
(
TextStyle::Button,
FontId::new(14.0, FontFamily::Proportional),
),
(
TextStyle::Small,
FontId::new(12.0, FontFamily::Proportional),
),
(
TextStyle::Monospace,
FontId::new(13.0, FontFamily::Monospace),
),
]
.into_iter()
.collect();
ctx.all_styles_mut(|style| style.text_styles = text_styles.clone());
}