| # include "e.h" |
| |
| void setfont(char *ch1) |
| { |
| yyval = ft; |
| if (strcmp(ch1, "I") == 0) { /* I and italic mean merely position 2 */ |
| *ch1 = '2'; |
| ft = ITAL; |
| } else if (strcmp(ch1, "B") == 0) { /* and similarly for B & bold */ |
| *ch1 = '3'; |
| ft = BLD; |
| } else if (strcmp(ch1, "R") == 0) { /* and R and roman */ |
| *ch1 = '1'; |
| ft = ROM; |
| } else { |
| ft = ROM; /* assume it's a roman style */ |
| } |
| ftp++; |
| if (ftp >= &ftstack[10]) |
| ERROR "font stack overflow (10)" FATAL; |
| ftp->ft = ft; |
| if (ch1[1] == 0) { /* 1-char name */ |
| ftp->name[0] = *ch1; |
| ftp->name[1] = '\0'; |
| } else |
| sprintf(ftp->name, "(%s", ch1); |
| dprintf(".\tsetfont %s %c\n", ch1, ft); |
| } |
| |
| void font(int p1, int p2) |
| { |
| /* old font in p1, new in ft */ |
| yyval = p2; |
| lfont[yyval] = rfont[yyval] = ft==ITAL ? ITAL : ROM; |
| ftp--; |
| ft = p1; |
| } |
| |
| void globfont(void) |
| { |
| char temp[20]; |
| |
| getstr(temp, sizeof(temp)); |
| yyval = eqnreg = 0; |
| if (strcmp(temp, "I") == 0 || strncmp(temp, "it", 2) == 0) { |
| ft = ITAL; |
| strcpy(temp, "2"); |
| } else if (strcmp(temp, "B") == 0 || strncmp(temp, "bo", 2) == 0) { |
| ft = BLD; |
| strcpy(temp, "3"); |
| } else if (strcmp(temp, "R") == 0 || strncmp(temp, "ro", 2) == 0) { |
| ft = ROM; |
| strcpy(temp, "1"); |
| } else { |
| ft = ROM; /* assume it's a roman style */ |
| } |
| ftstack[0].ft = ft; |
| if (temp[1] == 0) /* 1-char name */ |
| strcpy(ftstack[0].name, temp); |
| else |
| sprintf(ftstack[0].name, "(%.2s", temp); |
| } |
| |
| void fatbox(int p) |
| { |
| extern double Fatshift; |
| |
| yyval = p; |
| printf(".ds %d \\*(%d\\h'-\\w'\\*(%d'u+%gm'\\*(%d\n", p, p, p, Fatshift, p); |
| } |