pub struct Query { /* private fields */ }Expand description
Filter criteria for font search. Built with chained with_* methods.
Every field is optional and defaults to “no constraint.” An empty Query
matches all fonts. As you add criteria, the filter becomes more selective —
all criteria must be satisfied (AND logic).
The query doesn’t touch the filesystem; it only evaluates in-memory
TypgFontFaceMeta structs. This makes it reusable across live search,
cached search, and indexed search without modification.
Implementations§
Source§impl Query
impl Query
Sourcepub fn with_axes(self, axes: Vec<Tag>) -> Self
pub fn with_axes(self, axes: Vec<Tag>) -> Self
Require these variation axes. A font must define all of them.
Example: vec![tag4("wght")?, tag4("wdth")?]
Sourcepub fn with_features(self, features: Vec<Tag>) -> Self
pub fn with_features(self, features: Vec<Tag>) -> Self
Require these OpenType features. The font must list all of them.
Example: vec![tag4("liga")?, tag4("smcp")?]
Sourcepub fn with_scripts(self, scripts: Vec<Tag>) -> Self
pub fn with_scripts(self, scripts: Vec<Tag>) -> Self
Require these script tags. The font must declare support for all.
Example: vec![tag4("latn")?, tag4("cyrl")?]
Sourcepub fn with_tables(self, tables: Vec<Tag>) -> Self
pub fn with_tables(self, tables: Vec<Tag>) -> Self
Require these top-level tables. The font file must contain all.
Example: vec![tag4("GSUB")?, tag4("GPOS")?]
Sourcepub fn with_name_patterns(self, patterns: Vec<Regex>) -> Self
pub fn with_name_patterns(self, patterns: Vec<Regex>) -> Self
Require at least one font name to match at least one regex pattern. Patterns are tested against all name strings (family, full, PostScript, etc.).
Sourcepub fn with_codepoints(self, cps: Vec<char>) -> Self
pub fn with_codepoints(self, cps: Vec<char>) -> Self
Require the font to have glyphs for all of these Unicode codepoints.
Example: vec!['A', 'B', 'ñ']
Sourcepub fn require_variable(self, yes: bool) -> Self
pub fn require_variable(self, yes: bool) -> Self
When true, only variable fonts match. Default: false (both match).
Sourcepub fn with_weight_range(self, range: Option<RangeInclusive<u16>>) -> Self
pub fn with_weight_range(self, range: Option<RangeInclusive<u16>>) -> Self
Require OS/2 weight class within this range. Example: Some(300..=700).
Sourcepub fn with_width_range(self, range: Option<RangeInclusive<u16>>) -> Self
pub fn with_width_range(self, range: Option<RangeInclusive<u16>>) -> Self
Require OS/2 width class within this range. Example: Some(3..=7).
Sourcepub fn with_family_class(self, class: Option<FamilyClassFilter>) -> Self
pub fn with_family_class(self, class: Option<FamilyClassFilter>) -> Self
Require a specific OS/2 family class (and optionally subclass).
Sourcepub fn with_creator_patterns(self, patterns: Vec<Regex>) -> Self
pub fn with_creator_patterns(self, patterns: Vec<Regex>) -> Self
Require at least one creator string to match at least one regex.
Sourcepub fn with_license_patterns(self, patterns: Vec<Regex>) -> Self
pub fn with_license_patterns(self, patterns: Vec<Regex>) -> Self
Require at least one license string to match at least one regex.
Sourcepub fn name_patterns(&self) -> &[Regex]
pub fn name_patterns(&self) -> &[Regex]
The name regex patterns, if any.
Sourcepub fn codepoints(&self) -> &[char]
pub fn codepoints(&self) -> &[char]
The required codepoints, if any.
Sourcepub fn requires_variable(&self) -> bool
pub fn requires_variable(&self) -> bool
Whether only variable fonts are accepted.
Sourcepub fn weight_range(&self) -> Option<&RangeInclusive<u16>>
pub fn weight_range(&self) -> Option<&RangeInclusive<u16>>
The weight class range constraint, if set.
Sourcepub fn width_range(&self) -> Option<&RangeInclusive<u16>>
pub fn width_range(&self) -> Option<&RangeInclusive<u16>>
The width class range constraint, if set.
Sourcepub fn family_class(&self) -> Option<&FamilyClassFilter>
pub fn family_class(&self) -> Option<&FamilyClassFilter>
The family class constraint, if set.
Sourcepub fn creator_patterns(&self) -> &[Regex]
pub fn creator_patterns(&self) -> &[Regex]
The creator/provenance regex patterns, if any.
Sourcepub fn license_patterns(&self) -> &[Regex]
pub fn license_patterns(&self) -> &[Regex]
The license regex patterns, if any.
Sourcepub fn matches(&self, meta: &TypgFontFaceMeta) -> bool
pub fn matches(&self, meta: &TypgFontFaceMeta) -> bool
Test a font’s metadata against every criterion in this query.
Returns true only if all active criteria are satisfied.
Criteria that aren’t set (empty vecs, None ranges) are skipped.
Evaluation order is roughly cheapest-first: boolean checks, then tag set intersections, then numeric ranges, then codepoint coverage, then regex matching (most expensive). Short-circuits on the first failure.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Query
impl RefUnwindSafe for Query
impl Send for Query
impl Sync for Query
impl Unpin for Query
impl UnsafeUnpin for Query
impl UnwindSafe for Query
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more