是否有 ruby\rails 方法来确定字符串长度?
(下面有一个例子a
,b
长度都等于 10 个字符,但实际长度完全不同)
例如
a = lllllllllll
b = WWWWWWWWWWW
字体也应该考虑
PS最终在客户端
使用https://github.com/tbasse/jquery-truncate
是否有 ruby\rails 方法来确定字符串长度?
(下面有一个例子a
,b
长度都等于 10 个字符,但实际长度完全不同)
例如
a = lllllllllll
b = WWWWWWWWWWW
字体也应该考虑
PS最终在客户端
使用https://github.com/tbasse/jquery-truncate
回复在这里
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
从服务器端绝对无法知道字符串的宽度(以像素为单位)。您可以通过使用您在 CSS 中指定的相同字体渲染字符串来进行猜测,但是最终用户可以在他们的浏览器中覆盖这些设置,从而使您的猜测无效。或者,用户可能没有您使用的字体,而浏览器会替换为类似系列的字体,该字体对于某些字符具有不同的宽度;结果又会和你想的不一样。
如果可能的话,唯一知道的方法是在用户的浏览器中使用 JavaScript,根据任何用户 CSS 指定的最终渲染字体的计算,然后将其返回到您的服务器以进行进一步处理,然而,这确实打破了网络和浏览器如何工作的想法。