/* Converts a F16 font to BDF */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main(int argc, char **argv)
{
FILE *tf, *ff, *of;
char tmp[81];
int i, encoding, bitrow;
tf = fopen("template.bdf", "r");
ff = fopen(argv[1], "r");
of = fopen(argv[2], "w");
while (1) {
fgets(tmp, 80, tf);
if (strncmp(tmp, "STARTCHAR", 9))
fputs(tmp, of);
else break;
}
while (1) {
fputs(tmp, of);
fgets(tmp, 80, tf);
fputs(tmp, of);
encoding = atoi(&tmp[9]);
fseek(ff, encoding * 16, SEEK_SET);
for (i = 0; i < 4; i++)
fgets(tmp, 80, tf);
fprintf(of, "SWIDTH 560 0\n");
fprintf(of, "DWIDTH 7 0\n");
fprintf(of, "BBX 8 16 0 -3\n");
fprintf(of, "BITMAP\n");
for (i = 0; i < 16; i++) {
bitrow = fgetc(ff);
fprintf(of, "%02X\n", bitrow);
}
while (1) {
fgets(tmp, 80, tf);
if (! strncmp(tmp, "ENDCHAR", 7)) {
fputs(tmp, of);
fgets(tmp, 80, tf);
if (! strncmp(tmp,"ENDFONT", 7)) {
fputs(tmp, of);
goto rdy;
}
break;
}
}
}
rdy:
fclose(tf);
fclose(ff);
fclose(of);
}