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
如果我能得到n
String 的第一个en,那就更好了:
'foo'[0, 2.en] # => "fo" 'filial'[0, 3.en] # => "fili" 'foo bar baz'[0, 4.5en] # => "foo b"
如果我可以策划整个事情,那就更好了.有些人认为空间应该是0.25en,有些人认为它应该是0.33等.
您应该使用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