Commit graph

77 commits

Author SHA1 Message Date
Christoph M. Becker
61dcfc4c9a
Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3:
  Fix GH-17373: imagefttext() ignores clipping rect for palette images
2025-01-06 14:59:03 +01:00
Christoph M. Becker
ec90367cd8
Fix GH-17373: imagefttext() ignores clipping rect for palette images
We apply the same fix that has been applied to external libgd at least
as of 2.0.29.

To avoid issues regarding minor FreeType rendering differences, the
test case does not compare against an image, but rather checks that all
pixels outside the clipping rect have the background color.

Closes GH-17374.
2025-01-06 14:57:46 +01:00
Peter Kokot
a82d86479c
Replace WIN32 conditions with _WIN32 or PHP_WIN32 (#14462)
* Replace WIN32 conditions with _WIN32 or PHP_WIN32

WIN32 is defined by the SDK and not defined all the time on Windows by
compilers or the environment. _WIN32 is defined as 1 when the
compilation target is 32-bit ARM, 64-bit ARM, x86, or x64. Otherwise,
undefined.

This syncs these usages one step further.

Upstream libgd has replaced WIN32 with _WIN32 via
c60d9fe577

PHP_WIN32 is added to ext/sockets/sockets.stub.php as done in other
*.stub.php files at this point.

* Use PHP_WIN32 in ext/random

* Use PHP_WIN32 in ext/sockets

* Use _WIN32 in xxhash.h as done upstream

See https://github.com/Cyan4973/xxHash/pull/931

* Update end comment with PHP_WIN32
2024-06-10 21:59:41 +02:00
Niels Dossche
4a48729438 Fix GH-10344: imagettfbbox(): Could not find/open font UNC path
libgd uses an incorrect absolute path check in gdft.c.
It checks if either the path starts with a '/' (only valid on Posix
btw), or whether it contains something of the form C:\ or C:/.
However, this overlooks the possibility of using UNC paths on Windows.
As we already do PHP-specific stuff with VCWD_ macros, use
IS_ABSOLUTE_PATH to check for an absolute path which will take into
account UNC paths as well.

Closes GH-13241.
2024-01-25 20:06:28 +01:00
Christoph M. Becker
243966177e
Use the standard _WIN32 instead of the custom MSWIN32 in libgd
We're already checking `_WIN32` elsewhere in our bundled libgd, so it
makes no sense to also have a custom `MSWIN32`.

Closes GH-7682.
2021-11-24 15:38:28 +01:00
George Peter Banyard
c40231afbf
Mark various functions with void arguments.
This fixes a bunch of [-Wstrict-prototypes] warning,
because in C func() and func(void) have different semantics.
2021-05-12 14:55:53 +01:00
George Peter Banyard
2f0dcf2ac2 Fix [-Wundef] warning in GD extension 2020-05-20 18:22:09 +02:00
Christoph M. Becker
dc59aafa77 Merge branch 'PHP-7.1' 2016-09-20 01:38:28 +02:00
Christoph M. Becker
ba2d9e1ff1 Merge branch 'PHP-5.6' into PHP-7.0 2016-09-20 01:25:08 +02:00
Christoph M. Becker
fc2cadca2d Merge branch 'pull-request/1845' into PHP-5.6 2016-09-20 01:05:57 +02:00
Christoph M. Becker
ba2b50d097 Port optimization from external libgd
The functionality is identical, but we save two function calls for partially
transparent pixels.
2016-09-15 13:24:43 +02:00
Christoph M. Becker
bc27ce98ee Merge branch 'PHP-5.6' into PHP-7.0 2016-09-14 15:50:09 +02:00
Christoph M. Becker
09eb6ed35e Fix #50194: imagettftext broken on transparent background w/o alphablending
We must not draw the background pixels of the character glyphs, what has
already been fixed in GD 2.0.26.
2016-09-14 15:47:32 +02:00
Mark Plomer
f5f94d9c08 fix left-shifted/misaligned bounding-box + wrong kerning in imagettfbbox/imageftbbox
- load glyph with FT_LOAD_IGNORE_TRANSFORM for bbox as final bbox is rotated at once later (fixes "double-rotation" per glyph for calculating bbox)
- reload the rotated glyph for painting after that (only if angle != 0)
- rotate the original bbox at 0,0 and do not throw away xMin/yMin (drawing-rotation is also based at "origin" point - including the bearingX, see http://www.freetype.org/freetype2/docs/glyphs/glyphs-3.html#section-3) - this fixes the "left-shift"-problem also when angle = 0
- removed "xb/yb" and use "x/y" directly for offsetting brect (no need for adding "x1/y1" and substracting "yd" later)
- removed therefore unused "yd" helper var which seems tried to fix parts of the original problems
- initialize x/y with 0 instead of -1 in php_imagettftext_common() to make image*text() and image*bbox() results identical (there was a -1px shift in image*bbox() before)
- fixed gdroundupdown() for negative numbers (-256 / 64 gives -5 instead of -4 before)
- rotate kerning-delta by given angle (fixes completely wrong kerning and therefore wrong bounding box if angle != 0)
- changed 3 tests and added a new one to test for the new (better) coordinates
2016-04-03 12:11:26 +02:00
Paul Tarjan
9f25f736ed Dont ignore errors from FT_Get_Glyph 2016-04-03 12:11:25 +02:00
Stanislav Malyshev
b7a7b1a624 trailing whitespace removal 2015-01-10 15:07:38 -08:00
Anatol Belski
bdeb220f48 first shot remove TSRMLS_* things 2014-12-13 23:06:14 +01:00
Veres Lajos
06fdf359e3 typo fixes - https://github.com/vlajos/misspell_fixer 2014-11-23 14:52:47 -08:00
Veres Lajos
4dc994571d typo fixes - https://github.com/vlajos/misspell_fixer
Conflicts:
	ext/ftp/ftp.h
	ext/pcre/pcrelib/pcre_printint.c
	ext/pcre/pcrelib/sljit/sljitLir.c
	ext/pcre/pcrelib/sljit/sljitLir.h
	ext/pcre/pcrelib/sljit/sljitNativeARM_32.c
	ext/pcre/pcrelib/sljit/sljitNativeTILEGX_64.c
	ext/pgsql/pgsql.c
	ext/phar/func_interceptors.c
	ext/soap/soap.c
	ext/standard/image.c
2014-11-23 14:33:43 -08:00
Sara Golemon
1ec93f8069 Merge branch 'PHP-5.6'
* PHP-5.6:
  Switch use of strtok() to gd_strtok_r()
2014-08-19 13:24:49 -07:00
Sara Golemon
a309dda777 Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5:
  Switch use of strtok() to gd_strtok_r()
2014-08-19 13:22:14 -07:00
Sara Golemon
cbe1597b74 Switch use of strtok() to gd_strtok_r()
strtok() is not thread safe, so this will potentially break in
very bad ways if used in ZTS mode.

I'm not sure why gd_strtok_r() exists since it seems to do the
same thing as strtok_r(), but I'll assume it's a portability
decision and do as the Romans do.
2014-08-19 13:16:44 -07:00
Scott MacVicar
24092b7196 Merge branch 'PHP-5.6'
* PHP-5.6:
  imagettftext() uses the last charactermap it found and not the one you want
  [libxml] Unit test for libxml_disable_entity_loader()
  Add pgsql related change information to NEWS and UPGRADING
2014-02-16 22:51:20 -08:00
Scott MacVicar
796bfb0bd0 imagettftext() uses the last charactermap it found and not the one you want
Summary:
This caused issues when you picked a font with multiple maps, it wouldn't
pick the unicode version but instead pick the last one it saw. Change so
we cache on a per encoding level. There was even a todo list item in the code.

In an ideal world we can probably iterate through at font write time.

Test Plan:
See said unit test, it's Apache Licensed font included
2014-02-16 22:49:31 -08:00
Paul Tarjan
d599d36d49 Dont ignore errors from FT_Get_Glyph 2014-01-13 16:30:48 -08:00
Takeshi Abe
42c14bf473 Fixed bug #51263 (imagettftext and rotated text uses wrong baseline) 2010-03-24 04:12:19 +00:00
Takeshi Abe
9a73e1c2bf Bug #49600 (imageTTFText text shifted right)
- fix difference of horizontal position between imagettftext() and imagettfbbox()
2010-01-08 12:18:52 +00:00
Takeshi Abe
06c411b9ef Fixed a possible memory leak in case that FT_Glyph_To_Bitmap() fails 2009-11-01 05:04:35 +00:00
Takeshi Abe
2d2f18dedc fixed #48732 (TTF Bounding box wrong for letters below baseline) and #48801 (Problem with imagettfbbox) 2009-07-27 15:02:15 +00:00
Takeshi Abe
8990a91fd7 fixed bug #48555 (ImageFTBBox() differs from previous versions for texts with new lines) 2009-06-21 05:59:25 +00:00
Takeshi Abe
cd31aa574b MFB: #43073, TrueType bounding box is wrong for angle<>0 2009-03-25 16:15:18 +00:00
Pierre Joye
fa3f2f7ead - MFB: #43790, fix crash when no family name has been found 2008-01-09 01:52:03 +00:00
Scott MacVicar
fef929f044 Fixed bug #40130 (TTF usage doesn't work properly under Netware) 2007-04-23 15:06:13 +00:00
Nuno Lopes
5e50336e7e MFB: fix race condition on font cache shutdown 2007-04-04 14:26:04 +00:00
Pierre Joye
1cd4938ef5 - remove double lock (tween colors cache is created in each thread, the
cache mutex is already locked earlier)
- #40858, other TS improvements for gd freetype cache management
  cache initialization and shutdown is now done in MINIT and MSHUTDOWN.
2007-04-04 00:44:38 +00:00
Nuno Lopes
ea624e97e5 MFB 2007-03-01 18:41:45 +00:00
Pierre Joye
519e18a2c3 - MFB: sync with libgd.org, patch from Kees Cook 2007-02-25 02:56:03 +00:00
Pierre Joye
7d437feb83 - MFB: #40578, fix the 2nd race condition on shutdown when the cache is
freed
2007-02-23 01:02:57 +00:00
Antony Dovgal
c3b7cb1901 fix #40578 (imagettftext() multithreading issue) 2007-02-21 14:59:36 +00:00
Nuno Lopes
678b162fef MFB 2006-09-15 16:14:57 +00:00
Pierre Joye
96aedc6efd - add support for entities in hexadecimal format, like &copy; can
be passed as &#169 or &#xA9;
2006-08-23 20:21:34 +00:00
Pierre Joye
f3b74fe9ac - Attempt to fix #28598, bug introduced in GD (around php 4.3.4)
The way they fix MS Symbol are wrong, multiple faces support hould added
  later, safer.

  Please test it with your weird fonts, if it works, MFH will be done.
2004-11-20 13:09:45 +00:00
Ilia Alshanetsky
f0ffe7c85b Fixed bug #28175 (Allow bundled GD to compile against freetype 2.1.2). 2004-06-09 14:50:05 +00:00
Ilia Alshanetsky
6e9c4b3125 Upgrade bundled GD library to 2.0.23.
Fixed bug #28175 (build problem for people using FreeType 2.1.0-2.1.2).
2004-05-09 17:33:50 +00:00
Ilia Alshanetsky
8b079070a3 Synchronized bundled GD library with GD 2.0.22. 2004-03-29 18:20:33 +00:00
Ilia Alshanetsky
53e56151fe Fixed bug #27437 (wrong freetype include inside GD library). 2004-03-06 18:24:41 +00:00
Ilia Alshanetsky
36db28c8db CS fixes. 2003-12-28 20:11:08 +00:00
Ilia Alshanetsky
8d6cfb797b Synchronized bundled GD library with GD 2.0.17
. GD is now thread-safe thanks to wrappers around freetype library
 . Significant optimization to png writing code.
 . Miscellaneous fixes.
Fixed memory leak inside php_imagettftext_common()
Make ext/gd compile with GD 2.0.17+ (gdFreeFontCache() is not avaliable)
2003-12-25 22:12:12 +00:00
Wez Furlong
085ceca8e1 be slightly nicer when defining R_OK 2003-12-19 12:41:24 +00:00
Rasmus Lerdorf
0f6cafa7e6 MFB compile fix 2003-12-17 22:47:02 +00:00