summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2017-09-13 08:16:23 +0200
committerWerner Lemberg <wl@gnu.org>2017-09-13 08:16:23 +0200
commit96dcc8ad6ef67f8703efd239f081ed27c7f039a2 (patch)
tree6a638b890afb843883689cc7ca52b1d55b836438
parent21658c31f705edd4c94798eee62ce5b5241814b9 (diff)
downloadfreetype2-96dcc8ad6ef67f8703efd239f081ed27c7f039a2.tar.gz
[autofit] Really fix #41334 (#52000).
* src/autofit/aflatin.c (af_latin_hints_compute_segments): Set `segment->delta' everywhere.
-rw-r--r--ChangeLog7
-rw-r--r--src/autofit/aflatin.c21
2 files changed, 20 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index b9d69c04c..b25a82268 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2017-09-13 Werner Lemberg <wl@gnu.org>
+
+ [autofit] Really fix #41334 (#52000).
+
+ * src/autofit/aflatin.c (af_latin_hints_compute_segments): Set
+ `segment->delta' everywhere.
+
2017-09-12 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
[autofit, sfnt] Fix for `make multi'.
diff --git a/src/autofit/aflatin.c b/src/autofit/aflatin.c
index cdbc1b7ab..02b3b8bbd 100644
--- a/src/autofit/aflatin.c
+++ b/src/autofit/aflatin.c
@@ -1690,9 +1690,11 @@
if ( prev_max_on_coord > max_on_coord )
max_on_coord = prev_max_on_coord;
- prev_segment->last = point;
- prev_segment->pos = (FT_Short)( ( min_pos +
- max_pos ) >> 1 );
+ prev_segment->last = point;
+ prev_segment->pos = (FT_Short)( ( min_pos +
+ max_pos ) >> 1 );
+ prev_segment->delta = (FT_Short)( ( max_pos -
+ min_pos ) >> 1 );
if ( ( min_flags | max_flags ) & AF_FLAG_CONTROL &&
( max_on_coord - min_on_coord ) < flat_threshold )
@@ -1720,9 +1722,11 @@
if ( max_pos > prev_max_pos )
prev_max_pos = max_pos;
- prev_segment->last = point;
- prev_segment->pos = (FT_Short)( ( prev_min_pos +
- prev_max_pos ) >> 1 );
+ prev_segment->last = point;
+ prev_segment->pos = (FT_Short)( ( prev_min_pos +
+ prev_max_pos ) >> 1 );
+ prev_segment->delta = (FT_Short)( ( prev_max_pos -
+ prev_min_pos ) >> 1 );
}
else
{
@@ -1733,8 +1737,9 @@
if ( prev_max_pos > max_pos )
max_pos = prev_max_pos;
- segment->last = point;
- segment->pos = (FT_Short)( ( min_pos + max_pos ) >> 1 );
+ segment->last = point;
+ segment->pos = (FT_Short)( ( min_pos + max_pos ) >> 1 );
+ segment->delta = (FT_Short)( ( max_pos - min_pos ) >> 1 );
if ( ( min_flags | max_flags ) & AF_FLAG_CONTROL &&
( max_on_coord - min_on_coord ) < flat_threshold )