MCPcopy Create free account
hub / github.com/encounter/objdiff / load_font_family

Function load_font_family

objdiff-gui/src/fonts/mod.rs:22–54  ·  view source on GitHub ↗
(
    source: &font_kit::source::SystemSource,
    name: &str,
)

Source from the content-addressed store, hash-verified

20}
21
22pub fn load_font_family(
23 source: &font_kit::source::SystemSource,
24 name: &str,
25) -> Option<LoadedFontFamily> {
26 let family_handle = source.select_family_by_name(name).ok()?;
27 if family_handle.fonts().is_empty() {
28 log::warn!("No fonts found for family '{name}'");
29 return None;
30 }
31 let handles = family_handle.fonts().to_vec();
32 let mut loaded = Vec::with_capacity(handles.len());
33 for handle in handles.iter() {
34 match font_kit::loaders::default::Font::from_handle(handle) {
35 Ok(font) => loaded.push(font),
36 Err(err) => {
37 log::warn!("Failed to load font '{name}': {err}");
38 return None;
39 }
40 }
41 }
42 let properties = loaded.iter().map(|f| f.properties()).collect::<Vec<_>>();
43 let default_index =
44 find_best_match(&properties, &font_kit::properties::Properties::new()).unwrap_or(0);
45 let font_family_name =
46 loaded.first().map(|f| f.family_name()).unwrap_or_else(|| name.to_string());
47 Some(LoadedFontFamily {
48 family_name: font_family_name,
49 fonts: loaded,
50 handles,
51 // properties,
52 default_index,
53 })
54}
55
56pub fn load_font(handle: &font_kit::handle::Handle) -> Result<LoadedFont> {
57 // let loaded = font_kit::loaders::default::Font::from_handle(handle)?;

Callers 1

load_font_if_neededFunction · 0.85

Calls 2

find_best_matchFunction · 0.85
pushMethod · 0.80

Tested by

no test coverage detected