/* * Create a font descriptor for a font included in a psfile. There will be * no fontmaptype node for the resulting font descriptor until this font is * encountered by fontdef() (if that ever happens). */ static fontdesctype * ifontdef(char *name, char *area, int scsize, int dssize, char *scname) { fontdesctype *fp; fp = newfontdesc((integer)0, scsize, dssize, name, area); fp->scalename = scname; fp->next = fonthead; fonthead = fp; return fp; }
vfontdef P2C(integer, s, int, siz) { register integer i, j, fn ; register fontdesctype *fp ; register fontmaptype *cfnt ; char *nam, *area ; integer cksum, scsize, dssize ; fn = vfbyte() ; while (siz-- > 1) fn = (fn << 8) + vfbyte() ; cfnt = (fontmaptype *)mymalloc((integer)sizeof(fontmaptype)) ; cfnt->fontnum = fn ; cksum = vfquad() ; scsize = scalewidth(s, vfquad()) ; dssize = (integer)(alpha * (real)vfquad()) ; i = vfbyte() ; j = vfbyte() ; if (nextstring + i + j > maxstring) error("! out of string space") ; area = nextstring ; for (; i>0; i--) *nextstring++ = vfbyte() ; *nextstring++ = 0 ; nam = nextstring ; for (; j>0; j--) *nextstring++ = vfbyte() ; *nextstring++ = 0 ; fp = matchfont(nam, area, scsize, (char *)0) ; if (fp) { nextstring = nam ; fp->checksum = cksum ; } else { fp = newfontdesc(cksum, scsize, dssize, nam, area) ; fp->next = fonthead ; fonthead = fp ; } cfnt->desc = fp ; return (cfnt) ; }