Beh certo che hai problemi,
ma mi stupisco fortemente che ti funzioni in locale!!!
Stai usando da una parte un font TrueType e invece dall'altra vorresti calcolarne la larghezza usando una funzione che serve per i font standard (quelli orrendi in bitmap).
Dovresti sostotuire la funzione ImageFontWidth (che appunto non c'azzecca) con imagettfbbox, ad es:
$bbox = imagettfbbox ($size, $angle, $font, $text);
visto che i TrueType sono molto avanzati come concetto di "scritta" una funzione che restituisca la larghezza in pixel è troppo POCO, quindi questa ti restituisce un BOX intero, visto che addirittura la scritta potrebbe essere angolata di tot gradi!
Per info leggi il manuale come per qualsiasi altra cosa:
http://it.php.net/manual/it/function.imagettfbbox.php
Edit:
piccolo aiutino, visto che non è la funzione più chiara del mondo ehehe
nel tuo caso invece di ricavarti la x in quel modo (tipico di altri linguaggi cmq) con questa funzione hai DIRETTAMENTE la x (SBAGLIATO), leggendo il PRIMO (indice 0) valore dell'array che ti ritorna imagettfbbox,
in questo modo:
Codice PHP:
$bbox = imagettfbbox ($size, $angle, $font, $text);
$x = $bbox[0];
RIEDIT (ignora qui sopra):
Visto che qui sopra (testo rosso) ho sparato una minkiata stellare , ti correggo direttamente tutto il codice:
Codice PHP:
<?php
Header("Content-Type: image/png");
$testo = "Topo Gigio" ;
$testo = strtoupper($testo);
$immagine = imagecreatefrompng("firma.png");
$nero = imagecolorallocate($immagine,0,0,0);
$bianco = imagecolorallocate($immagine, 255,255,255);
$arancio = imagecolorallocate($immagine,252,60,2);
$verdefluo = imagecolorallocate($immagine,0,255,0);
$rosso = imagecolorallocate($immagine,255,0,0);
$font = 'bible_scrt.ttf';
$fsize = 30;
$bbox = imagettfbbox ($fsize, 0, $font, $testo);
$width = $bbox[2] - $bbox[0];
$x = (234 - $width)/2;
imagettftext($immagine, $fsize, 0, $x, 50, $nero, $font, $testo);
imagepng($immagine);
imagedestroy($immagine);
?>
Ora dovrebbe essere giusto, fammi sapere