Skip to main content

Font

Struct Font 

Source
pub struct Font(/* private fields */);
Expand description

Font: a glyph atlas texture plus per-glyph metrics.

raylib ships a built-in default font (used when None or no font is specified in draw-text calls). User-defined fonts are loaded via RaylibHandle methods:

Freed via UnloadFont on drop.

§Examples

Load a font with explicit size and a Latin-1 subset, then draw text:

use raylib::prelude::*;
let (mut rl, thread) = raylib::init().size(640, 480).title("font demo").build();
// Load a TTF at 32 pt, restricting to printable ASCII (codepoints 32-126).
let ascii: String = (32u8..=126).map(|c| c as char).collect();
let font = rl
    .load_font_ex(&thread, "assets/Roboto.ttf", 32, Some(&ascii))
    .unwrap();
while !rl.window_should_close() {
    let mut d = rl.begin_drawing(&thread);
    d.clear_background(Color::RAYWHITE);
    d.draw_text_ex(&font, "Hello, raylib!", Vector2::new(10.0, 10.0), 32.0, 2.0, Color::BLACK);
}

Implementations§

Source§

impl Font

Source

pub unsafe fn unwrap(self) -> Font

Take the raw ffi type. Must manually free memory by calling the proper unload function

§Safety

The caller is responsible for freeing the returned value by calling the appropriate raylib unload function. Failure to do so will leak resources.

Source§

impl Font

Source

pub fn to_raw(self) -> Font

returns the unwrapped raylib-sys object

Source

pub unsafe fn from_raw(raw: Font) -> Self

converts raylib-sys object to a “safe” version. Make sure to call this function from the thread the resource was created.

§Safety

The caller must ensure raw is a valid, fully initialized raylib object obtained from a raylib load function. Ownership is transferred to the returned wrapper, which will call the appropriate unload function on drop.

Source§

impl Font

Source

pub fn make_weak(self) -> WeakFont

Converts this Font into a WeakFont that does not run UnloadFont on drop.

Use this when you want to hand a font to code that holds it by WeakFont (e.g. a renderer that doesn’t own the resource) and you take responsibility for unloading the GPU atlas yourself. Forgets the owning Font so the Drop impl doesn’t run; the returned WeakFont keeps the same texture and glyph table but will not free them on drop.

§Examples
use raylib::prelude::*;

let (mut rl, thread) = raylib::init().size(640, 480).title("font").build();
let font = rl
    .load_font(&thread, "assets/font.ttf")
    .expect("font load");
let weak = font.make_weak();
// `weak` is now an alias with no drop responsibility — the atlas leaks unless
// ownership is reclaimed before `weak` goes out of scope.
§See also
  • WeakFont — the returned no-drop alias type.
  • Font — owning counterpart.

Trait Implementations§

Source§

impl AsRawMut<Font> for Font

Source§

unsafe fn as_raw_mut(&mut self) -> &mut Font

Mutable access to the wrapped raw FFI value. Read more
Source§

impl AsRef<Font> for Font

Source§

fn as_ref(&self) -> &Font

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<Texture> for Font

Source§

fn as_ref(&self) -> &Texture2D

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Debug for Font

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for Font

Source§

type Target = Font

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Drop for Font

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl RaylibFont for Font

Source§

fn base_size(&self) -> i32

Base size (default chars height)
Source§

fn texture(&self) -> &Texture2D

Texture atlas containing the glyphs
Source§

fn chars(&self) -> &[GlyphInfo]

Glyphs info data
Source§

fn chars_mut(&mut self) -> &mut [GlyphInfo]

Glyphs info data
Source§

fn is_font_valid(&self) -> bool

Check if a font is valid
Source§

fn export_font_as_code<A>(&self, filename: A) -> bool
where A: Into<OsString>,

Export font as code file, returns true on success
Source§

fn get_glyph_info(&self, codepoint: char) -> GlyphInfo

Get glyph font info data for a codepoint (unicode character), fallback to ‘?’ if not found
Source§

fn get_glyph_index(&self, codepoint: char) -> i32

Gets index position for a unicode character on font.
Source§

fn get_glyph_atlas_rec(&self, codepoint: char) -> Rectangle

Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to ‘?’ if not found
Source§

fn measure_text(&self, text: &str, font_size: f32, spacing: f32) -> Vector2

Measures string width in pixels for font.

Auto Trait Implementations§

§

impl !Send for Font

§

impl !Sync for Font

§

impl Freeze for Font

§

impl RefUnwindSafe for Font

§

impl Unpin for Font

§

impl UnsafeUnpin for Font

§

impl UnwindSafe for Font

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.