1 /*-
2 * %sccs.include.proprietary.c%
3 */
4
5 #ifndef lint
6 static char sccsid[] = "@(#)mkfont.c 4.4 (Berkeley) 04/18/91";
7 #endif /* not lint */
8
9 #include "mkfont1.c"
10
11 /*
12 this program takes 102 width values
13 (one per line) in the order provided bu Graphic
14 Systems and prepares a C-compileable width table.
15 */
16 char ibuf[512];
17 int id;
18 int width[102];
19 int ascii[102];
20 int zero;
21 int emw, hyw;
22 int xxx;
23
main(argc,argv)24 main(argc,argv)
25 int argc;
26 char **argv;
27 {
28 register i, j;
29 register char *p;
30
31 while((--argc > 0) && ((++argv)[0][0]=='-')){
32 switch(argv[0][1]){
33 default:
34 continue;
35 }
36 }
37 if(argc){
38 if((id=open(argv[0],0)) < 0){
39 printf("Cannot open: %s.\n",argv[0]);
40 exit(1);
41 }
42 }
43 j = read(id,ibuf,512);
44 p = ibuf;
45 for(i=0; i<102; i++){
46 width[i] = atoi(p);
47 while(*p++ != '\n');
48 }
49 for(i=0; i<102; i++){
50 if(font[i].name < 0177){
51 ascii[i] = font[i].name;
52 }else{
53 for(j=0; chtab[j] != 0; j += 2){
54 if(font[i].name == chtab[j])break;
55 }
56 ascii[i] = chtab[j+1] & 0377;
57 if(chtab[j] == PAIR('h','y')) hyw = width[i];
58 if(chtab[j] == PAIR('e','m')) emw = width[i];
59 }
60 }
61 printf("char XXw[256-32] {\t/*XX*/\n");
62 for(i=040; i<256; i++){
63 if(i == 0377){
64 printf("0};\n");
65 break;
66 }
67 if(i == 0177){
68 printf("6,\t %s\n",nametab[i-040]);
69 continue;
70 }
71 if(i == 0226){
72 printf("3,\t %s\n",nametab[i-040]);
73 continue;
74 }
75 if(i == ' '){
76 printf("12,\t %s\n",nametab[i-040]);
77 continue;
78 }
79 if(i == '-'){
80 printf("%d,\t %s\n",hyw,nametab[i-040]);
81 continue;
82 }
83 for(j=0; j<102; j++){
84 if(ascii[j] == i)break;
85 }
86 if(j == 102){
87 printf("0,");
88 zero++;
89 if(nametab[i-040]){
90 printf("\t %s\n",nametab[i-040]);
91 zero = 0;
92 }else if(i < 0177){
93 printf("\t /*%c*/\n",i);
94 zero = 0;
95 }
96 if(zero && !((i+1)%8)){
97 printf("\n");
98 zero = 0;
99 }
100 }else{
101 if(zero){
102 zero = 0;
103 printf("\n");
104 }
105 printf("%d",width[j]);
106 if(font[j].ctval)printf("+0%d00, ",font[j].ctval);
107 else printf(",\t ");
108 printf("%s\n",nametab[i-040]);
109 }
110 }
111 }
112