Steve,
Check out the Graphics.MeasureCharacterRanges method which is generally
recognized as a more accurate way to measure a string than
Graphics.MeasureString.
Here is a snip of code that may push you in the right direction:
StringFormat textFormat = new StringFormat(StringFormat.GenericTypographic);
textFormat.SetMeasurableCharacterRanges(new CharacterRange[] { new
CharacterRange(0, this.Text.Length()) } );
Region characterRegion = graphics.MeasureCharacterRanges(this.Text,
this.Font, new RectangleF(0, 0, float.MaxValue, float.MaxValue),
textFormat)[0];
Then you can convert the region to a rect if you like.
Byron Cullen
ThunderTools