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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: imagettftext + кирилица + настройка сервера
 
 автор: Drago   (23.01.2007 в 07:53)   письмо автору
22.9 Кб
 
 

Простой скрипт:

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

На локальном сервере работает отлично. Как только, без каких либо изменений, переношу на сервер, выводятся квадратики.

шрифт в аттаче.

Кто виноват? Платформа (Виндовс/Линукс) или настройка сервера?

   
 
 автор: Гончий пёс   (23.01.2007 в 10:57)   письмо автору
 
   для: Drago   (23.01.2007 в 07:53)
 

Коллега, а попробуйте перевести вот этой функцией:

<?php

function toUnicodeEntities($text$from="w") { 
  
$text convert_cyr_string($text$from"i");
  
$uni ""
  for (
$i=0$len=strlen($text); $i<$len$i++) { 
    
$char $text{$i}; 
    
$code ord($char); 
    
$uni .= ($code>175)? "&#" . (1040+($code-176)) . ";" $char
  } 
  return 
$uni





   
$font="./epsilonctt.ttf"
   
$text 'Силён Русский Дух'
   
$text=toUnicodeEntities($text);
   
$im imagecreatetruecolor(40050); 
   
$white imagecolorallocate($im255255255); 
   
$black imagecolorallocate($im000); 
   
imagefilledrectangle($im00639199$white); 
   
imagettftext($im2002030$black$font,$text); 
   
header('Content-Type: image/jpeg'); 
   
imagejpeg($im); 
?>


Под виндой пашет.
Залил на jino-net.ru - тоже пашет

   
 
 автор: Artemy   (23.01.2007 в 11:05)   письмо автору
 
   для: Гончий пёс   (23.01.2007 в 10:57)
 

Я пользуюсь таким вариантом

<?PHP
  
function win3utf($s){
    for (
$c=0;$c<strlen($s);$c++){
        
$i=ord($s[$c]);
       if (
$i<=127$out.=$s[$c];
           if (
$byte2){
               
$new_c2=($c1&3)*64+($i&63);
               
$new_c1=($c1>>2)&5;
               
$new_i=$new_c1*256+$new_c2;
           if (
$new_i==1025){
               
$out_i=168;
           } else {
               if (
$new_i==1105){
                   
$out_i=184;
               } else {
                   
$out_i=$new_i-848;
               }
           }
           
$out.=chr($out_i);
           
$byte2=false;
           }
       if ((
$i>>5)==6) {
           
$c1=$i;
           
$byte2=true;
       }
    }
    return 
$out;
  }
?>

   
 
 автор: Drago   (23.01.2007 в 13:13)   письмо автору
 
   для: Artemy   (23.01.2007 в 11:05)
 

Ни тот, ни другой вариант не помогает. :(

   
 
 автор: Trianon   (23.01.2007 в 15:34)   письмо автору
 
   для: Drago   (23.01.2007 в 07:53)
 

В этом шрифте явно не хватает таблиц кодировок кириллических символов. Глифы имеются, а unicode-индексов к нем, похоже, правильных нету.

   
 
 автор: Drago   (24.01.2007 в 01:09)   письмо автору
 
   для: Trianon   (23.01.2007 в 15:34)
 

Но ведь на Локалхосте работает. И кирилица правильно отображается.
Раньше, похожий скрипт на Агавовском сервере также выводил кирилицу. А сейчас, на другом, не выводит. Так разве дело только в шрифте?

   
 
 автор: Trianon   (24.01.2007 в 01:17)   письмо автору
 
   для: Drago   (24.01.2007 в 01:09)
 

Я почему такой вывод сделал.... Когда открываешь файл с фонтом, То фонт-вьюер показывает его так, как будто кириллицы в нем нет... и пишет про большого сфинкса, а не про мягкие булки.

А когда начинаешь его таблицей символов смотреть, кириллицу наблюдаешь на месте latin-1.
Короче, битый файл. Точнее, бракованный. Были такие, если не ошибаюсь, в windows 3.1

   
 
 автор: Drago   (24.01.2007 в 02:48)   письмо автору
 
   для: Trianon   (24.01.2007 в 01:17)
 

В общем ясно. Файл бракованный, но Виндовс его понимает, а Линукс нет.

PS: А есть програмка, с помощью которой этот шрифт переделать можно, чтобы кирилица была на своем месте?

   
 
 автор: Trianon   (24.01.2007 в 04:35)   письмо автору
 
   для: Drago   (24.01.2007 в 02:48)
 

Наверняка найдется если поискать....
Лет десять с хвостиком назад я сам такую написал - тогда это было актуально, а интернета не было. К сожалению, предложить не могу, этот "раритет" давно исчез в мусорной корзине..

   
Rambler's Top100
вверх

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