pub struct GlyphCache {
    cache: HashMap<GlyphKey, Glyph, BuildHasherDefault<FnvHasher>>,
    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, BuildHasherDefault<FnvHasher>>

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 ) -> Glyphwhere 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) -> Glyphwhere 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, scale_factor: f64 ) -> 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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.