Struct kas_core::text::fonts::Database

source ·
pub struct Database { /* private fields */ }
Expand description

Manages the list of available fonts and font selection

This database exists as a singleton, accessible through the fonts function.

After initialization font loading and alias adjustment is disabled. The reason for this is that font selection uses multiple caches and there is no mechanism for forcing fresh lookups everywhere.

Implementations§

source§

impl Database

source

pub fn db(&self) -> &Database

Access the database

source

pub fn families_upper(&self) -> impl Iterator<Item = &str>

Access the list of discovered font families

All family names are uppercase.

source

pub fn alias_keys(&self) -> impl Iterator<Item = &str>

List all font family alias keys

All family names are uppercase.

source

pub fn aliases_of(&self, family: &str) -> Option<impl Iterator<Item = &str>>

List all aliases for the given family

The family parameter must be upper case (or no matches will be found). All returned family names are uppercase.

source

pub fn font_family_from_alias(&self, family: &str) -> Option<String>

Resolve the substituted font family name for this family

The input must be upper case. The output will be the loaded font’s case. Example: SANS-SERIF

source

pub fn add_aliases<I>( &mut self, family: Cow<'static, str>, aliases: I, mode: AddMode )
where I: Iterator<Item = Cow<'static, str>>,

Add font aliases for family

When searching for family, all aliases will be searched too. Both the family parameter and all aliases are converted to upper case.

This method may only be used before initialization; if used afterwards, only a warning will be issued.

source

pub fn set_load_system_fonts(&mut self, load: bool)

Control whether system fonts will be loaded on initialization

Default value: true

source

pub fn load_font_data(&mut self, data: Vec<u8>)

Loads a font data into the Database.

Will load all font faces in case of a font collection.

This method may only be used before initialization; if used afterwards, only a warning will be issued. By default, system fonts are loaded on initialization.

source

pub fn load_font_file<P>(&mut self, path: P) -> Result<(), Error>
where P: AsRef<Path>,

Loads a font file into the Database.

Will load all font faces in case of a font collection.

This method may only be used before initialization; if used afterwards, only a warning will be issued. By default, system fonts are loaded on initialization.

source

pub fn load_fonts_dir<P>(&mut self, dir: P)
where P: AsRef<Path>,

Loads font files from the selected directory into the Database.

This method will scan directories recursively.

Will load ttf, otf, ttc and otc fonts.

Unlike other load_* methods, this one doesn’t return an error. It will simply skip malformed fonts and will print a warning into the log for each of them.

This method may only be used before initialization; if used afterwards, only a warning will be issued. By default, system fonts are loaded on initialization.

Auto Trait Implementations§

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<S, T> Cast<T> for S
where T: Conv<S>,

source§

fn cast(self) -> T

Cast from Self to T Read more
source§

fn try_cast(self) -> Result<T, Error>

Try converting from Self to T Read more
source§

impl<S, T> CastApprox<T> for S
where T: ConvApprox<S>,

source§

fn try_cast_approx(self) -> Result<T, Error>

Try approximate conversion from Self to T Read more
source§

fn cast_approx(self) -> T

Cast approximately from Self to T Read more
source§

impl<S, T> CastFloat<T> for S
where T: ConvFloat<S>,

source§

fn cast_trunc(self) -> T

Cast to integer, truncating Read more
source§

fn cast_nearest(self) -> T

Cast to the nearest integer Read more
source§

fn cast_floor(self) -> T

Cast the floor to an integer Read more
source§

fn cast_ceil(self) -> T

Cast the ceiling to an integer Read more
source§

fn try_cast_trunc(self) -> Result<T, Error>

Try converting to integer with truncation Read more
source§

fn try_cast_nearest(self) -> Result<T, Error>

Try converting to the nearest integer Read more
source§

fn try_cast_floor(self) -> Result<T, Error>

Try converting the floor to an integer Read more
source§

fn try_cast_ceil(self) -> Result<T, Error>

Try convert the ceiling to an integer Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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

§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more