3 unstable releases

0.2.0 Jan 6, 2024
0.1.1 Dec 17, 2023
0.1.0 Dec 16, 2023

#206 in No standard library

MIT license

16KB
148 lines

fleck — a library for using uf2 fonts

uf2 is a bitmap font format used in the uxn ecosystem for personal computing. This is a small, simple library for parsing and using uf2 fonts in rust projects.

Some choices and a demo in this library were informed by the structure of the wonderful psf2 crate.

Also, if no_std is your cup of tea, you can use the no_std feature flag to ensure all functionality is no_std and no_alloc.

fleck on crates.io

fleck is part of the broader weft ecosystem.

A pictogram of a line in a zig-zag pattern like the weft on a loom.

If you enjoy fonts like uf2, you may like tid and other things in the weft project as well! This project originates from the uf2 parser for tid.

examples

let mut data = [0u8; fleck::FILE_SIZE];
let mut file = std::fs::File::open(file_path).expect("could not find font file");
file.read_exact(&mut data).expect("could not read font data");
let font = Font::new(&data);
// Alternatively you could use `Font::load_from_file(file_path)`
// if you're fine with using std.

let text = args.next().unwrap_or("demo".to_string());
for ch in message.chars() {
    let Some(glyph) = font.glyph(ch) else {
        eprintln!("unsupported glyph: {}", ch);
        continue;
    };

    // Print a representation of each glyph to the terminal.
    for row in glyph {
        for filled in row {
            let pixel = if filled { "##" } else { "  " };
            print!("{pixel}");
        }
        println!();
    }
}

contributing

The issue tracker for fleck can be found at todo.sr.ht/~ma3ke/fleck. We use todo.sr.ht/~ma3ke/weft to keep track of ideas and tasks that pertain to the project as a whole.

NOTE: If you would like to submit changes, but feel intimidated by doing it by email, that is no problem at all! Another fine way is to fork the repository elsewhere, push your changes to there, and send me the link to the commit you want me to consider. Or, just get in touch with a DM or email :)

Patches can be submitted to the weft mailing list (~ma3ke/weft@lists.sr.ht).

Before submitting a patch, it is wise and fun to reach out through DM or on the email list for help and discussion.

When submitting a patch via email, please set the subject prefix to [PATCH fleck].

git config format.subjectPrefix "PATCH fleck"

(If you don't know how this stuff works, but want to learn about this, git-send-email.io is a fantastic hands-on resource.)


Made with <3 ma3ke

No runtime deps