#font #font-file #character #create #pixel #struct #inferred

bin+lib spf

.spf (Simple Pixel Font) file parsing, and useful api's to go alongside

4 releases (2 breaking)

0.2.0 Oct 31, 2024
0.1.0 Oct 27, 2024
0.0.2 Oct 26, 2024
0.0.1 Oct 26, 2024

#1298 in Parser implementations

Download history 289/week @ 2024-10-21 124/week @ 2024-10-28 69/week @ 2024-11-04

482 downloads per month

Custom license

32KB
537 lines

A very simple and concrete parser for *.spf (SimplePixelFont) files for Rust. spf.rs provides simple encoding and decoding for *.spf binary representation through a Vec<u8>. And also includes optional features to conveiniently create a texture from a font rendering, which can then be used in your favorite game engine / graphics framework.

Example

Creates a new SimplePixelFont struct and adds the characters o, w, and 😊.

use spf::core::*;

fn main() {
    let mut font = SimplePixelFont::new(FV0000, Alignment::Height, 4);
    font.add_character(Character::inferred(
        'o',
        Bitmap::inferred(&[
            true, true, true, true,
            true, false, false, true,
            true, false, false, true,
            true, true, true, true,
        ]),
    ));
    font.add_character(Character::inferred(
        'w',
        Bitmap::inferred(&[
            true, false, true, false, true,
            true, false, true, false, true,
            true, false, true, false, true,
            true, true, true, true, true,
        ]),
    ));
    font.add_character(Character::inferred(
        '😊',
        Bitmap::inferred(&[
            false, true, true, false,
            false, false, false, false,
            true, false, false, true,
            false, true, true, false,
        ]),
    ));
}

We can then encode the struct and use std::fs to write to a file:

let mut file = std::fs::OpenOptions::new()
    .write(true)
    .create(true)
    .open("./utf8ToyFont.spf")
    .unwrap();
file.write_all(&font.to_vec_u8()).unwrap();

Or we can load an exsisting .spf file using std::fs aswell:

let mut file = fs::OpenOptions::new()
    .read(true)
    .open("./utf8ToyFont.spf")
    .unwrap();
let mut buffer: Vec<u8> = vec![];
file.read(&mut buffer).unwrap();
let font = SimplePixelFont::from_vec_u8(buffer);

Support Format Versions

Format Version Stability
FV0000 (Vanilla)

No runtime deps

Features