static const char rcsid[] = "$Id: fontdump.c,v 1.4 2000/06/24 00:48:35 ben Exp $"; #include #include #include #include #include #include #include void usage(void); void font_dump(FILE *, int); int main(int argc, char **argv) { FILE *fp; struct stat sb; int size; if (getopt(argc, argv, "") != -1) usage(); argc -= optind; argv += optind; if (argc != 1) usage(); if ((fp = fopen(*argv, "r")) == NULL) err(1, "%s", *argv); if (fstat(fileno(fp), &sb) < 0) err(1, "fstat"); if (sb.st_size == 16 * 256) size = 16; else if (sb.st_size == 14 * 256) size = 14; else if (sb.st_size == 8 * 256) size = 8; else errx(1, "unknown font size"); font_dump(fp, size); return (EXIT_SUCCESS); } void font_dump(FILE *fp, int size) { int ch, li, d, bit; for (ch = 0; ch < 256; ch++) { printf("- %c ----\n", (isprint(ch) || ch > 127) ? ch : ' '); for (li = 0; li < size; li++) { d = getc(fp); if (d == EOF) errx(1, "unexpected EOF"); for (bit = 7; bit >= 0; bit--) if (d & (1 << bit)) printf("#"); else printf(" "); printf("\n"); } printf("--------\n"); } } void usage(void) { fprintf(stderr, "usage: fontdump \n\n"); fprintf(stderr, "This will dump the raw fontfile to stdout\n"); fprintf(stderr, "in a human readable form which can be edited and\n"); fprintf(stderr, "turned back into a font file with 'fontmake'.\n"); exit(EXIT_FAILURE); }