pub struct DynamicGlyphCache {
pub config: GlyphCacheConfig,
pub atlas_image: Handle<Image>,
/* private fields */
}Expand description
Global dynamic glyph cache resource.
Rasterizes glyphs on demand using fontdue and packs them into a single
atlas texture using etagere.
Fields§
§config: GlyphCacheConfig§atlas_image: Handle<Image>Implementations§
Source§impl DynamicGlyphCache
impl DynamicGlyphCache
pub fn new(config: GlyphCacheConfig, images: &mut Assets<Image>) -> Self
Sourcepub fn add_font(&mut self, id: FontId, data: &[u8]) -> Result<(), String>
pub fn add_font(&mut self, id: FontId, data: &[u8]) -> Result<(), String>
Register a font from raw bytes.
Sourcepub fn get_or_insert(
&mut self,
key: &GlyphKey,
images: &mut Assets<Image>,
) -> Option<&GlyphInfo>
pub fn get_or_insert( &mut self, key: &GlyphKey, images: &mut Assets<Image>, ) -> Option<&GlyphInfo>
Get a cached glyph, or rasterize and cache it on demand.
Returns None if the font is not loaded or the atlas is full.
Sourcepub fn clear(&mut self, images: &mut Assets<Image>)
pub fn clear(&mut self, images: &mut Assets<Image>)
Clear the entire cache and reset the allocator. Call this on scene transitions to reclaim atlas space.
pub fn has_font(&self, id: &FontId) -> bool
Sourcepub fn glyph_map_get(&self, key: &GlyphKey) -> Option<&GlyphInfo>
pub fn glyph_map_get(&self, key: &GlyphKey) -> Option<&GlyphInfo>
Read-only access to glyph cache (for systems that don’t rasterize).
Sourcepub fn glyph_metrics(
&self,
font_id: &FontId,
character: char,
size_px: u32,
) -> (u32, u32, f32, f32)
pub fn glyph_metrics( &self, font_id: &FontId, character: char, size_px: u32, ) -> (u32, u32, f32, f32)
Get font metrics (width, height, x_offset, y_offset) for a character. Works without rasterization — just queries fontdue for metrics.
pub fn atlas_size(&self) -> UVec2
Sourcepub fn is_dirty(&self) -> bool
pub fn is_dirty(&self) -> bool
Check if atlas was modified since last call to acknowledge_dirty.
pub fn acknowledge_dirty(&mut self)
Sourcepub fn horizontal_advance(
&self,
font_id: &FontId,
character: char,
size_px: u32,
) -> f32
pub fn horizontal_advance( &self, font_id: &FontId, character: char, size_px: u32, ) -> f32
Get horizontal advance for a character (in pixels at given size).
Sourcepub fn line_metrics(
&self,
font_id: &FontId,
size_px: u32,
) -> Option<LineMetrics>
pub fn line_metrics( &self, font_id: &FontId, size_px: u32, ) -> Option<LineMetrics>
Get line metrics for a font at a given size.
Sourcepub fn raster_config(
&self,
font_id: &FontId,
character: char,
size_px: f32,
) -> Option<GlyphRasterConfig>
pub fn raster_config( &self, font_id: &FontId, character: char, size_px: f32, ) -> Option<GlyphRasterConfig>
Get raster config for looking up glyphs in fontdue.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for DynamicGlyphCache
impl !RefUnwindSafe for DynamicGlyphCache
impl Send for DynamicGlyphCache
impl Sync for DynamicGlyphCache
impl Unpin for DynamicGlyphCache
impl UnsafeUnpin for DynamicGlyphCache
impl !UnwindSafe for DynamicGlyphCache
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T ShaderType for self. When used in AsBindGroup
derives, it is safe to assume that all images in self exist.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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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