确定字符串实际长度而不仅仅是字符数

时间:2013-04-17 11:50:31

标签: ruby-on-rails ruby ruby-on-rails-3

是否有ruby \ rails方式来确定字符串长度?
(下面有一个示例,ab长度等于10个字符,但实际长度却完全不同)

e.g。
a = lllllllllll
b = WWWWWWWWWWWW

字体也应该被视为

P.S。
最终在客户端使用https://github.com/tbasse/jquery-truncate

2 个答案:

答案 0 :(得分:1)

从服务器端,绝对无法知道字符串的像素宽度。您可以通过使用您在CSS中指定的相同字体呈现字符串来猜测,但是最终用户可以在浏览器中覆盖这些设置,从而使您的猜测无效。或者,用户可能没有您使用的字体,并且浏览器会替换来自类似系列的字体,该系列对于某些字符具有不同的宽度;结果将再次与您的想法不同。

唯一的方法是,如果可能的话,就是在用户的浏览器中使用JavaScript,根据任何用户CSS指定的最终渲染字体的计算,然后将其返回到您的服务器进一步处理,但这确实打破了网络和浏览器如何工作的想法。

答案 1 :(得分:0)

回复在这里

How do I calculate a String's width in Ruby?

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