summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Podtelezhnikov <apodtele@gmail.com>2018-09-21 20:34:58 -0400
committerAlexei Podtelezhnikov <apodtele@gmail.com>2018-09-21 20:34:58 -0400
commitf26d57753fe1a6ab61796fbd816fefd6c103720b (patch)
tree5630c883fa75fc9939448b8f4d4c876dd1ef72e5
parentabd997aa7cf2bc9219136782c7363d14d325199c (diff)
downloadfreetype2-f26d57753fe1a6ab61796fbd816fefd6c103720b.tar.gz
* src/base/ftobjs.c (ft_glyphslot_reset_bimap): Further tweak.
-rw-r--r--ChangeLog4
-rw-r--r--src/base/ftobjs.c30
2 files changed, 22 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 584f86029..c39f08fd2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;