imageTTFText で縦書きにする方法


検索しても出てこなかったので、文字ごとにバラして
一つづつ書き出し>高さ調整 を繰り返してたんですが、
その場合、一つ一つの高さを足していって合計を出したりとか
結構めんどくさいので、なんとかならんもんかと思ってたんですが、
実は単純に改行挟めばいいだけでした。

なので、こんな感じに

//文字列を1文字づつ配列にする。マルチバイトがないのであれば、str_splitでも可能
$l = mb_strlen($string,'UTF-8');
$chunked = array();
for ($i=0; $i<$l; $i++) {
  $chunked[] = mb_substr($string,$i,1,'UTF-8');

}

//配列を改行でjoin
$verticalString = join("\n",$chunked);

//指定のイメージデータに書き込み
imageTTFText($img,$fontSize,$angle,$x,$y,$color,$font,$verticalString);

単純にばらして改行でJOINしてからTTFTEXTにつっこめば問題なく改行してくれます。
ただ等幅フォントじゃないと微妙に縦がおかしいかんじですが。


Leave a Reply