artbox
Render FIGlet text, sprites, and images into a bounded rectangle with colors and gradients.
cargo add artbox
Quick Start
use render;
let result = render?;
println!;
Output:
_ _ _ _
| | | | ___| | | ___
| |_| |/ _ \ | |/ _ \
| _ | __/ | | (_) |
|_| |_|\___|_|_|\___/
Gradients
use ;
let renderer = default
.with_fill;
let rendered = renderer.render?;
print!;
Supports solid colors, linear gradients (any angle), and radial gradients.
Unified API
Artbox provides a single entrypoint for text, sprites, and images:
use ;
let art = default.with_alignment;
let target = new;
let rendered = art.render_text?;
print!;
Sprites
Multi-size layered ASCII sprites with per-layer gradient fills:
use ;
use ;
let layer = new.with_fill;
let variant = new;
let sprite = new;
let rendered = sprite.render?;
print!;
Font Families
Built-in font families with size fallback:
use ;
// Blocky pixel style
let renderer = new;
// Available families: banner, blocky, script, slant
// Default stack: big -> standard -> small -> mini
Custom stacks:
let renderer = new;
Load external fonts:
let font = from_file?;
Alignment
use ;
let renderer = default
.with_alignment // or TopLeft, BottomRight, etc.
.with_letter_spacing; // negative = overlap
Buffer Reuse
For hot paths, reuse the output buffer:
let mut buffer = Stringnew;
let metrics = renderer.render_into?;
Images
Enable the images feature for image-to-ASCII and terminal image protocols:
= { = "0.2", = ["images"] }
use ;
let art = default;
let target = new;
let rendered = art.render_image_path?;
print!;
ratatui Widget
Enable the ratatui feature:
= { = "0.2", = ["ratatui"] }
use ;
let widget = new;
frame.render_widget;
let sprite_widget = new;
frame.render_widget;
Examples
# Text with gradient
# Unified API (text + sprites)
# Sprite layers with per-layer gradients
# Image to ASCII (defaults to ruby.svg)
# ratatui TUI
Docs
Hosted docs: https://dmk.github.io/artbox
Local docs: