spf

Crates.iospf
lib.rsspf
version0.3.0
sourcesrc
created_at2024-10-26 02:03:32.922912
updated_at2024-12-07 21:25:24.119301
description.spf (Simple Pixel Font) file parsing, and useful api's to go alongside.
homepage
repositoryhttps://github.com/The-Nice-One/spf.rs
max_upload_size
id1423486
size37,936
(The-Nice-One)

documentation

README

The-Nice-One - spf.rs stars - spf.rs forks - spf.rs Rust GitHub tag License issues - spf.rs

A very simple and concrete parser for *.spf (SimplePixelFont) files for Rust. spf.rs provides simple encoding and decoding for the *.spf binary representation through a Vec<u8>. And also includes optional features to conveniently create a texture from a font rendering, which can then be used in your favorite game engine or 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(
        ConfigurationFlags {
            0: ALIGNMENT_HEIGHT,
            ..Default::default()
        },
        ModifierFlags {
            ..Default::default()
        },
        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 = std::fs::OpenOptions::new()
    .read(true)
    .open("./utf8ToyFont.spf")
    .unwrap();
let mut buffer: Vec<u8> = vec![];
file.read_to_end(&mut buffer).unwrap();
let font = SimplePixelFont::from_vec_u8(buffer);

Supported File Properties

Flag Type Stability Notes
Alignment Configuration ⚠️ Only height-aligned fonts are supported
Compact Modifier Planned for v0.4

Key:

  • ⚠️ = Work in progress
  • = Not implemented
  • = Stable
Commit count: 27

cargo fmt