PHP GD 库在 Linux 下使用字体

现在一般的 PHP 主机都支持 GD 库和 FreeType/TrueType,普通的画字符串的函数 imagestring 只能指定字体大小,不能指定字体名称。像 imagettftext 这样的函数可以指定字体名称和字符串显示的角度,它的原型是:

array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )

注意这里的 $fontfile 是个字体文件,不是字体名,我刚开始就搞错了,给它传递的是 "Arial" 或是 "Arial.ttf" 而不能显示出任何东西来。在 Windows 下字体文件一般都在 c:/windows/fonts/ 目录中,所以在 Windows 下用 imagettftext 使用 TrueType 字体时的代码例子如下:

输出图片如:

那如果是放 Linux 下去,字体文件又是在哪里呢?查一些资料都说是在 /usr/share/fonts/ 目录中,可是我看我的 Linux 主机中没有这个目录,大约是那台机器还没有 XWindows 吧,不用去纠缠它。

想用什么字体,从 Windows 的字体目录拷哪个字体文件到 Linux 下某个目录去就行,放 /usr/share/fonts/ 也行,任何地方都可,只要使用时 $fontfile 指定能找到它的文件路径。从 Windows 的字体目录拷文件出来要稍加一点技巧,资源管理器打开 c:\windows\fonts,用鼠标拖出来会提示文件正在使用,需要你 CMD 进到 c:\windows\fonts,然后  copy 到别的目录再上传到 Linux 机器上。

比如我们把字体文件 arial.ttf 传到了 /usr/share/fonts/ 目录中,在 PHP 里引用该字体文件时就必须写成:

$fontfile = '/usr/share/fonts/arial.ttf';

这时候还有点要注意的就是,因为在 Linux 下文件名是区分大小写的,Windows 下写成  Arial.ttf,其实文件名是 arial.ttf,全小写的,在 Linux 下一定要大小写匹配就对的。

参考:1. Linux字体库在哪儿?
        2. Linux Fonts

本文链接 https://yanbin.blog/php-gd-linux-font/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments