2010-03-19 4 views
10

PHP GD 라이브러리를 사용하여 내 페이지에 헤더를 만드는 동적 이미지를 만들고 있습니다. 문제는 라인 랩핑 시스템이 필요하다는 것입니다. 문제 자체는 아니지만 먼저 현재 문자의 너비 (픽셀 단위)를 가져와야합니다.PHP의 ttf-font에서 단일 문자의 너비를 가져 옵니까?

나는 이것에 대해 꽤 궁금해합니다. 어떤 방법이 있습니까? 또는 abc의 너비를 수동으로 지정해야합니까?

마르티 이네

답변

13

당신은 각 문자에 imagettfbbox()을해야 할 것입니다.

안된

하지만 작동합니다 :

$string = "Lorem Ipsum"; 
$size = 20; 
$angle = 0; 
$fontfile = "ARIAL.TTF"; 

$strlen = strlen($string); 
for ($i = 0; $i < $strlen; $i++) 
{ 
    $dimensions = imagettfbbox($size, $angle, $fontfile, $string[$i]); 
    echo "Width of ".$string[$i]." is ".$dimensions[2]."<br>"; 

} 
+0

이 빠른 답변 주셔서 감사합니다! –

+0

@ 마티 당신을 환영합니다. 만약 당신이 그것을 사용할 수있는 ImageMagick 고려 : http://www.imagemagick.org/Usage/text/#caption 상자에서 단어 감싸기 할 수있는 TTF 텍스트를 훨씬 더 잘 처리하지만 설치해야합니다. 서버에서 액세스 할 수 있습니다. –

+0

좋아, 나는 또한 그것을 검사 할 것이다. –

0

당신이

$string = "Lorem Ipsum"; 
$size = 20; 
$angle = 0; 
$fontfile = "./fonts/arial.ttf"; 

$dimensions = imagettfbbox($size, $angle, $fontfile, $string); 
print_r($dimensions); 

의 결과를 인쇄 할 경우 얻을 수 있습니다 같은 something` :

Array 
(
    [0] => -1 
    [1] => 5 
    [2] => 152 
    [3] => 5 
    [4] => 152 
    [5] => -20 
    [6] => -1 
    [7] => -20 
) 

각 인덱스는 여기서

당신은 문자열에서 각 문자의 총 합계 만약 내가 0

그것은 결과가 조금 이상한 상당히 마이너스 1 인덱스 얻을 수 있습니다 해달라고 인덱스 0 - 10

그래서 폭은 인덱스 2이어야한다 130 아니요 153.

관련 문제