fd166d9fb9ea5751ed05a2d4f92ca9aeccb238b0
GLSL Glyphs Generator
Generate GLSL ready 8x8 glyph maps and usable functions.
Reads each 8x8 glyph into 4x4 squares then converts them into (0-65535) integers.
██████ 0x151E, 0x8A87, 0xE19D, 0x789B,
█ █
█ █ █ █ ███ ███ █ ██ ██ █
█ █ -> █ █ █ █ █ █
█ ████ █ █ █ █ █ █ █
█ ██ █ █ █ ███ ███
█ █
██████
Writes it into GLSL ready files to use it easily in shaders
const int cp437_glyphs[] = int[1024](
0x0000, 0x0000, 0x0000, 0x0000, // 0x00, EMPTY
0x151E, 0x8A87, 0xE19D, 0x789B, // 0x01, SMILEY
// ...
);
bool cp437(vec2 pos, int code)
{
// ...
}
Usage
usage: glsl-glyphs [-h] [-i INPUT_FILE] [-n NAME] [-o OUTPUT_FILE] [-g NAMES_FILE] [-s SETS_FILE] [-f | --functions | --no-functions]
[--sentences-input SENTENCES_FILE] [--sentences-output OUTPUT_FILE] [--sentences-only | --no-sentences-only]
[--includes | --no-includes] [--add-empty | --no-add-empty] [-v | --verbose | --no-verbose] [-q | --quiet | --no-quiet]
options:
-h, --help show this help message and exit
-i, --input INPUT_FILE
png 8x8 glyph map
-n, --name NAME target derived name for GLSL constants and functions (default: glyph)
-o, --output OUTPUT_FILE
output glyphs glsl file (default: build/{name}.glsl}
-g, --glyph-names NAMES_FILE
glyphs names, one line each
-s, --sets SETS_FILE defined sets in CSV: index,length,name
-f, --functions, --no-functions
add GLSL functions to output
--sentences-input SENTENCES_FILE
generate sentences from file and names
--sentences-output OUTPUT_FILE
output sentences glsl file (default: build/{name}_sentences.glsl)
--sentences-only, --no-sentences-only
generate only sentences from names (does not read input image)
--includes, --no-includes
use #include preprocessor in GLSL (forge)
--add-empty, --no-add-empty
add EMPTY tile at start of tileset if missing
-v, --verbose, --no-verbose
more verbose logging
-q, --quiet, --no-quiet
disable logging
More info about included resources
IBM PC CP437
See Why is there a "small house" in IBM's Code page 437? for more info on IBM PC CP437.
Crystalwarrior
Pmlomb
Development
Makefile
Usage: make [target1] [target2] ...
Commands/Targets:
help show this message
install install project
update update project dependencies
run run project
sample-all generate all samples
sample-% generate sample (cp437/cw/pmlomb)
format format project
lint lint project
build build project
uv-sync uv sync
uv-upgrade uv sync upgrade
uv-run uv run (project)
uv-run-sample-% uv run (project) sample/(xxx)
ruff ruff check
ruff-fix ruff check (and fix)
ruff-format ruff format
ruff-format-check ruff format (check only)
ty ty check
release-% release major/minor/patch
TODO
- Initial implementation
- Generate a separate sentences file
- Custom height glyph map
- Custom width glyph map
- More compact data using GLSL ints
- separated sets/patterns
Releases
2
glsl-glyphs 1.0.1
Latest
Languages
Python
89.4%
Makefile
10.6%