当前位置:  开发笔记 > 后端 > 正文

如何在Ruby中计算String的宽度?

如何解决《如何在Ruby中计算String的宽度?》经验,为你挑选了1个好方法。

String.length只会告诉我String中有多少个字符.(事实上​​,在Ruby 1.9之前,它只会告诉我有多少字节,这些字节的用处更少.)

我真的希望能够找出一个字符串的'en'宽度.例如:

'foo'.width
# => 3

'moo'.width
# => 3.5          # m's, w's, etc. are wide

'foi'.width
# => 2.5          # i's, j's, etc. are narrow

'foo bar'.width
# => 6.25         # spaces are very narrow

如果我能得到nString 的第一个en,那就更好了:

'foo'[0, 2.en]
# => "fo"

'filial'[0, 3.en]
# => "fili"

'foo bar baz'[0, 4.5en]
# => "foo b"

如果我可以策划整个事情,那就更好了.有些人认为空间应该是0.25en,有些人认为它应该是0.33等.



1> 小智..:

您应该使用RMagick gem使用您想要的字体渲染"Draw"对象(您可以加载.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


只需确保将字体大小设置为“ label.pointsize = THE_SIZE”,否则RMagick的默认字体大小为12。
推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有