현재 위치: > 최신 기사 목록> ImageFontWidth () 함수가 사용자 정의 글꼴과 호환되지 않는 이유는 무엇입니까? 자세한 설명 및 솔루션

ImageFontWidth () 함수가 사용자 정의 글꼴과 호환되지 않는 이유는 무엇입니까? 자세한 설명 및 솔루션

M66 2025-05-26

PHP에서 ImageFontWidth () 함수는 내장 글꼴의 문자 너비를 얻는 데 사용됩니다. 이 기능의 목적은 이미지의 문자열의 디스플레이 너비를 계산하기 위해 GD 라이브러리가 제공 한 내장 글꼴 (숫자 1 ~ 5)과 함께 사용됩니다. 간단하고 사용하기 쉽지만 ImageFontWidth () 함수는 종종 개발자를 혼란스럽게하는 Truetype 글꼴과 같은 사용자 정의 글꼴을 사용할 때 작동하지 않습니다.

이 기사에서는 ImageFontWidth () 함수가 사용자 지정 글꼴과 그 뒤에있는 기술적 이유와 호환되지 않는 이유를 자세히 설명하고 사용자 정의 글꼴 너비를 올바르게 얻는 방법에 대한 솔루션을 제공합니다.


1. ImageFontWidth () 함수 소개

ImageFontWidth () 함수는 다음과 같이 정의됩니다.

 int imagefontwidth ( int $font )
  • 매개 변수 $ font 는 내장 글꼴 번호이며 값은 1에서 5입니다.

  • 반환 값은 글꼴에있는 문자의 고정 너비 (단위 : 픽셀)입니다.

이 기능은 GD 라이브러리와 함께 제공되는 글꼴 만 처리 할 수 ​​있으며 글꼴은 고정 너비의 비트 맵 글꼴이며 문자 너비는 동일합니다.


2. ImageFontWidth () 로 사용자 정의 글꼴 너비를 측정 할 수없는 이유는 무엇입니까?

2.1 내장 글꼴과 사용자 정의 글꼴의 필수 차이

  • 내장 글꼴은 GD 라이브러리에서 사전 정의 된 비트 맵 글꼴이며 고정 문자 너비와 알려진 것으로 알려져 있습니다.

  • 사용자 정의 글꼴은 일반적으로 벡터 글꼴 (예 : Truetype font.ttf)이며 가변 문자 너비 (비례 글꼴) 및 각 문자마다 다른 폭이 있습니다.

ImageFontWidth () 함수의 설계 전제는 글꼴이 고정 너비이며 내장 글꼴 번호로 식별되며 글꼴 파일을 읽는 기능이 없다는 것입니다.

2.2 ImageFontWidth ()는 글꼴 파일을 지원하지 않습니다

사용자 정의 글꼴은 FONT 파일을로드하고 복잡한 글꼴 메트릭을 사용하여 문자 너비와 높이를 계산하는 함수 imagetftext () 또는 imagetfbbox () 에 의해 그려집니다. ImageFontWidth ()는 글꼴 파일에서 문자 크기를 인식하고 계산할 수 없습니다.


3. 사용자 정의 글꼴의 너비를 얻는 방법은 무엇입니까?

사용자 정의 글꼴의 경우 올바른 방법은 imagetfbbox () 함수를 사용하는 것입니다.

 array imagettfbbox ( float $size , float $angle , string $fontfile , string $text )
  • $ 크기 : 글꼴 크기

  • $ 각도 : 회전 각도 (보통 0)

  • $ fontfile : 글꼴 파일 경로

  • $ 텍스트 : 측정 할 문자열

문자열의 네 모서리의 좌표를 나타내는 8 개의 요소 배열을 반환합니다. 이 좌표를 계산하면 문자열 너비와 높이를 얻을 수 있습니다.


4. 자세한 예 : imagetfbbox ()를 사용하여 문자열 너비를 얻습니다.

 <?php
// 글꼴 크기
$size = 16;
// 회전 각도
$angle = 0;
// 사용자 정의 글꼴 경로
$fontfile = 'm66.net/fonts/arial.ttf';
// 측정 할 문자열
$text = "Hello World";

// 텍스트 경계 상자를 얻습니다
$bbox = imagettfbbox($size, $angle, $fontfile, $text);

// 너비를 계산하십시오
$width = abs($bbox[2] - $bbox[0]);

echo "문자열 너비는입니다: " . $width . " 픽셀";
?>

이 예에서 $ bbox [0]$ bbox [2]는 각각 문자열의 왼쪽 하단 및 하단 오른쪽 모서리의 X 좌표를 나타냅니다. 문자열의 너비는 둘을 빼고 절대 값을 취함으로써 얻을 수 있습니다.


5. 솔루션 요약

질문 해결책
ImageFontWidth ()는 사용자 정의 글꼴 너비를 측정 할 수 없습니다 글꼴 파일과 결합 된 imageTtfbbox ()를 사용하여 문자열 너비를 계산하십시오
사용자 정의 글꼴 텍스트를 그려야합니다 imagestring ( ) 또는 imagestringup () 대신 imagetftext () 를 사용하십시오.

6. 추가 팁

  • 글꼴 파일 경로가 정확하고 액세스 할 수 있는지 확인하고 기능 오류를 피하십시오.

  • imagetfbbox ()는 음수 값을 포함 할 수있는 좌표를 반환하고 너비를 계산하려면 abs ()가 필요합니다.

  • 글꼴 크기와 각도는 너비에 영향을 미치며 요구에 따라 매개 변수 설정을 조정해야합니다.


이 기사의 도입을 통해 ImageFontWidth () 함수가 내장 글꼴에만 적합한 이유를 이해하고 ImagetTfbbox ()를 사용하여 사용자 정의 글꼴 문자열의 너비를 측정하는 올바른 방법을 마스터하여 레이아웃 및 잘못된 기능 선택으로 인한 레이아웃 및 표시 문제를 표시하는 올바른 방법을 마스터해야합니다.