fn fulfils()

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)
            }),
        }
    }