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 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