i wrote a ttf renderer in limbo. worked good on well designed fonts and
the others just look shitty at say 9 point.
it's a bit like html though in that fonts are often malformed and you
have to cope with the mistakes.
brucee
On 3/23/06, Russ Cox <[EMAIL PROTECTED]> wrote:
> > /home/quanstro/cvs/plan9/ /usr/local/plan9/src/libframe/frdraw.c:14,20 -
> > frdraw.c:14,20
> > for(nb=0,b=f->box; nb<f->nbox; nb++, b++){
> > _frcklinewrap(f, &pt, b);
> > if(!f->noredraw && b->nrune >= 0)
> > - string(f->b, pt, f->cols[TEXT], ZP, f->font, (char
> > *)b->ptr);
> > + stringbg(f->b, pt, f->cols[TEXT], ZP, f->font, (char
> > *)b->ptr, display->white, ZP);
> > pt.x += b->wid;
> > }
> > }
>
> who says the background is white?
> frinsert, the only caller of _frredraw in the library,
> does appear to draw the background first, at least
> the beginning of it.
>
> > /home/quanstro/cvs/plan9//src/libframe/frdraw.c:99,105 - frdraw.c:99,105
> > x = f->r.max.x;
> > draw(f->b, Rect(pt.x, pt.y, x, pt.y+f->font->height), back,
> > nil, pt);
> > if(b->nrune >= 0)
> > - stringn(f->b, pt, text, ZP, f->font, ptr, nr);
> > + stringnbg(f->b, pt, text, ZP, f->font, ptr, nr,
> > display->white, ZP);
> > pt.x += w;
> > Continue:
> > b++;
>
> this one shouldn't be necessary. the draw call above
> just drew the background, which again might not be white.
>
> the right fix is to edit 9term's wrepaint. it should draw
> the background before calling _frredraw.
>
> it's possible that frinsert needs to be edited a little
> too, to make sure only to _frredraw the part whose
> background it just filled in with frselectpaint.
>
> i leave all this as an exercise to the interested reader.
>
> russ
>
>