width functions, sizes and fonts
char fontfile
[] = "/usr/lib/font/ftXX";
extern char W1
[],W2
[],W3
[],W4
[];
char *fontab
[] = {W1
,W2
,W3
,W4
};
int fontlab
[] = {'R','I','B','S',0};
char pstab
[] = {6,7,8,9,10,11,12,14,16,18,20,22,24,28,36,0};
char psctab
[] = {010,000,001,007,002,003,004,005,0211,006,
0212,0213,0214,0215,0216,0};
if((i
= (j
& CMASK
)) == 010){
if(i
== PRESC
)i
= eschar
;
if((j
>>BYTE
) == oldbits
){
if(!trflg
)i
= trtab
[i
] & BMASK
;
if((i
-= 32) < 0)goto rtn
;
if((code
= codetab
[i
]) & 0200){
if(xfont
== (sbold
-1))bd
= bdtab
[smnt
-1];
else k
= *(p
+ i
) & BMASK
;
if(setwdf
)v
.ct
|= ((k
>>6) & 3);
k
= (j
= (k
&077)*(xpts
&077))/6;
if(ccs
= ccstab
[xfont
])x
= ccs
; else x
= xpts
;
cs
= (j
= (cs
&077)*(x
&077))/6;
if(!bd
)bd
= bdtab
[xfont
];
if((j = i >> BYTE) == oldbits){
if(psctab
[k
] < 0)xpts
|= DBL
;
if((i
= getrq()) == 0)return(0);
for(j
=chtab
;*j
!= i
;j
++)if(*(j
++) == 0)return(0);
if(((i = find('R',fontlab)) < 0) &&
((i = find('G',fontlab)) < 0))
else return((k & ~(03<<(BYTE+1))) | (i<<(BYTE+1)));
if(((k
= i
-'0') >= 1) && (k
<= 4) && (k
!= smnt
))return(--k
);
for(k
=0; j
[k
] != i
; k
++)if(j
[k
] == 0)return(-1);
if(skip() || !(i
= getrq()) ||
((j
= find(i
,fontlab
)) == -1)){
if((j
==font
) && fz
[j
].inc
)savinc
= fz
[j
].inc
;
fz
[j
].inc
= fz
[j
].sign
= fz
[j
].size
= 0;
if(((i
=((k
=getch()) & CMASK
)) == '+') || (i
== '-'))fz
[j
].sign
= i
;
if(j
==font
)casps1(apts
+ savinc
);
else if(j
== smnt
-1)mchbits();
for(j
=0; i
> (k
= pstab
[j
]);j
++)if(!k
){k
=pstab
[--j
];break;}
if(psctab
[j
] < 0)k
|= DBL
;
for(j
=0; i
> (k
= pstab
[j
]);j
++)if(!k
){k
=pstab
[--j
];break;}
chbits
= (((++j
)<<2) | font
) << (BYTE
+ 1);
sps
= width(' ' | chbits
);
i
= findps(getfz(smnt
-1, apts
+ fz
[font
].inc
));
for(j
=0; i
> (k
= pstab
[j
]);j
++)if(!k
){k
=pstab
[--j
];break;}
spbits
= (((++j
)<<2) | font
) << (BYTE
+ 1);
else if(j
== '-')i
= y
- i
;
if((((i
=getch() & CMASK
) == '+') || (i
== '-')) &&
(((j
=(ch
= getch() & CMASK
) - '0') >= 0) && (j
<= 9))){
((j
=(ch
= getch() & CMASK
) - '0') >= 0) && (j
<= 9)){
if((j
= find(i
,fontlab
)) == -1)return;
casps1(apts
+ fz
[font1
].inc
);
int savlevel
, savhp
, savapts
, savapts1
, savfont
, savfont1
,
base
= v
.st
= v
.sb
= wid
= v
.ct
= 0;
if((delim
= getch() & CMASK
) & MOT
)return;
while((((i
= getch()) & CMASK
) != delim
) && !nlflg
){
if(base
< v
.sb
)v
.sb
= base
;
if((k
=base
+ em
) > v
.st
)v
.st
= k
;
else if(k
== 'r')i
= -2*i
;
switch((j
= getch0()) & CMASK
){
if(lg
!=2){switch((k
=getch0()) & CMASK
){
return((i
& ~CMASK
) | j
);
if(((i
= (getch() & CMASK
) - '0' -1) < 0) || (i
>3)){prstr("fp: bad font position\n"); return;}
if(skip() || !(j
= getrq())){prstr("fp: no font name\n"); return;}
fontfile
[ffi
] = j
& BMASK
;
fontfile
[ffi
+1] = j
>>BYTE
;
if((k
= open(fontfile
,0)) < 0){
if(lseek(k
,8L * sizeof(int),0) < 0)goto c1
;
if(read(k
,fontab
[i
],256-32) != 256-32){
if(i
== (smnt
-1)){smnt
= 0; sbold
= 0; spsz
= 0;}
if((fontlab
[i
] = j
) == 'S')smnt
= i
+ 1;
bdtab
[i
] = cstab
[i
] = ccstab
[i
] = 0;
fz
[i
].inc
= fz
[i
].sign
= fz
[i
].size
= 0;
((i
= find(i
,fontlab
)) < 0))goto rtn
;
if(!nonumb
)ccstab
[i
] = findps(j
);
if(skip() || !(i
= getrq()) ||
((j
= find(i
,fontlab
)) == -1)){
dfact
= 6; /*default scaling is points!*/
sps
= width(' ' | chbits
);
ch0
= ((j
& 03700)<<3) | HX
;
return(((j
& 077)<<9) | LX
);