Bug #75656 [Com]: imagettfbbox fails to find my font
| From: | drajuang at gmail dot com | Date: | Fri, 02 Nov 2018 10:58:57 +0000 |
| Subject: | Bug #75656 [Com]: imagettfbbox fails to find my font | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-217795@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=75656&edit=1
ID: 75656
Comment by: drajuang at gmail dot com
Reported by: momchil at bojinov dot info
Summary: imagettfbbox fails to find my font
Status: Open
Type: Bug
Package: GD related
Operating System: Windows
PHP Version: 7.1.12
Block user comment: N
Private report: N
New Comment:
(My english is not well)
I have expierenced this issue today, and I found a workaround.
Description:
------------
My OS is Windows 10 *Chinese Traditional* and Web Server is IIS, when I changed PHP version from
v7.0.29 to v7.1.23, I got this warning:
Warning: imageftbbox(): Could not find/open font in
D:\projects\ä¸æè·¯å¾\vendor\dapphp\securimage\securimage.php on line 1952
If I switch back to PHP v7.0, no error happened.
My font real path ($ttfpath) is
'D:\projects\ä¸æè·¯å¾\vendor\dapphp\securimage\AHGBold.ttf'.
I tried 'realpath($ttfpath)' but not working, finally I found a key point 'character
encoding'.
So, I tried:
$ttfpath =
'D:\projects\ä¸æè·¯å¾\vendor\dapphp\securimage\AHGBold.ttf';
$ttfpath = mb_convert_encoding($ttfpath, 'big5', 'utf-8');
It is working, no error happened.
Conclusion:
------------
If:
'OS is Windows' && 'PHP 7.1+' && 'filepath contain non
ASCII characters'
Try:
convert filepath string encoding before you pass to GD imageftbbox() and imagettftext().
Note:
Maybe GD Library called a Windows File system API but that don't accept UTF8 encoding?
Previous Comments:
------------------------------------------------------------------------
[2018-09-21 10:21:22] rolandshin at yahoo dot gr
I also experienced this problem when I changed to PHP 7.2.8 from PHP 5.6.
Using a visforms component for joomla.
"imagettftext(): Could not find/open font in
D:\home\site\wwwroot\components\com_visforms\captcha\securimage.php on line 1211"
Modifying secure.php and calling the ttf file with realpath() also solved the problem for me
------------------------------------------------------------------------
[2018-07-23 14:09:44] Kagome at ese-protect dot de
Hello,
I expierenced today the same Problem.
I wanted to upgrade from PHP 7.1.11 to 7.2.8.
After I detected the same Problem as the OP I tested until i found a Version that worked.
It was Version 7.1.11 ...
Only to make it clear: It is the compiled TS-Version I used from windows.php.net
I'm using a Windows Server 2k12R2 and Apache 2.4.33 as Webserver.
Is there any timeline when this bug will be fixed?
------------------------------------------------------------------------
[2018-04-03 22:01:40] cmb@php.net
> Could one please test a latest snapshot?
I just tested with php-7.1-nts-windows-vc14-x64-r37e1d7c and
php-7.1-ts-windows-vc14-x64-r37e1d7c (renamed php.ini-development
to php.ini; uncommented extension_dir and extension=php_gd2.dll).
The imagettfbbox() call fails in both cases. However, the ZTS
version warns "Invalid font filename", and the NTS version "Could
not find/open font". The ZTS failure is obviously caused by a
failing open_basedir check[1] (even though open_basedir is empty);
the NTS failure, however, by fontFetch() failing[2] (which is not
a libfreetype issue).
Using the absolute path (C:/Windows/Fonts/arial.ttf) instead lets
the script succeed (both ZTS and NTS).
Anyhow, the ZTS failure has already been filed as
<https://bugs.php.net/64823>, so we should
concentrate on the NTS
issue here (even though the OP mentions it happened on TS).
[1] <https://github.com/php/php-src/blob/PHP-7.1.16/ext/gd/gd.c#L3917>
[2] <https://github.com/php/php-src/blob/PHP-7.1.16/ext/gd/libgd/gdft.c#L454>
------------------------------------------------------------------------
[2018-01-08 12:00:13] ab@php.net
I was checking this and 7.1.12 NTS reproduces it with Christoph's code. However the current 7.1
tree doesn't reproduce it - same freetype version. Something must have changed. Could one
please test a latest snapshot?
Thanks.
------------------------------------------------------------------------
[2018-01-07 18:15:37] cmb@php.net
Related To: Bug #75773
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=75656
--
Edit this bug report at https://bugs.php.net/bug.php?id=75656&edit=1