Web - кодинг: PHP:
JpGraph и русский язык
Материал с сайта
Автор: Александр Шиляев
Оригинал статьи доступен по адресу:
Материал взят из журнала PHP Inside
Те, кто сталкивался с необходимостью создания различных графиков из PHP, наверняка знают библиотеку JpGraph (). Для тех, кто не знает, JpGraph - это ОО библиотека на PHP, применяемая для построения различных графиков. Сверх дизайнерского решения на ней не построишь, но для того, чтобы быстро и с минимумом кода автоматически сформировать график в стиле excel, вполне сгодится. Требует установленной библиотеки 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);
Как эти настройки не изменяй - ничего не происходит. Либо все выводится в виде кракозябр, либо в юникоде типа xxx. Оказывается, не все так просто. Нужен еще шрифт с кириллицей. Библиотека 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 с ключом --withfreetype- dir=/usr, где /usr это префикс установки проги freetype, которая, собственно, и занимается поддержкой этих fontov (сисадмин спешит на помощь).
Собственно все. Если есть проблемы с тем, что название вывелось не в той кодировке (например, в кои, а не в windows), то идем в файл настроек и изменяем строку:
DEFINE("CYRILLIC_FROM_WINDOWS",true );
Вот теперь, собственно, все. Шрифты должны работать. Размеры, тип шрифта можно установить там же с помощью метода SetFont(). Но для этого уже есть документация.
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|