Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

JpGraph и русский язык

Автор: Александр Шиляев

Источник: http://blog.redgraphic.ru/as/06-08-03_78/

Кто сталкивался с необходимостью создания различных графиков из PHP наверняка знают библиотеку JpGraph (http://www.aditus.nu/jpgraph/). Для тех кто не знает - JpGraph это ОО библиотека на PHP, применяемая для построения различных графиков. Сверх дизайнерского решения на ней не построишь, но для того чтобы быстро и с минимумом кода автоматически сформировать график в стиле excel вполне сгодится. Требует установленной библиотеки GD (http://www.boutell.com/gd/).

Но как это часто бывает у буржуев, написать что-нибудь они напишут, а вот сделать чтобы можно было писать на великом и могучем - с этим проблемы. В том же JpGraph даже есть некоторые настройки типа:

// Special unicode language support

DEFINE("LANGUAGE_CYRILLIC",true);

// If you are setting this config to true the conversion

// will assume that the input text is windows 1251, if

// false it will assume koi8-r

DEFINE("CYRILLIC_FROM_WINDOWS",true);

Как эти настройки не изменяй - ничего не происходит. Либо все выводится в виде кракозябр, либо в юникоде типа &#xxxx. Оказывается на все так просто. Нужен еще шрифт с кириллицей. Библиотека JpGraph (хотя больше не она, а GD) может работать со стандартными TTF-шрифтами. А это очень хорошо, когда отчет с графиками может быть оформлен не в виде стандартных и набивших оскомину пиксельных шрифтов из unix'а, а с помощью стандартных и набивших оскомину шрифтов из windows'а. Так во всяком случае привычнее. Но сначала надо сказать JpGraph'у где эти шрифты взять.

Для того чтобы настроить русские шрифты надо:

  1. Найти их на сервере. Обычно лежат в директории типа /usr/X11R6/lib/X11/fonts/TrueType/ или /usr/X11R6/lib/X11/fonts/TTF/.
  2. Проверить есть ли там стандартные юникодные шрифты и поддерживают ли они кириллицу (как это сделать - личная проблема каждого, у меня их там вообще не было).
  3. Если их там нет или они кириллицу не поддерживают, то пишем их туда, например, из директории Winnt/fonts со своего компьютера.
  4. Находим в конфигурационном файле JpGraph строчку типа DEFINE("TTF_DIR", ...) и пишем на место директории ту, где нашли и записали шрифты.

Теперь шрифты есть и JpGraph их должен найти. Для этого в своем графике определяем, например, заголовок как шрифт Verdana (он должен быть на сервере):

$somegraph->title->SetFont(FF_VERDANA);

Дальше либо покажется русский заголовок графика, либо он будет не в той кодировке, либо (что вероятнее) JpGraph скажет, что на сервере не установлен компонент работы с TTF-шрифтами (FreeType). Если так, то надо либо искать другой сервер, либо перекомпилять PHP. У нас проблем с перекомпилением (слово-то какое!) нет, поэтому пересобираем PHP с ключом --with-freetype-dir=/usr, где /usr это префикс установки проги freetype, которая собственно и занимается поддержкой этих fontov (сисадмин спешит на помощь).

Собственно все. Если есть проблемы с тем, что название вывелось не в той кодировке (например в кои, а не в windows), то идем в файл настроек и изменяем строку:

DEFINE("CYRILLIC_FROM_WINDOWS",true);

Вот теперь собственно все. Шрифты должны работать. Размеры, тип шрифта можно установить там же с помощью метода SetFont(). Но для этого уже есть документация.

 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS