2012-02-25 7 views
2

私はRMagickを使用しています。ユーザーが設定した背景色で、テキストを縦または横に(ユーザーの入力に依存して)描画します。奇妙な問題に遭遇しました.get_type_metrics(text)は無効なデータを返します。実際の幅/高さは、メソッドによって返される値よりも小さい。Ruby&RMagick:テキストの実際の幅と高さを確認する

私は上昇値/下降値で遊んでいましたが、運はありませんでした。決定する方法はありますかテキスト文字列の幅/高さですか?私はカップルのソリューションが空の画像上にテキストを描画し、幅の高さを決定し、ピクセルごとに画像全体を見ているのを見ましたが、愚かで本当にリソースを消費します。また、私はPHP GDが同じ問題と解決策を持っていることを発見しました。

P.S.ユーザーがバックグラウンドボックスのサイズを変更できる必要があるため、Draw#annotateは使用できません。

答えて

3

私が見つけてきたように、FreeType Glyph Conventionsで文書化され、テキストのあなたの本当の幅&高さがこの


gc = Magick::Draw.new { ... } 
# *** setup gc with font, stroke, pointsize, ... *** THATS IMPORTANT! 
metrics = gc.get_type_metrics("your text") 
box_width = metrics.width # this one is ok by default 
box_height = (metrics.bounds.y2 - metrics.bounds.y1).round # this is the actual heihgt 
のように決定され TypeMetric構造体の boundsメンバー(RMagickで)そこに文書化されていないです
関連する問題