2009-10-29 2 views
19

フォントサイズ(12)とフォントファミリ(calibri)が分かっている場合、レンダリング後に指定された文字列が長さ(ピクセル単位)を決定する方法はありますか?私はフォントとサイズについて絶対に確信しています。この目的のためにPHPコード自体の長さを調べるルックアップテーブルはありますか?私はDBから引き出されたデータで満たされた様々なボックスを含むSVGイメージを動的に生成するPHPスクリプトを書いています。問題は、文字列が大きければ手動でテキストを囲み、ボックスのサイズを大きくする必要があることです。ウェブページに表示される文字列の長さ(ピクセル単位)を調べる方法は?

おかげ

答えて

16

が与えられた文字列のバウンディングボックスのサイズを取得するPHP関数imagettfbboxを使用してください。

javascript to manipulate SVG imagesの場合は、クライアント側で処理したい場合もあります。あなたがテキストの文字列の長さを決定する場合、クライアントはPHPのビルドインを使用して、指定されたフォントやない...

+1

は、私が答えを出したときに考えていた機能であった...私の記憶はそれまでと同じほど良くはない... – jsnfwlr

3

あなたのタイトルと実際の投稿が若干異なる事を言っているように見えます。あなたが実際に尋ねるのは、Webページにレンダリングされたテキストの幅をピクセル単位で判断することが可能かどうかです(Webページがレンダリングされる前に)です。

もしそうなら、答えは "いいえ"です。このフォントは、ユーザーのコンピュータで利用できない場合があります。彼はカスタムスタイルシートを適用しているかもしれません。大きなフォントサイズを使用する。あなたは、ページがレンダリング(明らかに、あなたはそのいくつかの他のページでもやるし、何もそれまで変化しない望むことができる)と、その提出された後のjavascript を使用して、その幅を決定です何ができるかなど...

PHPに戻る。巧妙なAJAX-ingでは、同じページでもこれを行うことができます。

JavaScriptでこれを行う方法の詳細についてはthis questionをご覧ください。

+1

私の編集をご覧ください。それは私の目的を解決していません:( –

+1

@ ChssPly76 - 私は同意していませんクリムソンは画像を生成するためにPHPを使用していますそれはサーバー側で行われているので、フォントは確実に利用可能になります – Abinadi

+0

@Abinadi - クリムゾンは、ブラウザ**でレンダリングしたときに文字列にかかるピクセル数を求めていますが、レンダリングしている画像ではなく、少なくとも理解しています。 – ChssPly76

13

PHP GDを使用して、文字列をイメージとしてレンダリングし、結果のイメージのサイズを取得できます。あなたがこれを使用する場合

、それが動作するはずです:

list($left,, $right) = imageftbbox(12, 0, "arial.ttf", "Hello World"); 

    $width = $right - $left; 
+0

Crimsonが文字列をイメージとしてレンダリングしているようですが、問題は文字列が正しく収まるようにイメージを作成するためのサイズです。それはGDライブラリで行うことができますか?私はGDの単語ラップオプションがないと思いました。 – Abinadi

+0

+1 GDが役に立つと思われます –

+0

phalacee、私は文字列の幅を決定する方法をGDで見つけることができません。文字列を書くことができる前に画像幅と高さパラメータでimagecreate()を呼び出す必要があるようです。( –

3

使用jQueryの、

$("text").each(function(){alert(this.innerHTML+" is "+$(this).width()+" pixels.");}); 
2

を持っていた場合はその方法は、それも問題ではないだろう(あなたがするimagestringを()を使用している場合など)-Fonts、あなたが使用することができます。

imagefontwidth() 


$text = "Your text here" 
$fontSize = 5; 

$textLength = imagefontwidth($fontSize) * strlen($text); 

前述したようにあなたは、ビルド・イン・フォント、使用imagettfbbox()を使用しない場合。

関連する問題