You might like to look at conditional formatting using a formula on the field object on the print layout (not the input layout). It will probably require some testing to optimise the thresholds, but something like
Let ( [ t = <textfield> ;
len = Length ( t ) ;
sizeNum = Case ( len > 400 ; //Really long
5 ; //tiny text
len > 300 ; //Quite long
7 ; //quite small text
len > 200 ; //Long-ish
9 ; //small-ish text
len > 100 ; //OK
10 ; //slightly reduced text
12 ) ] ; //normal size text for entries shorter than 100 characters
TextSize ( t ; sizeNum )
might be a good place to start.
You will need to fiddle the threshold numbers (100, 200, 300, 400) and their matching text sizes (10, 9, 7, 5) to get the result you want.
If you use a non-proportional font such as Courier, you can get pretty using Rob's suggestion!
Fonts will grow in height as well so give that SHOUT field plenty of height and center the text vertically as well as horizontally.
Obviously you can change Rob's character counts to suit your circumstances...
You may also be able to do this with a web viewer and describe your text size by 100%.
I was thinking about Robs calc... and hypothesising an alternative way with no conditions... Here is my 2 cents:
If the max font size were say 48pt...
If x were character count and y was 48 pt
y/x would give you the factor that you then multiply 48pt by to get the appropriate font size... and round it down to the nearest whole point.
Sent from my iPad
11th Hour Group Pty Ltd
whoops... I forgot the max characters aspects...
let's make z the max characters at 48pt
then the factor calc is (y*z)/x
... I think...
I need to go to my computer to confirm this...
I'll give these a try, tomorrow. Its late and i still gotta wake up and grade papers and plan a lesson before 8:45 tomorrow.