[smooth] Improve complex rendering at high ppem.

At large sizes almost but not exactly horizontal segments can quickly
drain the rendering pool. This patch at least avoids filling the pool
with trivial cells. Beyond this, we can only increase the pool size.

Reported, analyzed, and tested by Colin Fahey.

* src/smooth/ftgrays.c (gray_set_cell): Do not record trivial cells.
This commit is contained in:
Alexei Podtelezhnikov 2017-10-21 22:57:43 -04:00
parent d74440a327
commit 91015cb41d
2 changed files with 15 additions and 3 deletions

View File

@ -1,3 +1,15 @@
2017-10-20 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth] Improve complex rendering at high ppem.
At large sizes almost but not exactly horizontal segments can quickly
drain the rendering pool. This patch at least avoids filling the pool
with trivial cells. Beyond this, we can only increase the pool size.
Reported, analyzed, and tested by Colin Fahey.
* src/smooth/ftgrays.c (gray_set_cell): Do not record trivial cells.
2017-10-20 Alexei Podtelezhnikov <apodtele@gmail.com>
[base] Improve tracing in FT_Load_Glyph, FT_*_Size.
@ -43,7 +55,7 @@
2017-10-14 Alexei Podtelezhnikov <apodtele@gmail.com>
* builds/windows/ftdebug.c (FT_Message): Print to stderr.
* builds/wince/ftdebug.c (FT_Message): Ditto.
* builds/wince/ftdebug.c (FT_Message): Ditto.
2017-10-14 Behdad Esfahbod <behdad@behdad.org>

View File

@ -582,8 +582,8 @@ typedef ptrdiff_t FT_PtrDist;
if ( ex < ras.min_ex )
ex = ras.min_ex - 1;
/* record the current one if it is valid */
if ( !ras.invalid )
/* record the current one if it is substantial and valid */
if ( ( ras.area || ras.cover ) && !ras.invalid )
gray_record_cell( RAS_VAR );
ras.area = 0;