summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2011-12-08 11:55:06 +0100
committerWerner Lemberg <wl@gnu.org>2011-12-08 11:55:06 +0100
commit2fb22d56491235ac44073b73be0bb6444aaf6d46 (patch)
tree873d0aac664b1f829c8764bfc0d4087319c90a06
parent96fcf87b759b5decfd5344d8c3ae1a4e52d8e09d (diff)
downloadfreetype2-2fb22d56491235ac44073b73be0bb6444aaf6d46.tar.gz
Fix serious scaling bug in `FT_Get_Advances'.
* src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by `FT_Load_Glyph' must be simply multiplied by 1024.
-rw-r--r--ChangeLog7
-rw-r--r--src/base/ftadvanc.c15
2 files changed, 13 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 48ce64dac..becfa0037 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2011-12-08 Werner Lemberg <wl@gnu.org>
+ Fix serious scaling bug in `FT_Get_Advances'.
+
+ * src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by
+ `FT_Load_Glyph' must be simply multiplied by 1024.
+
+2011-12-08 Werner Lemberg <wl@gnu.org>
+
* src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing.
2011-12-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
diff --git a/src/base/ftadvanc.c b/src/base/ftadvanc.c
index 8ab7fcb92..a8bb43d3d 100644
--- a/src/base/ftadvanc.c
+++ b/src/base/ftadvanc.c
@@ -4,7 +4,7 @@
/* */
/* Quick computation of advance widths (body). */
/* */
-/* Copyright 2008, 2009 by */
+/* Copyright 2008, 2009, 2011 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -129,7 +129,7 @@
{
error = func( face, start, count, flags, padvances );
if ( !error )
- goto Exit;
+ return _ft_face_scale_advances( face, padvances, count, flags );
if ( error != FT_ERROR_BASE( FT_Err_Unimplemented_Feature ) )
return error;
@@ -147,16 +147,13 @@
if ( error )
break;
+ /* scale from 26.6 to 16.16 */
padvances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT )
- ? face->glyph->advance.y
- : face->glyph->advance.x;
+ ? face->glyph->advance.y << 10
+ : face->glyph->advance.x << 10;
}
- if ( error )
- return error;
-
- Exit:
- return _ft_face_scale_advances( face, padvances, count, flags );
+ return error;
}