The problem with a "direct width" approach is "what do you mean?" the width in characters does not make sense because there are subscripts involved. If all text were the same size then you can compute the string length. As soon as you get into Mathematica expressions, there is no more connection to strings. In fact, to understand how Mathematica represents your tuples, click on one and hit CMD-Shift-E. you will see the actual internal representation of the expression -- it is not a string by any means. It formats into boxes and then separately renders the boxes for the screen. For example:
If your tuple is
Then the internal representation is actually:
Cell[BoxData[
TagBox[
RowBox[{"{",
RowBox[{
InterpretationBox[
SubscriptBox["\<\"f\"\>", "\<\"16\"\>"],
15,
Editable->False], ",",
InterpretationBox[
SubscriptBox["\<\"3\"\>", "\<\"16\"\>"],
3,
Editable->False], ",",
InterpretationBox[
SubscriptBox["\<\"0\"\>", "\<\"16\"\>"],
0,
Editable->False]}], "}"}],
BaseForm[#, 16]& ]], "Output",
CellChangeTimes->{3.788545301833375*^9},
CellLabel->"Out[143]//BaseForm="]
In summary, I think your only viable approach is to see how the text rasterizes and use that as a length indicator. It will be very accurate and is easy. Besides, isn't that what you actually care about?
I still recommend you talk to Wolfram. Maybe they have a different idea.
Regards,
Neil