1
我的目標是繪製水平居中的m
。因此,我計算字母的寬度,從總寬度中減去該值,最後除以2.結果應該是從左邊開始的距離(或者等於從右邊開始)。無法以GD2水平居中'm'
但是,'米'總是錯位。我也注意到一些字體可能不會觸發有問題的行爲。請注意,我的腳本正確地適用於所有其他拉丁字符。
宋體:
碼流維拉三世:
<?php
$totalWidth = 100;
$totalHeight = 100;
$font = 'Arial.ttf';
$img = imagecreatetruecolor($totalWidth, $totalHeight);
$red = imagecolorallocate($img, 255, 0, 0);
$fontSize = 100;
$bbox = imagettfbbox($fontSize, 0, $font, 'm');
$width = max($bbox[2], $bbox[4]) - max($bbox[0], $bbox[6]);
$centeredX = ($totalWidth - $width)/2;
imagettftext($img, 100, 0, $centeredX, 100, $red, $font, 'm');
imagepng($img, 'testcase.png');
imagedestroy($img);
完美答案!非常感謝你!我也設法垂直居中:''centeredY =(($ totalHeight - $ bbox ['height'])/ 2);'和'$ centeredY + $ bbox ['top']'作爲imagettftext的Y參數()'。 – ComFreek