Я получил это работает. Мне нужно было получить доступ к свойству виджета элемента, а затем преобразовать его в текст:
var text = finder.evaluate().single.widget as Text;
print(text.data);
Необходимо использовать драгоценный камень RMagick для рендеринга объекта "Ничьей" использование шрифта, который Вы хотите (можно загрузить .ttf файлы и такой),
Код выглядел бы примерно так:
the_text = "TheTextYouWantTheWidthOf"
label = Draw.new
label.font = "Vera" #you can also specify a file name... check the rmagick docs to be sure
label.text_antialias(true)
label.font_style=Magick::NormalStyle
label.font_weight=Magick::BoldWeight
label.gravity=Magick::CenterGravity
label.text(0,0,the_text)
metrics = label.get_type_metrics(the_text)
width = metrics.width
height = metrics.height
Вы видите его в действии в моем производителе кнопок здесь: http://risingcode.com/button/everybodywangchungtonite
Вы могли попытаться составить standarized "таблица пропорции ширины" для вычисления приближения, в основном необходимо сохранить ширину каждого символа и затем пересечь строковое сложение ширин.
Я нашел эту таблицу здесь:
Left, Width, Advance values for ArialBD16 'c' through 'm'
Letter Left Width Advance
c 1 7 9
d 1 8 10
e 1 8 9
f 0 6 5
g 0 9 10
h 1 8 10
i 1 2 4
j -1 4 4
k 1 8 9
l 1 2 4
m 1 12 14
Если бы Вы хотите стать серьезными, я запустил бы путем рассмотрения WebKit, геккона и OO.org, но я предполагаю, алгоритмы для кернинга и вычисления размера не тривиальны.