Как я вычисляю ширину Строки в Ruby?

Я получил это работает. Мне нужно было получить доступ к свойству виджета элемента, а затем преобразовать его в текст:

var text = finder.evaluate().single.widget as Text;
print(text.data);
6
задан James A. Rosen 18 December 2008 в 19:17
поделиться

2 ответа

Необходимо использовать драгоценный камень 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

14
ответ дан 8 December 2019 в 03:55
поделиться

Вы могли попытаться составить 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, но я предполагаю, алгоритмы для кернинга и вычисления размера не тривиальны.

4
ответ дан 8 December 2019 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: