Home |
Licence |
FAQ |
Docs |
Download |
Keys |
Links
Mirrors |
Updates |
Feedback |
Changes |
Wishlist |
Team
There's a two-pronged problem with fonts whose characters overlap outside their designated rectangular cell.
do_text()
is clipped to the rectangle it should be in;
but within that string there's still scope for overlap
between character cells. If half the string is then updated then
there will be artefacts left on the screen. This seems to be
particularly common when using ClearType in Windows XP.
Simon has a cunning idea for dealing with this. The plan is that whenever we paint a string on the screen, we clip it to its bounding rectangle (this should happen already), and then whenever we change the contents of the rectangle, we always re-paint the whole thing, splitting it into smaller rectangles, or joining rectangles together as appropriate. This way, we never leave droppings behind, because whenever a character is erased, the entire clipping box that was in force when it was painted is cleared as well. Unfortunately, implementing this is likely to involve substantial changes to the way PuTTY stores the contents of the screen.
SGT, 2004-12-17: I think this is now done. I've tested it in a known failure case on Windows (1600x1200 screen, set font to Courier New 11, set resize behaviour to change-font, maximise window, the lower case m then projects over its character cell) and it now appears not to cause any droppings no matter what I do.
Audit trail for this bug.