#include #include /* dummy */ #define WSDISPLAY_FONTORDER_L2R 0 #define WSDISPLAY_FONTENC_ISO 0 struct wsdisplay_font { char *name; int index; int firstchar; int numchars; int encoding; int width; int height; int stride; int bit_order; int byte_order; void *cookie; u_char *data; }; #include "spleen5x8.h" #include "spleen8x16.h" #include "spleen12x24.h" #include "spleen16x32.h" #include "spleen32x64.h" void output_file(struct wsdisplay_font *def) { int i, size; FILE *fp; struct _pkt { // must be little-endian! unsigned short size; unsigned short cmd; unsigned short arg; } pkt; u_char *p, tmp[256]; snprintf(tmp, sizeof(tmp), "%s.fch", def->name); fp = fopen(tmp, "w"); if (fp == NULL) { printf("file open error %s\n", tmp); goto fin0; } // ascii header pkt.size = 6; pkt.cmd = 1; pkt.arg = (def->width << 8) | def->height; fwrite(&pkt, sizeof(pkt), 1, fp); p = def->data; size = def->stride * def->height; for (i = 0; i < def->numchars; i++) { pkt.size = 6 + size; pkt.cmd = 0; // set glyph pkt.arg = i + def->firstchar; fwrite(&pkt, sizeof(pkt), 1, fp); fwrite(p, size, 1, fp); p += size; } fclose(fp); fin0: return; } int main(int argc, char *argv[]) { output_file(&spleen5x8); output_file(&spleen8x16); output_file(&spleen12x24); output_file(&spleen16x32); output_file(&spleen32x64); }