URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 3816
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Русский язык в графиках GD::Graph"

Отправлено auto_tips , 08-Июн-04 12:47 
Для рисования русских букв, слов на графиках, построенных модулем perl GD::Graph необходимо все
переменные с русским тексом перевести в кодировку utf8.
Например модулем Unicode::Map8:
    my $unicoded_txt = Unicode::Map8->new("cp1251");

Дополнительно нужно указать ttf шрифт, поддерживающий unicode. Например виндовый arial.ttf:
    $graph->set_value_font('/usr/share/fonts/arial.ttf', 9);

Опробовано с p5-GD-Graph-1.43 и p5-Unicode-Map8-0.12.

URL:
Обсуждается: http://www.opennet.me/tips/info/693.shtml


Содержание

Сообщения в этом обсуждении
"Русский язык в графиках GDGraph"
Отправлено D.A. , 08-Июн-04 12:47 
Я сделал проще - нашел ttf шрифт с набором символов koi8-r.... - их предостаточно, и  русский отображается на ура!!!

"Русский язык в графиках GD::Graph"
Отправлено dawnshade , 08-Июн-04 14:28 
Угу, только вот в моем случае была 1251 кодировка :((
Вот и пришлось наворачивать.

"Русский язык в графиках GD::Graph"
Отправлено TLoDSnake , 01-Сен-04 17:57 
use GD;
    use GD::Graph;
    use GD::Graph::bars;
    use Unicode::Map8;
    my @data = (
    ["1st","2nd","3rd","4th","5th","6th","7th", "8th", "9th"],
    [    1,    2,    5,    6,    3,  1.5,    1,     3,     4],
    [ sort { $a <=> $b } (1, 2, 5, 6, 3, 1.5, 1, 3, 4) ]
    );
    my $graph = GD::Graph::bars->new(400, 300);
    $graph->set_title_font('/data/fonts/arial.ttf', 20);    
    my $r = Unicode::Map8->new("cp1251");
    my $title = $r->to16('Ðóññêèé çàãîëîâîê');
    $graph->set(
      x_label           => 'äíè',
      y_label           => 'Õèòû',
      title             => "Ðóññêèé òåêñò $title",
      y_max_value       => 8,
      y_tick_number     => 8,
      y_label_skip      => 2
     ) or die $graph->error;
    my $gd = $graph->plot(\@data) or die $graph->error;

Русского нету ((


"Русский язык в графиках GD::Graph"
Отправлено AW , 05-Май-05 16:30 
my $title = $r->to16('Заголовок');  - так не работает.....
а вот так:
my $title = $r->tou('Заголовок');  - работает.....

"Русский язык в графиках GD::Graph"
Отправлено falcn , 09-Май-05 13:43 
Так как на моей машине Map8 не работает, пришлось использовать альтернативное решение с более распостранённым модулем
Этот пример работает с Image::Magick

use encoding 'cp1251';
use Unicode::String qw(utf8);
my $title = utf8('Заголовок');


"Русский язык в графиках GD::Graph"
Отправлено TLoDSnake , 05-Дек-05 18:23 
Решение совсем влоб
sub stringToDec{
my $ustring = '';
for my $char (split //, shift){
if(ord($char)>127){
$ustring .= "&#" . (unpack("U", $char)+848) . ";";
}else{
$ustring .= $char;
}
}
return $ustring;
}

http://www.mysterria.com/programming_notes/GD.html


"Русский язык в графиках GD::Graph"
Отправлено worldmind , 06-Сен-10 12:22 
Достаточно сказать
use utf8;

и как написано http://zaakk.com/post/moj-post-v-pesochnicu-xabra/
указать unicode шрифты для разных элементов

$graph->set_title_font("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf",8);
$graph->set_value_font("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf",8);
$graph->set_label_font("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf",8);

и всё будет нормально работать