* src/truetype/ttgload.c (TT_Load_Glyph): Protect bytecode stuff

with IS_HINTED.

* docs/CHANGES: Updated.
This commit is contained in:
Werner Lemberg 2008-06-22 22:41:24 +00:00
parent b1c36cfbd9
commit 745a4f42a5
4 changed files with 71 additions and 47 deletions

View File

@ -1,13 +1,20 @@
2008-06-22 Werner Lemberg <wl@gnu.org>
* src/truetype/ttgload.c (TT_Load_Glyph): Protect bytecode stuff
with IS_HINTED.
* docs/CHANGES: Updated.
2008-06-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
* builds/unix/configure.raw: If CFLAGS has "-isysroot XXX"
option but LDFLAGS does not, import it to LDFLAGS. The option
is used to specify non-default SDK on Mac OS X (e.g. universal
binary SDK for Mac OS X 10.4 on PowerPC platform). Although
Apple TechNote 2137 recommends to add the option only to CFLAGS,
LDFLAGS should include it because libfreetype.la is built with
-no-undefined. This fixes a bug reported by Ryan Schmidt in
MacPorts, http://trac.macports.org/ticket/15331.
* builds/unix/configure.raw: If CFLAGS has `-isysroot XXX' option
but LDFLAGS does not, import it to LDFLAGS. The option is used to
specify non-default SDK on Mac OS X (e.g., universal binary SDK for
Mac OS X 10.4 on PowerPC platform). Although Apple TechNote 2137
recommends to add the option only to CFLAGS, LDFLAGS should include
it because libfreetype.la is built with -no-undefined. This fixes a
bug reported by Ryan Schmidt in MacPorts,
http://trac.macports.org/ticket/15331.
2008-06-21 Werner Lemberg <wl@gnu.org>

View File

@ -155,7 +155,7 @@ AC_SUBST([FTSYS_SRC])
AC_CHECK_FUNCS([memcpy memmove])
# Check for system zlib
# check for system zlib
# don't quote AS_HELP_STRING!
AC_ARG_WITH([zlib],
@ -171,29 +171,29 @@ if test x$with_zlib != xno && test -n "$LIBZ"; then
fi
# check Apple "-isysroot" option and duplicate it to LDFLAGS if required
# Apple TechNote 2137 recommends to include it in CFLAGS but not in LDFLAGS.
# check Apple "-isysroot" option and duplicate it to LDFLAGS if required --
# Apple TechNote 2137 recommends to include it in CFLAGS but not in LDFLAGS
AC_MSG_CHECKING([CFLAGS includes -isysroot option])
AC_MSG_CHECKING([whether CFLAGS includes -isysroot option])
case "$CFLAGS" in
*sysroot* )
AC_MSG_RESULT([yes])
AC_MSG_CHECKING([whether LDFLAGS includes -isysroot option])
case "$LDFLAGS" in
*sysroot* )
AC_MSG_RESULT([yes])
AC_MSG_CHECKING([LDFLAGS includes -isysroot option])
case "$LDFLAGS" in
*sysroot* )
AC_MSG_RESULT([yes])
;;
*)
AC_MSG_RESULT([no])
isysroot_dir=`echo ${CFLAGS} | tr '\t' ' ' | sed 's/^.*-isysroot *//;s/ .*//'`
AC_MSG_WARN(-isysroot ${isysroot_dir} is added to LDFLAGS)
LDFLAGS="-isysroot ${isysroot_dir} ${LDFLAGS}"
;;
esac
;;
*)
AC_MSG_RESULT([no])
isysroot_dir=`echo ${CFLAGS} | tr '\t' ' ' | sed 's/^.*-isysroot *//;s/ .*//'`
AC_MSG_WARN(-isysroot ${isysroot_dir} is added to LDFLAGS)
LDFLAGS="-isysroot ${isysroot_dir} ${LDFLAGS}"
;;
esac
;;
*)
AC_MSG_RESULT([no])
;;
esac

View File

@ -20,6 +20,20 @@ CHANGES BETWEEN 2.3.7 and 2.3.6
very simplistic.]
II. IMPORTANT CHANGES
- Two new macros, FT_OUTLINE_SMART_DROPOUTS and
FT_OUTLINE_EXCLUDE_STUBS, have been introduced. Together with
FT_OUTLINE_IGNORE_DROPOUTS (which was ignored until now) it is
now possible to control the dropout mode of the `raster' module
(for B&W rasterization), using the `flags' field in the
`FT_Outline' structure.
- The TrueType bytecode interpreter now passes the dropout mode to
the B&W rasterizer. This greatly increases the output for small
ppem values for many fonts like `pala.ttf'.
======================================================================
CHANGES BETWEEN 2.3.6 and 2.3.5

View File

@ -1668,8 +1668,8 @@
}
/* adjust advance width to the value contained in the hdmx table */
if ( !face->postscript.isFixedPitch &&
IS_HINTED( loader->load_flags ) )
if ( !face->postscript.isFixedPitch &&
IS_HINTED( loader->load_flags ) )
{
FT_Byte* widthp;
@ -1960,32 +1960,35 @@
#ifdef TT_USE_BYTECODE_INTERPRETER
if ( loader.exec->GS.scan_control )
if ( IS_HINTED( load_flags ) )
{
/* convert scan conversion mode to FT_OUTLINE_XXX flags */
switch ( loader.exec->GS.scan_type )
if ( loader.exec->GS.scan_control )
{
case 0: /* simple drop-outs including stubs */
glyph->outline.flags |= FT_OUTLINE_INCLUDE_STUBS;
break;
case 1: /* simple drop-outs excluding stubs */
/* nothing; it's the default rendering mode */
break;
case 4: /* smart drop-outs including stubs */
glyph->outline.flags |= FT_OUTLINE_SMART_DROPOUTS |
FT_OUTLINE_INCLUDE_STUBS;
break;
case 5: /* smart drop-outs excluding stubs */
glyph->outline.flags |= FT_OUTLINE_SMART_DROPOUTS;
break;
/* convert scan conversion mode to FT_OUTLINE_XXX flags */
switch ( loader.exec->GS.scan_type )
{
case 0: /* simple drop-outs including stubs */
glyph->outline.flags |= FT_OUTLINE_INCLUDE_STUBS;
break;
case 1: /* simple drop-outs excluding stubs */
/* nothing; it's the default rendering mode */
break;
case 4: /* smart drop-outs including stubs */
glyph->outline.flags |= FT_OUTLINE_SMART_DROPOUTS |
FT_OUTLINE_INCLUDE_STUBS;
break;
case 5: /* smart drop-outs excluding stubs */
glyph->outline.flags |= FT_OUTLINE_SMART_DROPOUTS;
break;
default: /* no drop-out control */
glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS;
break;
default: /* no drop-out control */
glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS;
break;
}
}
else
glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS;
}
else
glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS;
#endif /* TT_USE_BYTECODE_INTERPRETER */