1

私はRubygameを使用して、文字列の各文字幅を文字列の全幅のパーセンテージとして決定しようとしています...

「rubygems」が必要
「rubygame」が必要

Rubygameを含める

TTF.setup

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

合計=0

「こんにちはTrueTypeテキスト!私の名前はDavideです」.each_chardo | c |
  サイズ=$font.size_text c

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

  合計=合計+サイズ[0]
終わり

puts "Size:#{$ font.size_text('Hello TrueType text!My name is Davide')[0]}"
「合計:#{合計}」を置きます
puts "Difference:#{total-$ font.size_text('Hello TrueType text!My name is 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 に答える