Rust font rendering for light runtime
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-26 23:37:40 +02:00
examples/packing Initial commit 2026-09-26 23:37:40 +02:00
skrivan Initial commit 2026-09-26 23:37:40 +02:00
skrivan-cli Initial commit 2026-09-26 23:37:40 +02:00
.gitignore Initial commit 2026-09-26 23:37:40 +02:00
Cargo.lock Initial commit 2026-09-26 23:37:40 +02:00
Cargo.toml Initial commit 2026-09-26 23:37:40 +02:00
LICENSE Initial commit 2026-09-26 23:37:40 +02:00
README.md Initial commit 2026-09-26 23:37:40 +02:00
rustfmt.toml Initial commit 2026-09-26 23:37:40 +02:00

Skrivañ

This is:

  • a CLI tool to render a subset of a TTF/OTF/AAT font to PNG, and produce a custom-format character-to-positions map;
  • a lightweight crate to load such a map and render text to textures (or just iterate on glyphs and let you do the rendering).

Ideal for making a lightweight 2D game. All the hard work and big dependencies are done before compiling the game. No TTF to include, only an image and a small binary file. Rendering text is simply associating characters to positions on the font texture, like a tilemap. Glyphs can be fed to a vertex shader easily.

Not yet features:

  • alignment (currently only left alignment is supported)
  • wordwrap

Not planned:

  • Smart kerning algorithms, hyphenation, and other LaTeX-grade stuff.
  • Subpixel antialiasing (antialiasing is computed only for the base texture, not when rendering text)

Similar tools already exist, but:

  • the best ones, like harfbuzz, are quite heavy (we use harfbuzz for rendering).
  • the lightest ones are made for embedded or Gameboy.
  • other ones need the TTF at runtime.

Example


Name

"Skrivañ" is the Breton infinitive verb "to write". Pronounce skree.vã, with a nasalized "a".

License

Support me via LiberaPay

GNU AGPL v3, CopyLeft 2026 Pascal Engélibert (why copyleft?)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.