MCPcopy Index your code
hub / github.com/encounter/objdiff / load_font_if_needed

Function load_font_if_needed

objdiff-gui/src/fonts/mod.rs:77–107  ·  view source on GitHub ↗
(
    ctx: &egui::Context,
    source: &font_kit::source::SystemSource,
    font_id: &egui::FontId,
    base_family: egui::FontFamily,
    fonts: &mut egui::FontDefinitions,
)

Source from the content-addressed store, hash-verified

75}
76
77pub fn load_font_if_needed(
78 ctx: &egui::Context,
79 source: &font_kit::source::SystemSource,
80 font_id: &egui::FontId,
81 base_family: egui::FontFamily,
82 fonts: &mut egui::FontDefinitions,
83) -> Result<()> {
84 if fonts.families.contains_key(&font_id.family) {
85 return Ok(());
86 }
87 let family_name = match &font_id.family {
88 egui::FontFamily::Proportional | egui::FontFamily::Monospace => return Ok(()),
89 egui::FontFamily::Name(v) => v,
90 };
91 let family = load_font_family(source, family_name)
92 .with_context(|| format!("Failed to load font family '{family_name}'"))?;
93 let default_fonts = fonts.families.get(&base_family).cloned().unwrap_or_default();
94 // FIXME clean up
95 let default_font_ref = family.fonts.get(family.default_index).unwrap();
96 let default_font = family.handles.get(family.default_index).unwrap();
97 let default_font_data = load_font(default_font)?;
98 log::info!("Loaded font family '{}'", family.family_name);
99 fonts.font_data.insert(default_font_ref.full_name(), Arc::new(default_font_data.font_data));
100 fonts
101 .families
102 .entry(egui::FontFamily::Name(Arc::from(family.family_name)))
103 .or_insert_with(|| default_fonts)
104 .insert(0, default_font_ref.full_name());
105 ctx.set_fonts(fonts.clone());
106 Ok(())
107}

Callers 2

post_updateMethod · 0.85
init_fontsMethod · 0.85

Calls 3

load_font_familyFunction · 0.85
load_fontFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected