Здравствуйте товарищи! Вот ни в какую не хочет отображать правильно транскрипцию на изображении. Нужно нарисовать [ˈbrɪʧɪz], а выводит: Шрифт использую для транскрипций phontm.ttf. Google молчит. Надеюсь на вас.
PHP: <?php //Константы require_once('../_config.php'); //Работа с базой данных require_once('../'.LIBRARY.'mysqli.php'); $LiMySql = new LiMySql; //Слово на английском и транскрипция $LiMySql -> sqlConnect(); $c = $LiMySql -> sqlQuery("select * FROM `words` WHERE `id`='2222' and `tc`!='' ORDER BY RAND() LIMIT 1"); $f = $LiMySql -> sqlArray($c); //Перевод $g = $LiMySql -> sqlQuery("select * FROM `words_translate` WHERE `id_word`='".$f['id']."' LIMIT 0,2"); while ($s = $LiMySql -> sqlArray($g)) { $translate = isset($translate) ? $translate.', '.$s['translate'] : $s['translate']; } //Подготавливаем для вывода $text = strtoupper($f['word']); $transcription = '['. $f['tc'].']'; $translate = strtoupper(iconv('UTF-8','CP1251',$translate)); // размер изображения $img = imagecreatetruecolor(600, 350); // цвет фона $bg = imagecolorallocate($img, 255, 255, 255); imagefilledrectangle($img, 0, 0, 600, 350, $bg); //Водный знак $pic = ImageCreateFromjpeg("../img/log.jpg"); imagecopy($img, $pic, 150, 16, 0, 0, 300, 318); // шрифт $font = '../css/font/8428523.ttf'; $font_tc = '../css/font/phontm.ttf'; //$font_tc = $font; // цвет текста $black = imagecolorallocate($img, 27, 4, 84); //СЛОВО НА АНГЛИЙСКОМ // вычисляем сколько места займёт текст $bbox = imageftbbox(40, 0, $font, $text); // вычисляем координаты для центрирования $x = (imagesx($img) - $bbox[4])/2; $y = ((imagesy($img) - $bbox[5])/2)-40; // добавляем текст на изображение imagefttext($img, 40, 0, $x, $y, $black, $font, $text); //ТРАНСКРИПЦИЯ // вычисляем сколько места займёт текст $bbox = imageftbbox(22, 0, $font, $transcription); // вычисляем координаты для центрирования $x = (imagesx($img) - $bbox[4])/2; $y = (imagesy($img) - $bbox[5])/2; // добавляем текст на изображение imagefttext($img, 22, 0, $x, $y, $black, $font_tc, $transcription); //ПЕРЕВОД // вычисляем сколько места займёт текст $bbox = imageftbbox(22, 0, $font, $translate); // вычисляем координаты для центрирования $x = (imagesx($img) - $bbox[4])/2; $y = ((imagesy($img) - $bbox[5])/2)+40; // добавляем текст на изображение imagefttext($img, 22, 0, $x, $y, $black, $font, $translate); // выводим изображение header('Content-type: image/png'); imagepng($img); // освобождаем память imagedestroy($img); ?>
во первых используйте mb_strtoupper место обычного, так как мы работаем с многобайтными символами. Удалите функцию iconv с вашего кода раз и навсегда. Мы только с utf-8 работаем only UTF-8 the best! --- Добавлено --- во вторых, в шрифте присутствуют символы как æ ? Мне неизвестно --- Добавлено --- P/s: да поддерживается http://studyenglishnow.ru/phonetictm/
Но в том-то и проблема, что в шрифте присутствует "æ", а выводит " ". Грешил на библиотеку FreeType, но нет. Вся информация об отображении шрифта хранится в самом файле шрифта .tff. Из википедии: FreeType, FreeType 2 — библиотека, которая используется для растеризациишрифтов и операций над ними.
Разобрался. Начал экспериментировать с другими шрифтами. Скачал http://allshrift.ru/font/arial-unicode-ms/ И все нормально сдало. Дело было в самом шрифте и текста. Не сопоставлялись текст и шрифт, поэтому так и выходило. Транскрипцию брал с API словаря яндекса. Надеюсь, полезная инфа.