The following works in V2007, should be good for V2010 & V2013. Note, you only need a single user entry, e.g. user.row_1, but, name it whatever you desire. The formula is:
=SETF(GetRef(Char.FontScale),BOUND(GetVal(Char.FontScale)*Width/TEXTWIDTH(TheText),0,FALSE,2%,100%)). Note the absence of quotes! Changing the character scaling only reduces (or increases) the width. The font height is unchanged.
You can do something similar with the character size cell. (But, don't do both. Gets weird.) This reduces the font size, so, if the text is really long, the font gets really small:
=SETF(GetRef(Char.Size),BOUND(GetVal(Char.Size)*Width/TEXTWIDTH(TheText),0,FALSE,2 pt,14 pt)). The other disadvantage is that you have to enter the maximum font size in the bound function manually.
@Yousuf: nice work using the GetVal function!
HTH
Wapperdude.