Ho il seguente codice per stampare il testo su un'immagine. Sto anche aggiungendo una casella di debug intorno al testo. Tuttavia, ho notato che il testo a sinistra si trova al di fuori del riquadro che PHP mi dà con imagettfbbox
.Come account per lo swash di font con PHP e GD
Questo appare come un problema con lo sciabordio font. Esiste comunque una spiegazione per questo? Posso calcolare la distanza tra l'inizio dello sciabordio e la posizione attuale imagettfbbox
?
Non penso che questo sia un problema con il font, come ho provato con alcuni font di stile di script ei risultati erano simili.
<?php
$font = 'scriptin.ttf';
$text = 'Ipsum';
$size = 30;
$image = imagecreatetruecolor(200, 200);
$fontColour = imagecolorallocate($image, hexdec('11'), hexdec('11'), hexdec('11'));
$bgColour = imagecolorallocate($image, hexdec('CC'), hexdec('CC'), hexdec('CC'));
imagefilledrectangle($image, 0, 0, 200, 200, $bgColour);
$dimensions = imagettfbbox($size, 0, $font, $text);
imagefilledrectangle(
$image,
$dimensions[0] + 40,
$dimensions[7] + 50,
$dimensions[2] + 40,
$dimensions[3] + 50,
imagecolorallocate($image, mt_rand(1, 180), mt_rand(1, 180), mt_rand(1, 180))
);
imagettftext(
$image,
$size,
0,
40,
50,
$fontColour,
$font,
$text
);
header('Content-Type: image/png');
imagepng($image);
Il codice e il tipo di carattere è disponibile qui: https://github.com/AydinHassan/image-swash-example
Se si punta una VHOST al repository, si può solo colpire swash.php
sembra che tu non abbia posizionato correttamente il riquadro: la quantità di spazio "mancante" a sinistra sembra identica alla quantità di spazio "troppo" a destra. –
Questo è quello che pensavo, ma se lo sono, non riesco a vedere dove sto sbagliando. Sto usando l'informazione 'imagettfbbox' mi sta dando. –
http://php.net/manual/en/function.imagettfbbox.php#97211 suggerisce che si tratta di un bug noto, se scomodo. –