понедельник, 6 сентября 2010 г.

GD::Graph::lines и кириллица

Уже не первый раз сталкиваюсь с тем, что GD::Graph::lines не нормально выводит кириллицу в подписях и метках. А поменять ситуацию не выходило. В итоге принято решение патчить lines.pm (тот, что в /usr/lib/perl5/site_perl/5.10.0/GD/Graph) и добавить в него соответствующие методы:

sub set_label_font # (fontname)
{
my $self = shift;
$self->_set_font('gdta_label', @_) or return;
}

sub set_value_font # (fontname)
{
my $self = shift;
$self->_set_font('gdta_value', @_) or return;
}


sub set_x_label_font # (fontname)
{
my $self = shift;
$self->_set_font('gdta_x_label', @_);
}
sub set_y_label_font # (fontname)
{
my $self = shift;
$self->_set_font('gdta_y_label', @_);
}
sub set_x_axis_font # (fontname)
{
my $self = shift;
$self->_set_font('gdta_x_axis', @_);
}

sub set_y_axis_font # (fontname)
{
my $self = shift;
$self->_set_font('gdta_y_axis', @_);
}

sub set_values_font
{
my $self = shift;
$self->_set_font('gdta_values', @_);
}

sub set_legend_font # (font name)
{
my $self = shift;
$self->_set_font('gdta_legend', @_);
}

Теперь их своего скрипта их можно вызвать к примеру так:
my $graph = new GD::Graph::lines;
$graph->set_title_font("/usr/share/fonts/TTF/times.ttf",18);
$graph->set_label_font("/usr/share/fonts/TTF/times.ttf",14);
$graph->set_x_label_font("/usr/share/fonts/TTF/times.ttf",10);
$graph->set_y_label_font("/usr/share/fonts/TTF/times.ttf",10);
$graph->set_x_axis_font("/usr/share/fonts/TTF/times.ttf",10);
$graph->set_y_axis_font("/usr/share/fonts/TTF/times.ttf",10);
$graph->set_values_font("/usr/share/fonts/TTF/times.ttf",10);
$graph->set_legend_font("/usr/share/fonts/TTF/times.ttf",10);

Пути к шрифтам естественно свои подставить. И вся кириллица стала в норме.

Комментариев нет:

Отправить комментарий