2017-07-27 21 views
0

私は現在Interventionクラスを使用して画像にテキストを書いています。PHPで複数のフォントを含むテキストを書き込む

書き込みはtext()メソッドを使用して容易に可能である:

$img->text('The quick brown fox jumps over the lazy dog.', 120, 100); 

Documentation

が、私の問題は、私は別のフォントを持つ単語の各文字をしたいということです。たとえば、単語testを想像すると、それぞれの文字は異なるフォントを使用する必要があります。例えば、testという単語で次の文字を開始する位置を見つけることができないので、これは簡単ではありません。tを書き込んで、メソッドを呼び出すときに、どこに私は、文字etの直後になるように位置を設定しました。

最後の文字のpositionを取得して、最後の文字が書き込まれる次の文字を書き始めることができますか?またはこれを達成する他の方法がありますか?

+0

私のウェブページ上でいくつかの方法を使用していますが、それは何かを覚えていません。それがあなたのために働くかどうかは分かりません。しかし、私は今寝るつもりです。あなたがまだそれを解決していなければ、明日それを見ることができます。ちょうど@私はこのスレッドを忘れないので。 – Andreas

+0

@アンドレアス@あなた:) – behz4d

+0

ハハ!まだ布団にいる。しかし、私がベッドから落ちるとき、私はそれを見るでしょう。 – Andreas

答えて

1

これは、文字列の幅を取得するために使用する方法です。
私はimagettftext()を使用していますので、あなたには合わないかもしれません。しかし、このコードは動作します。
ですから、

$type_space = imagettfbbox($size, 0, $font, $text); // 0 = angle 
$text_width = abs($type_space[4] - $type_space[6]); 

imagettfbboxは、値の配列を返します...何もして動作するコードの間で選択する必要があります。
0左下隅、X位置
1左下隅、Y位置
2:
http://php.net/manual/en/function.imagettfbbox.php

Imagettfbbox()テキストのバウンディングボックスを構成する4点を表す8つの要素を持つ配列を返します右下隅、X位置
3右下隅、Y位置
4右上、X位置
5右上、Y位置
6左上のXの幅を意味するべきである - 左上隅、X位置
7左上、Y位置

コードは、右上Xをとります。

関連する問題