Commit 745a4f42a500c441ba4be4e096c6e63309ab0709

Werner Lemberg 2008-06-22T22:41:24

* src/truetype/ttgload.c (TT_Load_Glyph): Protect bytecode stuff with IS_HINTED. * docs/CHANGES: Updated.

diff --git a/ChangeLog b/ChangeLog
index ffa1bc5..4d2a530 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
diff --git a/builds/unix/configure.raw b/builds/unix/configure.raw
index 2015aac..939e439 100644
--- a/builds/unix/configure.raw
+++ b/builds/unix/configure.raw
@@ -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
 
 
diff --git a/docs/CHANGES b/docs/CHANGES
index 2c2e072..e74bcc8 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -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
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index 6a97b99..ed79b93 100644
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -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;
-
-        default: /* no drop-out control */
-          glyph->outline.flags |= FT_OUTLINE_IGNORE_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;
+          }
         }
+        else 
+          glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS;
       }
-      else 
-        glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS;
 
 #endif /* TT_USE_BYTECODE_INTERPRETER */