pub struct FontManager { /* private fields */ }Expand description
Manages multiple fonts with fallback chain
Implementations§
Source§impl FontManager
impl FontManager
Sourcepub fn new(
primary_family: Option<&str>,
bold_family: Option<&str>,
italic_family: Option<&str>,
bold_italic_family: Option<&str>,
font_ranges: &[FontRange],
) -> Result<Self>
pub fn new( primary_family: Option<&str>, bold_family: Option<&str>, italic_family: Option<&str>, bold_italic_family: Option<&str>, font_ranges: &[FontRange], ) -> Result<Self>
Create a new FontManager with primary font and system fallbacks
§Arguments
primary_family- Regular/normal weight font family namebold_family- Bold weight font family name (optional)italic_family- Italic font family name (optional)bold_italic_family- Bold italic font family name (optional)font_ranges- Unicode range-specific font mappings
Sourcepub fn find_glyph(
&self,
character: char,
bold: bool,
italic: bool,
) -> Option<(usize, u16)>
pub fn find_glyph( &self, character: char, bold: bool, italic: bool, ) -> Option<(usize, u16)>
Find a glyph for a character across the font fallback chain
§Arguments
character- Character to find glyph forbold- Whether text should be bolditalic- Whether text should be italic
§Returns
(font_index, glyph_id) where font_index 0-3 are styled fonts, >3 are fallbacks Font indices: 0 = primary/regular, 1 = bold, 2 = italic, 3 = bold-italic, 4+ = fallbacks
Sourcepub fn find_range_font_index(&self, char_code: u32) -> Option<(usize, u16)>
pub fn find_range_font_index(&self, char_code: u32) -> Option<(usize, u16)>
Find the font index for a character in range fonts Returns None if the character is not in any range font
Sourcepub fn primary_font(&self) -> &FontRef<'static>
pub fn primary_font(&self) -> &FontRef<'static>
Get the primary font reference
Sourcepub fn font_count(&self) -> usize
pub fn font_count(&self) -> usize
Get number of fonts loaded (including primary, styled fonts, range fonts, and fallbacks)
Sourcepub fn get_font_data(&self, font_index: usize) -> Option<&[u8]>
pub fn get_font_data(&self, font_index: usize) -> Option<&[u8]>
Get raw font data bytes for a font index
This is used by the text shaper to access the font data for shaping.
§Arguments
font_index- Font index: 0 = primary, 1 = bold, 2 = italic, 3 = bold-italic, 4..4+range_fonts.len() = range fonts, remaining = fallbacks
§Returns
Reference to the raw font data bytes, or None if invalid index
Sourcepub fn shape_text(
&mut self,
text: &str,
bold: bool,
italic: bool,
options: ShapingOptions,
) -> Arc<ShapedRun>
pub fn shape_text( &mut self, text: &str, bold: bool, italic: bool, options: ShapingOptions, ) -> Arc<ShapedRun>
Shape text using the appropriate font
This method uses HarfBuzz (via rustybuzz) to shape text with ligatures, kerning, and complex script support.
§Arguments
text- The text to shapebold- Whether the text is bolditalic- Whether the text is italicoptions- Shaping options (ligatures, kerning, etc.)
§Returns
A ShapedRun containing the shaped glyphs and metadata
Sourcepub fn shape_text_with_font_index(
&mut self,
text: &str,
font_index: usize,
options: ShapingOptions,
) -> Arc<ShapedRun>
pub fn shape_text_with_font_index( &mut self, text: &str, font_index: usize, options: ShapingOptions, ) -> Arc<ShapedRun>
Shape text using a specific font index
This method allows you to shape text with a specific font, rather than using the styled font selection. This is useful for emoji and symbols that need to be shaped with their dedicated fonts.
§Arguments
text- The text to shapefont_index- The specific font index to useoptions- Shaping options (ligatures, kerning, etc.)
§Returns
A ShapedRun containing the shaped glyphs and metadata
Sourcepub fn clear_shape_cache(&mut self)
pub fn clear_shape_cache(&mut self)
Clear the text shaping cache
This should be called when fonts are reloaded or changed.
Sourcepub fn shape_cache_size(&self) -> usize
pub fn shape_cache_size(&self) -> usize
Get the current size of the shape cache
Auto Trait Implementations§
impl Freeze for FontManager
impl !RefUnwindSafe for FontManager
impl Send for FontManager
impl Sync for FontManager
impl Unpin for FontManager
impl !UnwindSafe for FontManager
Blanket Implementations§
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>. 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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
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> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
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