diff --git a/ChangeLog b/ChangeLog index f79fc69bf..9a2cabc9c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2021-06-29 Alexei Podtelezhnikov + + [raster] Do not skip the second pass without dropout control. + + The second pass also fixes horizontal lines through the pixel centers. + + * src/raster/ftraster.c (black_TWorker): Do not use `second_pass'. + (Render_Glyph): Skip the second pass only with the appropriate flag. + 2021-06-29 Alexei Podtelezhnikov [raster] Handle sub-band stack locally. diff --git a/src/raster/ftraster.c b/src/raster/ftraster.c index 9b742f595..74c290879 100644 --- a/src/raster/ftraster.c +++ b/src/raster/ftraster.c @@ -483,6 +483,8 @@ Int numTurns; /* number of Y-turns in outline */ + Byte dropOutControl; /* current drop_out control method */ + UShort bWidth; /* target bitmap width */ PByte bOrigin; /* target bitmap bottom-left origin */ PByte bLine; /* target bitmap current line */ @@ -514,13 +516,6 @@ Function_Sweep_Span* Proc_Sweep_Drop; Function_Sweep_Step* Proc_Sweep_Step; - Byte dropOutControl; /* current drop_out control method */ - - Bool second_pass; /* indicates whether a horizontal pass */ - /* should be performed to control */ - /* drop-out accurately when calling */ - /* Render_Glyph. */ - }; @@ -3116,9 +3111,6 @@ ras.dropOutControl += 1; } - ras.second_pass = (Bool)( !( ras.outline.flags & - FT_OUTLINE_SINGLE_PASS ) ); - /* Vertical Sweep */ FT_TRACE7(( "Vertical pass (ftraster)\n" )); @@ -3138,7 +3130,7 @@ return error; /* Horizontal Sweep */ - if ( ras.second_pass && ras.dropOutControl != 2 ) + if ( !( ras.outline.flags & FT_OUTLINE_SINGLE_PASS ) ) { FT_TRACE7(( "Horizontal pass (ftraster)\n" ));