/* 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);
}