За последние 24 часа нас посетил 21791 программист и 1008 роботов. Сейчас ищут 733 программиста ...

imagettftext и украинские буквы

Тема в разделе "Обработка изображений средствами PHP", создана пользователем Egoritch, 17 май 2018.

  1. Egoritch

    Egoritch Активный пользователь

    С нами с:
    17 май 2018
    Сообщения:
    4
    Симпатии:
    0
    Добрый день, уважаемые. Прошу помощи у коллективного разума. Уверен, что проблема решается просто, но унылое гугленье в течение нескольких часов не помогло.

    Есть текст, фамилия и имя на украинском языке. Причем, специфическая украинская буква идёт второй, после заглавной. Что-то типа ""Сєєшека Віктор", например. Так как весь сайт в UTF-8 и БД - тоже, то фамлия/имя - тоже. Мне нужно нарисовать его TTF-шрифтом. Для этого я перегоняю его в WinCP-1251 и пытаюсь нарисовать.
    PHP:
    1. $mystr="Сєєшека Віктор";
    2. $text= mb_convert_encoding($mystr, "Windows-1251", "auto");
    3.  
    4. //$text= $mystr;
    5.  
    6. echo $text."<br>\n";
    7. for ($i=0; $i<strlen($text); $i++){
    8.     echo ord($text[$i])."\n";
    9. }
    10.  
    11. $font = $_SERVER['DOCUMENT_ROOT'].'/ufe/heliosbold.ttf'; $fontsize=70;
    12. $sizes=imagettfbbox ( $fontsize , 0 , $font , $text );
    13. $im = imagecreatetruecolor(($sizes[2]-$sizes[0]+2), ($sizes[1]-$sizes[5]+2));
    14. $white = imagecolorallocate($im, 255, 255, 255); $black = imagecolorallocate($im, 30, 91, 164);
    15.  
    16. imagefilledrectangle($im, 0, 0, 1400, 130, $white);
    17. imagettftext ($im, $fontsize, 0, 0, $fontsize, $black, $font, $text);
    18. imagepng($im, "temp22.png");
    Как видите, тут выводит то, что получилось с текстом и коды. Коды, я проверил, соответствуют таблице CP-1251. Но рисует оно как-то странно.

    [​IMG]
    Чаще всего просто не рисует заглавную букву, которая идёт перед маленькой украинской. В некоторых случаях не рисует и маленькую украинскую.
    "Сімашко Ліза"
    [​IMG]
    В то же время всё отлично работает, понятное дело, с обычными русскими буквами.
    "Семашко Лиза"
    [​IMG]

    С латиницей тоже, конечно, всё нормально.

    Я сохранял этот php-файл с кодировкой WinCP-1251 и убирал, соответственно, mb_convert_encoding. Ничего не менялось. Надпись "бьётся". Что за фигня? Кто-то сталкивался? Помогите, пожалуйста.
     
  2. Egoritch

    Egoritch Активный пользователь

    С нами с:
    17 май 2018
    Сообщения:
    4
    Симпатии:
    0
    Ребята, я закрываю тебе. Почему там не работало - не знаю, но теперь просто взял Arial Bold и без конвертаций пишу. Работает - и работает. Всем спасибо, кто собирался помочь.
    PS: здесь нет кнопки "Закрыть тему", но, в общем, всё, проехали