2011-07-14 9 views
2

のは、以下の画像を見てみましょう: imagemagickフォントメトリック - グリッドにテキストを配置する方法は?

enter image description here

私は水平グリッドを持っていると私はこのグリッド内のテキストを配置したいです。上記の例は間違っています。なぜなら、各文字はグリッドのセルの1つに正確に配置されているからです。

これを実現するためにimagemagickのテキスト出力を調整できるのであれば、なしで、の文字をそれぞれ独自のコマンドで配置する必要はありません。

いくつかの追加の事実:

  • 私はImageMagickののMVGとかなり複雑な図面をやっているいくつかのシェルスクリプト
  • からのImageMagickを使用しています - ので、テキストはまだして配置することができれば、それはいいだろうMVGコマンド
  • グリッドの幅を数ピクセル調整することができますが、これはソリューションに必要な場合はもちろん、すべてのセルの幅が同じである必要があります。
  • 私は常に同じ固定このための幅フォント(Courier)
  • 私は唯一の水平配置を気に私のシェルスクリプトにフォントメトリックスを解析し、私のテキストコマンド
  • に値を適用するには、この情報を使用することができる午前私は、各行に個別
  • をレンダリングするので、縦配置は重要ではありません

これをすべて念頭に置いて - 私の問題の解決策はありますか?

ありがとうございます!

答えて

2

カーニングオプション - 文字間隔を設定することができます。

for i in 0 3 6 9 12 15 
do 
    convert -kerning $i -font Courier -pointsize 24 label:":Kerning $i:" label_$i.jpg 
done 

は次の画像を生成します。グリッドに合わせて適切なカーニング値を見つけなければなりません。 (固定幅フォントのため - あなたの宅配便のように)あなたがグリッドに強制したい非モノに型指定されたフォントを使用している場合

enter image description here

+0

これは確かに非常に興味深い - 私はそれを見て、非常にありがとう! – aurora

1

、このスクリプトを使用することができます。

#!/usr/bin/env bash 
rm test*png 

font=~/Library/Fonts/WittenbergerFrakturMTStd.otf 
gridsize=32x32 

chr() { 
    case "$1" in 
     64) echo '\@' ;; 
     92) echo '\\' ;; 
     * ) printf \\$(printf '%03o' $1) 
    esac 
} 

for i in {32..127}; do 
    c=$(chr $i) 
    echo -n "$c: " 
    convert -background transparent -density 90 -pointsize 12 -gravity center -font "$font" label:"$c" -extent $gridsize test-$i.png 
done 

convert test-{32..127}.png +append test.png 
関連する問題