int bf_MapFile(bf_t *bf, const char *map_file_name) { struct stat buf; char *s; FILE *fp; if ( map_file_name == NULL ) return 1; if ( map_file_name[0] == '\0' ) return 1; if ( stat(map_file_name, &buf) != 0 ) return 0; fp = fopen(map_file_name, "r"); if ( fp == NULL ) return 0; s = malloc(buf.st_size+1); if ( s == NULL ) return 0; fread(s, buf.st_size, 1, fp); s[buf.st_size] = '\0'; fclose(fp); bf_Map(bf, s); free(s); return 1; }
bf_t *bf_OpenFromFile(const char *bdf_filename, int is_verbose, int bbx_mode, const char *map_str, int font_format) { bf_t *bf; bf = bf_Open(is_verbose, bbx_mode); if ( bf != NULL ) { if ( bf_ParseFile(bf, bdf_filename) != 0 ) { bf_Map(bf, map_str); bf_CalculateSelectedNumberOfGlyphs(bf); bf_ReduceAllGlyph(bf); bf_CalculateMaxBBX(bf); //bf_ShowAllGlyphs(bf, &(bf->max)); bf_CalculateMinMaxDWidth(bf); bf_CalculateMaxBitFieldSize(bf); if ( font_format == 0 || font_format == 1 ) { bf_RLECompressAllGlyphs(bf); } else { bf_Generate8x8Font(bf); } if ( bf->bbx_mode != BDF_BBX_MODE_MINIMAL ) bf_ShowMonospaceStatistics(bf); /* Show stats only for none minimal mode. For minimal mode it will always be zero */ return bf; } bf_Close(bf); } return NULL; }