This is ListFonts.c in view mode; [Download] [Up]
/* * ListFonts - lists fonts on NeXT's * (c) by gfa <george@nice.usergroup.ethz.ch> * Sat Jan 11 23:37:32 GMT+0100 1992 */ #include <sys/types.h> #import <sys/dir.h> #include <stdio.h> #include <syslog.h> #include <strings.h> #define SIZE 18 #define PAGECLIP 0, 0, 530, 840 #define NUM_PATHS 2 #define PAPER_LENGTH 600 main(int argc, char **argv) { struct direct *dp; DIR *dirp; int a, b, n, i, k, j; char fontarray[2000][127], fontname[127], pathname[NUM_PATHS][1024] = { "/LocalLibrary/Fonts", "/NextLibrary/Fonts"}; openlog("FontLister", LOG_PID, LOG_DAEMON); a = 0; for (b = 0; b < NUM_PATHS; b++) { dirp = opendir(pathname[b]); if (dirp == NULL) { syslog(LOG_ERR, "cannot open %s", pathname[b]); exit(1); } for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) { i = 0; while (dp->d_name[i] != '.' && dp->d_name[i] != '\0') { fontname[i] = dp->d_name[i]; ++i; } fontname[i] = '\0'; if (dp->d_name[i] == '.' && dp->d_name[i + 1] == 'f' && dp->d_name[i + 2] == 'o' && dp->d_name[i + 3] == 'n' && dp->d_name[i + 4] == 't' && dp->d_name[i + 5] == '\0') { strcpy(fontarray[a], fontname); ++a; } } } qsort(&fontarray[0][0], a, 127, strcmp); printf("%%!PS-Adobe-2.0\n%%%%DocumentPaperSizes: A4\n"); printf("%%%%Pages: (atend) 1\n%%EndComments\n"); printf("%%%%Page: 1 1\n %d %d %d %d rectclip\n", PAGECLIP); j = 0; k = 2; for (n = 0; n < a; ++n) { printf("%d %d moveto\n", 3*SIZE, 760 - j*(SIZE + 4)); printf("/Helvetica findfont %d scalefont setfont\n", SIZE/2); printf("(%d. %s) show\n", n+1, fontarray[n]); printf("%d %d moveto\n", 11*SIZE, 760 - j*(SIZE + 4)); printf("/%s findfont %d scalefont setfont\n", fontarray[n], SIZE-4); printf("(The Quick Brown Fox Jumps Over The Lazy Dog) show\n"); ++j; if (j == (PAPER_LENGTH/SIZE)) { j = 0; printf("showpage\n"); printf("%%%%Page: %d %d\n %d %d %d %d rectclip\n", k, k, PAGECLIP); ++k; } } printf("showpage\n"); printf("%%%%Trailer\n%%%%Pages: %d %d\n", k-1, 1); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.