Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: GD: imagettfbbox не пишет по русски

Сообщения:  [1-10]   [11-16] 

 
 автор: Trianon   (01.12.2006 в 10:46)   письмо автору
 
   для: XPraptor   (01.12.2006 в 10:34)
 


<?php 
   $text 
'Силён Русский Дух';
   
$texticonv('windows-1251''UTF-8'$text);
   
$im imagecreatetruecolor(40050);
   
$white imagecolorallocate($im255255255);
   
$grey imagecolorallocate($im128128128);
   
$black imagecolorallocate($im000);
   
imagefilledrectangle($im00639199$white);
   
imagettftext($im2002030$grey'ARIAL.TTF',$text);
   
header('Content-Type: image/jpeg');
   
imagejpeg($im);
?>

Как это будет выглядеть на практике?

   
 
 автор: XPraptor   (01.12.2006 в 10:34)   письмо автору
 
   для: Trianon   (01.12.2006 в 09:48)
 

Конечно принимает UTF-8, только вот наши буквы ё и й в шрифтах это multiwide символы, поэтому шрифты созданы в 16 битной последовательности. Поэтому я и написал ЖЕЛАТЕЛЬНО. Но можно и UTF-8 если не страшно получить переконверт ё й и Р. Наше Р большое тоже мультивайд не знаю почему даже.

   
 
 автор: Trianon   (01.12.2006 в 09:48)   письмо автору
 
   для: XPraptor   (01.12.2006 в 04:15)
 

Что-то Вы путаете. imagettftext() принимает байтовый (UTF-8) поток, а не пословный(UTF16).

Он, конечно, может содержать ссылки на десятичные номера символов в UNICODE (вида &#1070), хотя это скорее извращение, чем метод.

   
 
 автор: XPraptor   (01.12.2006 в 04:15)   письмо автору
 
   для: Drago   (29.11.2006 в 19:58)
 

Читай внимательно. Функции понимают ТОЛЬКО ЮНИКОД (желательно полный UTF16LE в котором и созданы все русские шрифты). Ты конвертишь из виндовс в iso не прокатывает для не юникод шрифтов такая конвертация. Только в юникод и потом пишешь по картике любым шрифтом, я юзал это на своем сайте shop.aon.by пока не задолбало, медленно выводит много картинок, поэтому и бросил страдать фигней.

   
 
 автор: Drago   (29.11.2006 в 19:58)   письмо автору
 
   для: XPraptor   (29.11.2006 в 03:20)
 

>Прикалываетесь? Какой русский шрифт специальный? Все функции GD пишут любыми шрифтами по русски (конечно если шрифт предусматривает русский набор) только строку в вывод нужно передавать уже перекодированную в UTF16LE.

Ну не знаю, сколько не качал шрифты, с пометкой, что оный поддерживает кирилицу, попадались такие, что при печати на картинке были одни квадратики. Получается, из этого можно сделать вывод, что этот шрифт не "предусматривает русский набор", то есть не поддерживает кирилицу. Значит, на сайтах со шрифтами, иногда, пишут недостоверную информацию.

>Ткни в поиск и найдешь простейший скрипт перекодировки строки из win в utf16le.
>Перед оправкой на вывод в GD, сначала конвертни строку и потом только ее отправляй в функцию печати по картинке.

Хочу заметить, что мне ничего искать не нужно. Я пользуюсь функцией, которую, кстати, нашел на этом форуме и которая меня вполне устраивает.

<?
function win2uni($s)
    {
      
$s convert_cyr_string($s,'w','i');
      for (
$result=''$i=0$i<strlen($s); $i++)
          {
            
$charcode ord($s[$i]);
            
$result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];
          }
      return 
$result;
    }
?>

   
 
 автор: XPraptor   (29.11.2006 в 03:20)   письмо автору
 
   для: Drago   (28.11.2006 в 20:12)
 

Прикалываетесь? Какой русский шрифт специальный? Все функции GD пишут любыми шрифтами по русски (конечно если шрифт предусматривает русский набор) только строку в вывод нужно передавать уже перекодированную в UTF16LE. Ткни в поиск и найдешь простейший скрипт перекодировки строки из win в utf16le.
Перед оправкой на вывод в GD, сначала конвертни строку и потом только ее отправляй в функцию печати по картинке.

   
 
 автор: Drago   (28.11.2006 в 20:12)   письмо автору
 
   для: Kolobok   (28.11.2006 в 20:11)
 

Полевыми испытаниями ;)

   
 
 автор: Kolobok   (28.11.2006 в 20:11)   письмо автору
 
   для: Drago   (28.11.2006 в 20:05)
 

а как узнать какой шрифт то использовать?

   
 
 автор: Drago   (28.11.2006 в 20:05)   письмо автору
134.2 Кб
 
   для: Trianon   (28.11.2006 в 19:50)
 

Не знаю, чье это наследие, может даже лентяя создателя. :) Поленился какую галочку, в программе создания шрифтов, поставить и все. Или вот как в аттаче, многих спец символов не хватает :)

   
 
 автор: Trianon   (28.11.2006 в 19:50)   письмо автору
 
   для: Drago   (28.11.2006 в 19:45)
 

Небось наследие Windows 3.1 ... Были, помнится, версии, в которых UNICODE-индексов в таблице не было, а присутствовали только ANSI-индесы. Но это было больше десятка лет назад. И помоему, уже 3.11 от этого недуга была излечена.

   

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования