Skip to main content

Query

Struct Query 

Source
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

Source

pub fn new() -> Self

Create an empty query that matches all fonts.

Source

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")?]

Source

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")?]

Source

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")?]

Source

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")?]

Source

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.).

Source

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', 'ñ']

Source

pub fn require_variable(self, yes: bool) -> Self

When true, only variable fonts match. Default: false (both match).

Source

pub fn with_weight_range(self, range: Option<RangeInclusive<u16>>) -> Self

Require OS/2 weight class within this range. Example: Some(300..=700).

Source

pub fn with_width_range(self, range: Option<RangeInclusive<u16>>) -> Self

Require OS/2 width class within this range. Example: Some(3..=7).

Source

pub fn with_family_class(self, class: Option<FamilyClassFilter>) -> Self

Require a specific OS/2 family class (and optionally subclass).

Source

pub fn with_creator_patterns(self, patterns: Vec<Regex>) -> Self

Require at least one creator string to match at least one regex.

Source

pub fn with_license_patterns(self, patterns: Vec<Regex>) -> Self

Require at least one license string to match at least one regex.

Source

pub fn axes(&self) -> &[Tag]

The required axis tags, if any.

Source

pub fn features(&self) -> &[Tag]

The required feature tags, if any.

Source

pub fn scripts(&self) -> &[Tag]

The required script tags, if any.

Source

pub fn tables(&self) -> &[Tag]

The required table tags, if any.

Source

pub fn name_patterns(&self) -> &[Regex]

The name regex patterns, if any.

Source

pub fn codepoints(&self) -> &[char]

The required codepoints, if any.

Source

pub fn requires_variable(&self) -> bool

Whether only variable fonts are accepted.

Source

pub fn weight_range(&self) -> Option<&RangeInclusive<u16>>

The weight class range constraint, if set.

Source

pub fn width_range(&self) -> Option<&RangeInclusive<u16>>

The width class range constraint, if set.

Source

pub fn family_class(&self) -> Option<&FamilyClassFilter>

The family class constraint, if set.

Source

pub fn creator_patterns(&self) -> &[Regex]

The creator/provenance regex patterns, if any.

Source

pub fn license_patterns(&self) -> &[Regex]

The license regex patterns, if any.

Source

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§

Source§

impl Clone for Query

Source§

fn clone(&self) -> Query

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Query

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Query

Source§

fn default() -> Query

Returns the “default value” for a type. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.