1use std::collections::HashMap;
2
3use dafont::{get_font_name, FcFontCache, FcPattern, PatternMatch};
4
5fn main() {
6 let cache = FcFontCache::build();
7 let fonts = cache.query_all(&FcPattern {
8 monospace: PatternMatch::True,
9 ..Default::default()
10 });
11
12 println!("total fonts: {}", fonts.len());
13
14 let mut font_by_family = HashMap::new();
15 for font in fonts {
16 let Some((family, name)) = get_font_name(font) else {
17 eprintln!("failed to get font name for {}", font.path);
18 continue;
19 };
20
21 font_by_family
22 .entry(family)
23 .or_insert_with(Vec::new)
24 .push(name);
25 }
26
27 let mut families: Vec<_> = font_by_family.keys().collect();
28 families.sort();
29
30 for family in families {
31 println!("{family}");
32
33 let names = &font_by_family[family];
34 for name in names {
35 println!(" {name}");
36 }
37
38 println!();
39 }
40}