SEFF - Simple Embeddable Font Format

Last update: May 2, 2022

SEFF - Simple Embeddable Font Format

This crate is designed to allow decent text rendering in resource-constrained environments like microcontrollers.

Feature summary:

  • Compiles to less than 1.5 kiB of code on thumbv7em.
  • Proportional (variable-width) fonts in addition to monospaced (terminal) fonts.
  • Fonts can include kerning information.
  • Aggressively optimized font data structures are cheap to store and relatively cheap to render. (Monospace fonts of about 8 pixels and larger are typically 60% smaller represented in SEFF than in their naive array-of-bits form.)
  • Build-time code generation takes fonts in an easily editable PNG format and produces Rust code, if you don't want to paste the code in directly.
  • When built in render-only mode, has no dependencies. In particular, does not depend on any particular embedded HAL.

Drawbacks/limitations:

  • Does not support fonts containing more than 256 glyphs. (I plan to have a fallback mechanism for combining fonts if you need this.)
  • The Unicode support is very simplistic, mapping chars into the 256-glyph space using canned mappings -- currently only ISO 8859-1 and CP437 are supported, though more can be added.
  • Does not support RTL or vertical text directions. (Mostly due to my own lack of understanding of the subtleties.)

Deliberate non-goals:

  • Does not support text scaling or vector fonts. Each font has a fixed size, chosen at build time. This allows us to store data compactly and render it cheaply.
  • Does not support antialiasing. Pixels are getting very small these days.

The PNG font format

See the fonts directories for examples of the PNG input format.

GitHub

https://github.com/cbiffle/seff
You might also like...

Simple, extendable and embeddable scripting language.

duckscript duckscript SDK CLI Simple, extendable and embeddable scripting language. Overview Language Goals Installation Homebrew Binary Release Ducks

May 22, 2022

A simple, human-friendly, embeddable scripting language

Mica Language reference ยท Rust API A simple, human-friendly scripting language, developed one feature at a time. Human-friendly syntax inspired by Rub

Apr 4, 2022

A simple command line tool for creating font palettes for engines like libtcod

palscii A simple command line tool for creating font palettes for engines like libtcod. Usage This can also be viewed by running palscii --help. palsc

May 2, 2022

A static, type inferred and embeddable language written in Rust.

A static, type inferred and embeddable language written in Rust.

gluon Gluon is a small, statically-typed, functional programming language designed for application embedding. Features Statically-typed - Static typin

May 23, 2022

AgateDB is an embeddable, persistent and fast key-value (KV) database written in pure Rust

AgateDB is an embeddable, persistent and fast key-value (KV) database written in pure Rust. It is designed as an experimental engine for the TiKV project, and will bring aggressive optimizations for TiKV specifically.

May 19, 2022

Embeddable ED in rust

Add-ED The standard editor, now as a library Some time ago I decided to write an ED clone with syntax highlighting. On my way to that goal I needed to

Jan 18, 2022

Pure rust embeddable key-value store database.

MHdb is a pure Rust database implementation, based on dbm. See crate documentation. Changelog v1.0.3 Update Cargo.toml v1.0.2 Update Cargo.toml v1.0.1

Jan 4, 2022

A small embeddable scripting language

There is currently a tree-walking interpreter called bird in progress, but the plan is to have a bytecode vm in the end language_name is a small embed

Apr 28, 2022

ChiselStore is an embeddable, distributed SQLite for Rust, powered by Little Raft.

ChiselStore ChiselStore is an embeddable, distributed SQLite for Rust, powered by Little Raft. SQLite is a fast and compact relational database manage

May 20, 2022

whydia is a small embeddable scripting language

whydia is a small embeddable scripting language It's inspired by Javascript, Lox, Lua, Python, Rust and more Reference Overview Declaring variables us

Apr 15, 2022

An embeddable dynamic programming language for Rust.

rune Visit the site ๐ŸŒ - Read the book ๐Ÿ“– An embeddable dynamic programming language for Rust. Contributing If you want to help out, there should be a

May 23, 2022

convert CHAIN format to PAF format

convert CHAIN format to PAF format

Mar 5, 2022

Astro Format is a library for efficiently encoding and decoding a set of bytes into a single buffer format.

Astro Format is a library for efficiently transcoding arrays into a single buffer and native rust types into strings

Apr 30, 2022

Convert an MCU register description from the EDC format to the SVD format

edc2svd Convert an MCU register description from the EDC format to the SVD format EDC files are used to describe the special function registers of PIC

Oct 9, 2021

GTK application for browsing and installing fonts from Google's font archive

GTK application for browsing and installing fonts from Google's font archive

Font Finder This project is a from-scratch implementation of TypeCatcher in Rust. It is a GTK3 application for browsing through and installing fonts f

Apr 24, 2022

Demo for the swash font library

Demo for the swash crate See the swash repo or crate for the actual project. This is a chunk of very rough code.

Apr 28, 2022

Modify fonts to remove bitmap and disable gridfit for Windows font rendering.

Since Windows 10 version 1703 (Creators Update), its built-in TrueType renderer now supports vertical anti-aliasing. Despite there are only 30 levels of grayscale shade, it dramatically improves text rendering, especially for CJK languages. Sadly, it is only enabled for selected fonts at selected sizes.

May 13, 2022

Fontdue - The fastest font renderer in the world, written in pure rust.

Fontdue - The fastest font renderer in the world, written in pure rust.

Fontdue is a simple, no_std (does not use the standard library for portability), pure Rust, TrueType (.ttf/.ttc) & OpenType (.otf) font rasterizer and layout tool. It strives to make interacting with fonts as fast as possible, and currently has the lowest end to end latency for a font rasterizer.

May 17, 2022

Swash is a pure Rust, cross-platform crate that provides font introspection, complex text shaping and glyph rendering.

Swash is a pure Rust, cross-platform crate that provides font introspection, complex text shaping and glyph rendering. Goals This crate aims to

May 17, 2022
Related tags
Font independent text analysis support for shaping and layout.

lipi Lipi (Sanskrit for 'writing, letters, alphabet') is a pure Rust crate that provides font independent text analysis support for shaping and layout

May 13, 2022
Sorta Text Format in UTF-8

STFU-8: Sorta Text Format in UTF-8 STFU-8 is a hacky text encoding/decoding protocol for data that might be not quite UTF-8 but is still mostly UTF-8.

May 24, 2022
Fast PDF password cracking utility equipped with commonly encountered password format builders and dictionary attacks.
Fast PDF password cracking utility equipped with commonly encountered password format builders and dictionary attacks.

PDFRip Fast PDF password cracking utility equipped with commonly encountered password format builders and dictionary attacks. ?? Table of Contents Int

May 22, 2022
Simple NLP in Rust with Python bindings

vtext NLP in Rust with Python bindings This package aims to provide a high performance toolkit for ingesting textual data for machine learning applica

Mar 31, 2022
Simple STM32F103 based glitcher FW

Airtag glitcher (Bluepill firmware) Simple glitcher firmware running on an STM32F103 on a bluepill board. See https://github.com/pd0wm/airtag-dump for

Jan 26, 2022
Simple Data Stealer

helfsteal Simple Data Stealer Hi All, I published basic data stealer malware with Rust. FOR EDUCATIONAL PURPOSES. You can use it for Red Team operatio

Apr 26, 2022
A sweet n' simple pastebin with syntax highlighting and no client-side code!

sweetpaste sweetpaste is a sweet n' simple pastebin server. It's completely server-side, with zero client-side code. Configuration The configuration w

Apr 8, 2022
A simple and fast linear algebra library for games and graphics

glam A simple and fast 3D math library for games and graphics. Development status glam is in beta stage. Base functionality has been implemented and t

May 23, 2022
A simple OpenAI (GPT-3) client written in Rust.

A simple OpenAI (GPT-3) client written in Rust. It works by making HTTP requests to OpenAI's API and consuming the results.

Feb 17, 2022
Simple expression transformer that is not Coq.

Noq Not Coq. Simple expression transformer that is not Coq. Quick Start $ cargo run ./examples/add.noq Main Idea The Main Idea is being able to define

May 14, 2022