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
>
>

Reply via email to