| Crates.io | artbox |
| lib.rs | artbox |
| version | 0.1.0 |
| created_at | 2026-01-10 00:20:51.102437+00 |
| updated_at | 2026-01-10 00:20:51.102437+00 |
| description | Render FIGlet text into a bounded rectangle with colors and gradients |
| homepage | |
| repository | https://github.com/dmk/artbox |
| max_upload_size | |
| id | 2033231 |
| size | 341,351 |
Render FIGlet text into a bounded rectangle with colors and gradients.
cargo add artbox
use artbox::render;
let result = render("Hello", 40, 8)?;
println!("{}", result.text);
Output:
_ _ _ _
| | | | ___| | | ___
| |_| |/ _ \ | |/ _ \
| _ | __/ | | (_) |
|_| |_|\___|_|_|\___/
use artbox::{Renderer, Fill, LinearGradient, ColorStop, Color};
let renderer = Renderer::default()
.with_fill(Fill::Linear(LinearGradient::new(
45.0,
vec![
ColorStop::new(0.0, Color::rgb(255, 0, 128)),
ColorStop::new(1.0, Color::rgb(0, 128, 255)),
],
)));
let styled = renderer.render_styled("Hi", 20, 6)?;
print!("{}", styled.to_ansi_string());
Supports solid colors, linear gradients (any angle), and radial gradients.
Built-in font families with size fallback:
use artbox::{Renderer, fonts};
// Blocky pixel style (█▀▄ characters)
let renderer = Renderer::new(fonts::family("blocky").unwrap());
// Available families: banner, blocky, script, slant
// Default stack: big -> standard -> small -> mini
Custom stacks:
let renderer = Renderer::new(fonts::stack(&["slant", "small_slant"]));
Load external fonts:
let font = Font::from_file("path/to/font.flf")?;
use artbox::{Renderer, Alignment};
let renderer = Renderer::default()
.with_alignment(Alignment::Center) // or TopLeft, BottomRight, etc.
.with_letter_spacing(-1); // negative = overlap
For hot paths, reuse the output buffer:
let mut buffer = String::new();
let metrics = renderer.render_into("Text", 40, 10, &mut buffer)?;
Enable the ratatui feature:
artbox = { version = "0.1", features = ["ratatui"] }
use artbox::integrations::ratatui::ArtBox;
let widget = ArtBox::new(&renderer, "Hello");
frame.render_widget(widget, area);
cargo run --example gradient -- "Hello" 60 10 --gradient diagonal --from 255,0,128 --to 0,128,255