Forum Webscript.Ru

Программирование => Perl => Тема начата: glebushka от 02 Июня 2005, 04:27:39

Название: Perl Magick, GNU Ghostscript 8.15, русские буквы
Отправлено: glebushka от 02 Июня 2005, 04:27:39
Вот код:
use Image::Magick;
print "Content-Type: image/png\\n\\n";
my $im = Image::Magick->new(size => \'540x525\');
$im->Read(\'xc:white\');
$im->Set(magick=>\'png\');
$im->Set(stroke => \'red\');
my $text = \'Посмотрим что тут да как\';
$im->Annotate(pointsize=>50, fill=>\'green\', text=>$text, x=>10, y=>200);
print $im->ImageToBlob();
exit;
Выводит закорючки.
Скачал коллекцию киррилических шрифтов.
gs-type1_koi8_fonts.tgz
Распоковал и положил в папочку фонтс. Добавил
font=>\'ariali8.pfm\'
пишет 500 ошибку.
Если посмотреть вывод скрипта в шеле, вижу:
GNU Ghostscript 8.15: Unrecoverable error, exit code 1
Error: /rangecheck in --readstring--
Operand stack:
   ariali8.pfm-ISO   ariali8.pfm-ISO   ariali8.pfm   Font   ariali8.pfm   221666   ariali8.pfm   --nostringval--   ariali8.pfm   (/bhome/part3/01/abik/gs/share/ghostscript/fonts/ariali8.pfm)   false   tables   --nostringval--   ()
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1   3   %oparray_pop   1   3   %oparray_pop   1   3   %oparray_pop   1   3   %oparray_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   3   3   %oparray_pop   4   3   %oparray_pop   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   7   4   %oparray_pop   --nostringval--   --nostringval--   --nostringval--   %loop_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %loop_continue   --nostringval--   12   --nostringval--   --nostringval--   false   1   %stopped_push   --nostringval--   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1119/1686(ro)(G)--   --dict:0/20(G)--   --dict:72/200(L)--   --dict:17/17(ro)(G)--   --dict:1119/1686(ro)(G)--   --dict:28/50(ro)(G)--   --dict:6/40(L)--
Current allocation mode is local
Current file position is 263

Чтобы такого придумать, чтобы наконец заработали русские шрифты?
Название: Perl Magick, GNU Ghostscript 8.15, русские буквы
Отправлено: AnnA от 02 Июня 2005, 12:20:03
а попробуйте установить cyrillic (модуль полезный во многих ситуациях) и переписать код:

use Image::Magick;
use cyrillic qw(win2utf);

print "Content-Type: image/png\\n\\n";
my $im = Image::Magick->new(size => \'540x525\');
$im->Read(\'xc:white\');
$im->Set(magick=>\'png\');
$im->Set(stroke => \'red\');
my $text = \'Посмотрим что тут да как\';
$text = win2utf($text);
$im->Annotate(pointsize=>50, fill=>\'green\', text=>$text, x=>10, y=>200);
print $im->ImageToBlob();
exit;

в моем случае это работает и для Image::Magick, и для GD
Название: Perl Magick, GNU Ghostscript 8.15, русские буквы
Отправлено: glebushka от 02 Июня 2005, 13:24:31
AnnA, вывод немного видоменяеться (появились всякие символы вроде 1/4, 1/2 и т.п.). Но всё равно ничего хорошего:(
Не могли бы вы со своего хостинга скинуть папочку fonts мне на мыло: gleb[\'тяф!\']stalnoy.ru ?
Обычно она располагается по адресу:
/путь/к/gs/share/ghostscript/fonts
Название: Perl Magick, GNU Ghostscript 8.15, русские буквы
Отправлено: AnnA от 02 Июня 2005, 13:35:53
glebushka ну конечно я могла бы. мне и не жалко вовсе.
только у меня- в скрипте написано:
my $font = \'./data/ttf/arial.ttf\';
my $pix_font = \'./data/ttf/hoog0555_cyr2.ttf\';
соот-сно по указанным путям я самолично закачивала эти самые шрифты. ну, что скидывать?
arial у вас и так есть, понятное дело, а втрой могу скинуть
Название: Perl Magick, GNU Ghostscript 8.15, русские буквы
Отправлено: AnnA от 02 Июня 2005, 13:41:30
а. погодите-ка. в какой кодировке вы пишите $text = \'Посмотрим что тут да как\'? именно в win или в какой-то другой?
мы ведь пишем $text = win2utf($text);
Название: Perl Magick, GNU Ghostscript 8.15, русские буквы
Отправлено: glebushka от 02 Июня 2005, 13:48:12
AnnA, Arial это то который из виндавса? Если да, то кидать нет смысла:( После того, как я жёстко прописал шрифт по абсолютному пути у меня вообще перестал выводится какой бы то ни было текст:(
Название: Perl Magick, GNU Ghostscript 8.15, русские буквы
Отправлено: glebushka от 03 Июня 2005, 03:42:04
AnnA, упс, не заметил ваш ответ последний. Конечно win:) Но чтоб себя проверить. Я специально в браузер попробовал вывести текст, отконвертированный в утф8 с помощью этого модуля.
Название: Perl Magick, GNU Ghostscript 8.15, русские буквы
Отправлено: AnnA от 03 Июня 2005, 13:25:56
и чего, корючки вышли? ) а ГД у вас пишет по-русски?