private static List <Tuple <string, Rectangle> > AddRectanglesToLayouter( CircularCloudLayouter layouter, List <string> words, int baseFontSize) { var graphicsBase = Graphics.FromImage(new Bitmap(1, 1)); var random = new Random(); var fontBase = new Font("Helvetica", baseFontSize); return(words.Select(s => { var variation = random.Next(16); return Tuple.Create(s, graphicsBase.MeasureString(s, fontBase) * variation); }).OrderBy(r => Tuple.Create(r.Item1, -r.Item2.Height)) .Select(s => Tuple.Create(s.Item1, layouter.PutNextRectangle(s.Item2.ToSize()))) .ToList()); }