Стандартной функции подчеркивания текста в GD2 нет, поэтому надо вычислять ширину написанного текста с помощью функции imagettfbbox() и рисовать линию ниже текста с помощью функции imageline().
Ниже рабочий пример с комментариями:
$w = 400; $h = 100; $image = imagecreatetruecolor( $w, $h ) or die('Cannot create image'); //Цвета $white = 0xffffff; $black = 0x000000; $red = 0xff0000; //Cам текст $text = iconv( 'cp1251', 'utf-8', 'MyWebCenter' ); //Шрифт $font = realpath('fonts/arial.ttf'); // - обязательно надо указать путь до шрифта $fontsize = 30; // размер шрифта, gd1 - в пикселях, gd2 - в пунктах ///Централизация шрифта $sz = imagettfbbox( $fontsize, 0 , $font , $text ); $x = ( imageSX($image) - ( $sz[2] - $sz[0] ) ) / 2 ; $y = ( imageSY($image) + ( $sz[1] - $sz[7] ) ) / 2 ; //Делаем изображение прозрачным imagesavealpha($image,true); imagefill($image, 1, 1, imagecolorallocatealpha( $image, 255, 255, 255, 127 ) ); imagecolortransparent($image, $black); //Вычисляем ширину текста for($i = 0; $i < strlen($text); $i++ ) { $dimensions = imagettfbbox( $fontsize, 0, $font, substr( $text, $i, 1 ) ); $total_width += ( $dimensions[2] ); } $dimensions = imagettfbbox($fontsize, 0, $font, $text); $difference = $dimensions[2] - $total_width; imagettftext($image, $fontsize, 0, $x+1, $y+1, $black, $font, $text); imagettftext($image, $fontsize, 0, $x, $y, $black, $font, $text); $x2 = $x + $total_width + $difference + 2; //устанавливаем толщину линии и рисуем её imagesetthickness( $image, 3 ); imageline ( $image, $x, $y+4, $x2, $y+4, $red ); //Вставляем текст imagettftext( $image, $fontsize, 0, $x, $y, $red, $font, $text ); //Выводим изображение header('Content-type: image/png'); imagepng($image); imagedestroy($image);