diff options
author | Alexei Podtelezhnikov <apodtele@gmail.com> | 2018-09-21 20:34:58 -0400 |
---|---|---|
committer | Alexei Podtelezhnikov <apodtele@gmail.com> | 2018-09-21 20:34:58 -0400 |
commit | f26d57753fe1a6ab61796fbd816fefd6c103720b (patch) | |
tree | 5630c883fa75fc9939448b8f4d4c876dd1ef72e5 | |
parent | abd997aa7cf2bc9219136782c7363d14d325199c (diff) | |
download | freetype2-f26d57753fe1a6ab61796fbd816fefd6c103720b.tar.gz |
* src/base/ftobjs.c (ft_glyphslot_reset_bimap): Further tweak.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/base/ftobjs.c | 30 |
2 files changed, 22 insertions, 12 deletions
@@ -1,3 +1,7 @@ +2018-09-20 Alexei Podtelezhnikov <apodtele@gmail.com> + + * src/base/ftobjs.c (ft_glyphslot_reset_bimap): Further tweak. + 2018-09-21 Ben Wagner <bungeman@google.com> Improve auto-hinter handling of bitmap fonts (#54681). diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index 34aedbf3b..874a3a18c 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -395,15 +395,18 @@ /* undocumented but confirmed: bbox values get rounded; */ /* for narrow glyphs bbox is extended to one pixel first */ - if ( pbox.xMax - pbox.xMin <= 1 ) + switch ( pbox.xMax - pbox.xMin ) { - if ( pbox.xMax - pbox.xMin == 0 ) + case 1: + pbox.xMax -= 1; + cbox.xMax += 64; + /* fall through */ + case 0: + if ( cbox.xMax - cbox.xMin < 63 ) { - cbox.xMin = ( cbox.xMin + cbox.xMax ) / 2 - 32; - cbox.xMax = cbox.xMin + 64; + cbox.xMin = ( cbox.xMin + cbox.xMax ) / 2 - 31; + cbox.xMax = cbox.xMin + 63; } - else if ( cbox.xMax - cbox.xMin < 0 ) - cbox.xMin = cbox.xMax = ( cbox.xMin + cbox.xMax ) / 2; } /* we do asymmetric rounding so that the center */ @@ -414,15 +417,18 @@ /* y */ - if ( pbox.yMax - pbox.yMin <= 1 ) + switch ( pbox.yMax - pbox.yMin ) { - if ( pbox.yMax - pbox.yMin == 0 ) + case 1: + pbox.yMax -= 1; + cbox.yMax += 64; + /* fall through */ + case 0: + if ( cbox.yMax - cbox.yMin < 63 ) { - cbox.yMin = ( cbox.yMin + cbox.yMax ) / 2 - 32; - cbox.yMax = cbox.yMin + 64; + cbox.yMin = ( cbox.yMin + cbox.yMax ) / 2 - 31; + cbox.yMax = cbox.yMin + 63; } - else if ( cbox.yMax - cbox.yMin < 0 ) - cbox.yMin = cbox.yMax = ( cbox.yMin + cbox.yMax ) / 2; } pbox.yMin += ( cbox.yMin + 31 ) >> 6; |