[raster] Tune SMART macro (#58352).

Windows seems to perform smart dropout control at 26.6 precision.
To mimick Windows independent of increased precision, we need to tweak
the macro so that some close calls break down rather than up.

* src/raster/ftraster.c (SMART): Tweak the macro.
This commit is contained in:
Alexei Podtelezhnikov 2020-09-11 23:13:02 -04:00
parent cb47331369
commit c3721642f1
2 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,13 @@
2020-09-08 Alexei Podtelezhnikov <apodtele@gmail.com>
[raster] Tune SMART macro (#58352).
Windows seems to perform smart dropout control at 26.6 precision.
To mimick Windows independent of increased precision, we need to tweak
the macro so that some close calls break down rather than up.
* src/raster/ftraster.c (SMART): Tweak the macro.
2020-09-08 Alexei Podtelezhnikov <apodtele@gmail.com>
[raster] Introduce SMART macro.

View File

@ -459,8 +459,9 @@
#define IS_TOP_OVERSHOOT( x ) \
(Bool)( x - FLOOR( x ) >= ras.precision_half )
/* smart dropout rounding */
#define SMART( x1, x2 ) FLOOR( ( (x1) + (x2) - 1 ) / 2 + ras.precision_half )
/* smart dropout rounding to find which pixel is closer to span ends; */
/* to mimick Windows, symmetric cases break down indepenent of precision */
#define SMART( p, q ) FLOOR( ( (p) + (q) + ras.precision * 63 / 64 ) >> 1 )
#if FT_RENDER_POOL_SIZE > 2048
#define FT_MAX_BLACK_POOL ( FT_RENDER_POOL_SIZE / sizeof ( Long ) )