A buffer is a coded set of bytes. A view has a decoder, a buffer, and a painter. The decoder needs to understand the newline code at a minimum. The painter paints glyphs and decides their (relative to the other characters) position and size. When something changes in the buffer, the decoder needs to notice. The painter needs to paint the new glyphs and at the correct position. Generally, glyphs at positions before the insert/delete position are not affected. Generally, glyphs _after_ that position that are not within view are affected, but they might as well be fixed later. All glyph positions and sizes can usually be reconstructed by traversing the buffer again, so conserve memory by not storing all glyph's positions, but just one per mark or so. Hence someone should have a "dirty starting from position" mark so that he knows.