More work on accurate size tracking.

I think the current approach is going to be final, but it's still not
finish.  I'd also like to integrate it with internalisation.