diff --git a/font/Makefile b/font/Makefile index 7bb04e0a0..70f1ff809 100644 --- a/font/Makefile +++ b/font/Makefile @@ -1,5 +1,11 @@ editor: editor.c gcc -oeditor -DSCALE=2 -DFONTEDITOR editor.c -lSDL -lm -O3 -ffast-math -march=k8 -Wall -std=c99 + +packer: packer.c + gcc -opacker -DFONTEDITOR editor.c -lSDL -lm -O3 -ffast-math -march=k8 -Wall -std=c99 + +unpacker: unpacker.c + gcc -ounpacker -DFONTEDITOR editor.c -lSDL -lm -O3 -ffast-math -march=k8 -Wall -std=c99 clean: rm -f editor packer diff --git a/font/font.bin b/font/font.bin index b81615a3d..3eabed0a2 100644 Binary files a/font/font.bin and b/font/font.bin differ diff --git a/font/unpacker.c b/font/unpacker.c new file mode 100644 index 000000000..a2a4cc661 --- /dev/null +++ b/font/unpacker.c @@ -0,0 +1,107 @@ +#include +#include +#include +#include + +#include "font.h" + +#define CELLW 12 +#define CELLH 10 + +char xsize=CELLW, ysize=CELLH; +char base=7, top=2; +char font[256][CELLH][CELLW]; +char width[256]; + +int bits_n = 0, bits_a = 0; +int flush_bits(void) +{ + if(bits_n) { + bits_a >>= 8-bits_n; + printf("0x%02X, ", bits_a); + bits_a = 0; + bits_n = 0; + return 1; + } + return 0; +} +int stock_bits(int b, int nb) +{ + bits_a >>= nb; + bits_a |= b << (8-nb); + bits_n += nb; + if(bits_n >= 8) { + printf("0x%02X, ", bits_a); + bits_a = 0; + bits_n = 0; + return 1; + } + return 0; +} + +int save_char(int c) +{ + int nb = 1; + int x, y; + + if(!width[c]) + return 0; + + printf(" 0x%02X, ", width[c]); + + for(y=0; y> b) & 3; + b += 2; + if(b >= 8) { + start ++; + b = 0; + } + } + + width[c] = w; +printf("%02x: %d\n", c, w); +} + +char *tag = "(c) 2011 Stanislaw Skowronek"; + +int main(int argc, char *argv[]) +{ + FILE *f; + int i; + + for(i=0; i