Character widths of fonts are not equal. "mmmmm" being a lot wider than "lllll" in an extreme example. Is the caching thought meant to just be a best effort? Assume that the Image names will be similar?

I also worry about the performance of these loops on hierarchies containing large Image countsl. Do you have a feel for the overhead?