in src/font.rs [364:396]
fn fulfils(&self, query: &Filter) -> bool {
match *query {
Filter::Family(name) => {
if self.key.family == name {
return true;
}
if self.names.iter().any(|n| n.name == name) {
return true;
}
if self.is_variable() {
use inflections::Inflect;
return self.variation_names.iter().any(|n| {
n.postscript.name == name
|| n.postscript
.name
.replace(&n.sub_family.name, &n.sub_family.name.to_pascal_case())
== name
});
}
false
}
Filter::Italic(i) => self.key.italic.unwrap_or_default() == i,
Filter::Stretch(s) => self.key.stretch.unwrap_or(5) == s,
Filter::Weight(w) => w == 0 || self.key.weight.unwrap_or(400) == w,
Filter::Variations(v) => v.iter().all(|(s, v)| {
self.key
.variations
.iter()
.any(|(ss, sv)| ss == s && v == sv)
}),
}
}