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