1

我正在尝试使用 Rubygame 将字符串的每个字符宽度确定为字符串总宽度的百分比......

需要“红宝石”
需要“rubygame”

包括 Rubygame

TTF.setup

$font = TTF.new "/Library/Fonts/Times New Roman.ttf", 40

总计 = 0

"Hello TrueType text!我的名字是 Davide".each_char do |c|
  大小 = $font.size_text c

  #puts "字符:#{c} - #{size[0]}/#{total}"

  总计 = 总计 + 大小[0]
结尾

puts "Size: #{$font.size_text('Hello TrueType text! My name is Davide')[0]}"
提出“总计:#{total}”
提出“差异:#{total - $font.size_text('Hello TrueType text!我的名字是 Davide')[0]}”

上述字符串的程序输出是......

尺寸:642
总计:650
差异:8

...并且根据字符串的长度和内容而有所不同。

结果很接近,但是...有谁知道为什么字符宽度之和与字符串宽度之和相差8?

任何帮助将不胜感激...

干杯...

戴维德

PS我也愿意接受有关其他/更好的方法的建议。

4

1 回答 1

1

结果很接近,但是...有谁知道为什么字符宽度之和与字符串宽度之和相差8?

是的:因为一个好的 TrueType 字体,就像任何好的字体一样,会被布局引擎紧缩。 http://en.wikipedia.org/wiki/Kerning

在使用可变宽度字体进行布局时 - 您想要 - 始终使用完整的字符串宽度。每个字符的数字是没有意义的。(......而且,实际上,“正确”的做法是使用为你做布局的东西 。Pango是一个这样做的项目;去数一下代码行数,并考虑你是否真的想写那个你自己。)

于 2012-01-31T02:55:35.327 回答