alacritty::renderer::text::glyph_cache

Struct GlyphCache

source
pub struct GlyphCache {
    cache: HashMap<GlyphKey, Glyph, RandomState>,
    rasterizer: Rasterizer,
    pub font_key: FontKey,
    pub bold_key: FontKey,
    pub italic_key: FontKey,
    pub bold_italic_key: FontKey,
    pub font_size: Size,
    font_offset: Delta<i8>,
    glyph_offset: Delta<i8>,
    metrics: Metrics,
    builtin_box_drawing: bool,
}
Expand description

Naïve glyph cache.

Currently only keyed by char, and thus not possible to hold different representations of the same code point.

Fields§

§cache: HashMap<GlyphKey, Glyph, RandomState>

Cache of buffered glyphs.

§rasterizer: Rasterizer

Rasterizer for loading new glyphs.

§font_key: FontKey

Regular font.

§bold_key: FontKey

Bold font.

§italic_key: FontKey

Italic font.

§bold_italic_key: FontKey

Bold italic font.

§font_size: Size

Font size.

§font_offset: Delta<i8>

Font offset.

§glyph_offset: Delta<i8>

Glyph offset.

§metrics: Metrics

Font metrics.

§builtin_box_drawing: bool

Whether to use the built-in font for box drawing characters.

Implementations§

source§

impl GlyphCache

source

pub fn new(rasterizer: Rasterizer, font: &Font) -> Result<GlyphCache, Error>

source

fn load_glyphs_for_font<L: LoadGlyph>(&mut self, font: FontKey, loader: &mut L)

source

fn compute_font_keys( font: &Font, rasterizer: &mut Rasterizer, ) -> Result<(FontKey, FontKey, FontKey, FontKey), Error>

Computes font keys for (Regular, Bold, Italic, Bold Italic).

source

fn load_regular_font( rasterizer: &mut Rasterizer, description: &FontDesc, size: Size, ) -> Result<FontKey, Error>

source

fn make_desc(desc: &FontDescription, slant: Slant, weight: Weight) -> FontDesc

source

pub fn get<L>( &mut self, glyph_key: GlyphKey, loader: &mut L, show_missing: bool, ) -> Glyph
where L: LoadGlyph + ?Sized,

Get a glyph from the font.

If the glyph has never been loaded before, it will be rasterized and inserted into the cache.

§Errors

This will fail when the glyph could not be rasterized. Usually this is due to the glyph not being present in any font.

source

pub fn load_glyph<L>(&self, loader: &mut L, glyph: RasterizedGlyph) -> Glyph
where L: LoadGlyph + ?Sized,

Load glyph into the atlas.

This will apply all transforms defined for the glyph cache to the rasterized glyph before

source

pub fn reset_glyph_cache<L: LoadGlyph>(&mut self, loader: &mut L)

Reset currently cached data in both GL and the registry to default state.

source

pub fn update_font_size(&mut self, font: &Font) -> Result<(), Error>

Update the inner font size.

NOTE: To reload the renderers’s fonts Self::reset_glyph_cache should be called afterwards.

source

pub fn font_metrics(&self) -> Metrics

source

pub fn load_common_glyphs<L: LoadGlyph>(&mut self, loader: &mut L)

Prefetch glyphs that are almost guaranteed to be loaded anyways.

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<T> Downcast for T
where T: Any,

source§

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

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

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

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

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

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

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

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

impl<T> WithSubscriber for T

source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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