Сборка GD с TrueType под FreeBSD

Cid

...двинутый новичок
Сборка GD с TrueType под FreeBSD

FreeBSD 4.7
gd-1.8.4_6 - установлено из packages дистрибутива
freetype-1.3.1_2 и freetype2-2.1.3_1 устанавливались из портов через интернет

Никак не удается собрать PHP с поддержкой TrueType для bundled (!) версии GD. Установка версии 2.0.15 решает проблему, но при этом недоступны функции antialiasing'а

./configure \
--prefix=/usr/local/php4 \
--with-config-file-path=/usr/local/php4 \
--enable-sockets \
--enable-ftp \
--with-zlib \
--with-gd \
--enable-gd-native-ttf \
--with-mysql=/usr/local/mysql \
--with-apache=../apache \
--with-pgsql=/usr/local/pgsql \
--enable-track-vars \
--disable-trans-sid \
--enable-exif \
--with-interbase=/usr/interbase
--with-ttf \
--with-freetype-dir=/usr/local/include/freetyp2/freetype

Сборка прерывается, выдавая следующее

In file included from /usr/home/geo/src/php/ext/gd/libgd/gdft.c:64:
/usr/local/include/freetype2/freetype/ftglyph.h:104: syntax error before `FT_Library'
/usr/local/include/freetype2/freetype/ftglyph.h:106: syntax error before `FT_Glyph_Format'
/usr/local/include/freetype2/freetype/ftglyph.h:157: syntax error before `FT_Int'
.... (еще много строк насчет freetype2/freetype/ftglyph.h)...

далее идут строки

/usr/home/geo/src/php/ext/gd/libgd/gdft.c:114: syntax error before `FT_Library'
/usr/home/geo/src/php/ext/gd/libgd/gdft.c:125: syntax error before `FT_Library'
/usr/home/geo/src/php/ext/gd/libgd/gdft.c: In function `fontFetch':
/usr/home/geo/src/php/ext/gd/libgd/gdft.c:363: syntax error before `err'

.... (еще много строк насчет gdft.c)...


Кто-нибудь сталкивался?
 

fixxxer

К.О.
Партнер клуба
Не парься, и ставь PHP из портов. Там всё ОК. Чего не хватает - само по депам скачается и проинсталлится. :)
 

Cid

...двинутый новичок
Да, похоже, в этом причина: просмотрел все вложенные инклюды по цепочке с ftglyph.h и нигде не нашел определения FT_Library и т.п. Присутствуют только определения переменных этого типа.... Странно, однако, как тогда вообще собирется это дело ? Или я что-то не доставил ?

2fixxer спасибо за совет, но предпочитаю процесс контролировать самостоятельно, кабы чего не вышло =)
 

tony2001

TeaM PHPClub
Cid:
значит, неправильная версия FT или не хватает хидеров.
у меня вот здесь объявляется:
Код:
freetype.h:251:  typedef struct FT_LibraryRec_  *FT_Library;
 

Cid

...двинутый новичок
В результате длительных экспериментов удалось выяснить, что описанная выше ситуация возникает при попытке собрать PHP с любым вариантом GD (bundled, 1.8.4, 2.0.17) и поддержкой freetype2 (2.1.5).

Если собирать только с freetype1 и bundledGD - все работает, но, увы, возникли проблемы с аллоцированием цветов при imageCreateTrueColor (imagecolorallocate($image,0,0,0) возвращает жёлтый цвет =). Также до неприличия "мажется" шрифт, особенно при мелком кегле 8 и даже 10.
 

Cid

...двинутый новичок
P.S. цвет не корежит если использовать просто imagecreate()
 

tony2001

TeaM PHPClub
опиши подробно ситуацию, сделай небольшие (5-10 строк кода) примеры и пости баг на bugs.php.net (если там такого еще нет).
впрочем, я могу заранее сказать в чем общая проблемы GD:
если заглянешь в Changelog любого релиза, то увидишь, что там значительная часть багфиксов - в GD.
не помню кто сказал из разработчиков, но фраза звучала примерно как "GD - это сплошное сборище багов".
есть надежда, что после того, как РНР начал поставляться со своей версией GD, ситуация станет улучшаться.
запости баг-репорт, возможно, что фикс элементарный.
а лучше, конечно, патч =)
 

Cid

...двинутый новичок
Победа!

Ура, вылечил до обидного просто.

Ув. tony2001 высказал верную идею - все дело оказалось в некорректных исходниках freetype2. Рекомендую на будущее (да возрадуется fixxxer :) ) ставить прекомпилированный freetype, не из портов (как я тоже в отчаянии делал), а через pkg_add. Причем следующие версии:

freetype1: freetype-1.3.1_2.tgz
freetype2: freetype2-2.1.5_1.tgz
 
Сверху