diff options
Diffstat (limited to 'gen_font.c')
-rw-r--r-- | gen_font.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/gen_font.c b/gen_font.c new file mode 100644 index 0000000..89659c3 --- /dev/null +++ b/gen_font.c @@ -0,0 +1,47 @@ +#if 0 +gcc -fsanitize=undefined,address,leak -o gen_font gen_font.c && ./gen_font && rm gen_font +exit +#endif + +#include <stdio.h> +#include <assert.h> + +int main(int argc, char **argv) { + FILE *in = fopen("font.ttf", "rb"); + FILE *out = fopen("source/saw/font.inl.h", "wb"); + assert(in != NULL); + assert(out != NULL); + + fprintf(out, "// \"Black Chancery\" by Doug Miles\n//\n\n"); + fprintf(out, "#ifndef SAW_FONT_INL_H\n"); + fprintf(out, "#define SAW_FONT_INL_H\n\n"); + fprintf(out, "#include \"../kit/types.h\"\n\n"); + fprintf(out, "static u8 saw_font_ttf[] = {"); + + long long n = 0, k = 0; + unsigned char buf[128]; + + while (!feof(in)) { + k = fread(buf, 1, 128, in); + if (k <= 0) + break; + + for (long long i = 0; i < k; ++i) { + if (n > 0) + fprintf(out, ","); + if ((n % 20) == 0) + fprintf(out, "\n "); + + fprintf(out, "%4d", (unsigned) buf[i]); + + ++n; + } + } + + fprintf(out, "\n};\n\n"); + fprintf(out, "enum { SAW_FONT_TTF_SIZE = %lld };\n\n", n); + fprintf(out, "#endif\n"); + + fclose(in); + return 0; +} |