--- ray/src/common/font.c 1992/09/21 12:02:03 2.5 +++ ray/src/common/font.c 1993/05/14 11:30:17 2.7 @@ -124,6 +124,29 @@ memerr: } +freefont(fname) /* free a font (free all if fname==NULL) */ +char *fname; +{ + FONT head; + register FONT *fl, *f; + register int i; + + head.next = fontlist; + fl = &head; + while ((f = fl->next) != NULL) + if (fname == NULL || !strcmp(fname, f->name)) { + fl->next = f->next; + for (i = 0; i < 256; i++) + if (f->fg[i] != NULL) + free((char *)f->fg[i]); + freestr(f->name); + free((char *)f); + } else + fl = f; + fontlist = head.next; +} + + int uniftext(sp, tp, f) /* uniformly space text line */ register short *sp; /* returned character spacing */ @@ -191,9 +214,9 @@ int nsi; /* minimum number of spaces for indent */ /* start by squeezing it */ squeeztext(sp, tp, f, cis); /* now, realign spacing */ - len = 0; - width = alen = *sp++; + width = *sp++; while (*tp) { + len = alen = 0; nsp = sp; for (end = tp; *end; end = tab) { tab = end + 1; @@ -217,8 +240,6 @@ int nsi; /* minimum number of spaces for indent */ *sp++ += alen; len -= alen; } - len = 0; - alen = 0; tp = tab; } return(width);