pub struct Font { /* private fields */ }Implementations§
Source§impl Font
impl Font
pub fn line_height(&self) -> f32
pub fn ascender(&self) -> f32
pub fn descender(&self) -> f32
pub fn space_width(&self) -> f32
pub fn texture_size(&self) -> Point2
pub fn calculate_text_size(&self, text: &str) -> Vector2
Sourcepub fn create_baked_text_raw(
&self,
text: &str,
format: FontBakeFormat,
) -> Result<(Vec<u8>, u32, u32), String>
pub fn create_baked_text_raw( &self, text: &str, format: FontBakeFormat, ) -> Result<(Vec<u8>, u32, u32), String>
Bakes the text into a texture data buffer.
This is useful for rendering static text without needing to render each glyph individually.
Sourcepub fn save_font_cache(&self, path: &str) -> Result<(), Error>
pub fn save_font_cache(&self, path: &str) -> Result<(), Error>
Saves the font cache to a file.
This will create a binary file that can be loaded later using FontManager::load_font_cached.
Sourcepub fn get_image_data(&self) -> (Vec<u8>, u32, u32)
pub fn get_image_data(&self) -> (Vec<u8>, u32, u32)
Returns the image data of the font texture atlas.
Sourcepub fn get_glyph(&self, codepoint: u32) -> Result<Glyph, FontError>
pub fn get_glyph(&self, codepoint: u32) -> Result<Glyph, FontError>
Returns the font’s glyph for the given codepoint.
Sourcepub fn create_baked_text(
&self,
gpu: &mut GPU,
text: &str,
) -> Result<Texture, TextureError>
pub fn create_baked_text( &self, gpu: &mut GPU, text: &str, ) -> Result<Texture, TextureError>
Create a texture from the baked text.
This is useful for rendering static text without needing to render each glyph individually.
Examples found in repository?
examples/font.rs (line 25)
5fn main() {
6 let mut runner = est_render::runner::new().expect("Failed to create runner");
7
8 let mut window = runner
9 .create_window("Font Example", Point2::new(800, 600))
10 .build()
11 .expect("Failed to create window");
12
13 let mut gpu = est_render::gpu::new(Some(&mut window))
14 .build()
15 .expect("Failed to create GPU");
16
17 let mut font_manager = est_render::font::new();
18
19 let font = font_manager
20 .load_font("Arial", None, 20.0)
21 .expect("Failed to load font");
22
23 // Generate baked text texture
24 let texture = font
25 .create_baked_text(&mut gpu, "Hello, World!\nThis is a clear color example.")
26 .expect("Failed to create baked text");
27
28 while runner.pool_events(None) {
29 for event in runner.get_events() {
30 match event {
31 Event::WindowClosed { .. } => {
32 return;
33 }
34 _ => {}
35 }
36 }
37
38 if let Ok(mut cmd) = gpu.begin_command() {
39 if let Ok(mut gp) = cmd.begin_renderpass() {
40 gp.set_clear_color(Color::BLUE);
41
42 // The best texture blend for font rendering, others may has artifacts like black borders
43 gp.set_blend(0, Some(&BlendState::ADDITIVE_BLEND));
44
45 if let Some(mut drawing) = gp.begin_drawing() {
46 let size: Vector2 = texture.size().into();
47
48 // Baked text rendering
49 drawing.set_texture(Some(&texture));
50 drawing.draw_rect_image(Vector2::new(0.0, 0.0), size, Color::WHITE);
51
52 // Online text rendering
53 drawing.set_font(&font);
54 drawing.draw_text(
55 "Hello, World!\nThis is a clear color example.",
56 Vector2::new(size.x, 0.0),
57 Color::WHITE,
58 );
59 }
60 }
61 }
62 }
63}Sourcepub fn create_texture(&self, gpu: &mut GPU) -> Result<Texture, TextureError>
pub fn create_texture(&self, gpu: &mut GPU) -> Result<Texture, TextureError>
Creates a texture from the font’s glyph atlas.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Font
impl !RefUnwindSafe for Font
impl !Send for Font
impl !Sync for Font
impl Unpin for Font
impl !UnwindSafe for Font
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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)
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)
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> 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>
Converts
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>
Converts
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