home *** CD-ROM | disk | FTP | other *** search
- /* Convert standard binary font to codepage format */
-
-
- #include <stdio.h>
- #include <stdlib.h>
-
-
- int fontheight;
- int sfontsize;
- int font_nuchars;
- unsigned char sfontbuf[32 * 256];
- unsigned char tfontbuf[32 * 256];
- FILE *sf;
- FILE *tf;
-
-
- main( int argc, char **argv ) {
- int i;
- if (argc != 4) {
- printf( "Syntax: convfont fontfile fontheight vgafontfile\n" );
- printf(
- "\nconvfont - convert standard format binary font to codepage format\n"
- "The converted font is written to vgafontfile.\n");
- printf(
- "A binary font file of any number of characters up to 256 can be used, although\n"
- "at least defining the first 128 characters is a good idea. The fontheight\n"
- "should be in the range 1-32.\n"
- );
- exit( 1 );
- }
- if ((sf = fopen( argv[1], "rb" )) == NULL) {
- printf( "convfont: Unable to open file.\n" );
- exit( 1 );
- }
- if ((tf = fopen( argv[3], "wb" )) == NULL) {
- printf( "convfont: Unable to create file.\n" );
- exit( 1 );
- }
- fontheight = atoi( argv[2] );
- if (fontheight < 1 || fontheight > 32) {
- printf( "convfont: Invalid fontheight.\n" );
- exit( 1 );
- }
-
- fseek( sf, 0, SEEK_END );
- sfontsize = ftell( sf );
- fseek( sf, 0, SEEK_SET );
- font_nuchars = sfontsize / fontheight;
- printf( "Converting %d characters\n", font_nuchars );
- if (font_nuchars < 1 || font_nuchars > 256) {
- printf( "convfont: Invalid number of characters in font.\n" );
- exit( 1 );
- }
- fread( sfontbuf, 1, sfontsize, sf );
- fclose(sf);
- for (i = 0; i < font_nuchars; i++) {
- int j;
-
- for (j = 0; j < fontheight; j++)
- tfontbuf[i * 32 + j] =
- sfontbuf[i * fontheight + j];
-
- for (j = 0; j < 32 - fontheight; j++)
- tfontbuf[i * 32 + fontheight] = 0;
- }
- /* clear remaining characters */
- for (i = font_nuchars * 32; i < 32 * 256; i++)
- tfontbuf[i] = 0;
- printf("Writing font file.\n");
- fwrite(tfontbuf, 1, 32 * 256, tf);
- fclose(tf);
- exit( 0 );
- }
-