|
 22.9 Кб |
|
| Простой скрипт:
<?php
$font="./epsilonctt.ttf";
$text = 'Силён Русский Дух';
$text= iconv('windows-1251', 'UTF-8', $text);
$im = imagecreatetruecolor(400, 50);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 639, 199, $white);
imagettftext($im, 20, 0, 20, 30, $black, $font,$text);
header('Content-Type: image/jpeg');
imagejpeg($im);
?>
|
На локальном сервере работает отлично. Как только, без каких либо изменений, переношу на сервер, выводятся квадратики.
шрифт в аттаче.
Кто виноват? Платформа (Виндовс/Линукс) или настройка сервера? | |
|
|
|
|
|
|
|
для: 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(400, 50);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 639, 199, $white);
imagettftext($im, 20, 0, 20, 30, $black, $font,$text);
header('Content-Type: image/jpeg');
imagejpeg($im);
?>
|
Под виндой пашет.
Залил на jino-net.ru - тоже пашет | |
|
|
|
|
|
|
|
для: Гончий пёс
(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;
}
?>
|
| |
|
|
|
|
|
|
|
для: Artemy
(23.01.2007 в 11:05)
| | Ни тот, ни другой вариант не помогает. :( | |
|
|
|
|
|
|
|
для: Drago
(23.01.2007 в 07:53)
| | В этом шрифте явно не хватает таблиц кодировок кириллических символов. Глифы имеются, а unicode-индексов к нем, похоже, правильных нету. | |
|
|
|
|
|
|
|
для: Trianon
(23.01.2007 в 15:34)
| | Но ведь на Локалхосте работает. И кирилица правильно отображается.
Раньше, похожий скрипт на Агавовском сервере также выводил кирилицу. А сейчас, на другом, не выводит. Так разве дело только в шрифте? | |
|
|
|
|
|
|
|
для: Drago
(24.01.2007 в 01:09)
| | Я почему такой вывод сделал.... Когда открываешь файл с фонтом, То фонт-вьюер показывает его так, как будто кириллицы в нем нет... и пишет про большого сфинкса, а не про мягкие булки.
А когда начинаешь его таблицей символов смотреть, кириллицу наблюдаешь на месте latin-1.
Короче, битый файл. Точнее, бракованный. Были такие, если не ошибаюсь, в windows 3.1 | |
|
|
|
|
|
|
|
для: Trianon
(24.01.2007 в 01:17)
| | В общем ясно. Файл бракованный, но Виндовс его понимает, а Линукс нет.
PS: А есть програмка, с помощью которой этот шрифт переделать можно, чтобы кирилица была на своем месте? | |
|
|
|
|
|
|
|
для: Drago
(24.01.2007 в 02:48)
| | Наверняка найдется если поискать....
Лет десять с хвостиком назад я сам такую написал - тогда это было актуально, а интернета не было. К сожалению, предложить не могу, этот "раритет" давно исчез в мусорной корзине.. | |
|
|
|