Chinaunix

标题: freebsd+apache1.3.27+php4.3.1+gd2.0+freetype2.0 中文支持 [打印本页]

作者: lys3000cn    时间: 2003-04-08 08:52
标题: freebsd+apache1.3.27+php4.3.1+gd2.0+freetype2.0 中文支持
最近配置了FREEBSD+APACHE+PHP4.3.1+GD2.0+FREETYPE(不知道版本)

编译配置如下:

'./configure' '--with-apxs=/usr/local/sbin/apxs' '--with-config-file-path=/usr/local/etc' '--enable-versioning' '--with-regex=system' '--with-gd' '--with-ttf' '--enable-gd-native-ttf' '--enable-gd-imgstrttf' '--with-freetype-dir=/usr/local/include/freetype2/freetype' '--with-zlib' '--with-mysql=/usr/local' '--prefix=/usr/local' 'i386-portbld-freebsd4.7'

配置完成后,PHPINFO()显示如下:
gd
GD Support enabled
GD Version bundled (2.0 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
PNG Support enabled
WBMP Support enabled

但是在用ImageTTFText()提取汉字时还是不可以用,我用了一个GB2UTF8的转换程序!!

具体如下:


//gb2utf8.php字符集转换代码!
<?
//Program writen by sadly www.phpx.com
//modified by agun 2000/6/20
//Program writen by sadly www.phpx.com
function gb2utf8($gb)
{
if(!trim($gb)) return $gb;
$filename="gb2312.txt";
$tmp=file($filename);
$codetable=array();
while(list($key,$value)=each($tmp))
$codetable[hexdec(substr($value,0,6))]=substr($value,7,6);

$ret="";
while($gb!=""{
$utf8="";
if (ord(substr($gb,0,1))>;127){
$this=substr($gb,0,2);
$gb=substr($gb,2,strlen($gb));
$utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($this))-0x8080]));
for($i=0;$i<strlen($utf;$i+=3) $ret.=chr(substr($utf8,$i,3));
}else{
$this=substr($gb,0,1);
$gb=substr($gb,1,strlen($gb));
$ret.=utf8_encode($this);
}
}
return $ret;
}

function u2utf8($c)
{
for($i=0;$i<count($c);$i++)
$str="";
if ($c < 0x80) {
$str.=$c;
}
else if ($c < 0x800) {
$str.=(0xC0 | $c>;>;6);
$str.=(0x80 | $c &amp; 0x3F);
}
else if ($c < 0x10000) {
$str.=(0xE0 | $c>;>;12);
$str.=(0x80 | $c>;>;6 &amp; 0x3F);
$str.=(0x80 | $c &amp; 0x3F);
}
else if ($c < 0x200000) {
$str.=(0xF0 | $c>;>;1;
$str.=(0x80 | $c>;>;12 &amp; 0x3F);
$str.=(0x80 | $c>;>;6 &amp; 0x3F);
$str.=(0x80 | $c &amp; 0x3F);
}
return $str;
}
?>;


//生成图片代码
<?
Header("Content-type: image/png";
$im = imagecreate(300,150);
$bkg = ImageColorAllocate($im, 0,0,0);
$clr = ImageColorAllocate($im, 255,255,255);
$fnt = "/usr/local/share/fonts/arial.ttf";
include("gb2utf8.php";
//$str = gb2utf8("中国阿棍";
$str = "中国阿棍";
ImageTTFText($im, 30, 0, 50,50, $clr, $fnt, $str);
imagepng($im);
//ImageGif($im);
ImageDestroy($im);
?>;

主要是PHPINFO()中的GD段显示成:"FreeType Linkage with freetype "
与我看到的其他资料里介绍的不一样!其他的是:"FreeType Linkage with TTF library "
但是其他资料里介绍的是GD1.8

不知道我是否已经成功安装了TREETYPE的TTF功能呢?

如果是,问题又出在哪里呢?请各位高手予以指教!
作者: statue    时间: 2003-04-08 10:27
标题: freebsd+apache1.3.27+php4.3.1+gd2.0+freetype2.0 中文支持
http://freebsd.sinica.edu.tw/zh-tut/php-imagettftext.html
作者: lys3000cn    时间: 2003-04-08 11:14
标题: freebsd+apache1.3.27+php4.3.1+gd2.0+freetype2.0 中文支持
按照他给的原码改了,可是没有用呀!!
作者: lixs_yulin    时间: 2003-04-08 18:19
标题: freebsd+apache1.3.27+php4.3.1+gd2.0+freetype2.0 中文支持
说得太多了,建议看handbook,99页,上面有。
作者: lys3000cn    时间: 2003-04-08 18:19
标题: freebsd+apache1.3.27+php4.3.1+gd2.0+freetype2.0 中文支持
终于搞定了!

原来还需要FREEBSD下的字体文件,哈哈




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2