Skip to content

Text and Fonts

Renderer vs Artbox

Artbox wraps Renderer and adds consistent APIs for sprites and images. If you only need text, you can still use Renderer directly.

use artbox::{Artbox, Renderer, RenderTarget, Alignment};
let renderer = Renderer::default().with_alignment(Alignment::Center);
let art = Artbox::from_renderer(renderer);
let rendered = art.render_text("Hello", RenderTarget::new(40, 8))?;

Alignment and spacing

use artbox::{Artbox, RenderTarget, Alignment};
let art = Artbox::default()
.with_alignment(Alignment::Center)
.with_letter_spacing(-1)
.with_plain_fallback();
let rendered = art.render_text("Overlap", RenderTarget::new(30, 6))?;

Font stacks

Use embedded fonts or build a custom stack. The renderer tries fonts in order and picks the first that fits the bounds.

use artbox::{Artbox, RenderTarget, fonts};
let art = Artbox::new(fonts::stack(&["big", "standard", "small", "mini"]));
let rendered = art.render_text("Hello", RenderTarget::new(40, 8))?;

Font families

use artbox::{Artbox, RenderTarget, fonts};
let art = Artbox::new(fonts::family("blocky").unwrap());
let rendered = art.render_text("Blocky", RenderTarget::new(40, 8))?;

Custom fonts

use artbox::{Artbox, Font, RenderTarget};
let font = Font::from_file("/path/to/font.flf")?;
let art = Artbox::new(vec![font]);
let rendered = art.render_text("Custom", RenderTarget::new(40, 8))?;