demo-font.rs

985 B · rust · 31 lines

1use mrlycore::errors::Result;2use mrlyfig::{ink, save, Board};34const WORDMARK: &str = "MRLYPROD";56fn main() -> Result<()> {7    let mut board = Board::square();8    let area = board.frame(0.08);9    let grid = mrlyfont::raster(WORDMARK);10    let rows = grid.len();11    let cols = grid[0].len();12    assert_eq!((rows, cols), (5, 47));13    let scale = (area.w / cols as f64).floor().max(1.0);14    let ox = ((board.width as f64 - cols as f64 * scale) / 2.0).round();15    let oy = ((board.height as f64 - rows as f64 * scale) / 2.0).round();16    let mut lit = 0;17    for (row, line) in grid.iter().enumerate() {18        for (col, &cell) in line.iter().enumerate() {19            if cell != 1 {20                continue;21            }22            lit += 1;23            let x = ox + col as f64 * scale;24            let y = oy + row as f64 * scale;25            board.rect(x, y, scale, scale, ink::fg());26        }27    }28    assert_eq!(lit, 103);29    save("demo-font", &board)?;30    Ok(())31}